aboutsummaryrefslogtreecommitdiff
path: root/test/Analysis
diff options
context:
space:
mode:
Diffstat (limited to 'test/Analysis')
-rw-r--r--test/Analysis/CFContainers-invalid.c20
-rw-r--r--test/Analysis/CFContainers.mm247
-rw-r--r--test/Analysis/CFNumber.c47
-rw-r--r--test/Analysis/CFRetainRelease_NSAssertionHandler.m73
-rw-r--r--test/Analysis/CGColorSpace.c18
-rw-r--r--test/Analysis/CheckNSError.m56
-rw-r--r--test/Analysis/Checkers/RunLoopAutoreleaseLeakChecker.m161
-rw-r--r--test/Analysis/DeallocMissingRelease.m925
-rw-r--r--test/Analysis/DeallocUseAfterFreeErrors.m373
-rw-r--r--test/Analysis/DeleteWithNonVirtualDtor.cpp187
-rw-r--r--test/Analysis/DynamicTypePropagation.m69
-rw-r--r--test/Analysis/Inputs/Models/modeledFunction.model3
-rw-r--r--test/Analysis/Inputs/Models/notzero.model3
-rw-r--r--test/Analysis/Inputs/ctu-chain.cpp20
-rw-r--r--test/Analysis/Inputs/ctu-other.c49
-rw-r--r--test/Analysis/Inputs/ctu-other.c.externalDefMap.txt6
-rw-r--r--test/Analysis/Inputs/ctu-other.cpp77
-rw-r--r--test/Analysis/Inputs/ctu-other.cpp.externalDefMap.txt15
-rw-r--r--test/Analysis/Inputs/expected-plists/NewDelete-path-notes.cpp.plist464
-rw-r--r--test/Analysis/Inputs/expected-plists/conditional-path-notes.c.plist1772
-rw-r--r--test/Analysis/Inputs/expected-plists/cstring-plist.c.plist8
-rw-r--r--test/Analysis/Inputs/expected-plists/cxx-for-range.cpp.plist1960
-rw-r--r--test/Analysis/Inputs/expected-plists/edges-new.mm.plist21452
-rw-r--r--test/Analysis/Inputs/expected-plists/generics.m.plist7196
-rw-r--r--test/Analysis/Inputs/expected-plists/inline-plist.c.plist1986
-rw-r--r--test/Analysis/Inputs/expected-plists/inline-unique-reports.c.plist278
-rw-r--r--test/Analysis/Inputs/expected-plists/lambda-notes.cpp.plist205
-rw-r--r--test/Analysis/Inputs/expected-plists/malloc-plist.c.plist5262
-rw-r--r--test/Analysis/Inputs/expected-plists/method-call-path-notes.cpp.plist845
-rw-r--r--test/Analysis/Inputs/expected-plists/model-file.cpp.plist309
-rw-r--r--test/Analysis/Inputs/expected-plists/null-deref-path-notes.m.plist1028
-rw-r--r--test/Analysis/Inputs/expected-plists/nullability-notes.m.plist205
-rw-r--r--test/Analysis/Inputs/expected-plists/objc-arc.m.plist2089
-rw-r--r--test/Analysis/Inputs/expected-plists/objc-radar17039661.m.plist1309
-rw-r--r--test/Analysis/Inputs/expected-plists/plist-macros-with-expansion.cpp.plist5452
-rw-r--r--test/Analysis/Inputs/expected-plists/plist-macros.cpp.plist1761
-rw-r--r--test/Analysis/Inputs/expected-plists/plist-output-alternate.m.plist1520
-rw-r--r--test/Analysis/Inputs/expected-plists/plist-output.m.plist6220
-rw-r--r--test/Analysis/Inputs/expected-plists/plist-stats-output.c.plist9
-rw-r--r--test/Analysis/Inputs/expected-plists/retain-release-path-notes.m.plist5022
-rw-r--r--test/Analysis/Inputs/expected-plists/retain-release.m.objc.plist26113
-rw-r--r--test/Analysis/Inputs/expected-plists/retain-release.m.objcpp.plist26182
-rw-r--r--test/Analysis/Inputs/expected-plists/unix-fns.c.plist3021
-rw-r--r--test/Analysis/Inputs/expected-plists/yaccignore.c.plist4
-rw-r--r--test/Analysis/Inputs/localization-pch.h5
-rw-r--r--test/Analysis/Inputs/qt-simulator.h33
-rw-r--r--test/Analysis/Inputs/system-header-simulator-cxx-std-suppression.h146
-rw-r--r--test/Analysis/Inputs/system-header-simulator-cxx.h824
-rw-r--r--test/Analysis/Inputs/system-header-simulator-for-cxx-uninitialized-object.h18
-rw-r--r--test/Analysis/Inputs/system-header-simulator-for-malloc.h34
-rw-r--r--test/Analysis/Inputs/system-header-simulator-for-nullability-cxx.h9
-rw-r--r--test/Analysis/Inputs/system-header-simulator-for-nullability.h105
-rw-r--r--test/Analysis/Inputs/system-header-simulator-for-objc-dealloc.h39
-rw-r--r--test/Analysis/Inputs/system-header-simulator-for-pthread-lock.h28
-rw-r--r--test/Analysis/Inputs/system-header-simulator-for-simple-stream.h21
-rw-r--r--test/Analysis/Inputs/system-header-simulator-for-valist.h30
-rw-r--r--test/Analysis/Inputs/system-header-simulator-objc.h151
-rw-r--r--test/Analysis/Inputs/system-header-simulator.h115
-rw-r--r--test/Analysis/MPIMock.h55
-rw-r--r--test/Analysis/Malloc+MismatchedDeallocator+NewDelete.cpp107
-rw-r--r--test/Analysis/Malloc+MismatchedDeallocator_intersections.cpp39
-rw-r--r--test/Analysis/Malloc+NewDelete_intersections.cpp15
-rw-r--r--test/Analysis/MemRegion.cpp47
-rw-r--r--test/Analysis/MismatchedDeallocator-checker-test.mm233
-rw-r--r--test/Analysis/MismatchedDeallocator-path-notes.cpp15
-rw-r--r--test/Analysis/MissingDealloc.m199
-rw-r--r--test/Analysis/NSContainers.m312
-rw-r--r--test/Analysis/NSPanel.m88
-rw-r--r--test/Analysis/NSString.m448
-rw-r--r--test/Analysis/NSWindow.m86
-rw-r--r--test/Analysis/NewDelete+MismatchedDeallocator_intersections.cpp29
-rw-r--r--test/Analysis/NewDelete-atomics.cpp78
-rw-r--r--test/Analysis/NewDelete-checker-test.cpp409
-rw-r--r--test/Analysis/NewDelete-custom.cpp62
-rw-r--r--test/Analysis/NewDelete-intersections.mm88
-rw-r--r--test/Analysis/NewDelete-path-notes.cpp30
-rw-r--r--test/Analysis/NewDelete-sized-deallocation.cpp39
-rw-r--r--test/Analysis/NewDelete-variadic.cpp23
-rw-r--r--test/Analysis/NewDeleteLeaks-PR18394.cpp16
-rw-r--r--test/Analysis/NewDeleteLeaks-PR19102.cpp44
-rw-r--r--test/Analysis/NoReturn.m145
-rw-r--r--test/Analysis/OSAtomic_mac.cpp20
-rw-r--r--test/Analysis/ObjCProperties.m21
-rw-r--r--test/Analysis/ObjCPropertiesSyntaxChecks.m68
-rw-r--r--test/Analysis/ObjCRetSigs.m25
-rw-r--r--test/Analysis/PR12905.c8
-rw-r--r--test/Analysis/PR24184.cpp98
-rw-r--r--test/Analysis/PR2978.m116
-rw-r--r--test/Analysis/PR37855.c24
-rw-r--r--test/Analysis/PR38208.c43
-rw-r--r--test/Analysis/PR3991.m69
-rw-r--r--test/Analysis/PR7218.c6
-rw-r--r--test/Analysis/PR9741.cpp9
-rw-r--r--test/Analysis/_Bool-increment-decrement.c140
-rw-r--r--test/Analysis/additive-folding-range-constraints.c304
-rw-r--r--test/Analysis/additive-folding.cpp216
-rw-r--r--test/Analysis/analyzeOneFunction.m56
-rw-r--r--test/Analysis/analyzer-checker-config.c12
-rw-r--r--test/Analysis/analyzer-config.c55
-rw-r--r--test/Analysis/analyzer-display-progress.cpp30
-rw-r--r--test/Analysis/analyzer-display-progress.m30
-rw-r--r--test/Analysis/analyzer-enabled-checkers.c20
-rw-r--r--test/Analysis/analyzer-list-configs.c34
-rw-r--r--test/Analysis/analyzer-stats.c30
-rw-r--r--test/Analysis/analyzer_test.py48
-rw-r--r--test/Analysis/arc-zero-init.m46
-rw-r--r--test/Analysis/array-struct-region.c355
-rw-r--r--test/Analysis/array-struct-region.cpp199
-rw-r--r--test/Analysis/array-struct.c212
-rw-r--r--test/Analysis/asm.cpp12
-rw-r--r--test/Analysis/atomics.c95
-rw-r--r--test/Analysis/auto-obj-dtors-cfg-output.cpp1216
-rw-r--r--test/Analysis/autoreleasewritechecker_test.m281
-rw-r--r--test/Analysis/base-init.cpp29
-rw-r--r--test/Analysis/bitwise-ops.c58
-rw-r--r--test/Analysis/block-in-critical-section.cpp154
-rw-r--r--test/Analysis/block-in-critical-section.m10
-rw-r--r--test/Analysis/blocks-no-inline.c40
-rw-r--r--test/Analysis/blocks.m243
-rw-r--r--test/Analysis/blocks.mm87
-rw-r--r--test/Analysis/bool-assignment.c106
-rw-r--r--test/Analysis/bool-increment.cpp84
-rw-r--r--test/Analysis/bsd-string.c45
-rw-r--r--test/Analysis/bstring.c485
-rw-r--r--test/Analysis/bstring.cpp195
-rw-r--r--test/Analysis/bug_hash_test.cpp122
-rw-r--r--test/Analysis/bug_hash_test.m36
-rw-r--r--test/Analysis/builtin-functions.cpp83
-rw-r--r--test/Analysis/builtin_signbit.cpp43
-rw-r--r--test/Analysis/call-invalidation.cpp167
-rw-r--r--test/Analysis/call_once.cpp414
-rw-r--r--test/Analysis/cast-to-struct.cpp81
-rw-r--r--test/Analysis/castexpr-callback.c10
-rw-r--r--test/Analysis/casts.c247
-rw-r--r--test/Analysis/casts.cpp116
-rw-r--r--test/Analysis/casts.m46
-rw-r--r--test/Analysis/cfg-indirect-goto-determinism.cpp96
-rw-r--r--test/Analysis/cfg-rich-constructors.cpp1045
-rw-r--r--test/Analysis/cfg-rich-constructors.mm66
-rw-r--r--test/Analysis/cfg.cpp494
-rw-r--r--test/Analysis/cfref_PR2519.c46
-rw-r--r--test/Analysis/cfref_rdar6080742.c56
-rw-r--r--test/Analysis/check-deserialization.cpp20
-rw-r--r--test/Analysis/checker-plugins.c10
-rw-r--r--test/Analysis/chroot.c24
-rw-r--r--test/Analysis/comparison-implicit-casts.cpp96
-rw-r--r--test/Analysis/complex-init-list.cpp7
-rw-r--r--test/Analysis/complex.c17
-rw-r--r--test/Analysis/compound-literals.c9
-rw-r--r--test/Analysis/concrete-address.c7
-rw-r--r--test/Analysis/conditional-operator.cpp17
-rw-r--r--test/Analysis/conditional-path-notes.c86
-rw-r--r--test/Analysis/const-method-call.cpp273
-rw-r--r--test/Analysis/constant-folding.c121
-rw-r--r--test/Analysis/constraint_manager_negate_difference.c98
-rw-r--r--test/Analysis/conversion.c210
-rw-r--r--test/Analysis/copy-elision.cpp367
-rw-r--r--test/Analysis/copypaste/Inputs/expected-plists/MismatchedDeallocator-path-notes.cpp.plist303
-rw-r--r--test/Analysis/copypaste/Inputs/expected-plists/plist-diagnostics-notes-as-events.cpp.plist98
-rw-r--r--test/Analysis/copypaste/Inputs/expected-plists/plist-diagnostics.cpp.plist99
-rw-r--r--test/Analysis/copypaste/asm.cpp44
-rw-r--r--test/Analysis/copypaste/attributes.cpp28
-rw-r--r--test/Analysis/copypaste/autogenerated_automoc.cpp19
-rw-r--r--test/Analysis/copypaste/blocks.cpp19
-rw-r--r--test/Analysis/copypaste/call.cpp102
-rw-r--r--test/Analysis/copypaste/catch.cpp29
-rw-r--r--test/Analysis/copypaste/dbus_autogenerated.cpp19
-rw-r--r--test/Analysis/copypaste/delete.cpp29
-rw-r--r--test/Analysis/copypaste/dependent-exist.cpp18
-rw-r--r--test/Analysis/copypaste/expr-types.cpp17
-rw-r--r--test/Analysis/copypaste/fold.cpp35
-rw-r--r--test/Analysis/copypaste/function-try-block.cpp9
-rw-r--r--test/Analysis/copypaste/functions.cpp58
-rw-r--r--test/Analysis/copypaste/generic.c31
-rw-r--r--test/Analysis/copypaste/labels.cpp51
-rw-r--r--test/Analysis/copypaste/lambda.cpp24
-rw-r--r--test/Analysis/copypaste/macro-complexity.cpp50
-rw-r--r--test/Analysis/copypaste/macros.cpp67
-rw-r--r--test/Analysis/copypaste/moc_autogenerated.cpp19
-rw-r--r--test/Analysis/copypaste/not-autogenerated.cpp14
-rw-r--r--test/Analysis/copypaste/objc-methods.m27
-rw-r--r--test/Analysis/copypaste/plist-diagnostics-notes-as-events.cpp19
-rw-r--r--test/Analysis/copypaste/plist-diagnostics.cpp19
-rw-r--r--test/Analysis/copypaste/sub-sequences.cpp27
-rw-r--r--test/Analysis/copypaste/suspicious-clones.cpp97
-rw-r--r--test/Analysis/copypaste/text-diagnostics.cpp17
-rw-r--r--test/Analysis/copypaste/ui_autogenerated.cpp19
-rw-r--r--test/Analysis/coverage.c102
-rw-r--r--test/Analysis/crash-trace.c23
-rw-r--r--test/Analysis/cstring-plist.c28
-rw-r--r--test/Analysis/cstring-ranges.c15
-rw-r--r--test/Analysis/cstring-syntax-cxx.cpp22
-rw-r--r--test/Analysis/cstring-syntax.c54
-rw-r--r--test/Analysis/ctor.mm864
-rw-r--r--test/Analysis/ctu-different-triples.cpp20
-rw-r--r--test/Analysis/ctu-hdr.h3
-rw-r--r--test/Analysis/ctu-main.c67
-rw-r--r--test/Analysis/ctu-main.cpp83
-rw-r--r--test/Analysis/ctu-unknown-parts-in-triples.cpp22
-rw-r--r--test/Analysis/cxx-crashes.cpp78
-rw-r--r--test/Analysis/cxx-for-range-cfg.cpp16
-rw-r--r--test/Analysis/cxx-for-range.cpp104
-rw-r--r--test/Analysis/cxx-method-names.cpp22
-rw-r--r--test/Analysis/cxx-uninitialized-object-inheritance.cpp833
-rw-r--r--test/Analysis/cxx-uninitialized-object-no-dereference.cpp27
-rw-r--r--test/Analysis/cxx-uninitialized-object-notes-as-warnings.cpp18
-rw-r--r--test/Analysis/cxx-uninitialized-object-ptr-ref.cpp908
-rw-r--r--test/Analysis/cxx-uninitialized-object-unionlike-constructs.cpp136
-rw-r--r--test/Analysis/cxx-uninitialized-object.cpp1132
-rw-r--r--test/Analysis/cxx11-crashes.cpp95
-rw-r--r--test/Analysis/cxxnewexpr-callback-inline.cpp32
-rw-r--r--test/Analysis/cxxnewexpr-callback-noinline.cpp29
-rw-r--r--test/Analysis/dead-stores.c575
-rw-r--r--test/Analysis/dead-stores.cpp204
-rw-r--r--test/Analysis/dead-stores.m119
-rw-r--r--test/Analysis/debug-CallGraph.cpp89
-rw-r--r--test/Analysis/default-analyze.m63
-rw-r--r--test/Analysis/default-diagnostic-visitors.c13
-rw-r--r--test/Analysis/delayed-template-parsing-crash.cpp11
-rw-r--r--test/Analysis/delegates.m131
-rw-r--r--test/Analysis/derived-to-base.cpp477
-rw-r--r--test/Analysis/designated-initializer.c41
-rw-r--r--test/Analysis/diagnostics/Inputs/expected-plists/deref-track-symbolic-region.c.plist657
-rw-r--r--test/Analysis/diagnostics/Inputs/expected-plists/plist-diagnostics-include-check.cpp.plist147
-rw-r--r--test/Analysis/diagnostics/Inputs/expected-plists/plist-multi-file.c.plist212
-rw-r--r--test/Analysis/diagnostics/Inputs/expected-plists/report-issues-within-main-file.cpp.plist1835
-rw-r--r--test/Analysis/diagnostics/Inputs/expected-plists/undef-value-caller.c.plist142
-rw-r--r--test/Analysis/diagnostics/Inputs/expected-plists/undef-value-param.c.plist1344
-rw-r--r--test/Analysis/diagnostics/Inputs/expected-plists/undef-value-param.m.plist1027
-rw-r--r--test/Analysis/diagnostics/Inputs/expected-sarif/sarif-diagnostics-taint-test.c.sarif114
-rw-r--r--test/Analysis/diagnostics/Inputs/expected-sarif/sarif-multi-diagnostic-test.c.sarif320
-rw-r--r--test/Analysis/diagnostics/Inputs/include/plist-diagnostics-include-check-macro.def1
-rw-r--r--test/Analysis/diagnostics/Inputs/include/plist-diagnostics-include-check-macro.h9
-rw-r--r--test/Analysis/diagnostics/Inputs/include/report-issues-within-main-file.h43
-rw-r--r--test/Analysis/diagnostics/Inputs/include/sys/queue.h4
-rw-r--r--test/Analysis/diagnostics/deref-track-symbolic-region.c41
-rw-r--r--test/Analysis/diagnostics/deref-track-symbolic-region.cpp43
-rw-r--r--test/Analysis/diagnostics/dtors.cpp25
-rw-r--r--test/Analysis/diagnostics/explicit-suppression.cpp24
-rw-r--r--test/Analysis/diagnostics/false-positive-suppression.c23
-rw-r--r--test/Analysis/diagnostics/find_last_store.c17
-rw-r--r--test/Analysis/diagnostics/implicit-cxx-std-suppression.cpp39
-rw-r--r--test/Analysis/diagnostics/macro-null-return-suppression.cpp68
-rw-r--r--test/Analysis/diagnostics/macros.cpp48
-rw-r--r--test/Analysis/diagnostics/macros.m31
-rw-r--r--test/Analysis/diagnostics/no-prune-paths.c21
-rw-r--r--test/Analysis/diagnostics/no-store-func-path-notes.c246
-rw-r--r--test/Analysis/diagnostics/no-store-func-path-notes.cpp374
-rw-r--r--test/Analysis/diagnostics/no-store-func-path-notes.m105
-rw-r--r--test/Analysis/diagnostics/plist-diagnostics-include-check.cpp10
-rw-r--r--test/Analysis/diagnostics/plist-multi-file.c8
-rw-r--r--test/Analysis/diagnostics/plist-multi-file.h3
-rw-r--r--test/Analysis/diagnostics/report-issues-within-main-file.cpp71
-rw-r--r--test/Analysis/diagnostics/sarif-diagnostics-taint-test.c15
-rw-r--r--test/Analysis/diagnostics/sarif-multi-diagnostic-test.c29
-rw-r--r--test/Analysis/diagnostics/shortest-path-suppression.c19
-rw-r--r--test/Analysis/diagnostics/text-diagnostics.c21
-rw-r--r--test/Analysis/diagnostics/track_subexpressions.cpp19
-rw-r--r--test/Analysis/diagnostics/undef-value-callee.h4
-rw-r--r--test/Analysis/diagnostics/undef-value-caller.c13
-rw-r--r--test/Analysis/diagnostics/undef-value-param.c65
-rw-r--r--test/Analysis/diagnostics/undef-value-param.m76
-rw-r--r--test/Analysis/disable-all-checks.c20
-rw-r--r--test/Analysis/dispatch-once.m116
-rw-r--r--test/Analysis/div-zero.cpp13
-rw-r--r--test/Analysis/division-by-zero.c7
-rw-r--r--test/Analysis/domtest.c168
-rw-r--r--test/Analysis/dtor-cxx11.cpp15
-rw-r--r--test/Analysis/dtor.cpp542
-rw-r--r--test/Analysis/dtors-in-dtor-cfg-output.cpp55
-rw-r--r--test/Analysis/dump_egraph.c16
-rw-r--r--test/Analysis/dump_egraph.cpp22
-rw-r--r--test/Analysis/dynamic-cast.cpp253
-rw-r--r--test/Analysis/dynamic_type_check.m43
-rw-r--r--test/Analysis/edges-new.mm592
-rw-r--r--test/Analysis/elementtype.c13
-rw-r--r--test/Analysis/end-function-return-stmt.cpp34
-rw-r--r--test/Analysis/engine/replay-without-inlining.c58
-rw-r--r--test/Analysis/enum-cast-out-of-range.cpp192
-rw-r--r--test/Analysis/enum.cpp69
-rw-r--r--test/Analysis/exceptions.mm38
-rw-r--r--test/Analysis/exercise-ps.c31
-rw-r--r--test/Analysis/explain-svals.c25
-rw-r--r--test/Analysis/explain-svals.cpp98
-rw-r--r--test/Analysis/explain-svals.m27
-rw-r--r--test/Analysis/exploration_order/noexprcrash.c17
-rw-r--r--test/Analysis/exploration_order/prefer_unexplored.cpp43
-rw-r--r--test/Analysis/expr-inspection.c25
-rw-r--r--test/Analysis/expr-inspection.cpp30
-rw-r--r--test/Analysis/fields.c125
-rw-r--r--test/Analysis/free.c79
-rw-r--r--test/Analysis/func-mapping-test.cpp7
-rw-r--r--test/Analysis/func.c41
-rw-r--r--test/Analysis/gcdantipatternchecker_test.m345
-rw-r--r--test/Analysis/generics.m408
-rw-r--r--test/Analysis/global-region-invalidation.c127
-rw-r--r--test/Analysis/global_region_invalidation.mm188
-rw-r--r--test/Analysis/globals.cpp111
-rw-r--r--test/Analysis/gmalloc.c169
-rw-r--r--test/Analysis/gtest.cpp164
-rw-r--r--test/Analysis/hangs.c30
-rw-r--r--test/Analysis/html-diag-singlefile.c14
-rw-r--r--test/Analysis/html-diag-singlefile.h4
-rw-r--r--test/Analysis/html-diags-analyze-headers.c10
-rw-r--r--test/Analysis/html-diags-analyze-headers.h5
-rw-r--r--test/Analysis/html-diags-multifile.c15
-rw-r--r--test/Analysis/html-diags-multifile.h4
-rw-r--r--test/Analysis/html-diags.c32
-rw-r--r--test/Analysis/html_diagnostics/relevant_lines/goto.c13
-rw-r--r--test/Analysis/html_diagnostics/relevant_lines/header.h12
-rw-r--r--test/Analysis/html_diagnostics/relevant_lines/macros_same_file.c15
-rw-r--r--test/Analysis/html_diagnostics/relevant_lines/multifile.c14
-rw-r--r--test/Analysis/html_diagnostics/relevant_lines/multiline_func_def.c16
-rw-r--r--test/Analysis/html_diagnostics/relevant_lines/notexecutedlines.c12
-rw-r--r--test/Analysis/html_diagnostics/relevant_lines/objcmethods.m19
-rw-r--r--test/Analysis/html_diagnostics/relevant_lines/simple_conditional.c13
-rw-r--r--test/Analysis/html_diagnostics/relevant_lines/switch.c20
-rw-r--r--test/Analysis/html_diagnostics/relevant_lines/switch_default.c20
-rw-r--r--test/Analysis/html_diagnostics/relevant_lines/synthesized_body.cpp25
-rw-r--r--test/Analysis/html_diagnostics/relevant_lines/unused_header.c19
-rw-r--r--test/Analysis/identical-expressions.cpp1564
-rw-r--r--test/Analysis/implicit-ctor-undef-value.cpp75
-rw-r--r--test/Analysis/index-type.c58
-rw-r--r--test/Analysis/initialization.c28
-rw-r--r--test/Analysis/initialization.cpp20
-rw-r--r--test/Analysis/initializer.cpp245
-rw-r--r--test/Analysis/initializers-cfg-output.cpp131
-rw-r--r--test/Analysis/inline-not-supported.c29
-rw-r--r--test/Analysis/inline-plist.c88
-rw-r--r--test/Analysis/inline-unique-reports.c18
-rw-r--r--test/Analysis/inline.c118
-rw-r--r--test/Analysis/inline.cpp443
-rw-r--r--test/Analysis/inline2.c15
-rw-r--r--test/Analysis/inline3.c15
-rw-r--r--test/Analysis/inline4.c15
-rw-r--r--test/Analysis/inlining/DynDispatchBifurcate.m191
-rw-r--r--test/Analysis/inlining/InlineObjCClassMethod.m311
-rw-r--r--test/Analysis/inlining/InlineObjCInstanceMethod.h46
-rw-r--r--test/Analysis/inlining/InlineObjCInstanceMethod.m148
-rw-r--r--test/Analysis/inlining/Inputs/expected-plists/eager-reclamation-path-notes.c.plist653
-rw-r--r--test/Analysis/inlining/Inputs/expected-plists/eager-reclamation-path-notes.cpp.plist377
-rw-r--r--test/Analysis/inlining/Inputs/expected-plists/path-notes.c.plist3780
-rw-r--r--test/Analysis/inlining/Inputs/expected-plists/path-notes.cpp.plist5227
-rw-r--r--test/Analysis/inlining/Inputs/expected-plists/path-notes.m.plist2001
-rw-r--r--test/Analysis/inlining/ObjCDynTypePopagation.m101
-rw-r--r--test/Analysis/inlining/ObjCImproperDynamictallyDetectableCast.m37
-rw-r--r--test/Analysis/inlining/RetainCountExamples.m127
-rw-r--r--test/Analysis/inlining/analysis-order.c15
-rw-r--r--test/Analysis/inlining/assume-super-init-does-not-return-nil.m41
-rw-r--r--test/Analysis/inlining/containers.cpp273
-rw-r--r--test/Analysis/inlining/dyn-dispatch-bifurcate.cpp38
-rw-r--r--test/Analysis/inlining/eager-reclamation-path-notes.c45
-rw-r--r--test/Analysis/inlining/eager-reclamation-path-notes.cpp36
-rw-r--r--test/Analysis/inlining/false-positive-suppression.c384
-rw-r--r--test/Analysis/inlining/false-positive-suppression.cpp212
-rw-r--r--test/Analysis/inlining/false-positive-suppression.m136
-rw-r--r--test/Analysis/inlining/inline-defensive-checks.c242
-rw-r--r--test/Analysis/inlining/inline-defensive-checks.cpp103
-rw-r--r--test/Analysis/inlining/inline-defensive-checks.m129
-rw-r--r--test/Analysis/inlining/path-notes.c158
-rw-r--r--test/Analysis/inlining/path-notes.cpp300
-rw-r--r--test/Analysis/inlining/path-notes.m184
-rw-r--r--test/Analysis/inlining/retain-count-self-init.m68
-rw-r--r--test/Analysis/inlining/stl.cpp28
-rw-r--r--test/Analysis/inlining/temp-dtors-path-notes.cpp59
-rw-r--r--test/Analysis/inlining/test-always-inline-size-option.c48
-rw-r--r--test/Analysis/inlining/test_objc_inlining_option.m34
-rw-r--r--test/Analysis/inner-pointer.cpp397
-rw-r--r--test/Analysis/invalid-a-na-ly-zer-con-fig-value.c84
-rw-r--r--test/Analysis/invalid-analyzer-config-value.c80
-rw-r--r--test/Analysis/invalidated-iterator.cpp399
-rw-r--r--test/Analysis/iterator-range.cpp238
-rw-r--r--test/Analysis/ivars.m140
-rw-r--r--test/Analysis/keychainAPI-diagnostic-visitor.m35
-rw-r--r--test/Analysis/keychainAPI.m468
-rw-r--r--test/Analysis/kmalloc-linux.c58
-rw-r--r--test/Analysis/lambda-notes.cpp13
-rw-r--r--test/Analysis/lambdas-generalized-capture.cpp50
-rw-r--r--test/Analysis/lambdas.cpp411
-rw-r--r--test/Analysis/lambdas.mm143
-rw-r--r--test/Analysis/lifetime-cfg-output.cpp783
-rw-r--r--test/Analysis/lifetime-extension.cpp334
-rw-r--r--test/Analysis/lifetime-extension.mm64
-rw-r--r--test/Analysis/lit.local.cfg22
-rw-r--r--test/Analysis/live-bindings-test.cpp124
-rw-r--r--test/Analysis/live-stmts.cpp167
-rw-r--r--test/Analysis/live-variables.cpp23
-rw-r--r--test/Analysis/live-variables.m24
-rw-r--r--test/Analysis/llvm-conventions.cpp225
-rw-r--r--test/Analysis/localization-aggressive.m295
-rw-r--r--test/Analysis/localization.m241
-rw-r--r--test/Analysis/logical-ops.c39
-rw-r--r--test/Analysis/loop-block-counts.c26
-rw-r--r--test/Analysis/loop-unrolling.cpp501
-rw-r--r--test/Analysis/loop-widening-ignore-static-methods.cpp12
-rw-r--r--test/Analysis/loop-widening-notes.cpp72
-rw-r--r--test/Analysis/loop-widening-preserve-reference-type.cpp14
-rw-r--r--test/Analysis/loop-widening.c204
-rw-r--r--test/Analysis/loopexit-cfg-output.cpp476
-rw-r--r--test/Analysis/lvalue.cpp7
-rw-r--r--test/Analysis/malloc-annotations.c273
-rw-r--r--test/Analysis/malloc-custom.c32
-rw-r--r--test/Analysis/malloc-fnptr-plist.c11
-rw-r--r--test/Analysis/malloc-free-after-return.cpp21
-rw-r--r--test/Analysis/malloc-interprocedural.c135
-rw-r--r--test/Analysis/malloc-overflow.c113
-rw-r--r--test/Analysis/malloc-overflow.cpp12
-rw-r--r--test/Analysis/malloc-overflow2.c40
-rw-r--r--test/Analysis/malloc-plist.c209
-rw-r--r--test/Analysis/malloc-protoype.c17
-rw-r--r--test/Analysis/malloc-sizeof.c52
-rw-r--r--test/Analysis/malloc-sizeof.cpp26
-rw-r--r--test/Analysis/malloc-three-arg.c58
-rw-r--r--test/Analysis/malloc.c1821
-rw-r--r--test/Analysis/malloc.cpp143
-rw-r--r--test/Analysis/malloc.m57
-rw-r--r--test/Analysis/malloc.mm332
-rw-r--r--test/Analysis/max-nodes-suppress-on-sink.c83
-rw-r--r--test/Analysis/max-nodes-suppress-on-sink.cpp34
-rw-r--r--test/Analysis/member-expr.cpp41
-rw-r--r--test/Analysis/method-arg-decay.m97
-rw-r--r--test/Analysis/method-call-intra-p.cpp33
-rw-r--r--test/Analysis/method-call-path-notes.cpp44
-rw-r--r--test/Analysis/method-call.cpp47
-rw-r--r--test/Analysis/misc-ps-64.m47
-rw-r--r--test/Analysis/misc-ps-arm.m19
-rw-r--r--test/Analysis/misc-ps-cxx0x.cpp89
-rw-r--r--test/Analysis/misc-ps-eager-assume.m147
-rw-r--r--test/Analysis/misc-ps-ranges.m59
-rw-r--r--test/Analysis/misc-ps-region-store-i386.m15
-rw-r--r--test/Analysis/misc-ps-region-store-x86_64.m15
-rw-r--r--test/Analysis/misc-ps-region-store.cpp728
-rw-r--r--test/Analysis/misc-ps-region-store.m1366
-rw-r--r--test/Analysis/misc-ps-region-store.mm49
-rw-r--r--test/Analysis/misc-ps.c203
-rw-r--r--test/Analysis/misc-ps.m1360
-rw-r--r--test/Analysis/mismatched-iterator.cpp191
-rw-r--r--test/Analysis/missing-bind-temporary.cpp130
-rw-r--r--test/Analysis/mmap-writeexec.c44
-rw-r--r--test/Analysis/model-file.cpp40
-rw-r--r--test/Analysis/mpichecker.cpp342
-rw-r--r--test/Analysis/mpicheckernotes.cpp34
-rw-r--r--test/Analysis/new-aligned.cpp14
-rw-r--r--test/Analysis/new-ctor-conservative.cpp46
-rw-r--r--test/Analysis/new-ctor-inlined.cpp55
-rw-r--r--test/Analysis/new-ctor-malloc.cpp21
-rw-r--r--test/Analysis/new-ctor-null-throw.cpp26
-rw-r--r--test/Analysis/new-ctor-null.cpp36
-rw-r--r--test/Analysis/new-ctor-recursive.cpp118
-rw-r--r--test/Analysis/new-ctor-symbolic.cpp33
-rw-r--r--test/Analysis/new-dynamic-types.cpp28
-rw-r--r--test/Analysis/new-with-exceptions.cpp53
-rw-r--r--test/Analysis/new.cpp371
-rw-r--r--test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret-region.m32
-rw-r--r--test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret.m98
-rw-r--r--test/Analysis/no-exit-cfg.c19
-rw-r--r--test/Analysis/no-outofbounds.c32
-rw-r--r--test/Analysis/no-unreachable-dtors.cpp11
-rw-r--r--test/Analysis/non-diagnosable-assumptions.c47
-rw-r--r--test/Analysis/nonnull-global-constants.mm103
-rw-r--r--test/Analysis/nonnull.m195
-rw-r--r--test/Analysis/nonnullparamchecker-crash.cpp11
-rw-r--r--test/Analysis/novoidtypecrash.c8
-rw-r--r--test/Analysis/null-deref-offsets.c37
-rw-r--r--test/Analysis/null-deref-path-notes.c52
-rw-r--r--test/Analysis/null-deref-path-notes.cpp25
-rw-r--r--test/Analysis/null-deref-path-notes.m70
-rw-r--r--test/Analysis/null-deref-ps-region.c72
-rw-r--r--test/Analysis/null-deref-ps.c331
-rw-r--r--test/Analysis/null-deref-static.m35
-rw-r--r--test/Analysis/nullability-arc.mm39
-rw-r--r--test/Analysis/nullability-no-arc.mm100
-rw-r--r--test/Analysis/nullability-notes.m21
-rw-r--r--test/Analysis/nullability.c12
-rw-r--r--test/Analysis/nullability.mm558
-rw-r--r--test/Analysis/nullability_nullonly.mm170
-rw-r--r--test/Analysis/nullptr.cpp183
-rw-r--r--test/Analysis/number-object-conversion.c40
-rw-r--r--test/Analysis/number-object-conversion.cpp94
-rw-r--r--test/Analysis/number-object-conversion.m112
-rw-r--r--test/Analysis/number-object-conversion.mm13
-rw-r--r--test/Analysis/objc-arc.m233
-rw-r--r--test/Analysis/objc-bool.m23
-rw-r--r--test/Analysis/objc-boxing.m92
-rw-r--r--test/Analysis/objc-encode.m9
-rw-r--r--test/Analysis/objc-for.m353
-rw-r--r--test/Analysis/objc-message.m40
-rw-r--r--test/Analysis/objc-method-coverage.m17
-rw-r--r--test/Analysis/objc-properties.m72
-rw-r--r--test/Analysis/objc-radar17039661.m61
-rw-r--r--test/Analysis/objc-string.mm39
-rw-r--r--test/Analysis/objc-subscript.m89
-rw-r--r--test/Analysis/objc/direct-ivar-assignment-in-annotated-functions.m63
-rw-r--r--test/Analysis/objc_invalidation.m377
-rw-r--r--test/Analysis/objcpp-uninitialized-object.mm32
-rw-r--r--test/Analysis/offsetofexpr-callback.c13
-rw-r--r--test/Analysis/openmp-unsupported.c7
-rw-r--r--test/Analysis/operator-calls.cpp132
-rw-r--r--test/Analysis/osobject-retain-release.cpp611
-rw-r--r--test/Analysis/out-of-bounds-new.cpp156
-rw-r--r--test/Analysis/out-of-bounds.c176
-rw-r--r--test/Analysis/outofbound-notwork.c32
-rw-r--r--test/Analysis/outofbound.c124
-rw-r--r--test/Analysis/override-werror.c14
-rw-r--r--test/Analysis/padding_c.c236
-rw-r--r--test/Analysis/padding_cpp.cpp202
-rw-r--r--test/Analysis/padding_inherit.cpp28
-rw-r--r--test/Analysis/padding_message.cpp311
-rw-r--r--test/Analysis/plist-diagnostics-template-function.cpp41
-rw-r--r--test/Analysis/plist-diagnostics-template-record.cpp42
-rw-r--r--test/Analysis/plist-html-macros.c30
-rw-r--r--test/Analysis/plist-macros-with-expansion.cpp442
-rw-r--r--test/Analysis/plist-macros.cpp88
-rw-r--r--test/Analysis/plist-output-alternate.m59
-rw-r--r--test/Analysis/plist-output.m196
-rw-r--r--test/Analysis/plist-stats-output.c17
-rw-r--r--test/Analysis/pointer-arithmetic.c30
-rw-r--r--test/Analysis/pointer-to-member.cpp271
-rw-r--r--test/Analysis/pr22954.c917
-rw-r--r--test/Analysis/pr37802.cpp107
-rw-r--r--test/Analysis/pr4209.m72
-rw-r--r--test/Analysis/pr_2542_rdar_6793404.m67
-rw-r--r--test/Analysis/pr_4164.c41
-rw-r--r--test/Analysis/properties.m1007
-rw-r--r--test/Analysis/properties.mm79
-rw-r--r--test/Analysis/pthreadlock.c473
-rw-r--r--test/Analysis/ptr-arith.c332
-rw-r--r--test/Analysis/ptr-arith.cpp119
-rw-r--r--test/Analysis/qt_malloc.cpp21
-rw-r--r--test/Analysis/range_casts.c156
-rw-r--r--test/Analysis/rdar-6442306-1.m34
-rw-r--r--test/Analysis/rdar-6540084.m37
-rw-r--r--test/Analysis/rdar-6541136-region.c27
-rw-r--r--test/Analysis/rdar-6562655.m65
-rw-r--r--test/Analysis/rdar-6600344-nil-receiver-undefined-struct-ret.m26
-rw-r--r--test/Analysis/rdar-7168531.m18
-rw-r--r--test/Analysis/redefined_system.c18
-rw-r--r--test/Analysis/refcnt_naming.m84
-rw-r--r--test/Analysis/reference.cpp258
-rw-r--r--test/Analysis/reference.mm17
-rw-r--r--test/Analysis/region-1.m92
-rw-r--r--test/Analysis/region-store.c56
-rw-r--r--test/Analysis/region-store.cpp28
-rw-r--r--test/Analysis/region_store_overflow.c16
-rw-r--r--test/Analysis/reinterpret-cast.cpp118
-rw-r--r--test/Analysis/retain-release-arc.m165
-rw-r--r--test/Analysis/retain-release-cache-out.m27
-rw-r--r--test/Analysis/retain-release-cf-audited.m33
-rw-r--r--test/Analysis/retain-release-cpp-classes.cpp33
-rw-r--r--test/Analysis/retain-release-inline.m483
-rw-r--r--test/Analysis/retain-release-path-notes.m331
-rw-r--r--test/Analysis/retain-release-region-store.m257
-rw-r--r--test/Analysis/retain-release-safe.c93
-rw-r--r--test/Analysis/retain-release.m2371
-rw-r--r--test/Analysis/retain-release.mm487
-rw-r--r--test/Analysis/retaincountchecker-compoundregion.m25
-rw-r--r--test/Analysis/return-ptr-range.cpp27
-rw-r--r--test/Analysis/return-stmt-merge.cpp37
-rw-r--r--test/Analysis/scopes-cfg-output.cpp1170
-rw-r--r--test/Analysis/security-syntax-checks-no-emit.c34
-rw-r--r--test/Analysis/security-syntax-checks.m240
-rw-r--r--test/Analysis/self-assign.cpp90
-rw-r--r--test/Analysis/self-init.m308
-rw-r--r--test/Analysis/shallow-mode.m29
-rw-r--r--test/Analysis/simple-stream-checks.c96
-rw-r--r--test/Analysis/sizeofpointer.c8
-rw-r--r--test/Analysis/stack-addr-ps.c99
-rw-r--r--test/Analysis/stack-addr-ps.cpp139
-rw-r--r--test/Analysis/stack-block-returned.cpp9
-rw-r--r--test/Analysis/stack-capture-leak-arc.mm189
-rw-r--r--test/Analysis/stack-capture-leak-no-arc.mm37
-rw-r--r--test/Analysis/stackaddrleak.c58
-rw-r--r--test/Analysis/static_local.m19
-rw-r--r--test/Analysis/stats.c9
-rw-r--r--test/Analysis/std-c-library-functions-inlined.c17
-rw-r--r--test/Analysis/std-c-library-functions.c187
-rw-r--r--test/Analysis/std-c-library-functions.cpp14
-rw-r--r--test/Analysis/stream.c85
-rw-r--r--test/Analysis/string-fail.c113
-rw-r--r--test/Analysis/string-with-signedness.c10
-rw-r--r--test/Analysis/string.c1550
-rw-r--r--test/Analysis/string.cpp28
-rw-r--r--test/Analysis/structured_bindings.cc10
-rw-r--r--test/Analysis/superclass.m241
-rw-r--r--test/Analysis/sval-dump-int128.c7
-rw-r--r--test/Analysis/svalbuilder-float-cast.c20
-rw-r--r--test/Analysis/svalbuilder-logic.c16
-rw-r--r--test/Analysis/svalbuilder-rearrange-comparisons.c998
-rw-r--r--test/Analysis/switch-case.c220
-rw-r--r--test/Analysis/symbol-reaper.c135
-rw-r--r--test/Analysis/taint-diagnostic-visitor.c36
-rw-r--r--test/Analysis/taint-generic.c289
-rw-r--r--test/Analysis/taint-tester.c198
-rw-r--r--test/Analysis/taint-tester.cpp35
-rw-r--r--test/Analysis/taint-tester.m21
-rw-r--r--test/Analysis/temp-obj-dtors-cfg-output.cpp1461
-rw-r--r--test/Analysis/temp-obj-dtors-option.cpp22
-rw-r--r--test/Analysis/templates.cpp72
-rw-r--r--test/Analysis/temporaries-callback-order.cpp31
-rw-r--r--test/Analysis/temporaries.cpp1248
-rw-r--r--test/Analysis/temporaries.mm29
-rw-r--r--test/Analysis/test-after-div-zero.c204
-rw-r--r--test/Analysis/test-include-cpp.cpp13
-rw-r--r--test/Analysis/test-include-cpp.h9
-rw-r--r--test/Analysis/test-include.c21
-rw-r--r--test/Analysis/test-include.h2
-rw-r--r--test/Analysis/test-objc-non-nil-return-value-checker.m50
-rw-r--r--test/Analysis/test-separate-retaincount.cpp38
-rw-r--r--test/Analysis/test-variably-modified-types.c13
-rw-r--r--test/Analysis/this-pointer.cpp88
-rw-r--r--test/Analysis/traversal-algorithm.mm213
-rw-r--r--test/Analysis/traversal-begin-end-function.c22
-rw-r--r--test/Analysis/traversal-path-unification.c29
-rw-r--r--test/Analysis/trustnonnullchecker_test.m197
-rw-r--r--test/Analysis/trustnonnullchecker_test.mm9
-rw-r--r--test/Analysis/undef-buffers.c43
-rw-r--r--test/Analysis/undef-call.c16
-rw-r--r--test/Analysis/unified-sources/UnifiedSource-1.cpp5
-rw-r--r--test/Analysis/unified-sources/container.h10
-rw-r--r--test/Analysis/unified-sources/source1.cpp15
-rw-r--r--test/Analysis/unified-sources/source2.cpp25
-rw-r--r--test/Analysis/uninit-const.c244
-rw-r--r--test/Analysis/uninit-const.cpp131
-rw-r--r--test/Analysis/uninit-msg-expr.m56
-rw-r--r--test/Analysis/uninit-ps-rdar6145427.m39
-rw-r--r--test/Analysis/uninit-sometimes.cpp429
-rw-r--r--test/Analysis/uninit-vals-union.c13
-rw-r--r--test/Analysis/uninit-vals.c199
-rw-r--r--test/Analysis/uninit-vals.cpp35
-rw-r--r--test/Analysis/uninit-vals.m425
-rw-r--r--test/Analysis/unions-region.m42
-rw-r--r--test/Analysis/unions.cpp123
-rw-r--r--test/Analysis/unix-api.c92
-rw-r--r--test/Analysis/unix-api.cpp62
-rw-r--r--test/Analysis/unix-fns.c248
-rw-r--r--test/Analysis/unreachable-code-path.c226
-rw-r--r--test/Analysis/unsupported-types.c31
-rw-r--r--test/Analysis/unused-ivars.m131
-rw-r--r--test/Analysis/use-after-move.cpp1139
-rw-r--r--test/Analysis/valist-as-lazycompound.c21
-rw-r--r--test/Analysis/valist-uninitialized-no-undef.c40
-rw-r--r--test/Analysis/valist-uninitialized.c178
-rw-r--r--test/Analysis/valist-unterminated.c155
-rw-r--r--test/Analysis/variadic-method-types.m100
-rw-r--r--test/Analysis/vector.m61
-rw-r--r--test/Analysis/vfork.c114
-rw-r--r--test/Analysis/virtualcall.cpp297
-rw-r--r--test/Analysis/virtualcall.h14
-rw-r--r--test/Analysis/vla.c86
-rw-r--r--test/Analysis/weak-functions.c117
-rw-r--r--test/Analysis/yaccignore.c13
-rw-r--r--test/Analysis/z3-crosscheck.c43
-rw-r--r--test/Analysis/z3/apsint.c16
-rw-r--r--test/Analysis/z3/enabled.c3
654 files changed, 0 insertions, 223441 deletions
diff --git a/test/Analysis/CFContainers-invalid.c b/test/Analysis/CFContainers-invalid.c
deleted file mode 100644
index ce1284f75da7..000000000000
--- a/test/Analysis/CFContainers-invalid.c
+++ /dev/null
@@ -1,20 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=osx.coreFoundation.containers.PointerSizedValues -triple x86_64-apple-darwin -verify %s
-// expected-no-diagnostics
-
-typedef const struct __CFAllocator * CFAllocatorRef;
-typedef const struct __CFArray * CFArrayRef;
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef const struct __CFSet * CFSetRef;
-
-extern const CFAllocatorRef kCFAllocatorDefault;
-
-// Unexpected declarations for these:
-CFArrayRef CFArrayCreate(CFAllocatorRef);
-CFDictionaryRef CFDictionaryCreate(CFAllocatorRef);
-CFSetRef CFSetCreate(CFAllocatorRef);
-
-void testNoCrash() {
- (void)CFArrayCreate(kCFAllocatorDefault);
- (void)CFDictionaryCreate(kCFAllocatorDefault);
- (void)CFSetCreate(kCFAllocatorDefault);
-}
diff --git a/test/Analysis/CFContainers.mm b/test/Analysis/CFContainers.mm
deleted file mode 100644
index 2e094d3cb7d2..000000000000
--- a/test/Analysis/CFContainers.mm
+++ /dev/null
@@ -1,247 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin -analyzer-output=text\
-// RUN: -analyzer-checker=osx.coreFoundation.containers.PointerSizedValues\
-// RUN: -analyzer-checker=osx.coreFoundation.containers.OutOfBounds\
-// RUN: -verify %s
-
-typedef const struct __CFAllocator * CFAllocatorRef;
-typedef const struct __CFString * CFStringRef;
-typedef unsigned char Boolean;
-typedef signed long CFIndex;
-extern
-const CFAllocatorRef kCFAllocatorDefault;
-typedef const void * (*CFArrayRetainCallBack)(CFAllocatorRef allocator, const void *value);
-typedef void (*CFArrayReleaseCallBack)(CFAllocatorRef allocator, const void *value);
-typedef CFStringRef (*CFArrayCopyDescriptionCallBack)(const void *value);
-typedef Boolean (*CFArrayEqualCallBack)(const void *value1, const void *value2);
-typedef struct {
- CFIndex version;
- CFArrayRetainCallBack retain;
- CFArrayReleaseCallBack release;
- CFArrayCopyDescriptionCallBack copyDescription;
- CFArrayEqualCallBack equal;
-} CFArrayCallBacks;
-typedef const struct __CFArray * CFArrayRef;
-CFArrayRef CFArrayCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFArrayCallBacks *callBacks);
-typedef struct __CFArray * CFMutableArrayRef;
-typedef const struct __CFString * CFStringRef;
-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;
-typedef const struct __CFNumber * CFNumberRef;
-typedef CFIndex CFComparisonResult;
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef const void * (*CFDictionaryRetainCallBack)(CFAllocatorRef allocator, const void *value);
-typedef void (*CFDictionaryReleaseCallBack)(CFAllocatorRef allocator, const void *value);
-typedef CFStringRef (*CFDictionaryCopyDescriptionCallBack)(const void *value);
-typedef Boolean (*CFDictionaryEqualCallBack)(const void *value1, const void *value2);
-typedef Boolean (*CFArrayEqualCallBack)(const void *value1, const void *value2);
-typedef Boolean (*CFSetEqualCallBack)(const void *value1, const void *value2);
-typedef const void * (*CFSetRetainCallBack)(CFAllocatorRef allocator, const void *value);
-typedef void (*CFSetReleaseCallBack)(CFAllocatorRef allocator, const void *value);
-typedef CFStringRef (*CFSetCopyDescriptionCallBack)(const void *value);
-typedef struct {
- CFIndex version;
- CFSetRetainCallBack retain;
- CFSetReleaseCallBack release;
- CFSetCopyDescriptionCallBack copyDescription;
- CFSetEqualCallBack equal;
-} CFSetCallBacks;
-typedef struct {
- CFIndex version;
- CFDictionaryRetainCallBack retain;
- CFDictionaryReleaseCallBack release;
- CFDictionaryCopyDescriptionCallBack copyDescription;
- CFDictionaryEqualCallBack equal;
-} CFDictionaryKeyCallBacks;
-typedef struct {
- CFIndex version;
- CFDictionaryRetainCallBack retain;
- CFDictionaryReleaseCallBack release;
- CFDictionaryCopyDescriptionCallBack copyDescription;
- CFDictionaryEqualCallBack equal;
-} CFDictionaryValueCallBacks;
-CFDictionaryRef CFDictionaryCreate(CFAllocatorRef allocator, const void **keys, const void **values, CFIndex numValues, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
-extern
-const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
-typedef const struct __CFSet * CFSetRef;
-extern
-const CFSetCallBacks kCFTypeSetCallBacks;
-extern
-const CFDictionaryKeyCallBacks kCFCopyStringDictionaryKeyCallBacks;
-extern
-const void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);
-extern
-CFIndex CFArrayGetCount(CFArrayRef theArray);
-CFDictionaryRef CFDictionaryCreate(CFAllocatorRef allocator, const void **keys, const void **values, CFIndex numValues, const
-CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
-CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-extern
-CFSetRef CFSetCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFSetCallBacks *callBacks);
-#define CFSTR(cStr) ((CFStringRef) __builtin___CFStringMakeConstantString ("" cStr ""))
-#define NULL __null
-
-// Done with the headers.
-// Test alpha.osx.cocoa.ContainerAPI checker.
-void testContainers(int **xNoWarn, CFIndex count) {
- int x[] = { 1, 2, 3 };
- CFArrayRef foo = CFArrayCreate(kCFAllocatorDefault, (const void **) x, sizeof(x) / sizeof(x[0]), 0);
- // expected-warning@-1 {{The second argument to 'CFArrayCreate' must be a C array of pointer-sized}}
- // expected-note@-2 {{The second argument to 'CFArrayCreate' must be a C array of pointer-sized}}
-
- CFArrayRef fooNoWarn = CFArrayCreate(kCFAllocatorDefault, (const void **) xNoWarn, sizeof(xNoWarn) / sizeof(xNoWarn[0]), 0); // no warning
- CFArrayRef fooNoWarn2 = CFArrayCreate(kCFAllocatorDefault, 0, sizeof(xNoWarn) / sizeof(xNoWarn[0]), 0);// no warning, passing in 0
- CFArrayRef fooNoWarn3 = CFArrayCreate(kCFAllocatorDefault, NULL, sizeof(xNoWarn) / sizeof(xNoWarn[0]), 0);// no warning, passing in NULL
-
- CFSetRef set = CFSetCreate(NULL, (const void **)x, 3, &kCFTypeSetCallBacks);
- // expected-warning@-1 {{The second argument to 'CFSetCreate' must be a C array of pointer-sized values}}
- // expected-note@-2 {{The second argument to 'CFSetCreate' must be a C array of pointer-sized values}}
- CFArrayRef* pairs = new CFArrayRef[count];
- CFSetRef fSet = CFSetCreate(kCFAllocatorDefault, (const void**) pairs, count - 1, &kCFTypeSetCallBacks);// no warning
-}
-
-void CreateDict(int *elems) {
- const short days28 = 28;
- const short days30 = 30;
- const short days31 = 31;
- CFIndex numValues = 6;
- CFStringRef keys[6];
- CFNumberRef values[6];
- keys[0] = CFSTR("January"); values[0] = CFNumberCreate(kCFAllocatorDefault, kCFNumberShortType, &days31);
- keys[1] = CFSTR("February"); values[1] = CFNumberCreate(kCFAllocatorDefault, kCFNumberShortType, &days28);
- keys[2] = CFSTR("March"); values[2] = CFNumberCreate(kCFAllocatorDefault, kCFNumberShortType, &days31);
- keys[3] = CFSTR("April"); values[3] = CFNumberCreate(kCFAllocatorDefault, kCFNumberShortType, &days30);
- keys[4] = CFSTR("May"); values[4] = CFNumberCreate(kCFAllocatorDefault, kCFNumberShortType, &days31);
- keys[5] = CFSTR("June"); values[5] = CFNumberCreate(kCFAllocatorDefault, kCFNumberShortType, &days30);
-
- const CFDictionaryKeyCallBacks keyCB = kCFCopyStringDictionaryKeyCallBacks;
- const CFDictionaryValueCallBacks valCB = kCFTypeDictionaryValueCallBacks;
- CFDictionaryRef dict1 = CFDictionaryCreate(kCFAllocatorDefault, (const void**)keys, (const void**)values, numValues, &keyCB, &valCB); // no warning
- CFDictionaryRef dict2 = CFDictionaryCreate(kCFAllocatorDefault, (const void**)elems[0], (const void**)values, numValues, &keyCB, &valCB);
- // expected-warning@-1 {{The second argument to 'CFDictionaryCreate' must be a C array of}}
- // expected-note@-2 {{The second argument to 'CFDictionaryCreate' must be a C array of}}
- // expected-warning@-3{{cast to 'const void **' from smaller integer type 'int'}}
- CFDictionaryRef dict3 = CFDictionaryCreate(kCFAllocatorDefault, (const void**)keys, (const void**)elems, numValues, &keyCB, &valCB);
- // expected-warning@-1 {{The third argument to 'CFDictionaryCreate' must be a C array of pointer-sized values}}
- // expected-note@-2 {{The third argument to 'CFDictionaryCreate' must be a C array of pointer-sized values}}
-}
-
-void OutOfBoundsSymbolicOffByOne(const void ** input, CFIndex S) {
- CFArrayRef array;
- array = CFArrayCreate(kCFAllocatorDefault, input, S, 0);
- const void *s1 = CFArrayGetValueAtIndex(array, 0); // no warning
- const void *s2 = CFArrayGetValueAtIndex(array, S-1); // no warning
- const void *s3 = CFArrayGetValueAtIndex(array, S); // expected-warning {{Index is out of bounds}}
- // expected-note@-1 {{Index is out of bounds}}
-}
-
-void OutOfBoundsConst(const void ** input, CFIndex S) {
- CFArrayRef array;
- array = CFArrayCreate(kCFAllocatorDefault, input, 3, 0);
- const void *s1 = CFArrayGetValueAtIndex(array, 0); // no warning
- const void *s2 = CFArrayGetValueAtIndex(array, 2); // no warning
- const void *s3 = CFArrayGetValueAtIndex(array, 5); // expected-warning {{Index is out of bounds}}
- // expected-note@-1 {{Index is out of bounds}}
-
- // TODO: The solver is probably not strong enough here.
- CFIndex sIndex;
- for (sIndex = 0 ; sIndex <= 5 ; sIndex += 3 ) {
- const void *s = CFArrayGetValueAtIndex(array, sIndex);
- }
-}
-
-void OutOfBoundsZiro(const void ** input, CFIndex S) {
- CFArrayRef array;
- // The API allows to set the size to 0. Check that we don't undeflow when the size is 0.
- array = CFArrayCreate(kCFAllocatorDefault, 0, 0, 0);
- const void *s1 = CFArrayGetValueAtIndex(array, 0); // expected-warning {{Index is out of bounds}}
- // expected-note@-1 {{Index is out of bounds}}
-}
-
-void TestGetCount(CFArrayRef A, CFIndex sIndex) {
- CFIndex sCount = CFArrayGetCount(A); // expected-note{{'sCount' initialized here}}
- if (sCount > sIndex) // expected-note{{Assuming 'sCount' is <= 'sIndex'}}
- // expected-note@-1{{Taking false branch}}
- const void *s1 = CFArrayGetValueAtIndex(A, sIndex);
- const void *s2 = CFArrayGetValueAtIndex(A, sCount);// expected-warning {{Index is out of bounds}}
- // expected-note@-1 {{Index is out of bounds}}
-}
-
-typedef void* XX[3];
-void TestPointerToArray(int *elems, void *p1, void *p2, void *p3, unsigned count, void* fn[], char cp[]) {
- void* x[] = { p1, p2, p3 };
- CFArrayCreate(0, (const void **) &x, count, 0); // no warning
-
- void* y[] = { p1, p2, p3 };
- CFArrayCreate(0, (const void **) y, count, 0); // no warning
- XX *z = &x;
- CFArrayCreate(0, (const void **) z, count, 0); // no warning
-
- CFArrayCreate(0, (const void **) &fn, count, 0); // false negative
- CFArrayCreate(0, (const void **) fn, count, 0); // no warning
- CFArrayCreate(0, (const void **) cp, count, 0); // expected-warning {{The second argument to 'CFArrayCreate' must be a C array of pointer-sized}}
- // expected-note@-1 {{The second argument to 'CFArrayCreate' must be a C array of pointer-sized}}
-
- char cc[] = { 0, 2, 3 };
- CFArrayCreate(0, (const void **) &cc, count, 0); // expected-warning {{The second argument to 'CFArrayCreate' must be a C array of pointer-sized}}
- // expected-note@-1 {{The second argument to 'CFArrayCreate' must be a C array of pointer-sized}}
- CFArrayCreate(0, (const void **) cc, count, 0); // expected-warning {{The second argument to 'CFArrayCreate' must be a C array of pointer-sized}}
- // expected-note@-1 {{The second argument to 'CFArrayCreate' must be a C array of pointer-sized}}
-}
-
-void TestUndef(CFArrayRef A, CFIndex sIndex, void* x[]) {
- unsigned undefVal;
- const void *s1 = CFArrayGetValueAtIndex(A, undefVal);
-
- unsigned undefVal2;
- CFArrayRef B = CFArrayCreate(0, (const void **) &x, undefVal2, 0);
- const void *s2 = CFArrayGetValueAtIndex(B, 2);
-}
-
-void TestConst(CFArrayRef A, CFIndex sIndex, void* x[]) {
- CFArrayRef B = CFArrayCreate(0, (const void **) &x, 4, 0);
- const void *s1 = CFArrayGetValueAtIndex(B, 2);
-
-}
-
-void TestNullArray() {
- CFArrayGetValueAtIndex(0, 0);
-}
-
-void ArrayRefMutableEscape(CFMutableArrayRef a);
-void ArrayRefEscape(CFArrayRef a);
-
-void TestCFMutableArrayRefEscapeViaMutableArgument(CFMutableArrayRef a) {
- CFIndex aLen = CFArrayGetCount(a);
- ArrayRefMutableEscape(a);
-
- // ArrayRefMutableEscape could mutate a to make it have
- // at least aLen + 1 elements, so do not report an error here.
- CFArrayGetValueAtIndex(a, aLen);
-}
-
-void TestCFMutableArrayRefEscapeViaImmutableArgument(CFMutableArrayRef a) {
- CFIndex aLen = CFArrayGetCount(a); // expected-note{{'aLen' initialized here}}
- ArrayRefEscape(a);
-
- // ArrayRefEscape is declared to take a CFArrayRef (i.e, an immutable array)
- // so we assume it does not change the length of a.
- CFArrayGetValueAtIndex(a, aLen); // expected-warning {{Index is out of bounds}}
- // expected-note@-1 {{Index is out of bounds}}
-}
diff --git a/test/Analysis/CFNumber.c b/test/Analysis/CFNumber.c
deleted file mode 100644
index 7ac65cc1d2b2..000000000000
--- a/test/Analysis/CFNumber.c
+++ /dev/null
@@ -1,47 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.coreFoundation.CFNumber,osx.cocoa.RetainCount -analyzer-store=region -verify -triple x86_64-apple-darwin9 %s
-
-typedef signed long CFIndex;
-typedef const struct __CFAllocator * CFAllocatorRef;
-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;
-typedef const struct __CFNumber * CFNumberRef;
-typedef unsigned char Boolean;
-extern CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-Boolean CFNumberGetValue(CFNumberRef number, CFNumberType theType, void *valuePtr);
-
-__attribute__((cf_returns_retained)) CFNumberRef f1(unsigned char x) {
- return CFNumberCreate(0, kCFNumberSInt16Type, &x); // expected-warning{{An 8-bit integer is used to initialize a CFNumber object that represents a 16-bit integer; 8 bits of the CFNumber value will be garbage}}
-}
-
-__attribute__((cf_returns_retained)) CFNumberRef f2(unsigned short x) {
- return CFNumberCreate(0, kCFNumberSInt8Type, &x); // expected-warning{{A 16-bit integer is used to initialize a CFNumber object that represents an 8-bit integer; 8 bits of the integer value will be lost}}
-}
-
-// test that the attribute overrides the naming convention.
-__attribute__((cf_returns_not_retained)) CFNumberRef CreateNum(unsigned char x) {
- return CFNumberCreate(0, kCFNumberSInt8Type, &x); // expected-warning{{leak}}
-}
-
-__attribute__((cf_returns_retained)) CFNumberRef f3(unsigned i) {
- return CFNumberCreate(0, kCFNumberLongType, &i); // expected-warning{{A 32-bit integer is used to initialize a CFNumber object that represents a 64-bit integer}}
-}
-
-unsigned char getValueTest1(CFNumberRef x) {
- unsigned char scalar = 0;
- CFNumberGetValue(x, kCFNumberSInt16Type, &scalar); // expected-warning{{A CFNumber object that represents a 16-bit integer is used to initialize an 8-bit integer; 8 bits of the CFNumber value will overwrite adjacent storage}}
- return scalar;
-}
-
-unsigned char getValueTest2(CFNumberRef x) {
- unsigned short scalar = 0;
- CFNumberGetValue(x, kCFNumberSInt8Type, &scalar); // expected-warning{{A CFNumber object that represents an 8-bit integer is used to initialize a 16-bit integer; 8 bits of the integer value will be garbage}}
- return scalar;
-}
diff --git a/test/Analysis/CFRetainRelease_NSAssertionHandler.m b/test/Analysis/CFRetainRelease_NSAssertionHandler.m
deleted file mode 100644
index f358ee64ceb4..000000000000
--- a/test/Analysis/CFRetainRelease_NSAssertionHandler.m
+++ /dev/null
@@ -1,73 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -verify %s -analyzer-store=region
-// expected-no-diagnostics
-
-typedef struct objc_selector *SEL;
-typedef signed char BOOL;
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@protocol NSCopying - (id)copyWithZone:(NSZone *)zone; @end
-@protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone; @end
-@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; @end
-@interface NSObject <NSObject> {} - (id)init; @end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
-@end extern NSString * const NSBundleDidLoadNotification;
-@interface NSAssertionHandler : NSObject {}
-+ (NSAssertionHandler *)currentHandler;
-- (void)handleFailureInMethod:(SEL)selector object:(id)object file:(NSString *)fileName lineNumber:(NSInteger)line description:(NSString *)format,...;
-- (void)handleFailureInFunction:(NSString *)functionName file:(NSString *)fileName lineNumber:(NSInteger)line description:(NSString *)format,...;
-@end
-extern NSString * const NSConnectionReplyMode;
-
-//----------------------------------------------------------------------------//
-// The following test case was filed in PR 2593:
-// http://llvm.org/bugs/show_bug.cgi?id=2593
-//
-// There should be no null dereference flagged by the checker because of
-// NSParameterAssert and NSAssert.
-
-
-@interface TestAssert : NSObject {}
-@end
-
-@implementation TestAssert
-
-- (id)initWithPointer: (int*)x
-{
- // Expansion of: NSParameterAssert( x != 0 );
- do { if (!((x != 0))) { [[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd object:self file:[NSString stringWithUTF8String:"CFRetainRelease_NSAssertionHandler.m"] lineNumber:21 description:(@"Invalid parameter not satisfying: %s"), ("x != 0"), (0), (0), (0), (0)]; } } while(0);
-
- if( (self = [super init]) != 0 )
- {
- *x = 1; // no-warning
- }
-
- return self;
-}
-
-- (id)initWithPointer2: (int*)x
-{
- // Expansion of: NSAssert( x != 0, @"" );
- do { if (!((x != 0))) { [[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd object:self file:[NSString stringWithUTF8String:"CFRetainRelease_NSAssertionHandler.m"] lineNumber:33 description:((@"")), (0), (0), (0), (0), (0)]; } } while(0);
-
- if( (self = [super init]) != 0 )
- {
- *x = 1; // no-warning
- }
-
- return self;
-}
-
-@end
-
-void pointerFunction (int *x) {
- // Manual expansion of NSCAssert( x != 0, @"")
- do { if (!((x != 0))) { [[NSAssertionHandler currentHandler] handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__] file:[NSString stringWithUTF8String:__FILE__] lineNumber:__LINE__ description:((@""))]; } } while(0);
-
- *x = 1; // no-warning
-}
diff --git a/test/Analysis/CGColorSpace.c b/test/Analysis/CGColorSpace.c
deleted file mode 100644
index 38f0512b0063..000000000000
--- a/test/Analysis/CGColorSpace.c
+++ /dev/null
@@ -1,18 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -verify %s
-
-typedef struct CGColorSpace *CGColorSpaceRef;
-extern CGColorSpaceRef CGColorSpaceCreateDeviceRGB(void);
-extern CGColorSpaceRef CGColorSpaceRetain(CGColorSpaceRef space);
-extern void CGColorSpaceRelease(CGColorSpaceRef space);
-
-void f() {
- CGColorSpaceRef X = CGColorSpaceCreateDeviceRGB(); // expected-warning{{leak}}
- CGColorSpaceRetain(X);
-}
-
-void fb() {
- CGColorSpaceRef X = CGColorSpaceCreateDeviceRGB();
- CGColorSpaceRetain(X);
- CGColorSpaceRelease(X);
- CGColorSpaceRelease(X); // no-warning
-}
diff --git a/test/Analysis/CheckNSError.m b/test/Analysis/CheckNSError.m
deleted file mode 100644
index 6de98e85efe3..000000000000
--- a/test/Analysis/CheckNSError.m
+++ /dev/null
@@ -1,56 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.NSError,osx.coreFoundation.CFError -analyzer-store=region -verify -Wno-objc-root-class %s
-
-
-typedef signed char BOOL;
-typedef int NSInteger;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@protocol NSCopying - (id)copyWithZone:(NSZone *)zone; @end
-@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; @end
-@interface NSObject <NSObject> {} @end
-@class NSDictionary;
-@interface NSError : NSObject <NSCopying, NSCoding> {}
-+ (id)errorWithDomain:(NSString *)domain code:(NSInteger)code userInfo:(NSDictionary *)dict;
-@end
-extern NSString * const NSXMLParserErrorDomain ;
-
-@interface A
-- (void)myMethodWhichMayFail:(NSError **)error;
-- (BOOL)myMethodWhichMayFail2:(NSError **)error;
-@end
-
-@implementation A
-- (void)myMethodWhichMayFail:(NSError **)error { // expected-warning {{Method accepting NSError** should have a non-void return value to indicate whether or not an error occurred}}
- *error = [NSError errorWithDomain:@"domain" code:1 userInfo:0]; // expected-warning {{Potential null dereference}}
-}
-
-- (BOOL)myMethodWhichMayFail2:(NSError **)error { // no-warning
- if (error) *error = [NSError errorWithDomain:@"domain" code:1 userInfo:0]; // no-warning
- return 0;
-}
-@end
-
-struct __CFError {};
-typedef struct __CFError* CFErrorRef;
-
-void foo(CFErrorRef* error) { // expected-warning {{Function accepting CFErrorRef* should have a non-void return value to indicate whether or not an error occurred}}
- *error = 0; // expected-warning {{Potential null dereference}}
-}
-
-int f1(CFErrorRef* error) {
- if (error) *error = 0; // no-warning
- return 0;
-}
-
-int f2(CFErrorRef* error) {
- if (0 != error) *error = 0; // no-warning
- return 0;
-}
-
-int f3(CFErrorRef* error) {
- if (error != 0) *error = 0; // no-warning
- return 0;
-}
-
-
diff --git a/test/Analysis/Checkers/RunLoopAutoreleaseLeakChecker.m b/test/Analysis/Checkers/RunLoopAutoreleaseLeakChecker.m
deleted file mode 100644
index 2bf86410f3ff..000000000000
--- a/test/Analysis/Checkers/RunLoopAutoreleaseLeakChecker.m
+++ /dev/null
@@ -1,161 +0,0 @@
-// RUN: %clang_analyze_cc1 -fobjc-arc -triple x86_64-darwin\
-// RUN: -analyzer-checker=core,osx.cocoa.RunLoopAutoreleaseLeak -verify %s
-// RUN: %clang_analyze_cc1 -DEXTRA=1 -DAP1=1 -fobjc-arc -triple x86_64-darwin\
-// RUN: -analyzer-checker=core,osx.cocoa.RunLoopAutoreleaseLeak -verify %s
-// RUN: %clang_analyze_cc1 -DEXTRA=1 -DAP2=1 -fobjc-arc -triple x86_64-darwin\
-// RUN: -analyzer-checker=core,osx.cocoa.RunLoopAutoreleaseLeak -verify %s
-// RUN: %clang_analyze_cc1 -DEXTRA=1 -DAP3=1 -fobjc-arc -triple x86_64-darwin\
-// RUN: -analyzer-checker=core,osx.cocoa.RunLoopAutoreleaseLeak -verify %s
-// RUN: %clang_analyze_cc1 -DEXTRA=1 -DAP4=1 -fobjc-arc -triple x86_64-darwin\
-// RUN: -analyzer-checker=core,osx.cocoa.RunLoopAutoreleaseLeak -verify %s
-// RUN: %clang_analyze_cc1 -DEXTRA=1 -DAP5=1 -fobjc-arc -triple x86_64-darwin\
-// RUN: -analyzer-checker=core,osx.cocoa.RunLoopAutoreleaseLeak -verify %s
-
-#include "../Inputs/system-header-simulator-for-objc-dealloc.h"
-
-#ifndef EXTRA
-
-void just_runloop() { // No warning: no statements in between
- @autoreleasepool {
- [[NSRunLoop mainRunLoop] run]; // no-warning
- }
-}
-
-void just_xpcmain() { // No warning: no statements in between
- @autoreleasepool {
- xpc_main(); // no-warning
- }
-}
-
-void runloop_init_before() { // Warning: object created before the loop.
- @autoreleasepool {
- NSObject *object = [[NSObject alloc] init]; // expected-warning{{Temporary objects allocated in the autorelease pool followed by the launch of main run loop may never get released; consider moving them to a separate autorelease pool}}
- (void) object;
- [[NSRunLoop mainRunLoop] run];
- }
-}
-
-void runloop_init_before_separate_pool() { // No warning: separate autorelease pool.
- @autoreleasepool {
- NSObject *object;
- @autoreleasepool {
- object = [[NSObject alloc] init]; // no-warning
- }
- (void) object;
- [[NSRunLoop mainRunLoop] run];
- }
-}
-
-void xpcmain_init_before() { // Warning: object created before the loop.
- @autoreleasepool {
- NSObject *object = [[NSObject alloc] init]; // expected-warning{{Temporary objects allocated in the autorelease pool followed by the launch of xpc_main may never get released; consider moving them to a separate autorelease pool}}
- (void) object;
- xpc_main();
- }
-}
-
-void runloop_init_before_two_objects() { // Warning: object created before the loop.
- @autoreleasepool {
- NSObject *object = [[NSObject alloc] init]; // expected-warning{{Temporary objects allocated in the autorelease pool followed by the launch of main run loop may never get released; consider moving them to a separate autorelease pool}}
- NSObject *object2 = [[NSObject alloc] init]; // no-warning, warning on the first one is enough.
- (void) object;
- (void) object2;
- [[NSRunLoop mainRunLoop] run];
- }
-}
-
-void runloop_no_autoreleasepool() {
- NSObject *object = [[NSObject alloc] init]; // no-warning
- (void)object;
- [[NSRunLoop mainRunLoop] run];
-}
-
-void runloop_init_after() { // No warning: objects created after the loop
- @autoreleasepool {
- [[NSRunLoop mainRunLoop] run];
- NSObject *object = [[NSObject alloc] init]; // no-warning
- (void) object;
- }
-}
-
-void no_crash_on_empty_children() {
- @autoreleasepool {
- for (;;) {}
- NSObject *object = [[NSObject alloc] init]; // expected-warning{{Temporary objects allocated in the autorelease pool followed by the launch of main run loop may never get released; consider moving them to a separate autorelease pool}}
- [[NSRunLoop mainRunLoop] run];
- (void) object;
- }
-}
-
-#endif
-
-#ifdef AP1
-int main() {
- NSObject *object = [[NSObject alloc] init]; // expected-warning{{Temporary objects allocated in the autorelease pool of last resort followed by the launch of main run loop may never get released; consider moving them to a separate autorelease pool}}
- (void) object;
- [[NSRunLoop mainRunLoop] run];
- return 0;
-}
-#endif
-
-#ifdef AP2
-// expected-no-diagnostics
-int main() {
- NSObject *object = [[NSObject alloc] init]; // no-warning
- (void) object;
- @autoreleasepool {
- [[NSRunLoop mainRunLoop] run];
- }
- return 0;
-}
-#endif
-
-#ifdef AP3
-// expected-no-diagnostics
-int main() {
- [[NSRunLoop mainRunLoop] run];
- NSObject *object = [[NSObject alloc] init]; // no-warning
- (void) object;
- return 0;
-}
-#endif
-
-#ifdef AP4
-int main() {
- NSObject *object = [[NSObject alloc] init]; // expected-warning{{Temporary objects allocated in the autorelease pool of last resort followed by the launch of xpc_main may never get released; consider moving them to a separate autorelease pool}}
- (void) object;
- xpc_main();
- return 0;
-}
-#endif
-
-#ifdef AP5
-@class NSString;
-@class NSConstantString;
-#define CF_BRIDGED_TYPE(T) __attribute__((objc_bridge(T)))
-typedef const CF_BRIDGED_TYPE(id) void * CFTypeRef;
-typedef const struct CF_BRIDGED_TYPE(NSString) __CFString * CFStringRef;
-
-typedef enum { WARNING } Level;
-id do_log(Level, const char *);
-#define log(level, msg) __extension__({ (do_log(level, msg)); })
-
-@interface I
-- foo;
-@end
-
-CFStringRef processString(const __NSConstantString *, void *);
-
-#define CFSTR __builtin___CFStringMakeConstantString
-
-int main() {
- I *i;
- @autoreleasepool {
- NSString *s1 = (__bridge_transfer NSString *)processString(0, 0);
- NSString *s2 = (__bridge_transfer NSString *)processString((CFSTR("")), ((void *)0));
- log(WARNING, "Hello world!");
- }
- [[NSRunLoop mainRunLoop] run];
- [i foo]; // no-crash // expected-warning{{Temporary objects allocated in the autorelease pool of last resort followed by the launch of main run loop may never get released; consider moving them to a separate autorelease pool}}
-}
-#endif
diff --git a/test/Analysis/DeallocMissingRelease.m b/test/Analysis/DeallocMissingRelease.m
deleted file mode 100644
index 91af2bd0a231..000000000000
--- a/test/Analysis/DeallocMissingRelease.m
+++ /dev/null
@@ -1,925 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=osx.cocoa.Dealloc -fblocks -triple x86_64-apple-ios4.0 -DMACOS=0 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=osx.cocoa.Dealloc -fblocks -triple x86_64-apple-macosx10.6.0 -DMACOS=1 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=osx.cocoa.Dealloc -fblocks -triple x86_64-apple-darwin10 -fobjc-arc -fobjc-runtime-has-weak -verify %s
-
-#include "Inputs/system-header-simulator-for-objc-dealloc.h"
-
-#define NON_ARC !__has_feature(objc_arc)
-
-#if NON_ARC
-#define WEAK_ON_ARC
-#else
-#define WEAK_ON_ARC __weak
-#endif
-
-// No diagnostics expected under ARC.
-#if !NON_ARC
- // expected-no-diagnostics
-#endif
-
-// Do not warn about missing release in -dealloc for ivars.
-
-@interface MyIvarClass1 : NSObject {
- NSObject *_ivar;
-}
-@end
-
-@implementation MyIvarClass1
-- (instancetype)initWithIvar:(NSObject *)ivar
-{
- self = [super init];
- if (!self)
- return nil;
-#if NON_ARC
- _ivar = [ivar retain];
-#endif
- return self;
-}
-- (void)dealloc
-{
-#if NON_ARC
- [super dealloc];
-#endif
-}
-@end
-
-@interface MyIvarClass2 : NSObject {
- NSObject *_ivar;
-}
-- (NSObject *)ivar;
-- (void)setIvar:(NSObject *)ivar;
-@end
-
-@implementation MyIvarClass2
-- (instancetype)init
-{
- self = [super init];
- return self;
-}
-- (void)dealloc
-{
-#if NON_ARC
- [super dealloc];
-#endif
-}
-- (NSObject *)ivar
-{
- return _ivar;
-}
-- (void)setIvar:(NSObject *)ivar
-{
-#if NON_ARC
- [_ivar release];
- _ivar = [ivar retain];
-#else
- _ivar = ivar;
-#endif
-}
-@end
-
-// Warn about missing release in -dealloc for properties.
-
-@interface MyPropertyClass1 : NSObject
-@property (copy) NSObject *ivar;
-@end
-
-@implementation MyPropertyClass1
-- (void)dealloc
-{
-#if NON_ARC
- [super dealloc]; // expected-warning {{The '_ivar' ivar in 'MyPropertyClass1' was copied by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-@end
-
-@interface MyPropertyClass2 : NSObject
-@property (retain) NSObject *ivar;
-@end
-
-@implementation MyPropertyClass2
-- (void)dealloc
-{
-#if NON_ARC
- [super dealloc]; // expected-warning {{The '_ivar' ivar in 'MyPropertyClass2' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-@end
-
-@interface MyPropertyClass3 : NSObject {
- NSObject *_ivar;
-}
-@property (retain) NSObject *ivar;
-@end
-
-@implementation MyPropertyClass3
-@synthesize ivar = _ivar;
-- (void)dealloc
-{
-#if NON_ARC
- [super dealloc]; // expected-warning {{The '_ivar' ivar in 'MyPropertyClass3' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-
-@end
-
-@interface MyPropertyClass4 : NSObject {
- void (^_blockPropertyIvar)(void);
-}
-@property (copy) void (^blockProperty)(void);
-@property (copy) void (^blockProperty2)(void);
-@property (copy) void (^blockProperty3)(void);
-
-@end
-
-@implementation MyPropertyClass4
-@synthesize blockProperty = _blockPropertyIvar;
-- (void)dealloc
-{
-#if NON_ARC
- [_blockProperty2 release];
- Block_release(_blockProperty3);
-
- [super dealloc]; // expected-warning {{The '_blockPropertyIvar' ivar in 'MyPropertyClass4' was copied by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-@end
-
-@interface MyPropertyClass5 : NSObject {
- WEAK_ON_ARC NSObject *_ivar;
-}
-@property (weak) NSObject *ivar;
-@end
-
-@implementation MyPropertyClass5
-@synthesize ivar = _ivar;
-- (void)dealloc
-{
-#if NON_ARC
- [super dealloc]; // no-warning because it is a weak property
-#endif
-}
-@end
-
-@interface MyPropertyClassWithReturnInDealloc : NSObject {
- NSObject *_ivar;
-}
-@property (retain) NSObject *ivar;
-@end
-
-@implementation MyPropertyClassWithReturnInDealloc
-@synthesize ivar = _ivar;
-- (void)dealloc
-{
- return;
-#if NON_ARC
- // expected-warning@-2{{The '_ivar' ivar in 'MyPropertyClassWithReturnInDealloc' was retained by a synthesized property but not released before '[super dealloc]'}}
- [super dealloc];
-#endif
-}
-@end
-
-@interface MyPropertyClassWithReleaseInOtherInstance : NSObject {
- NSObject *_ivar;
- MyPropertyClassWithReleaseInOtherInstance *_other;
-}
-@property (retain) NSObject *ivar;
-
--(void)releaseIvars;
-@end
-
-@implementation MyPropertyClassWithReleaseInOtherInstance
-@synthesize ivar = _ivar;
-
--(void)releaseIvars; {
-#if NON_ARC
- [_ivar release];
-#endif
-}
-
-- (void)dealloc
-{
- [_other releaseIvars];
-#if NON_ARC
- [super dealloc]; // expected-warning {{The '_ivar' ivar in 'MyPropertyClassWithReleaseInOtherInstance' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-@end
-
-@interface MyPropertyClassWithNeitherReturnNorSuperDealloc : NSObject {
- NSObject *_ivar;
-}
-@property (retain) NSObject *ivar;
-@end
-
-@implementation MyPropertyClassWithNeitherReturnNorSuperDealloc
-@synthesize ivar = _ivar;
-- (void)dealloc
-{
-}
-#if NON_ARC
- // expected-warning@-2 {{method possibly missing a [super dealloc] call}} (From Sema)
- // expected-warning@-3{{The '_ivar' ivar in 'MyPropertyClassWithNeitherReturnNorSuperDealloc' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-@end
-
-// <rdar://problem/6380411>: 'myproperty' has kind 'assign' and thus the
-// assignment through the setter does not perform a release.
-
-@interface MyObject : NSObject {
- id __unsafe_unretained _myproperty;
-}
-@property(assign) id myproperty;
-@end
-
-@implementation MyObject
-@synthesize myproperty=_myproperty; // no-warning
-- (void)dealloc {
- // Don't claim that myproperty is released since it the property
- // has the 'assign' attribute.
- self.myproperty = 0; // no-warning
-#if NON_ARC
- [super dealloc];
-#endif
-}
-@end
-
-@interface ClassWithControlFlowInRelease : NSObject {
- BOOL _ivar1;
-}
-@property (retain) NSObject *ivar2;
-@end
-
-@implementation ClassWithControlFlowInRelease
-- (void)dealloc; {
- if (_ivar1) {
- // We really should warn because there is a path through -dealloc on which
- // _ivar2 is not released.
-#if NON_ARC
- [_ivar2 release];
-#endif
- }
-
-#if NON_ARC
- [super dealloc]; // expected-warning {{The '_ivar2' ivar in 'ClassWithControlFlowInRelease' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-@end
-
-// Don't warn when the property is nil'd out in -dealloc
-
-@interface ClassWithNildOutProperty : NSObject
-@property (retain) NSObject *ivar;
-@property (assign) int *intPtrProp;
-@end
-
-@implementation ClassWithNildOutProperty
-- (void)dealloc; {
- self.ivar = nil;
-
- // Make sure to handle setting a non-retainable property to 0.
- self.intPtrProp = 0;
-#if NON_ARC
- [super dealloc]; // no-warning
-#endif
-}
-@end
-
-// Do warn when the ivar but not the property is nil'd out in -dealloc
-
-@interface ClassWithNildOutIvar : NSObject
-@property (retain) NSObject *ivar;
-@end
-
-@implementation ClassWithNildOutIvar
-- (void)dealloc; {
- // Oops. Meant self.ivar = nil
- _ivar = nil;
-
-#if NON_ARC
- [super dealloc]; // expected-warning {{The '_ivar' ivar in 'ClassWithNildOutIvar' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-@end
-
-// Do warn when the ivar is updated to a different value that is then
-// released.
-
-@interface ClassWithUpdatedIvar : NSObject
-@property (retain) NSObject *ivar;
-@end
-
-@implementation ClassWithUpdatedIvar
-- (void)dealloc; {
- _ivar = [[NSObject alloc] init];
-
-#if NON_ARC
- [_ivar release];
-#endif
-
-#if NON_ARC
- [super dealloc]; // expected-warning {{The '_ivar' ivar in 'ClassWithUpdatedIvar' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-@end
-
-
-// Don't warn when the property is nil'd out with a setter in -dealloc
-
-@interface ClassWithNildOutPropertyViaSetter : NSObject
-@property (retain) NSObject *ivar;
-@end
-
-@implementation ClassWithNildOutPropertyViaSetter
-- (void)dealloc; {
- [self setIvar:nil];
-
-#if NON_ARC
- [super dealloc]; // no-warning
-#endif
-}
-@end
-
-
-// Don't warn about missing releases when -dealloc helpers are called.
-
-@interface ClassWithDeallocHelpers : NSObject
-@property (retain) NSObject *ivarReleasedInMethod;
-@property (retain) NSObject *propNilledOutInMethod;
-
-@property (retain) NSObject *ivarReleasedInFunction;
-@property (retain) NSObject *propNilledOutInFunction;
-
-@property (retain) NSObject *ivarNeverReleased;
-- (void)invalidateInMethod;
-@end
-
-void ReleaseValueHelper(NSObject *iv) {
-#if NON_ARC
- [iv release];
-#endif
-}
-
-void NilOutPropertyHelper(ClassWithDeallocHelpers *o) {
- o.propNilledOutInFunction = nil;
-}
-
-@implementation ClassWithDeallocHelpers
-- (void)invalidateInMethod {
-#if NON_ARC
- [_ivarReleasedInMethod release];
-#endif
- self.propNilledOutInMethod = nil;
-}
-
-- (void)dealloc; {
- ReleaseValueHelper(_ivarReleasedInFunction);
- NilOutPropertyHelper(self);
-
- [self invalidateInMethod];
-#if NON_ARC
- [super dealloc]; // expected-warning {{The '_ivarNeverReleased' ivar in 'ClassWithDeallocHelpers' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-@end
-
-
-// Don't warn when self in -dealloc escapes.
-
-@interface ClassWhereSelfEscapesViaMethodCall : NSObject
-@property (retain) NSObject *ivar; // no-warning
-@end
-
-@interface ClassWhereSelfEscapesViaMethodCall (Other)
-- (void)invalidate; // In other translation unit.
-@end
-
-@implementation ClassWhereSelfEscapesViaMethodCall
-- (void)dealloc; {
- [self invalidate];
-#if NON_ARC
- [super dealloc];
-#endif
-} // no-warning
-@end
-
-@interface ClassWhereSelfEscapesViaPropertyAccess : NSObject
-@property (retain) NSObject *ivar;
-@end
-
-@interface ClassWhereSelfEscapesViaPropertyAccess (Other)
-// The implementation of this property is unknown and therefore could
-// release ivar.
-@property (retain) NSObject *otherIvar;
-@end
-
-@implementation ClassWhereSelfEscapesViaPropertyAccess
-- (void)dealloc; {
- self.otherIvar = nil;
-#if NON_ARC
- [super dealloc];
-#endif
-} // no-warning
-@end
-
-// Don't treat self as escaping when setter called on *synthesized*
-// property.
-
-@interface ClassWhereSelfEscapesViaSynthesizedPropertyAccess : NSObject
-@property (retain) NSObject *ivar;
-@property (retain) NSObject *otherIvar;
-@end
-
-@implementation ClassWhereSelfEscapesViaSynthesizedPropertyAccess
-- (void)dealloc; {
- self.otherIvar = nil;
-#if NON_ARC
- [super dealloc]; // expected-warning {{The '_ivar' ivar in 'ClassWhereSelfEscapesViaSynthesizedPropertyAccess' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-@end
-
-
-// Don't treat calls to system headers as escapes
-
-@interface ClassWhereSelfEscapesViaCallToSystem : NSObject
-@property (retain) NSObject *ivar1;
-@property (retain) NSObject *ivar2;
-@property (retain) NSObject *ivar3;
-@property (retain) NSObject *ivar4;
-@property (retain) NSObject *ivar5;
-@property (retain) NSObject *ivar6;
-@end
-
-@implementation ClassWhereSelfEscapesViaCallToSystem
-- (void)dealloc; {
-#if NON_ARC
- [_ivar2 release];
- if (_ivar3) {
- [_ivar3 release];
- }
-#endif
-
- [[NSRunLoop currentRunLoop] cancelPerformSelectorsWithTarget:self];
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-
-#if NON_ARC
- [_ivar4 release];
-
- if (_ivar5) {
- [_ivar5 release];
- }
-#endif
-
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-
-#if NON_ARC
- if (_ivar6) {
- [_ivar6 release];
- }
-
- [super dealloc]; // expected-warning {{The '_ivar1' ivar in 'ClassWhereSelfEscapesViaCallToSystem' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-@end
-
-// Don't warn when value escapes.
-
-@interface ClassWhereIvarValueEscapes : NSObject
-@property (retain) NSObject *ivar;
-@end
-
-void ReleaseMe(id arg);
-
-@implementation ClassWhereIvarValueEscapes
-- (void)dealloc; {
-
- ReleaseMe(_ivar);
-
-#if NON_ARC
- [super dealloc];
-#endif
-} // no-warning
-@end
-
-// Don't warn when value is known to be nil.
-
-@interface ClassWhereIvarIsNil : NSObject
-@property (retain) NSObject *ivarIsNil;
-@end
-
-@implementation ClassWhereIvarIsNil
-- (void)dealloc; {
-
-#if NON_ARC
- if (_ivarIsNil)
- [_ivarIsNil release];
-
- [super dealloc];
-#endif
-} // no-warning
-@end
-
-
-// Don't warn for non-retainable properties.
-
-@interface ClassWithNonRetainableProperty : NSObject
-@property (assign) int *ivar; // no-warning
-@end
-
-@implementation ClassWithNonRetainableProperty
-- (void)dealloc; {
-#if NON_ARC
- [super dealloc];
-#endif
-} // no-warning
-@end
-
-
-@interface SuperClassOfClassWithInlinedSuperDealloc : NSObject
-@property (retain) NSObject *propInSuper;
-@end
-
-@implementation SuperClassOfClassWithInlinedSuperDealloc
-- (void)dealloc {
-#if NON_ARC
- [super dealloc]; // expected-warning {{The '_propInSuper' ivar in 'SuperClassOfClassWithInlinedSuperDealloc' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-@end
-
-@interface ClassWithInlinedSuperDealloc : SuperClassOfClassWithInlinedSuperDealloc
-@property (retain) NSObject *propInSub;
-@end
-
-@implementation ClassWithInlinedSuperDealloc
-- (void)dealloc {
-#if NON_ARC
- [super dealloc]; // expected-warning {{The '_propInSub' ivar in 'ClassWithInlinedSuperDealloc' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-@end
-
-
-@interface SuperClassOfClassWithInlinedSuperDeallocAndInvalidation : NSObject
-@property (retain) NSObject *propInSuper;
-
-- (void)invalidate;
-@end
-
-@implementation SuperClassOfClassWithInlinedSuperDeallocAndInvalidation
-
-- (void)invalidate {
-#if NON_ARC
- [_propInSuper release];
-#endif
- _propInSuper = nil;
-}
-
-- (void)dealloc {
- [self invalidate];
-#if NON_ARC
- [super dealloc]; // no-warning
-#endif
-}
-@end
-
-@interface ClassWithInlinedSuperDeallocAndInvalidation : SuperClassOfClassWithInlinedSuperDeallocAndInvalidation
-@property (retain) NSObject *propInSub;
-@end
-
-@implementation ClassWithInlinedSuperDeallocAndInvalidation
-
-- (void)invalidate {
-#if NON_ARC
- [_propInSub release];
-#endif
- [super invalidate];
-}
-
-- (void)dealloc {
-#if NON_ARC
- [super dealloc]; // no-warning
-#endif
-}
-@end
-
-
-@interface SuperClassOfClassThatEscapesBeforeInliningSuper : NSObject
-@property (retain) NSObject *propInSuper;
-@end
-
-@implementation SuperClassOfClassThatEscapesBeforeInliningSuper
-
-- (void)dealloc {
-
-#if NON_ARC
- [super dealloc]; // expected-warning {{The '_propInSuper' ivar in 'SuperClassOfClassThatEscapesBeforeInliningSuper' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-@end
-
-@interface ClassThatEscapesBeforeInliningSuper : SuperClassOfClassThatEscapesBeforeInliningSuper
-@property (retain) NSObject *propInSub;
-@end
-
-@interface ClassThatEscapesBeforeInliningSuper (Other)
-- (void)invalidate; // No implementation in translation unit.
-@end
-
-@implementation ClassThatEscapesBeforeInliningSuper
-- (void)dealloc {
- [self invalidate];
-
-#if NON_ARC
- [super dealloc]; // no-warning
-#endif
-}
-@end
-
-
-#if NON_ARC
-@interface ReleaseIvarInField : NSObject {
- int _tag;
- union {
- NSObject *field1;
- NSObject *field2;
- } _someUnion;
-
- struct {
- NSObject *field1;
- } _someStruct;
-}
-@end
-
-@implementation ReleaseIvarInField
-- (void)dealloc {
- if (_tag) {
- [_someUnion.field1 release];
- } else {
- [_someUnion.field2 release];
- }
-
- [_someStruct.field1 release];
- [super dealloc];
-}
-@end
-#endif
-
-struct SomeStruct {
- int f;
-};
-@interface ZeroOutStructWithSetter : NSObject
- @property(assign) struct SomeStruct s;
-@end
-
-@implementation ZeroOutStructWithSetter
-- (void)dealloc {
- struct SomeStruct zeroedS;
- zeroedS.f = 0;
-
- self.s = zeroedS;
-#if NON_ARC
- [super dealloc];
-#endif
-}
-@end
-
-#if NON_ARC
-@interface ReleaseIvarInArray : NSObject {
- NSObject *_array[3];
-}
-@end
-
-@implementation ReleaseIvarInArray
-- (void)dealloc {
- for (int i = 0; i < 3; i++) {
- [_array[i] release];
- }
- [super dealloc];
-}
-@end
-#endif
-
-// Don't warn about missing releases for subclasses of SenTestCase or
-// for classes that are not subclasses of NSObject.
-
-@interface SenTestCase : NSObject {}
-@end
-
-@interface MyClassTest : SenTestCase
-@property (retain) NSObject *ivar;
-@end
-
-@implementation MyClassTest
--(void)tearDown {
-#if NON_ARC
- [_ivar release];
-#endif
-}
-
--(void)dealloc; {
-#if NON_ARC
- [super dealloc]; // no-warning
-#endif
-}
-@end
-
-@interface XCTestCase : NSObject {}
-@end
-
-@interface MyClassXCTest : XCTestCase
-@property (retain) NSObject *ivar;
-@end
-
-@implementation MyClassXCTest
--(void)tearDown {
-#if NON_ARC
- [_ivar release];
-#endif
-}
-
--(void)dealloc; {
-#if NON_ARC
- [super dealloc]; // no-warning
-#endif
-}
-@end
-
-
-__attribute__((objc_root_class))
-@interface NonNSObjectMissingDealloc
-@property (retain) NSObject *ivar;
-@end
-@implementation NonNSObjectMissingDealloc
--(void)dealloc; {
-
-}
-@end
-
-// Warn about calling -dealloc rather than release by mistake.
-
-@interface CallDeallocOnRetainPropIvar : NSObject {
- NSObject *okToDeallocDirectly;
-}
-
-@property (retain) NSObject *ivar;
-@end
-
-@implementation CallDeallocOnRetainPropIvar
-- (void)dealloc
-{
-#if NON_ARC
- // Only warn for synthesized ivars.
- [okToDeallocDirectly dealloc]; // no-warning
- [_ivar dealloc]; // expected-warning {{'_ivar' should be released rather than deallocated}}
-
- [super dealloc];
-#endif
-}
-@end
-
-// CIFilter special cases.
-// By design, -[CIFilter dealloc] releases (by calling -setValue: forKey: with
-// 'nil') all ivars (even in its *subclasses*) with names starting with
-// 'input' or that are backed by properties with names starting with 'input'.
-// The Dealloc checker needs to take particular care to not warn about missing
-// releases in this case -- if the user adds a release quiet the
-// warning it may result in an over release.
-
-@interface ImmediateSubCIFilter : CIFilter {
- NSObject *inputIvar;
- NSObject *nonInputIvar;
- NSObject *notPrefixedButBackingPrefixedProperty;
- NSObject *inputPrefixedButBackingNonPrefixedProperty;
-}
-
-@property(retain) NSObject *inputIvar;
-@property(retain) NSObject *nonInputIvar;
-@property(retain) NSObject *inputAutoSynthesizedIvar;
-@property(retain) NSObject *inputExplicitlySynthesizedToNonPrefixedIvar;
-@property(retain) NSObject *nonPrefixedPropertyBackedByExplicitlySynthesizedPrefixedIvar;
-
-@end
-
-@implementation ImmediateSubCIFilter
-@synthesize inputIvar = inputIvar;
-@synthesize nonInputIvar = nonInputIvar;
-@synthesize inputExplicitlySynthesizedToNonPrefixedIvar = notPrefixedButBackingPrefixedProperty;
-@synthesize nonPrefixedPropertyBackedByExplicitlySynthesizedPrefixedIvar = inputPrefixedButBackingNonPrefixedProperty;
-
-- (void)dealloc {
-#if NON_ARC
- // We don't want warnings here for:
- // inputIvar
- // inputAutoSynthesizedIvar
- // inputExplicitlySynthesizedToNonPrefixedIvar
- // inputPrefixedButBackingNonPrefixedProperty
- [super dealloc];
- // expected-warning@-1 {{The 'nonInputIvar' ivar in 'ImmediateSubCIFilter' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-@end
-
-@interface SubSubCIFilter : CIFilter {
- NSObject *inputIvarInSub;
-}
-
-@property(retain) NSObject *inputIvarInSub;
-@end
-
-@implementation SubSubCIFilter
-@synthesize inputIvarInSub = inputIvarInSub;
-
-- (void)dealloc {
-// Don't warn about inputIvarInSub.
-#if NON_ARC
- [super dealloc];
-#endif
-}
-@end
-@interface OverreleasingCIFilter : CIFilter {
- NSObject *inputIvar;
-}
-
-@property(retain) NSObject *inputIvar;
-@end
-
-@implementation OverreleasingCIFilter
-@synthesize inputIvar = inputIvar;
-
-- (void)dealloc {
-#if NON_ARC
- // This is an over release because CIFilter's dealloc will also release it.
- [inputIvar release]; // expected-warning {{The 'inputIvar' ivar in 'OverreleasingCIFilter' will be released by '-[CIFilter dealloc]' but also released here}}
- [super dealloc]; // no-warning
- #endif
-}
-@end
-
-
-@interface NotMissingDeallocCIFilter : CIFilter {
- NSObject *inputIvar;
-}
-
-@property(retain) NSObject *inputIvar;
-@end
-
-@implementation NotMissingDeallocCIFilter // no-warning
-@synthesize inputIvar = inputIvar;
-@end
-
-
-@interface ClassWithRetainPropWithIBOutletIvarButNoSetter : NSObject {
- // On macOS, the nib-loading code will set the ivar directly without
- // retaining value (unike iOS, where it is retained). This means that
- // on macOS we should not warn about a missing release for a property backed
- // by an IBOutlet ivar when that property does not have a setter.
- IBOutlet NSObject *ivarForOutlet;
-}
-
-@property (readonly, retain) NSObject *ivarForOutlet;
-@end
-
-@implementation ClassWithRetainPropWithIBOutletIvarButNoSetter
-
-@synthesize ivarForOutlet;
-- (void)dealloc {
-
-#if NON_ARC
- [super dealloc];
-#if !MACOS
-// expected-warning@-2{{The 'ivarForOutlet' ivar in 'ClassWithRetainPropWithIBOutletIvarButNoSetter' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-#endif
-}
-
-@end
-
-@interface ClassWithRetainPropWithIBOutletIvarAndShadowingReadWrite : NSObject {
- IBOutlet NSObject *ivarForOutlet;
-}
-
-@property (readonly, retain) NSObject *ivarForOutlet;
-
-@end
-
-@interface ClassWithRetainPropWithIBOutletIvarAndShadowingReadWrite ()
-
-// Since there is a shadowing readwrite property, there will be a retaining
-// setter and so the ivar will be retained by nib-loading code even on
-// macOS and therefore must be released.
-@property (readwrite, retain) NSObject *ivarForOutlet;
-@end
-
-@implementation ClassWithRetainPropWithIBOutletIvarAndShadowingReadWrite
-
-@synthesize ivarForOutlet;
-- (void)dealloc {
-
-#if NON_ARC
- [super dealloc];
-// expected-warning@-1{{The 'ivarForOutlet' ivar in 'ClassWithRetainPropWithIBOutletIvarAndShadowingReadWrite' was retained by a synthesized property but not released before '[super dealloc]'}}
-#endif
-}
-
-@end
diff --git a/test/Analysis/DeallocUseAfterFreeErrors.m b/test/Analysis/DeallocUseAfterFreeErrors.m
deleted file mode 100644
index 2e1bdc41bb6e..000000000000
--- a/test/Analysis/DeallocUseAfterFreeErrors.m
+++ /dev/null
@@ -1,373 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.SuperDealloc,debug.ExprInspection -analyzer-output=text -verify %s
-
-void clang_analyzer_warnIfReached();
-
-#define nil ((id)0)
-
-typedef unsigned long NSUInteger;
-@protocol NSObject
-- (instancetype)retain;
-- (oneway void)release;
-@end
-
-@interface NSObject <NSObject> { }
-- (void)dealloc;
-- (instancetype)init;
-@end
-
-typedef struct objc_selector *SEL;
-
-//===------------------------------------------------------------------------===
-// <rdar://problem/6953275>
-// Check that 'self' is not referenced after calling '[super dealloc]'.
-
-@interface SuperDeallocThenReleaseIvarClass : NSObject {
- NSObject *_ivar;
-}
-@end
-
-@implementation SuperDeallocThenReleaseIvarClass
-- (instancetype)initWithIvar:(NSObject *)ivar {
- self = [super init];
- if (!self)
- return nil;
- _ivar = [ivar retain];
- return self;
-}
-- (void)dealloc {
- [super dealloc]; // expected-note {{[super dealloc] called here}}
- [_ivar release]; // expected-warning {{Use of instance variable '_ivar' after 'self' has been deallocated}}
- // expected-note@-1 {{Use of instance variable '_ivar' after 'self' has been deallocated}}
-}
-@end
-
-@interface SuperDeallocThenAssignNilToIvarClass : NSObject {
- NSObject *_delegate;
-}
-@end
-
-@implementation SuperDeallocThenAssignNilToIvarClass
-- (instancetype)initWithDelegate:(NSObject *)delegate {
- self = [super init];
- if (!self)
- return nil;
- _delegate = delegate;
- return self;
-}
-- (void)dealloc {
- [super dealloc]; // expected-note {{[super dealloc] called here}}
- _delegate = nil; // expected-warning {{Use of instance variable '_delegate' after 'self' has been deallocated}}
- // expected-note@-1 {{Use of instance variable '_delegate' after 'self' has been deallocated}}
-}
-@end
-
-
-struct SomeStruct {
- int f;
-};
-
-@interface SuperDeallocThenAssignIvarField : NSObject {
- struct SomeStruct _s;
-}
-@end
-
-@implementation SuperDeallocThenAssignIvarField
-- (void)dealloc {
- [super dealloc]; // expected-note {{[super dealloc] called here}}
- _s.f = 7; // expected-warning {{Use of instance variable '_s' after 'self' has been deallocated}}
- // expected-note@-1 {{Use of instance variable '_s' after 'self' has been deallocated}}
-}
-@end
-
-@interface OtherClassWithIvar {
-@public
- int _otherIvar;
-}
-@end;
-
-@interface SuperDeallocThenAssignIvarIvar : NSObject {
- OtherClassWithIvar *_ivar;
-}
-@end
-
-@implementation SuperDeallocThenAssignIvarIvar
-- (void)dealloc {
- [super dealloc]; // expected-note {{[super dealloc] called here}}
- _ivar->_otherIvar = 7; // expected-warning {{Use of instance variable '_ivar' after 'self' has been deallocated}}
- // expected-note@-1 {{Use of instance variable '_ivar' after 'self' has been deallocated}}
-}
-@end
-
-@interface SuperDeallocThenAssignSelfIvar : NSObject {
- NSObject *_ivar;
-}
-@end
-
-@implementation SuperDeallocThenAssignSelfIvar
-- (void)dealloc {
- [super dealloc]; // expected-note {{[super dealloc] called here}}
- self->_ivar = nil; // expected-warning {{Use of instance variable '_ivar' after 'self' has been deallocated}}
- // expected-note@-1 {{Use of instance variable '_ivar' after 'self' has been deallocated}}
-}
-@end
-
-@interface SuperDeallocThenReleasePropertyClass : NSObject { }
-@property (retain) NSObject *ivar;
-@end
-
-@implementation SuperDeallocThenReleasePropertyClass
-- (instancetype)initWithProperty:(NSObject *)ivar {
- self = [super init];
- if (!self)
- return nil;
- self.ivar = ivar;
- return self;
-}
-- (void)dealloc {
- [super dealloc]; // expected-note {{[super dealloc] called here}}
- self.ivar = nil; // expected-warning {{Use of 'self' after it has been deallocated}}
- // expected-note@-1 {{Use of 'self' after it has been deallocated}}
-}
-@end
-
-@interface SuperDeallocThenAssignNilToPropertyClass : NSObject { }
-@property (assign) NSObject *delegate;
-@end
-
-@implementation SuperDeallocThenAssignNilToPropertyClass
-- (instancetype)initWithDelegate:(NSObject *)delegate {
- self = [super init];
- if (!self)
- return nil;
- self.delegate = delegate;
- return self;
-}
-- (void)dealloc {
- [super dealloc]; // expected-note {{[super dealloc] called here}}
- self.delegate = nil; // expected-warning {{Use of 'self' after it has been deallocated}}
- // expected-note@-1 {{Use of 'self' after it has been deallocated}}
-}
-@end
-
-@interface SuperDeallocThenCallInstanceMethodClass : NSObject { }
-- (void)_invalidate;
-@end
-
-@implementation SuperDeallocThenCallInstanceMethodClass
-- (void)_invalidate {
-}
-- (void)dealloc {
- [super dealloc]; // expected-note {{[super dealloc] called here}}
- [self _invalidate]; // expected-warning {{Use of 'self' after it has been deallocated}}
- // expected-note@-1 {{Use of 'self' after it has been deallocated}}
-}
-@end
-
-@interface SuperDeallocThenCallNonObjectiveCMethodClass : NSObject { }
-@end
-
-static void _invalidate(NSObject *object) {
- (void)object;
-}
-
-@implementation SuperDeallocThenCallNonObjectiveCMethodClass
-- (void)dealloc {
- [super dealloc]; // expected-note {{[super dealloc] called here}}
- _invalidate(self); // expected-warning {{Use of 'self' after it has been deallocated}}
- // expected-note@-1 {{Use of 'self' after it has been deallocated}}
-}
-@end
-
-@interface SuperDeallocThenCallObjectiveClassMethodClass : NSObject { }
-@end
-
-@implementation SuperDeallocThenCallObjectiveClassMethodClass
-+ (void) invalidate:(id)arg; {
-}
-
-- (void)dealloc {
- [super dealloc]; // expected-note {{[super dealloc] called here}}
- [SuperDeallocThenCallObjectiveClassMethodClass invalidate:self]; // expected-warning {{Use of 'self' after it has been deallocated}}
- // expected-note@-1 {{Use of 'self' after it has been deallocated}}
-}
-@end
-
-@interface TwoSuperDeallocCallsClass : NSObject {
- NSObject *_ivar;
-}
-- (void)_invalidate;
-@end
-
-@implementation TwoSuperDeallocCallsClass
-- (void)_invalidate {
-}
-- (void)dealloc {
- if (_ivar) { // expected-note {{Assuming the condition is false}} expected-note {{Taking false branch}}
- [_ivar release];
- [super dealloc];
- return;
- }
- [super dealloc]; // expected-note {{[super dealloc] called here}}
- [self _invalidate]; // expected-warning {{Use of 'self' after it has been deallocated}}
- // expected-note@-1 {{Use of 'self' after it has been deallocated}}
-}
-@end
-
-//===------------------------------------------------------------------------===
-// Warn about calling [super dealloc] twice due to missing return statement.
-
-@interface MissingReturnCausesDoubleSuperDeallocClass : NSObject {
- NSObject *_ivar;
-}
-@end
-
-@implementation MissingReturnCausesDoubleSuperDeallocClass
-- (void)dealloc {
- if (_ivar) { // expected-note {{Assuming the condition is true}} expected-note {{Taking true branch}}
- [_ivar release];
- [super dealloc]; // expected-note {{[super dealloc] called here}}
- // return;
- }
- [super dealloc]; // expected-warning{{[super dealloc] should not be called multiple times}}
- // expected-note@-1{{[super dealloc] should not be called multiple times}}
-}
-@end
-
-//===------------------------------------------------------------------------===
-// Warn about calling [super dealloc] twice in two different methods.
-
-@interface SuperDeallocInOtherMethodClass : NSObject {
- NSObject *_ivar;
-}
-- (void)_cleanup;
-@end
-
-@implementation SuperDeallocInOtherMethodClass
-- (void)_cleanup {
- [_ivar release];
- [super dealloc]; // expected-note {{[super dealloc] called here}}
-}
-- (void)dealloc {
- [self _cleanup]; // expected-note {{Calling '_cleanup'}}
- //expected-note@-1 {{Returning from '_cleanup'}}
- [super dealloc]; // expected-warning {{[super dealloc] should not be called multiple times}}
- // expected-note@-1 {{[super dealloc] should not be called multiple times}}
-}
-@end
-
-//===------------------------------------------------------------------------===
-// Do not warn about calling [super dealloc] recursively for different objects
-// of the same type with custom retain counting.
-//
-// A class that contains an ivar of itself with custom retain counting (such
-// as provided by _OBJC_SUPPORTED_INLINE_REFCNT_WITH_DEALLOC2MAIN) can generate
-// a false positive that [super dealloc] is called twice if each object instance
-// is not tracked separately by the checker. This test case is just a simple
-// approximation to trigger the false positive.
-
-@class ClassWithOwnIvarInstanceClass;
-@interface ClassWithOwnIvarInstanceClass : NSObject {
- ClassWithOwnIvarInstanceClass *_ivar;
- NSUInteger _retainCount;
-}
-@end
-
-@implementation ClassWithOwnIvarInstanceClass
-- (instancetype)retain {
- ++_retainCount;
- return self;
-}
-- (oneway void)release {
- --_retainCount;
- if (!_retainCount)
- [self dealloc];
-}
-- (void)dealloc {
- [_ivar release];
- [super dealloc]; // no warning: different instances of same class
-}
-@end
-
-//===------------------------------------------------------------------------===
-// Do not warn about calling [super dealloc] twice if +dealloc is a class
-// method.
-
-@interface SuperDeallocClassMethodIgnoredClass : NSObject { }
-+ (void)dealloc;
-@end
-
-@implementation SuperDeallocClassMethodIgnoredClass
-+ (void)dealloc { }
-@end
-
-@interface SuperDeallocClassMethodIgnoredSubClass : NSObject { }
-+ (void)dealloc;
-@end
-
-@implementation SuperDeallocClassMethodIgnoredSubClass
-+ (void)dealloc {
- [super dealloc];
- [super dealloc]; // no warning: class method
-}
-@end
-
-//===------------------------------------------------------------------------===
-// Do not warn about calling [super dealloc] twice if when the analyzer has
-// inlined the call to its super deallocator.
-
-@interface SuperClassCallingSuperDealloc : NSObject {
- NSObject *_ivar;
-}
-@end
-
-@implementation SuperClassCallingSuperDealloc
-- (void)dealloc; {
- [_ivar release]; // no-warning
-
- [super dealloc];
-}
-@end
-
-@interface SubclassCallingSuperDealloc : SuperClassCallingSuperDealloc
-@end
-
-@implementation SubclassCallingSuperDealloc
-- (void)dealloc; {
- [super dealloc];
-}
-@end
-
-//===------------------------------------------------------------------------===
-// Treat calling [super dealloc] twice as as a sink.
-
-@interface CallingSuperDeallocTwiceIsSink : NSObject
-@end
-
-@implementation CallingSuperDeallocTwiceIsSink
-- (void)dealloc; {
- [super dealloc]; // expected-note {{[super dealloc] called here}}
- [super dealloc]; // expected-warning {{[super dealloc] should not be called multiple times}}
- // expected-note@-1 {{[super dealloc] should not be called multiple times}}
-
- clang_analyzer_warnIfReached(); // no-warning
-}
-@end
-
-
-//===------------------------------------------------------------------------===
-// Test path notes with intervening method call on self.
-
-@interface InterveningMethodCallOnSelf : NSObject
-@end
-
-@implementation InterveningMethodCallOnSelf
-- (void)anotherMethod {
-}
-
-- (void)dealloc; {
- [super dealloc]; // expected-note {{[super dealloc] called here}}
- [self anotherMethod]; // expected-warning {{Use of 'self' after it has been deallocated}}
- // expected-note@-1 {{Use of 'self' after it has been deallocated}}
- [super dealloc];
-}
-@end
diff --git a/test/Analysis/DeleteWithNonVirtualDtor.cpp b/test/Analysis/DeleteWithNonVirtualDtor.cpp
deleted file mode 100644
index a9b8a11f3482..000000000000
--- a/test/Analysis/DeleteWithNonVirtualDtor.cpp
+++ /dev/null
@@ -1,187 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.cplusplus.DeleteWithNonVirtualDtor -std=c++11 -verify -analyzer-output=text %s
-
-struct Virtual {
- virtual ~Virtual() {}
-};
-
-struct VDerived : public Virtual {};
-
-struct NonVirtual {
- ~NonVirtual() {}
-};
-
-struct NVDerived : public NonVirtual {};
-struct NVDoubleDerived : public NVDerived {};
-
-struct Base {
- virtual void destroy() = 0;
-};
-
-class PrivateDtor final : public Base {
-public:
- void destroy() { delete this; }
-private:
- ~PrivateDtor() {}
-};
-
-struct ImplicitNV {
- virtual void f();
-};
-
-struct ImplicitNVDerived : public ImplicitNV {};
-
-NVDerived *get();
-
-NonVirtual *create() {
- NonVirtual *x = new NVDerived(); // expected-note{{Conversion from derived to base happened here}}
- return x;
-}
-
-void sink(NonVirtual *x) {
- delete x; // expected-warning{{Destruction of a polymorphic object with no virtual destructor}}
- // expected-note@-1{{Destruction of a polymorphic object with no virtual destructor}}
-}
-
-void sinkCast(NonVirtual *y) {
- delete reinterpret_cast<NVDerived*>(y);
-}
-
-void sinkParamCast(NVDerived *z) {
- delete z;
-}
-
-void singleDerived() {
- NonVirtual *sd;
- sd = new NVDerived(); // expected-note{{Conversion from derived to base happened here}}
- delete sd; // expected-warning{{Destruction of a polymorphic object with no virtual destructor}}
- // expected-note@-1{{Destruction of a polymorphic object with no virtual destructor}}
-}
-
-void singleDerivedArr() {
- NonVirtual *sda = new NVDerived[5]; // expected-note{{Conversion from derived to base happened here}}
- delete[] sda; // expected-warning{{Destruction of a polymorphic object with no virtual destructor}}
- // expected-note@-1{{Destruction of a polymorphic object with no virtual destructor}}
-}
-
-void doubleDerived() {
- NonVirtual *dd = new NVDoubleDerived(); // expected-note{{Conversion from derived to base happened here}}
- delete (dd); // expected-warning{{Destruction of a polymorphic object with no virtual destructor}}
- // expected-note@-1{{Destruction of a polymorphic object with no virtual destructor}}
-}
-
-void assignThroughFunction() {
- NonVirtual *atf = get(); // expected-note{{Conversion from derived to base happened here}}
- delete atf; // expected-warning{{Destruction of a polymorphic object with no virtual destructor}}
- // expected-note@-1{{Destruction of a polymorphic object with no virtual destructor}}
-}
-
-void assignThroughFunction2() {
- NonVirtual *atf2;
- atf2 = get(); // expected-note{{Conversion from derived to base happened here}}
- delete atf2; // expected-warning{{Destruction of a polymorphic object with no virtual destructor}}
- // expected-note@-1{{Destruction of a polymorphic object with no virtual destructor}}
-}
-
-void createThroughFunction() {
- NonVirtual *ctf = create(); // expected-note{{Calling 'create'}}
- // expected-note@-1{{Returning from 'create'}}
- delete ctf; // expected-warning {{Destruction of a polymorphic object with no virtual destructor}}
- // expected-note@-1{{Destruction of a polymorphic object with no virtual destructor}}
-}
-
-void deleteThroughFunction() {
- NonVirtual *dtf = new NVDerived(); // expected-note{{Conversion from derived to base happened here}}
- sink(dtf); // expected-note{{Calling 'sink'}}
-}
-
-void singleCastCStyle() {
- NVDerived *sccs = new NVDerived();
- NonVirtual *sccs2 = (NonVirtual*)sccs; // expected-note{{Conversion from derived to base happened here}}
- delete sccs2; // expected-warning{{Destruction of a polymorphic object with no virtual destructor}}
- // expected-note@-1{{Destruction of a polymorphic object with no virtual destructor}}
-}
-
-void doubleCastCStyle() {
- NonVirtual *dccs = new NVDerived();
- NVDerived *dccs2 = (NVDerived*)dccs;
- dccs = (NonVirtual*)dccs2; // expected-note{{Conversion from derived to base happened here}}
- delete dccs; // expected-warning{{Destruction of a polymorphic object with no virtual destructor}}
- // expected-note@-1{{Destruction of a polymorphic object with no virtual destructor}}
-}
-
-void singleCast() {
- NVDerived *sc = new NVDerived();
- NonVirtual *sc2 = reinterpret_cast<NonVirtual*>(sc); // expected-note{{Conversion from derived to base happened here}}
- delete sc2; // expected-warning{{Destruction of a polymorphic object with no virtual destructor}}
- // expected-note@-1{{Destruction of a polymorphic object with no virtual destructor}}
-}
-
-void doubleCast() {
- NonVirtual *dd = new NVDerived();
- NVDerived *dd2 = reinterpret_cast<NVDerived*>(dd);
- dd = reinterpret_cast<NonVirtual*>(dd2); // expected-note {{Conversion from derived to base happened here}}
- delete dd; // expected-warning {{Destruction of a polymorphic object with no virtual destructor}}
- // expected-note@-1{{Destruction of a polymorphic object with no virtual destructor}}
-}
-
-void implicitNV() {
- ImplicitNV *invd = new ImplicitNVDerived(); // expected-note{{Conversion from derived to base happened here}}
- delete invd; // expected-warning{{Destruction of a polymorphic object with no virtual destructor}}
- // expected-note@-1{{Destruction of a polymorphic object with no virtual destructor}}
-}
-
-void doubleDecl() {
- ImplicitNV *dd1, *dd2;
- dd1 = new ImplicitNVDerived(); // expected-note{{Conversion from derived to base happened here}}
- delete dd1; // expected-warning{{Destruction of a polymorphic object with no virtual destructor}}
- // expected-note@-1{{Destruction of a polymorphic object with no virtual destructor}}
-}
-
-void virtualBase() {
- Virtual *vb = new VDerived();
- delete vb; // no-warning
-}
-
-void notDerived() {
- NonVirtual *nd = new NonVirtual();
- delete nd; // no-warning
-}
-
-void notDerivedArr() {
- NonVirtual *nda = new NonVirtual[3];
- delete[] nda; // no-warning
-}
-
-void cast() {
- NonVirtual *c = new NVDerived();
- delete reinterpret_cast<NVDerived*>(c); // no-warning
-}
-
-void deleteThroughFunction2() {
- NonVirtual *dtf2 = new NVDerived();
- sinkCast(dtf2); // no-warning
-}
-
-void deleteThroughFunction3() {
- NVDerived *dtf3;
- dtf3 = new NVDerived();
- sinkParamCast(dtf3); // no-warning
-}
-
-void stackVar() {
- NonVirtual sv2;
- delete &sv2; // no-warning
-}
-
-// Deleting a polymorphic object with a non-virtual dtor
-// is not a problem if it is referenced by its precise type.
-
-void preciseType() {
- NVDerived *pt = new NVDerived();
- delete pt; // no-warning
-}
-
-void privateDtor() {
- Base *pd = new PrivateDtor();
- pd->destroy(); // no-warning
-}
diff --git a/test/Analysis/DynamicTypePropagation.m b/test/Analysis/DynamicTypePropagation.m
deleted file mode 100644
index 63904b842567..000000000000
--- a/test/Analysis/DynamicTypePropagation.m
+++ /dev/null
@@ -1,69 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.ObjCGenerics -verify %s
-
-#if !__has_feature(objc_generics)
-# error Compiler does not support Objective-C generics?
-#endif
-
-typedef __typeof(sizeof(int)) size_t;
-void *memset(void *, int, size_t);
-
-#define nil 0
-typedef unsigned long NSUInteger;
-typedef int BOOL;
-
-@protocol NSCopying
-@end
-
-__attribute__((objc_root_class))
-@interface NSObject
-- (void) myFunction:(int*)p myParam:(int) n;
-@end
-
-@interface MyType : NSObject <NSCopying>
-- (void) myFunction:(int*)p myParam:(int) n;
-@end
-
-@interface NSArray<ObjectType> : NSObject
-- (void) init;
-- (BOOL)contains:(ObjectType)obj;
-- (ObjectType)getObjAtIndex:(NSUInteger)idx;
-- (ObjectType)objectAtIndexedSubscript:(NSUInteger)idx;
-@property(readonly) ObjectType firstObject;
-@end
-
-@implementation NSObject
-- (void) myFunction:(int*)p myParam:(int) n {
- (void)*p;// no warning
-}
-@end
-
-@implementation MyType
-- (void) myFunction:(int*)p myParam:(int) n {
- int i = 5/n; // expected-warning {{}}
- (void)i;
-}
-@end
-
-void testReturnType(NSArray<MyType *> *arr) {
- NSArray *erased = arr;
- NSObject *element = [erased firstObject];
- // TODO: myFunction currently dispatches to NSObject. Make it dispatch to
- // MyType instead!
- [element myFunction:0 myParam:0 ];
-}
-
-void testArgument(NSArray<MyType *> *arr, id element) {
- NSArray *erased = arr;
- [erased contains: element];
- // TODO: myFunction currently is not dispatched to MyType. Make it dispatch to
- // MyType!
- [element myFunction:0 myParam:0 ];
-}
-
-// Do not try this at home! The analyzer shouldn't crash though when it
-// tries to figure out the dynamic type behind the alloca's return value.
-void testAlloca(size_t NSArrayClassSizeWeKnowSomehow) {
- NSArray *arr = __builtin_alloca(NSArrayClassSizeWeKnowSomehow);
- memset(arr, 0, NSArrayClassSizeWeKnowSomehow);
- [arr init]; // no-crash
-}
diff --git a/test/Analysis/Inputs/Models/modeledFunction.model b/test/Analysis/Inputs/Models/modeledFunction.model
deleted file mode 100644
index 3aff5fc1b443..000000000000
--- a/test/Analysis/Inputs/Models/modeledFunction.model
+++ /dev/null
@@ -1,3 +0,0 @@
-void modelled(intptr p) {
- ++*p;
-} \ No newline at end of file
diff --git a/test/Analysis/Inputs/Models/notzero.model b/test/Analysis/Inputs/Models/notzero.model
deleted file mode 100644
index 26161029d6ed..000000000000
--- a/test/Analysis/Inputs/Models/notzero.model
+++ /dev/null
@@ -1,3 +0,0 @@
-bool notzero(int i) {
- return i != 0;
-} \ No newline at end of file
diff --git a/test/Analysis/Inputs/ctu-chain.cpp b/test/Analysis/Inputs/ctu-chain.cpp
deleted file mode 100644
index 2314dde1df0d..000000000000
--- a/test/Analysis/Inputs/ctu-chain.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-int h_chain(int x) {
- return x * 2;
-}
-
-namespace chns {
-int chf3(int x);
-
-int chf2(int x) {
- return chf3(x);
-}
-
-class chcls {
-public:
- int chf4(int x);
-};
-
-int chcls::chf4(int x) {
- return x * 3;
-}
-}
diff --git a/test/Analysis/Inputs/ctu-other.c b/test/Analysis/Inputs/ctu-other.c
deleted file mode 100644
index 9a952061102f..000000000000
--- a/test/Analysis/Inputs/ctu-other.c
+++ /dev/null
@@ -1,49 +0,0 @@
-// Test typedef and global variable in function.
-typedef struct {
- int a;
- int b;
-} FooBar;
-FooBar fb;
-int f(int i) {
- if (fb.a) {
- fb.b = i;
- }
- return 1;
-}
-
-// Test enums.
-enum B { x = 42,
- l,
- s };
-int enumCheck(void) {
- return x;
-}
-
-// Test reporting an error in macro definition
-#define MYMACRO(ctx) \
- ctx->a;
-struct S {
- int a;
-};
-int g(struct S *ctx) {
- MYMACRO(ctx);
- return 0;
-}
-
-// Test that asm import does not fail.
-int inlineAsm() {
- int res;
- asm("mov $42, %0"
- : "=r"(res));
- return res;
-}
-
-// Implicit function.
-int identImplicit(int in) {
- return in;
-}
-
-// ASTImporter doesn't support this construct.
-int structInProto(struct DataType {int a;int b; } * d) {
- return 0;
-}
diff --git a/test/Analysis/Inputs/ctu-other.c.externalDefMap.txt b/test/Analysis/Inputs/ctu-other.c.externalDefMap.txt
deleted file mode 100644
index 9abaa501a4cb..000000000000
--- a/test/Analysis/Inputs/ctu-other.c.externalDefMap.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-c:@F@inlineAsm ctu-other.c.ast
-c:@F@g ctu-other.c.ast
-c:@F@f ctu-other.c.ast
-c:@F@enumCheck ctu-other.c.ast
-c:@F@identImplicit ctu-other.c.ast
-c:@F@structInProto ctu-other.c.ast
diff --git a/test/Analysis/Inputs/ctu-other.cpp b/test/Analysis/Inputs/ctu-other.cpp
deleted file mode 100644
index 8cad861578b4..000000000000
--- a/test/Analysis/Inputs/ctu-other.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-#include "../ctu-hdr.h"
-
-int callback_to_main(int x);
-int f(int x) {
- return x - 1;
-}
-
-int g(int x) {
- return callback_to_main(x) + 1;
-}
-
-int h_chain(int);
-
-int h(int x) {
- return 2 * h_chain(x);
-}
-
-namespace myns {
-int fns(int x) {
- return x + 7;
-}
-
-namespace embed_ns {
-int fens(int x) {
- return x - 3;
-}
-}
-
-class embed_cls {
-public:
- int fecl(int x) {
- return x - 7;
- }
-};
-}
-
-class mycls {
-public:
- int fcl(int x) {
- return x + 5;
- }
- static int fscl(int x) {
- return x + 6;
- }
-
- class embed_cls2 {
- public:
- int fecl2(int x) {
- return x - 11;
- }
- };
-};
-
-namespace chns {
-int chf2(int x);
-
-class chcls {
-public:
- int chf4(int x);
-};
-
-int chf3(int x) {
- return chcls().chf4(x);
-}
-
-int chf1(int x) {
- return chf2(x);
-}
-}
-
-typedef struct { int n; } Anonymous;
-int fun_using_anon_struct(int n) { Anonymous anon; anon.n = n; return anon.n; }
-
-int other_macro_diag(int x) {
- MACRODIAG();
- return x;
-}
diff --git a/test/Analysis/Inputs/ctu-other.cpp.externalDefMap.txt b/test/Analysis/Inputs/ctu-other.cpp.externalDefMap.txt
deleted file mode 100644
index 5461685dc62b..000000000000
--- a/test/Analysis/Inputs/ctu-other.cpp.externalDefMap.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-c:@N@chns@F@chf1#I# ctu-other.cpp.ast
-c:@N@myns@N@embed_ns@F@fens#I# ctu-other.cpp.ast
-c:@F@g#I# ctu-other.cpp.ast
-c:@S@mycls@F@fscl#I#S ctu-other.cpp.ast
-c:@S@mycls@F@fcl#I# ctu-other.cpp.ast
-c:@N@myns@S@embed_cls@F@fecl#I# ctu-other.cpp.ast
-c:@S@mycls@S@embed_cls2@F@fecl2#I# ctu-other.cpp.ast
-c:@F@f#I# ctu-other.cpp.ast
-c:@N@myns@F@fns#I# ctu-other.cpp.ast
-c:@F@h#I# ctu-other.cpp.ast
-c:@F@h_chain#I# ctu-chain.cpp.ast
-c:@N@chns@S@chcls@F@chf4#I# ctu-chain.cpp.ast
-c:@N@chns@F@chf2#I# ctu-chain.cpp.ast
-c:@F@fun_using_anon_struct#I# ctu-other.cpp.ast
-c:@F@other_macro_diag#I# ctu-other.cpp.ast
diff --git a/test/Analysis/Inputs/expected-plists/NewDelete-path-notes.cpp.plist b/test/Analysis/Inputs/expected-plists/NewDelete-path-notes.cpp.plist
deleted file mode 100644
index d74d9fc7c677..000000000000
--- a/test/Analysis/Inputs/expected-plists/NewDelete-path-notes.cpp.plist
+++ /dev/null
@@ -1,464 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Memory is released</string>
- <key>message</key>
- <string>Memory is released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Attempt to free released memory</string>
- <key>message</key>
- <string>Attempt to free released memory</string>
- </dict>
- </array>
- <key>description</key><string>Attempt to free released memory</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Double free</string>
- <key>check_name</key><string>cplusplus.NewDelete</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>bd8e324d09c70b9e2be6f824a4942e5a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test</string>
- <key>issue_hash_function_offset</key><string>8</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>6</integer>
- <integer>7</integer>
- <integer>9</integer>
- <integer>11</integer>
- <integer>14</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;Odd::kill&apos;</string>
- <key>message</key>
- <string>Calling &apos;Odd::kill&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory is released</string>
- <key>message</key>
- <string>Memory is released</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning; memory was released</string>
- <key>message</key>
- <string>Returning; memory was released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Attempt to free released memory</string>
- <key>message</key>
- <string>Attempt to free released memory</string>
- </dict>
- </array>
- <key>description</key><string>Attempt to free released memory</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Double free</string>
- <key>check_name</key><string>cplusplus.NewDelete</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8bf1a5b9fdae9d86780aa6c4cdce2605</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>19</integer>
- <integer>20</integer>
- <integer>24</integer>
- <integer>25</integer>
- <integer>27</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/NewDelete-path-notes.cpp</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/conditional-path-notes.c.plist b/test/Analysis/Inputs/expected-plists/conditional-path-notes.c.plist
deleted file mode 100644
index 2cc68feb5c5c..000000000000
--- a/test/Analysis/Inputs/expected-plists/conditional-path-notes.c.plist
+++ /dev/null
@@ -1,1772 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;x&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;x&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;x&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;x&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;x&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8ea3f4e6a3100c73f078fac15acb0a9c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCondOp</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>5</integer>
- <integer>6</integer>
- <integer>10</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2c219a33e961fc1be7d54b700867259e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCondProblem</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>14</integer>
- <integer>15</integer>
- <integer>19</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8d43b511137326eab7d1242950e72984</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testLHSProblem</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>24</integer>
- <integer>25</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b8e93b7355a6779a960f9a942fafac15</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testRHSProblem</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>32</integer>
- <integer>33</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;x&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;x&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;x&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;x&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;x&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a944281d096940ca43ec995649b48b5f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testBinaryCondOp</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>40</integer>
- <integer>41</integer>
- <integer>44</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4db164bbf5cea42d75c5e838be1eef6f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testBinaryLHSProblem</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>48</integer>
- <integer>49</integer>
- <integer>53</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;a&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;a&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>778d56ad485369222613ac2c03b97700</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testDiagnosableBranch</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>58</integer>
- <integer>59</integer>
- <integer>62</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;a&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;a&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;b&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;b&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a2b345c9681d9dd3aa15d12810759cb9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testDiagnosableBranchLogical</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>67</integer>
- <integer>68</integer>
- <integer>73</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f56671e5f67c73abef619b56f7c29fa4</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testNonDiagnosableBranchArithmetic</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>78</integer>
- <integer>79</integer>
- <integer>82</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/conditional-path-notes.c</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/cstring-plist.c.plist b/test/Analysis/Inputs/expected-plists/cstring-plist.c.plist
deleted file mode 100644
index 84f23be16cd6..000000000000
--- a/test/Analysis/Inputs/expected-plists/cstring-plist.c.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-<key>diagnostics</key>
-<array>
-</array>
-</dict>
-</plist>
-
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/cxx-for-range.cpp.plist b/test/Analysis/Inputs/expected-plists/cxx-for-range.cpp.plist
deleted file mode 100644
index 9afb8055793b..000000000000
--- a/test/Analysis/Inputs/expected-plists/cxx-for-range.cpp.plist
+++ /dev/null
@@ -1,1960 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>7c0b35987817cf3d44b88c5349bcd4f2</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testLoop</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>6</integer>
- <integer>7</integer>
- <integer>8</integer>
- <integer>9</integer>
- <integer>10</integer>
- <integer>11</integer>
- <integer>12</integer>
- <integer>13</integer>
- <integer>14</integer>
- <integer>15</integer>
- <integer>16</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;get&apos;</string>
- <key>message</key>
- <string>Calling &apos;get&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testLoopErrorInRange&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testLoopErrorInRange&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f53792d63dffe6176babc00ee455a3e0</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>get</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>31</integer>
- <integer>32</integer>
- <integer>33</integer>
- <integer>87</integer>
- <integer>88</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;y&apos; is equal to 2</string>
- <key>message</key>
- <string>Assuming &apos;y&apos; is equal to 2</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>7bc3cb8a56be029296ec61f7ee83fc9e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testLoopOpaqueCollection</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>31</integer>
- <integer>32</integer>
- <integer>34</integer>
- <integer>37</integer>
- <integer>38</integer>
- <integer>39</integer>
- <integer>40</integer>
- <integer>41</integer>
- <integer>42</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body skipped when range is empty</string>
- <key>message</key>
- <string>Loop body skipped when range is empty</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>dc7b457a64bd56c30467c1af44049756</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testLoopOpaqueCollection</string>
- <key>issue_hash_function_offset</key><string>11</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>31</integer>
- <integer>32</integer>
- <integer>34</integer>
- <integer>37</integer>
- <integer>38</integer>
- <integer>48</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>74</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>74</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>74</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>74</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;y&apos; is equal to 2</string>
- <key>message</key>
- <string>Assuming &apos;y&apos; is equal to 2</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f4697ded3a92318349a3969238e05387</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testLoopOpaqueIterator</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>68</integer>
- <integer>69</integer>
- <integer>72</integer>
- <integer>73</integer>
- <integer>74</integer>
- <integer>75</integer>
- <integer>76</integer>
- <integer>77</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body skipped when range is empty</string>
- <key>message</key>
- <string>Loop body skipped when range is empty</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6855b29ad2407a5af43c57f062bc4602</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testLoopOpaqueIterator</string>
- <key>issue_hash_function_offset</key><string>11</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>68</integer>
- <integer>69</integer>
- <integer>72</integer>
- <integer>73</integer>
- <integer>83</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Initializing to a null pointer value</string>
- <key>message</key>
- <string>Initializing to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>51</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>51</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>51</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>56</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>51</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ad377f8d4510dfd77d6485c402d57a2d</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testForRangeInit</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>101</integer>
- <integer>102</integer>
- <integer>103</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/cxx-for-range.cpp</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/edges-new.mm.plist b/test/Analysis/Inputs/expected-plists/edges-new.mm.plist
deleted file mode 100644
index bcb659c0b31f..000000000000
--- a/test/Analysis/Inputs/expected-plists/edges-new.mm.plist
+++ /dev/null
@@ -1,21452 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>dc9c2a657ca759f9744cde2e093cfd59</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_init</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>51</integer>
- <integer>52</integer>
- <integer>53</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8f95d9681490a4e52c167969d0957b39</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_assign</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>56</integer>
- <integer>57</integer>
- <integer>58</integer>
- <integer>59</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>64</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>64</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>64</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>64</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>64</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>64</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>64</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;q&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;q&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;q&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;q&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;q&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>94c43fbcad6aaff4ee7433f2d2db0bbe</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_assign_transitive</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>62</integer>
- <integer>63</integer>
- <integer>64</integer>
- <integer>65</integer>
- <integer>66</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>659f01507ffd7efd3ca3eab7179fd7d2</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_cond</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>69</integer>
- <integer>70</integer>
- <integer>71</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;q&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;q&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c90d51e62139e614b57aff7021240a82</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_cond_transitive</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>75</integer>
- <integer>76</integer>
- <integer>77</integer>
- <integer>78</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;x.p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;x.p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from field &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from field &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from field &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>245408d2bc416e324064d990e6dd82a8</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_field</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>82</integer>
- <integer>83</integer>
- <integer>84</integer>
- <integer>85</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;a&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;a&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;b&apos; is equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;b&apos; is equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b12acffa40177b55b695aa2292533410</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_assumptions</string>
- <key>issue_hash_function_offset</key><string>8</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>88</integer>
- <integer>89</integer>
- <integer>90</integer>
- <integer>93</integer>
- <integer>96</integer>
- <integer>97</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value assigned to &apos;p&apos;</string>
- <key>message</key>
- <string>Value assigned to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming pointer value is null</string>
- <key>message</key>
- <string>Assuming pointer value is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c0a32b8291b0fc7230f847f05f415625</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_cond_assign</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>101</integer>
- <integer>102</integer>
- <integer>103</integer>
- <integer>105</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>118</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>118</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>82</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFNumberCreate&apos; returns a Core Foundation object of type &apos;CFNumberRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFNumberCreate&apos; returns a Core Foundation object of type &apos;CFNumberRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;x&apos; is 0</string>
- <key>message</key>
- <string>Assuming &apos;x&apos; is 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>122</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>122</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>122</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>122</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>123</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>123</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>123</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;value&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>29a10ca4af622b6146ca082e49d919d6</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar8331641</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>123</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>117</integer>
- <integer>118</integer>
- <integer>119</integer>
- <integer>120</integer>
- <integer>122</integer>
- <integer>123</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ed7251f5b34b8380abd60cddfd3db46b</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_fast_enumeration</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>129</integer>
- <integer>130</integer>
- <integer>131</integer>
- <integer>132</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value stored to &apos;x&apos; is never read</string>
- <key>message</key>
- <string>Value stored to &apos;x&apos; is never read</string>
- </dict>
- </array>
- <key>description</key><string>Value stored to &apos;x&apos; is never read</string>
- <key>category</key><string>Dead store</string>
- <key>type</key><string>Dead increment</string>
- <key>check_name</key><string>deadcode.DeadStores</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>dd09640bb87b201c2adcf5ef37bfcfaa</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_fast_enumeration_2</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>140</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;x&apos; declared without an initial value</string>
- <key>message</key>
- <string>&apos;x&apos; declared without an initial value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body skipped when collection is empty</string>
- <key>message</key>
- <string>Loop body skipped when collection is empty</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage</string>
- <key>message</key>
- <string>The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage</string>
- </dict>
- </array>
- <key>description</key><string>The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Assigned value is garbage or undefined</string>
- <key>check_name</key><string>core.uninitialized.Assign</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>025372576cd3ba6716044f93a51c978c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_fast_enumeration_2</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>135</integer>
- <integer>136</integer>
- <integer>137</integer>
- <integer>140</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>148</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>148</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>148</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>148</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>148</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>148</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>148</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>148</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>148</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>08f9a01186cb2f1b78b08ec20260f1c1</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar12280665</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>148</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>144</integer>
- <integer>145</integer>
- <integer>146</integer>
- <integer>147</integer>
- <integer>148</integer>
- <integer>150</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>157</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>157</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>158</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>158</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>158</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;i&apos; is &gt;= &apos;x&apos;</string>
- <key>message</key>
- <string>Assuming &apos;i&apos; is &gt;= &apos;x&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>93a53e4c8f02d191b07477940ddcf89c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>radar12322528_for</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>156</integer>
- <integer>157</integer>
- <integer>158</integer>
- <integer>159</integer>
- <integer>162</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;i&apos; is &gt;= &apos;x&apos;</string>
- <key>message</key>
- <string>Assuming &apos;i&apos; is &gt;= &apos;x&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f2d2dbf579b0b21a6b68726df6a041fc</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>radar12322528_while</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>165</integer>
- <integer>166</integer>
- <integer>167</integer>
- <integer>168</integer>
- <integer>172</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>176</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>176</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>176</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>176</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>176</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>178</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>178</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>178</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>178</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>179</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>179</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>179</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>179</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>185</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>185</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>185</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>185</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>178</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>178</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>178</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>178</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>183</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>183</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>183</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>183</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>95c7d39fb9d0d8c172b894e02855a07c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>radar12322528_foo_2</string>
- <key>issue_hash_function_offset</key><string>11</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>175</integer>
- <integer>176</integer>
- <integer>177</integer>
- <integer>178</integer>
- <integer>179</integer>
- <integer>181</integer>
- <integer>183</integer>
- <integer>185</integer>
- <integer>186</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>190</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>190</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4cbbc713c8267513fef8a33f1327d7ca</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_loop_diagnostics</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>189</integer>
- <integer>190</integer>
- <integer>191</integer>
- <integer>192</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>200</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>200</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>200</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>200</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>204</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>204</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>204</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>204</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>200</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>200</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>200</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>200</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>204</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>204</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>204</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>204</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>198</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>206</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>206</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>206</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>206</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>206</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>206</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>206</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>206</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>206</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a5aa7cf7ce6ba6683bebfff63df926fd</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_loop_diagnostics_2</string>
- <key>issue_hash_function_offset</key><string>11</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>206</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>195</integer>
- <integer>196</integer>
- <integer>198</integer>
- <integer>200</integer>
- <integer>202</integer>
- <integer>204</integer>
- <integer>206</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>210</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>210</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>218</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>218</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>218</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>218</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>218</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>218</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>218</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>218</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>940ba28399417701285cc8f80b1b8c2d</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_loop_diagnostics_3</string>
- <key>issue_hash_function_offset</key><string>10</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>209</integer>
- <integer>210</integer>
- <integer>211</integer>
- <integer>212</integer>
- <integer>213</integer>
- <integer>214</integer>
- <integer>215</integer>
- <integer>216</integer>
- <integer>217</integer>
- <integer>218</integer>
- <integer>219</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>229</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>229</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>229</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>229</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>227</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>227</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>227</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>227</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>227</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>227</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>227</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>229</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>229</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>229</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>229</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>89eb0611013a66315f63bf4de8130c3d</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_do_while</string>
- <key>issue_hash_function_offset</key><string>12</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>222</integer>
- <integer>223</integer>
- <integer>225</integer>
- <integer>227</integer>
- <integer>229</integer>
- <integer>230</integer>
- <integer>232</integer>
- <integer>234</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>239</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>239</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>239</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>239</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>239</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>483f7a1c29cc32152ca2ea651443e16f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_logical_and</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>238</integer>
- <integer>239</integer>
- <integer>240</integer>
- <integer>241</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>852b510b1e204194a9fe3045cabc952c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_logical_or</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>245</integer>
- <integer>246</integer>
- <integer>247</integer>
- <integer>248</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a5081bea3b0e9f4f8132ecdb2c17991b</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_logical_or_call</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>252</integer>
- <integer>254</integer>
- <integer>255</integer>
- <integer>256</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;coin&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;coin&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>264</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>264</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>264</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>264</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>264</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>264</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>264</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>264</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>264</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>16c21155317ccfddb4f482db43b6c635</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_nested_logicals</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>264</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>260</integer>
- <integer>261</integer>
- <integer>263</integer>
- <integer>264</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;coin&apos; is 0</string>
- <key>message</key>
- <string>Assuming &apos;coin&apos; is 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>268</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>268</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>268</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>268</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>268</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>268</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>268</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>268</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>268</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>16c21155317ccfddb4f482db43b6c635</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_nested_logicals</string>
- <key>issue_hash_function_offset</key><string>8</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>268</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>260</integer>
- <integer>261</integer>
- <integer>263</integer>
- <integer>267</integer>
- <integer>268</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>274</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>274</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>274</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>274</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>274</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>51</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>51</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>51</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>51</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>44</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>44</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>57</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5fec1fd2724e271bb73fa4dd4be2a7f5</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_deeply_nested_logicals</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>272</integer>
- <integer>274</integer>
- <integer>276</integer>
- <integer>278</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;x&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;x&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>283</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>287</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>287</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>287</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>287</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>287</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>287</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>287</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>287</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>287</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c4ebf7f3e8a792521541ffae22ae2378</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_ternary</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>287</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>282</integer>
- <integer>283</integer>
- <integer>285</integer>
- <integer>287</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>291</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>291</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>291</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>291</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>291</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>291</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>291</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;y&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;y&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>291</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>291</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>294</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>294</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>294</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>294</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>297</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>297</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>297</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>297</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>297</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>297</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>297</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>298</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>298</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>298</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>298</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>298</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>298</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>298</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>298</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>298</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>137a2333a17b5eecff7ff7a4b56d38d9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testUseless</string>
- <key>issue_hash_function_offset</key><string>8</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>298</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>290</integer>
- <integer>291</integer>
- <integer>294</integer>
- <integer>297</integer>
- <integer>298</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>310</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>310</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>310</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>310</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>310</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>310</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>310</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;x&apos; is nil</string>
- <key>message</key>
- <string>Assuming &apos;x&apos; is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>310</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>310</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>312</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>312</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>312</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>312</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>312</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>312</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>312</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>312</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>312</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;returnsPointer&apos; not called because the receiver is nil</string>
- <key>message</key>
- <string>&apos;returnsPointer&apos; not called because the receiver is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>312</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>312</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>312</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d1a1b27348a9c4d0abaaea4a4df9b649</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testFoo</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>312</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>309</integer>
- <integer>310</integer>
- <integer>312</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>320</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>320</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>320</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;x&apos; initialized to nil</string>
- <key>message</key>
- <string>&apos;x&apos; initialized to nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>320</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>320</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>321</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>321</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>321</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>321</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>321</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;getPointer&apos; not called because the receiver is nil</string>
- <key>message</key>
- <string>&apos;getPointer&apos; not called because the receiver is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>321</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>321</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>321</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>321</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>321</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>321</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>321</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1d7470f8b42e1cff6ab697162911b488</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test1_IPA_X</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>321</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>319</integer>
- <integer>320</integer>
- <integer>321</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>337</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>337</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>337</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>337</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>337</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>337</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>337</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;y&apos; is nil</string>
- <key>message</key>
- <string>Assuming &apos;y&apos; is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>337</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>337</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;opaque&apos; not called because the receiver is nil</string>
- <key>message</key>
- <string>&apos;opaque&apos; not called because the receiver is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;getX&apos; not called because the receiver is nil</string>
- <key>message</key>
- <string>&apos;getX&apos; not called because the receiver is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;x&apos; initialized to nil</string>
- <key>message</key>
- <string>&apos;x&apos; initialized to nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>340</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>341</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>341</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>341</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>341</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>341</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;getPointer&apos; not called because the receiver is nil</string>
- <key>message</key>
- <string>&apos;getPointer&apos; not called because the receiver is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>341</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>341</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>341</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>341</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>341</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>341</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>341</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3fda62f72d88e4bc250c415cbc45a9e2</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_IPA_Y</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>341</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>336</integer>
- <integer>337</integer>
- <integer>340</integer>
- <integer>341</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>352</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>352</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;causeDivByZeroInMain&apos;</string>
- <key>message</key>
- <string>Calling &apos;causeDivByZeroInMain&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>345</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;mainPlusMain&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;mainPlusMain&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>345</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>345</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>346</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>346</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>346</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>346</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>346</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>&apos;m&apos; initialized to 0</string>
- <key>message</key>
- <string>&apos;m&apos; initialized to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>346</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>346</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d0d513aa4710781c2b56c44226354403</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>causeDivByZeroInMain</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>345</integer>
- <integer>346</integer>
- <integer>347</integer>
- <integer>351</integer>
- <integer>352</integer>
- <integer>353</integer>
- <integer>354</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>383</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>383</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>383</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>383</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>383</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>384</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>384</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>384</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>384</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>384</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>384</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>384</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>384</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>384</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from ivar &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from ivar &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from ivar &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b21eba78798501dc6b716bb91e3f7f01</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>test</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>384</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>382</integer>
- <integer>383</integer>
- <integer>384</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>392</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>392</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>392</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;s.i&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;s.i&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>392</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>392</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>394</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>394</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>394</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>394</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>394</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer passed as an argument to a &apos;nonnull&apos; parameter</string>
- <key>message</key>
- <string>Null pointer passed as an argument to a &apos;nonnull&apos; parameter</string>
- </dict>
- </array>
- <key>description</key><string>Null pointer passed as an argument to a &apos;nonnull&apos; parameter</string>
- <key>category</key><string>API</string>
- <key>type</key><string>Argument with &apos;nonnull&apos; attribute passed null</string>
- <key>check_name</key><string>core.NonNullParamChecker</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c0b359a043c633f1b8d1581f68743361</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>RDar13295437</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>394</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>391</integer>
- <integer>392</integer>
- <integer>393</integer>
- <integer>394</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>400</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>400</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>400</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>400</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>400</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>400</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>400</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;coin&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;coin&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>400</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>400</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>404</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>404</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>404</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>404</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>404</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>404</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>404</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>404</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>404</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>573a1a599cc8abe987f5227676d04abc</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCast</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>404</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>399</integer>
- <integer>400</integer>
- <integer>401</integer>
- <integer>402</integer>
- <integer>403</integer>
- <integer>404</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>420</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>420</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>420</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>420</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>420</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>420</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>420</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>420</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>420</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>421</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>421</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>421</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>421</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>421</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>421</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>421</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ea1d5db6b4c380a432c88139fdd18f42</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>test</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>419</integer>
- <integer>420</integer>
- <integer>421</integer>
- <integer>422</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>431</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>431</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>431</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>431</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>431</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value stored to &apos;foo&apos; during its initialization is never read</string>
- <key>message</key>
- <string>Value stored to &apos;foo&apos; during its initialization is never read</string>
- </dict>
- </array>
- <key>description</key><string>Value stored to &apos;foo&apos; during its initialization is never read</string>
- <key>category</key><string>Dead store</string>
- <key>type</key><string>Dead initialization</string>
- <key>check_name</key><string>deadcode.DeadStores</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3dd1ebf91fa4e92eeec82faaeb48beda</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>test2</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>431</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>431</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>430</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>430</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>430</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>430</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>430</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>430</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>430</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>430</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>430</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>431</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>431</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>431</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>431</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>431</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of RDar10797980 with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of RDar10797980 with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>431</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>431</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;foo&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;foo&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;foo&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f533db5cbb9c20d171f9f92105789dc4</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>test2</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>429</integer>
- <integer>430</integer>
- <integer>431</integer>
- <integer>433</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>446</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>446</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>446</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>446</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>449</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>449</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>449</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>449</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>449</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>449</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>449</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>449</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>449</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>bfb65e90e76fe7a219616d1d0b36f958</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>variousLoops</string>
- <key>issue_hash_function_offset</key><string>11</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>449</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>438</integer>
- <integer>445</integer>
- <integer>446</integer>
- <integer>447</integer>
- <integer>448</integer>
- <integer>449</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a76c8ba29cdedecd0dfa5e24711cd236</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>variousLoops</string>
- <key>issue_hash_function_offset</key><string>20</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>438</integer>
- <integer>445</integer>
- <integer>452</integer>
- <integer>453</integer>
- <integer>454</integer>
- <integer>455</integer>
- <integer>456</integer>
- <integer>457</integer>
- <integer>458</integer>
- <integer>459</integer>
- <integer>460</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>463</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>463</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>463</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>463</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>464</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>464</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>464</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>464</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>464</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>464</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>464</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>464</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>464</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>bfb65e90e76fe7a219616d1d0b36f958</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>variousLoops</string>
- <key>issue_hash_function_offset</key><string>26</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>464</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>438</integer>
- <integer>445</integer>
- <integer>452</integer>
- <integer>453</integer>
- <integer>454</integer>
- <integer>455</integer>
- <integer>456</integer>
- <integer>457</integer>
- <integer>459</integer>
- <integer>460</integer>
- <integer>462</integer>
- <integer>463</integer>
- <integer>464</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>468</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>468</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>468</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>468</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>472</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>472</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>472</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>472</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>472</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>472</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>472</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>472</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>472</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>bfb65e90e76fe7a219616d1d0b36f958</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>variousLoops</string>
- <key>issue_hash_function_offset</key><string>34</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>472</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>438</integer>
- <integer>445</integer>
- <integer>452</integer>
- <integer>453</integer>
- <integer>454</integer>
- <integer>455</integer>
- <integer>456</integer>
- <integer>457</integer>
- <integer>459</integer>
- <integer>460</integer>
- <integer>462</integer>
- <integer>467</integer>
- <integer>468</integer>
- <integer>469</integer>
- <integer>470</integer>
- <integer>471</integer>
- <integer>472</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body skipped when collection is empty</string>
- <key>message</key>
- <string>Loop body skipped when collection is empty</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body skipped when range is empty</string>
- <key>message</key>
- <string>Loop body skipped when range is empty</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>499</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>499</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>499</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>499</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>500</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>500</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>500</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>500</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>500</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>500</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>500</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>500</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>500</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>bfb65e90e76fe7a219616d1d0b36f958</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>variousLoops</string>
- <key>issue_hash_function_offset</key><string>62</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>500</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>438</integer>
- <integer>445</integer>
- <integer>452</integer>
- <integer>453</integer>
- <integer>454</integer>
- <integer>455</integer>
- <integer>456</integer>
- <integer>457</integer>
- <integer>459</integer>
- <integer>460</integer>
- <integer>462</integer>
- <integer>467</integer>
- <integer>475</integer>
- <integer>476</integer>
- <integer>477</integer>
- <integer>478</integer>
- <integer>479</integer>
- <integer>480</integer>
- <integer>481</integer>
- <integer>483</integer>
- <integer>484</integer>
- <integer>491</integer>
- <integer>492</integer>
- <integer>493</integer>
- <integer>494</integer>
- <integer>497</integer>
- <integer>498</integer>
- <integer>499</integer>
- <integer>500</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body skipped when collection is empty</string>
- <key>message</key>
- <string>Loop body skipped when collection is empty</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body skipped when range is empty</string>
- <key>message</key>
- <string>Loop body skipped when range is empty</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>504</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>504</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>504</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>504</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>505</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>505</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>505</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>505</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>505</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>505</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>505</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>505</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>505</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>bfb65e90e76fe7a219616d1d0b36f958</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>variousLoops</string>
- <key>issue_hash_function_offset</key><string>67</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>505</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>438</integer>
- <integer>445</integer>
- <integer>452</integer>
- <integer>453</integer>
- <integer>454</integer>
- <integer>455</integer>
- <integer>456</integer>
- <integer>457</integer>
- <integer>459</integer>
- <integer>460</integer>
- <integer>462</integer>
- <integer>467</integer>
- <integer>475</integer>
- <integer>476</integer>
- <integer>477</integer>
- <integer>478</integer>
- <integer>479</integer>
- <integer>480</integer>
- <integer>481</integer>
- <integer>483</integer>
- <integer>484</integer>
- <integer>491</integer>
- <integer>492</integer>
- <integer>493</integer>
- <integer>494</integer>
- <integer>497</integer>
- <integer>498</integer>
- <integer>503</integer>
- <integer>504</integer>
- <integer>505</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body skipped when collection is empty</string>
- <key>message</key>
- <string>Loop body skipped when collection is empty</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body skipped when range is empty</string>
- <key>message</key>
- <string>Loop body skipped when range is empty</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>509</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>509</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>509</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>509</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>510</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>510</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>510</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>510</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>510</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>510</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>510</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>510</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>510</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>510</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>510</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>512</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>512</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>512</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>512</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>512</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>512</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>512</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>512</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>512</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>bfb65e90e76fe7a219616d1d0b36f958</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>variousLoops</string>
- <key>issue_hash_function_offset</key><string>74</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>512</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>438</integer>
- <integer>445</integer>
- <integer>452</integer>
- <integer>453</integer>
- <integer>454</integer>
- <integer>455</integer>
- <integer>456</integer>
- <integer>457</integer>
- <integer>459</integer>
- <integer>460</integer>
- <integer>462</integer>
- <integer>467</integer>
- <integer>475</integer>
- <integer>476</integer>
- <integer>477</integer>
- <integer>478</integer>
- <integer>479</integer>
- <integer>480</integer>
- <integer>481</integer>
- <integer>483</integer>
- <integer>484</integer>
- <integer>491</integer>
- <integer>492</integer>
- <integer>493</integer>
- <integer>494</integer>
- <integer>497</integer>
- <integer>498</integer>
- <integer>503</integer>
- <integer>508</integer>
- <integer>509</integer>
- <integer>510</integer>
- <integer>512</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>452</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>459</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>462</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body skipped when collection is empty</string>
- <key>message</key>
- <string>Loop body skipped when collection is empty</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>467</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>475</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>477</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>480</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>481</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>476</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body skipped when range is empty</string>
- <key>message</key>
- <string>Loop body skipped when range is empty</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>484</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>491</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>492</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>493</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>494</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>497</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>498</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>503</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>508</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>515</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>515</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>515</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>515</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>515</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>515</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>515</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>517</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>517</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>517</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>517</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>517</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>517</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>517</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>517</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>517</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>517</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>517</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>518</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>518</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>518</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>518</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>521</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>521</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>521</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>521</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>521</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>521</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>521</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>521</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>521</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6c3e2dd10c375325a3089b996dd460c3</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>variousLoops</string>
- <key>issue_hash_function_offset</key><string>83</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>521</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>438</integer>
- <integer>445</integer>
- <integer>452</integer>
- <integer>453</integer>
- <integer>454</integer>
- <integer>455</integer>
- <integer>456</integer>
- <integer>457</integer>
- <integer>459</integer>
- <integer>460</integer>
- <integer>462</integer>
- <integer>467</integer>
- <integer>475</integer>
- <integer>476</integer>
- <integer>477</integer>
- <integer>478</integer>
- <integer>479</integer>
- <integer>480</integer>
- <integer>481</integer>
- <integer>483</integer>
- <integer>484</integer>
- <integer>491</integer>
- <integer>492</integer>
- <integer>493</integer>
- <integer>494</integer>
- <integer>497</integer>
- <integer>498</integer>
- <integer>503</integer>
- <integer>508</integer>
- <integer>515</integer>
- <integer>516</integer>
- <integer>517</integer>
- <integer>518</integer>
- <integer>521</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>529</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>529</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>529</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>529</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>529</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>531</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>531</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>531</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>531</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>531</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Attempt to reallocate memory</string>
- <key>message</key>
- <string>Attempt to reallocate memory</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>531</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>531</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>532</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>532</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>532</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>532</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>532</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>532</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>532</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>532</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>532</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;tmp&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;tmp&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>532</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>532</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>532</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reallocation failed</string>
- <key>message</key>
- <string>Reallocation failed</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>532</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>532</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>533</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>533</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>533</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Potential leak of memory pointed to by &apos;buf&apos;</string>
- <key>message</key>
- <string>Potential leak of memory pointed to by &apos;buf&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of memory pointed to by &apos;buf&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>51180616cd69dc1776be708299ec90fb</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>reallocDiagnostics</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>533</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>528</integer>
- <integer>529</integer>
- <integer>530</integer>
- <integer>531</integer>
- <integer>532</integer>
- <integer>533</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>548</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>548</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>551</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>551</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>551</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>551</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>551</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>551</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>551</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>553</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>553</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>553</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>553</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;~unique_ptr&apos;</string>
- <key>message</key>
- <string>Calling &apos;~unique_ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>544</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>544</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>544</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>544</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>544</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>544</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>544</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>544</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory allocated by &apos;new[]&apos; should be deallocated by &apos;delete[]&apos;, not &apos;delete&apos;</string>
- <key>message</key>
- <string>Memory allocated by &apos;new[]&apos; should be deallocated by &apos;delete[]&apos;, not &apos;delete&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Memory allocated by &apos;new[]&apos; should be deallocated by &apos;delete[]&apos;, not &apos;delete&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Bad deallocator</string>
- <key>check_name</key><string>unix.MismatchedDeallocator</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>046c88d1c91ff46d6506dff5ff880756</string>
- <key>issue_hash_function_offset</key><string>0</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>544</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>543</integer>
- <integer>544</integer>
- <integer>547</integer>
- <integer>548</integer>
- <integer>549</integer>
- <integer>551</integer>
- <integer>553</integer>
- <integer>555</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>558</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>558</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>558</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSObject with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSObject with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>558</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>558</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>559</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>559</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>559</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>559</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>560</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>560</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>560</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>560</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>560</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>560</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>560</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>560</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>560</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>561</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>561</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>561</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>561</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>561</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>561</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>561</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>561</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>561</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>563</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>562</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>87</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>567</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>567</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>567</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>567</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>567</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>567</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>567</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>567</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>567</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>568</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>568</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>568</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;foo&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;foo&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;foo&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5616a7601faa1a8c2ac56fa1b595b172</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>longLines</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>568</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>557</integer>
- <integer>558</integer>
- <integer>559</integer>
- <integer>560</integer>
- <integer>561</integer>
- <integer>562</integer>
- <integer>564</integer>
- <integer>566</integer>
- <integer>567</integer>
- <integer>568</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>573</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>573</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>573</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>573</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>573</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>573</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>573</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>573</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>573</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>dff4970e681578e07d0512d3258aeddd</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testMacroInFunctionDecl</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>573</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>571</integer>
- <integer>572</integer>
- <integer>573</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>584</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>584</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>585</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>585</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>585</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>585</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>587</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>587</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>587</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>587</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>de83c7c8cc706cf47429f220bfa49458</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>583</integer>
- <integer>584</integer>
- <integer>585</integer>
- <integer>587</integer>
- <integer>588</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/edges-new.mm</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/generics.m.plist b/test/Analysis/Inputs/expected-plists/generics.m.plist
deleted file mode 100644
index acee11772013..000000000000
--- a/test/Analysis/Inputs/expected-plists/generics.m.plist
+++ /dev/null
@@ -1,7196 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
- <key>message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>33d4584e2bf66b029ab9d152cc9cd8f7</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>incompatibleTypesErased</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>97</integer>
- <integer>98</integer>
- <integer>99</integer>
- <integer>100</integer>
- <integer>101</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
- <key>message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>104</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>104</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>104</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>104</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>104</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>104</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>104</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>104</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>104</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6edc910aaa9dc1f2d823abc8cb75360f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>incompatibleTypesErased</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>104</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>97</integer>
- <integer>98</integer>
- <integer>99</integer>
- <integer>100</integer>
- <integer>101</integer>
- <integer>102</integer>
- <integer>103</integer>
- <integer>104</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
- <key>message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;NSArray *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>107</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>107</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>107</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>107</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>107</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>73c71c858082f5d7a2258f707927da3c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>incompatibleTypesErased</string>
- <key>issue_hash_function_offset</key><string>8</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>107</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>97</integer>
- <integer>98</integer>
- <integer>99</integer>
- <integer>100</integer>
- <integer>101</integer>
- <integer>102</integer>
- <integer>103</integer>
- <integer>104</integer>
- <integer>106</integer>
- <integer>107</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;getTypedStuff&apos;</string>
- <key>message</key>
- <string>Calling &apos;getTypedStuff&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;crossProceduralErasedTypes&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;crossProceduralErasedTypes&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Type &apos;NSArray&lt;NSNumber *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray *&apos; to &apos;NSArray&lt;NSNumber *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;NSArray&lt;NSNumber *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray *&apos; to &apos;NSArray&lt;NSNumber *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;getTypedStuff&apos;</string>
- <key>message</key>
- <string>Returning from &apos;getTypedStuff&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSArray&lt;NSNumber *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSArray&lt;NSNumber *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSNumber *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>82c378fdcfcc5c0318d2f3ca46420ec1</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>crossProceduralErasedTypes</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>86</integer>
- <integer>87</integer>
- <integer>88</integer>
- <integer>110</integer>
- <integer>111</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray *&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray *&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>234e3c299ee75a4dd4563e0ea88b9ed9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>incompatibleTypesErasedReverseConversion</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>114</integer>
- <integer>115</integer>
- <integer>116</integer>
- <integer>117</integer>
- <integer>118</integer>
- <integer>119</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray *&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray *&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>e875afc5479fec33a693ce2b550a9573</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>incompatibleTypesErasedReverseConversion</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>114</integer>
- <integer>115</integer>
- <integer>116</integer>
- <integer>117</integer>
- <integer>118</integer>
- <integer>119</integer>
- <integer>121</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d7fa9fa89fe860ed8f5d22631233a5fa</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>idErasedIncompatibleTypesReverseConversion</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>124</integer>
- <integer>125</integer>
- <integer>126</integer>
- <integer>127</integer>
- <integer>128</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;NSMutableArray&lt;NSString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>7de91182a5d6e40a85fa3b91cf3fd089</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>idErasedIncompatibleTypesReverseConversion</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>124</integer>
- <integer>125</integer>
- <integer>126</integer>
- <integer>127</integer>
- <integer>128</integer>
- <integer>130</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- <key>message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8960776d84319407ac2bf7a1531d19b0</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>idErasedIncompatibleTypes</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>133</integer>
- <integer>134</integer>
- <integer>135</integer>
- <integer>136</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- <key>message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSMutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>93b114c7a385294dce5c25ed04a8b25a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>idErasedIncompatibleTypes</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>133</integer>
- <integer>134</integer>
- <integer>135</integer>
- <integer>136</integer>
- <integer>137</integer>
- <integer>138</integer>
- <integer>139</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- <key>message</key>
- <string>Type &apos;NSMutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSMutableArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4c17f22d7e977f3343d2e2129b9229c3</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>idErasedIncompatibleTypes</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>133</integer>
- <integer>134</integer>
- <integer>135</integer>
- <integer>136</integer>
- <integer>137</integer>
- <integer>138</integer>
- <integer>139</integer>
- <integer>141</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray *&apos;)</string>
- <key>message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>24a08781e7d8971a7d8f8f607ce40074</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>pathSensitiveInference</string>
- <key>issue_hash_function_offset</key><string>8</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>144</integer>
- <integer>145</integer>
- <integer>146</integer>
- <integer>150</integer>
- <integer>151</integer>
- <integer>153</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>158</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>158</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>158</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a8534f675404d57d833dc3c371d49845</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>verifyAPIusage</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>157</integer>
- <integer>158</integer>
- <integer>159</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>187</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>187</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>188</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>188</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>188</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>188</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>188</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>188</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>188</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>189</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>189</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>189</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>189</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>189</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>189</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>189</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>189</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>189</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d113e22b9ee9ded1cd94750c3557eff4</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>subtypeOfGeneric</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>189</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>184</integer>
- <integer>185</integer>
- <integer>186</integer>
- <integer>187</integer>
- <integer>188</integer>
- <integer>189</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- <key>message</key>
- <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>199</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>199</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>199</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>199</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>199</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>199</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>199</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>199</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>199</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f1b900572a63726a729714a765595c38</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>genericSubtypeOfGeneric</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>199</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>192</integer>
- <integer>193</integer>
- <integer>194</integer>
- <integer>195</integer>
- <integer>196</integer>
- <integer>197</integer>
- <integer>198</integer>
- <integer>199</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- <key>message</key>
- <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>201</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>201</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>201</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>201</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>201</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>cbb926c9de226a3eac85fb961a93f39a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>genericSubtypeOfGeneric</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>201</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>192</integer>
- <integer>193</integer>
- <integer>194</integer>
- <integer>195</integer>
- <integer>196</integer>
- <integer>197</integer>
- <integer>198</integer>
- <integer>199</integer>
- <integer>201</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;ExceptionalArray&lt;NSString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;ExceptionalArray&lt;NSString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSNumber *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b6ee3b22fbad45f213b4bf14bec7eeaf</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>genericSubtypeOfGenericReverse</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>204</integer>
- <integer>205</integer>
- <integer>206</integer>
- <integer>207</integer>
- <integer>208</integer>
- <integer>209</integer>
- <integer>210</integer>
- <integer>211</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;ExceptionalArray&lt;NSString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;ExceptionalArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;ExceptionalArray&lt;NSString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>213</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>213</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>213</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>213</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>213</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6561f05506a8ceca3afc79fc59912b94</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>genericSubtypeOfGenericReverse</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>213</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>204</integer>
- <integer>205</integer>
- <integer>206</integer>
- <integer>207</integer>
- <integer>208</integer>
- <integer>209</integer>
- <integer>210</integer>
- <integer>211</integer>
- <integer>213</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6aab15d40b39ec0a6b749e561d486e6a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>inferenceFromAPI</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>216</integer>
- <integer>219</integer>
- <integer>220</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;id&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>bd1da1b7775323773555e5d5c122661f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>inferenceFromAPI2</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>223</integer>
- <integer>224</integer>
- <integer>225</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>229</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>229</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>229</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;LegacyMutableArray *&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;LegacyMutableArray *&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>229</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>229</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3f2abd3c0b4b4a80a71bcbb668124ffb</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>inferenceFromAPIWithLegacyTypes</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>228</integer>
- <integer>229</integer>
- <integer>230</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;LegacySpecialMutableArray *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;LegacySpecialMutableArray *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>73a50f2592e8b3c9af898749f24176f7</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>inferenceFromAPIWithLegacyTypes2</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>233</integer>
- <integer>234</integer>
- <integer>235</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>239</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>239</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>239</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;__kindof NSArray&lt;NSString *&gt; *&apos; to &apos;LegacyMutableArray *&apos;)</string>
- <key>message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;__kindof NSArray&lt;NSString *&gt; *&apos; to &apos;LegacyMutableArray *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>239</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>239</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;LegacyMutableArray *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;LegacyMutableArray *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>240</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>23ca540c8961ab9a362a194e1e895f86</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>inferenceFromAPIWithLegacyTypes3</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>238</integer>
- <integer>239</integer>
- <integer>240</integer>
- <integer>241</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>245</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>245</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>245</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>245</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>245</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>be7e9426f827314f05fd4e15b25909df</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>inferenceFromAPIWithBuggyTypes</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>244</integer>
- <integer>245</integer>
- <integer>246</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>250</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>250</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>250</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggySpecialMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggySpecialMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>250</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>250</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>251</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>251</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>251</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>251</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>251</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>251</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>251</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>251</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>251</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>0f97a618ccac913d7c8631b5b86a133e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>InferenceFromAPIWithBuggyTypes2</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>251</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>249</integer>
- <integer>250</integer>
- <integer>251</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;id&apos;)</string>
- <key>message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;id&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>67</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSMutableString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>257</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>257</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>257</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>257</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>257</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>257</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>257</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>257</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>257</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSString *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>725c54c88bb271138b1de545ee59a8aa</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>InferenceFromAPIWithBuggyTypes3</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>257</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>254</integer>
- <integer>255</integer>
- <integer>256</integer>
- <integer>257</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>45</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>45</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>45</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;__kindof NSArray&lt;NSString *&gt; *&apos; to &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;__kindof NSArray&lt;NSString *&gt; *&apos; to &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;MutableArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;BuggyMutableArray&lt;NSMutableString *&gt; *&apos; to &apos;MutableArray&lt;NSString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;MutableArray&lt;NSString *&gt; *&apos; to incompatible type &apos;MutableArray&lt;NSMutableString *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>fb867af384c612fe5c09f821127eeaf0</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>InferenceFromAPIWithBuggyTypes4</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>260</integer>
- <integer>261</integer>
- <integer>262</integer>
- <integer>263</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>275</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>275</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
- <key>message</key>
- <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
- <key>message</key>
- <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
- <key>category</key><string>Type Error</string>
- <key>type</key><string>Dynamic and static type mismatch</string>
- <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2e9f738345d9fa7dae2324ff7accd1ae</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>workWithProperties</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>276</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>274</integer>
- <integer>275</integer>
- <integer>276</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>275</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>275</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
- <key>message</key>
- <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
- <key>message</key>
- <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
- <key>category</key><string>Type Error</string>
- <key>type</key><string>Dynamic and static type mismatch</string>
- <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d85392b4efadf710b8da65a043a65e24</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>workWithProperties</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>278</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>274</integer>
- <integer>275</integer>
- <integer>276</integer>
- <integer>277</integer>
- <integer>278</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>275</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>275</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
- <key>message</key>
- <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
- <key>message</key>
- <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
- <key>category</key><string>Type Error</string>
- <key>type</key><string>Dynamic and static type mismatch</string>
- <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>456c6227549a5e577088c9dce4cea452</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>workWithProperties</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>274</integer>
- <integer>275</integer>
- <integer>276</integer>
- <integer>277</integer>
- <integer>278</integer>
- <integer>279</integer>
- <integer>280</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>275</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>275</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>282</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>282</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>282</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>282</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>282</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>282</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>282</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>282</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>282</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
- <key>message</key>
- <string>Type &apos;NSNumber *&apos; is inferred from this context</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>282</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>282</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>282</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
- <key>message</key>
- <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
- <key>category</key><string>Type Error</string>
- <key>type</key><string>Dynamic and static type mismatch</string>
- <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>df7f090d2b72ac07bc2351177ed6552d</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>workWithProperties</string>
- <key>issue_hash_function_offset</key><string>8</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>282</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>274</integer>
- <integer>275</integer>
- <integer>276</integer>
- <integer>277</integer>
- <integer>278</integer>
- <integer>279</integer>
- <integer>280</integer>
- <integer>281</integer>
- <integer>282</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>288</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>288</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>288</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;NSArray&lt;NSMutableString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;NSArray&lt;NSMutableString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>288</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>288</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>289</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>289</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>289</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>289</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>289</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>289</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>289</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>289</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>289</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>289</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>289</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>290</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>290</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>290</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>290</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>291</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>291</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>291</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>291</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>291</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a0fa75143d7a7ac234292642a6d93360</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>findMethodDeclInTrackedType</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>291</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>286</integer>
- <integer>287</integer>
- <integer>288</integer>
- <integer>289</integer>
- <integer>290</integer>
- <integer>291</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>300</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>300</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>300</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;__kindof NSArray&lt;NSString *&gt; *&apos;)</string>
- <key>message</key>
- <string>Type &apos;MutableArray&lt;NSMutableString *&gt; *&apos; is inferred from implicit cast (from &apos;MutableArray&lt;NSMutableString *&gt; *&apos; to &apos;__kindof NSArray&lt;NSString *&gt; *&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>300</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>300</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>301</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>301</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>301</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>301</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>301</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>301</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>301</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>301</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>301</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>301</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>301</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>302</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>302</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>302</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>302</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>302</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSString *&apos; to incompatible type &apos;NSMutableString *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d0b99c8523e81ec43ba4ea80aeedef1b</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>findMethodDeclInTrackedType2</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>302</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>298</integer>
- <integer>299</integer>
- <integer>300</integer>
- <integer>301</integer>
- <integer>302</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>326</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>326</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
- <key>message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>46aa94b866747bcbe1ded581da7a2633</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>trackedClassVariables</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>325</integer>
- <integer>326</integer>
- <integer>327</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>326</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>326</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
- <key>message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a759006d1ce88e15fcd6de6a29e2579c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>trackedClassVariables</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>325</integer>
- <integer>326</integer>
- <integer>327</integer>
- <integer>328</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>332</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>332</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>332</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- <key>message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;NSArray&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>332</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>332</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>333</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>333</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>333</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>333</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>333</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>333</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>333</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>333</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>333</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4bb1729ff86647750b458e6f8d883f08</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>nestedCollections</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>333</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>331</integer>
- <integer>332</integer>
- <integer>333</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>345</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>345</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>346</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>346</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>346</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>346</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>346</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
- <key>message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>346</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>346</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>38831553eaecfb6c02b51e71d21ec6ea</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>returnCollectionToIdVariable</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>347</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>344</integer>
- <integer>345</integer>
- <integer>346</integer>
- <integer>347</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>352</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>352</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>352</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>352</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>352</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
- <key>message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>352</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>352</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSArray&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSNumber *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>9fcbd4dcf212f004877292aa5085322b</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>eraseSpecialization</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>350</integer>
- <integer>351</integer>
- <integer>352</integer>
- <integer>353</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>357</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>357</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>358</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>358</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>358</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>358</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>358</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>358</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>358</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>358</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>358</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
- <key>message</key>
- <string>Type &apos;NSArray&lt;NSString *&gt; *&apos; is inferred from this context</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>358</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>358</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>358</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object has a dynamic type &apos;NSArray&lt;NSString *&gt; *&apos; which is incompatible with static type &apos;NSSet *&apos;</string>
- <key>message</key>
- <string>Object has a dynamic type &apos;NSArray&lt;NSString *&gt; *&apos; which is incompatible with static type &apos;NSSet *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Object has a dynamic type &apos;NSArray&lt;NSString *&gt; *&apos; which is incompatible with static type &apos;NSSet *&apos;</string>
- <key>category</key><string>Type Error</string>
- <key>type</key><string>Dynamic and static type mismatch</string>
- <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>be6714fed24af6e7ac522b87a5098de0</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>returnToUnrelatedType</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>358</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>356</integer>
- <integer>357</integer>
- <integer>358</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>363</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>363</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;NSString *&apos; is inferred from this context</string>
- <key>message</key>
- <string>Type &apos;NSString *&apos; is inferred from this context</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object has a dynamic type &apos;NSString *&apos; which is incompatible with static type &apos;NSNumber *&apos;</string>
- <key>message</key>
- <string>Object has a dynamic type &apos;NSString *&apos; which is incompatible with static type &apos;NSNumber *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Object has a dynamic type &apos;NSString *&apos; which is incompatible with static type &apos;NSNumber *&apos;</string>
- <key>category</key><string>Type Error</string>
- <key>type</key><string>Dynamic and static type mismatch</string>
- <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5e96ef711c8f115bc64f69baa3f6ea7a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>returnToIdVariable</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>362</integer>
- <integer>363</integer>
- <integer>364</integer>
- <integer>365</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>374</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>374</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>374</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- <key>message</key>
- <string>Type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>374</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>374</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to incompatible type &apos;NSArray&lt;NSString *&gt; *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8347f65fb51a85ccd462d75ffd761078</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testGetMostInformativeDerivedForId</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>372</integer>
- <integer>373</integer>
- <integer>374</integer>
- <integer>375</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>374</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>374</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>374</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- <key>message</key>
- <string>Type &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; is inferred from implicit cast (from &apos;UnrelatedTypeGeneric&lt;NSString *&gt; *&apos; to &apos;id&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>374</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>374</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>380</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>380</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>380</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>380</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>380</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- <key>message</key>
- <string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Conversion from value of type &apos;NSNumber *&apos; to incompatible type &apos;NSString *&apos;</string>
- <key>category</key><string>Core Foundation/Objective-C</string>
- <key>type</key><string>Generics</string>
- <key>check_name</key><string>core.DynamicTypePropagation</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6528db66f562ac0c2a94933f3ca5f6a8</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testGetMostInformativeDerivedForId</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>380</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>372</integer>
- <integer>373</integer>
- <integer>374</integer>
- <integer>375</integer>
- <integer>379</integer>
- <integer>380</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>389</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>389</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>391</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>391</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>391</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>391</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>391</integer>
- <key>col</key><integer>70</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>391</integer>
- <key>col</key><integer>79</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>391</integer>
- <key>col</key><integer>70</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>391</integer>
- <key>col</key><integer>70</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>391</integer>
- <key>col</key><integer>79</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
- <key>message</key>
- <string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Object has a dynamic type &apos;NSNumber *&apos; which is incompatible with static type &apos;NSString *&apos;</string>
- <key>category</key><string>Type Error</string>
- <key>type</key><string>Dynamic and static type mismatch</string>
- <key>check_name</key><string>alpha.core.DynamicTypeChecker</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>56326e7b73d049256717eba7005ccc4d</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testArgumentAfterUpcastWithCovariantTypeParameter</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>391</integer>
- <key>col</key><integer>70</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>388</integer>
- <integer>389</integer>
- <integer>390</integer>
- <integer>391</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/generics.m</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/inline-plist.c.plist b/test/Analysis/Inputs/expected-plists/inline-plist.c.plist
deleted file mode 100644
index b6248158f15a..000000000000
--- a/test/Analysis/Inputs/expected-plists/inline-plist.c.plist
+++ /dev/null
@@ -1,1986 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;x&apos; is equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;x&apos; is equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8bca94f2f862468bb877fb70e66a3304</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>foo</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>6</integer>
- <integer>7</integer>
- <integer>11</integer>
- <integer>12</integer>
- <integer>13</integer>
- <integer>18</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- <key>message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;has_bug&apos;</string>
- <key>message</key>
- <string>Calling &apos;has_bug&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_has_bug&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_has_bug&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>62ddaf4e66ff527b230b474b98791ced</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>has_bug</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>22</integer>
- <integer>23</integer>
- <integer>26</integer>
- <integer>27</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- <key>message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;triggers_bug&apos;</string>
- <key>message</key>
- <string>Calling &apos;triggers_bug&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;bar&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;bar&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1ee3fb0b2fbd9c66e0cc34ca1181ece3</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>triggers_bug</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>32</integer>
- <integer>33</integer>
- <integer>38</integer>
- <integer>39</integer>
- <integer>45</integer>
- <integer>47</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_block__capture_null&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_block__capture_null&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a2e7504f29818834127c44ba841f4da8</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>57</integer>
- <integer>58</integer>
- <integer>59</integer>
- <integer>60</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_block_ret&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_block_ret&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>&apos;q&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;q&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning null pointer (loaded from &apos;q&apos;)</string>
- <key>message</key>
- <string>Returning null pointer (loaded from &apos;q&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning to caller</string>
- <key>message</key>
- <string>Returning to caller</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>931be9c3a45b61c0a9c99b4772bd6fca</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_block_ret</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>65</integer>
- <integer>66</integer>
- <integer>67</integer>
- <integer>68</integer>
- <integer>70</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>74</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>74</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_block_blockvar&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_block_blockvar&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning to caller</string>
- <key>message</key>
- <string>Returning to caller</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>524a8647c40f017409d858ff70900c1a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_block_blockvar</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>73</integer>
- <integer>74</integer>
- <integer>75</integer>
- <integer>76</integer>
- <integer>78</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_block_arg&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_block_arg&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning to caller</string>
- <key>message</key>
- <string>Returning to caller</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>0efdf891fbddf2932f9d434968b94164</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_block_arg</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>81</integer>
- <integer>82</integer>
- <integer>83</integer>
- <integer>84</integer>
- <integer>85</integer>
- <integer>86</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/inline-plist.c</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/inline-unique-reports.c.plist b/test/Analysis/Inputs/expected-plists/inline-unique-reports.c.plist
deleted file mode 100644
index 73c8707520bd..000000000000
--- a/test/Analysis/Inputs/expected-plists/inline-unique-reports.c.plist
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- <key>message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;bug&apos;</string>
- <key>message</key>
- <string>Calling &apos;bug&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>4</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_bug_2&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_bug_2&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>4</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>4</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a6ef969f9d5a84fe3b6d153fa488020a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>bug</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>4</integer>
- <integer>5</integer>
- <integer>13</integer>
- <integer>14</integer>
- <integer>15</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/inline-unique-reports.c</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/lambda-notes.cpp.plist b/test/Analysis/Inputs/expected-plists/lambda-notes.cpp.plist
deleted file mode 100644
index ad3ebad2e1a9..000000000000
--- a/test/Analysis/Inputs/expected-plists/lambda-notes.cpp.plist
+++ /dev/null
@@ -1,205 +0,0 @@
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>The value 0 is assigned to field &apos;&apos;</string>
- <key>message</key>
- <string>The value 0 is assigned to field &apos;&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;operator()&apos;</string>
- <key>message</key>
- <string>Calling &apos;operator()&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;diagnosticFromLambda&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;diagnosticFromLambda&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>bd4eed3234018edced5efc2ed5562a74</string>
- <key>issue_context_kind</key><string>C++ method</string>
- <key>issue_context</key><string>operator()</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>7</integer>
- <integer>8</integer>
- <integer>9</integer>
- <integer>10</integer>
- <integer>12</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/lambda-notes.cpp</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/malloc-plist.c.plist b/test/Analysis/Inputs/expected-plists/malloc-plist.c.plist
deleted file mode 100644
index 98a783435a52..000000000000
--- a/test/Analysis/Inputs/expected-plists/malloc-plist.c.plist
+++ /dev/null
@@ -1,5262 +0,0 @@
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;in&apos; is &gt; 5</string>
- <key>message</key>
- <string>Assuming &apos;in&apos; is &gt; 5</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Potential leak of memory pointed to by &apos;p&apos;</string>
- <key>message</key>
- <string>Potential leak of memory pointed to by &apos;p&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of memory pointed to by &apos;p&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c60b35a3e46fd104f362f430a1eaca5d</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>diagnosticTest</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>10</integer>
- <integer>11</integer>
- <integer>12</integer>
- <integer>13</integer>
- <integer>14</integer>
- <integer>16</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Potential leak of memory pointed to by &apos;A&apos;</string>
- <key>message</key>
- <string>Potential leak of memory pointed to by &apos;A&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of memory pointed to by &apos;A&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>9b732ec46c4a08108dfbd37aa0955c51</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>myArrayAllocation</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>19</integer>
- <integer>20</integer>
- <integer>21</integer>
- <integer>22</integer>
- <integer>23</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Attempt to reallocate memory</string>
- <key>message</key>
- <string>Attempt to reallocate memory</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;tmp&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;tmp&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reallocation failed</string>
- <key>message</key>
- <string>Reallocation failed</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Potential leak of memory pointed to by &apos;buf&apos;</string>
- <key>message</key>
- <string>Potential leak of memory pointed to by &apos;buf&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of memory pointed to by &apos;buf&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>37c0b1a1e65d26af6f9fb840cf159149</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>reallocDiagnostics</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>25</integer>
- <integer>26</integer>
- <integer>27</integer>
- <integer>28</integer>
- <integer>29</integer>
- <integer>30</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;wrapper&apos;</string>
- <key>message</key>
- <string>Calling &apos;wrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_wrapper&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_wrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Assuming &apos;x&apos; is non-null</string>
- <key>message</key>
- <string>Assuming &apos;x&apos; is non-null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returned allocated memory</string>
- <key>message</key>
- <string>Returned allocated memory</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Potential leak of memory pointed to by &apos;buf&apos;</string>
- <key>message</key>
- <string>Potential leak of memory pointed to by &apos;buf&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of memory pointed to by &apos;buf&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>384d1700f3d9c8eeea96d171e3030bdf</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_wrapper</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>36</integer>
- <integer>37</integer>
- <integer>39</integer>
- <integer>40</integer>
- <integer>44</integer>
- <integer>45</integer>
- <integer>46</integer>
- <integer>47</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;my_malloc_and_free&apos;</string>
- <key>message</key>
- <string>Calling &apos;my_malloc_and_free&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_double_action_call&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_double_action_call&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling &apos;my_free&apos;</string>
- <key>message</key>
- <string>Calling &apos;my_free&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;my_malloc_and_free&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;my_malloc_and_free&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Memory is released</string>
- <key>message</key>
- <string>Memory is released</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning; memory was released via 1st parameter</string>
- <key>message</key>
- <string>Returning; memory was released via 1st parameter</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning; memory was released via 1st parameter</string>
- <key>message</key>
- <string>Returning; memory was released via 1st parameter</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Use of memory after it is freed</string>
- <key>message</key>
- <string>Use of memory after it is freed</string>
- </dict>
- </array>
- <key>description</key><string>Use of memory after it is freed</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Use-after-free</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>422436dc85b85cde7e15046a5616ee99</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_double_action_call</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>51</integer>
- <integer>52</integer>
- <integer>54</integer>
- <integer>55</integer>
- <integer>56</integer>
- <integer>57</integer>
- <integer>58</integer>
- <integer>60</integer>
- <integer>61</integer>
- <integer>62</integer>
- <integer>63</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;my_realloc&apos;</string>
- <key>message</key>
- <string>Calling &apos;my_realloc&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;reallocIntra&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;reallocIntra&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Attempt to reallocate memory</string>
- <key>message</key>
- <string>Attempt to reallocate memory</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Assuming &apos;tmp&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;tmp&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Reallocation failed</string>
- <key>message</key>
- <string>Reallocation failed</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>70</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reallocation of 1st parameter failed</string>
- <key>message</key>
- <string>Reallocation of 1st parameter failed</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Potential leak of memory pointed to by &apos;buf&apos;</string>
- <key>message</key>
- <string>Potential leak of memory pointed to by &apos;buf&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of memory pointed to by &apos;buf&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>23a6c295a515c455bea1c81519bc05b6</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>reallocIntra</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>67</integer>
- <integer>68</integer>
- <integer>69</integer>
- <integer>70</integer>
- <integer>71</integer>
- <integer>75</integer>
- <integer>76</integer>
- <integer>77</integer>
- <integer>78</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;malloc_wrapper_ret&apos;</string>
- <key>message</key>
- <string>Calling &apos;malloc_wrapper_ret&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;use_ret&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;use_ret&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returned allocated memory</string>
- <key>message</key>
- <string>Returned allocated memory</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Potential leak of memory pointed to by &apos;v&apos;</string>
- <key>message</key>
- <string>Potential leak of memory pointed to by &apos;v&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of memory pointed to by &apos;v&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>45181c7fc1df81a732346f1ed1b3f238</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>use_ret</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>82</integer>
- <integer>83</integer>
- <integer>85</integer>
- <integer>86</integer>
- <integer>87</integer>
- <integer>88</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;myfree_takingblock&apos;</string>
- <key>message</key>
- <string>Calling &apos;myfree_takingblock&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;call_myfree_takingblock&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;call_myfree_takingblock&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory is released</string>
- <key>message</key>
- <string>Memory is released</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning; memory was released via 2nd parameter</string>
- <key>message</key>
- <string>Returning; memory was released via 2nd parameter</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Use of memory after it is freed</string>
- <key>message</key>
- <string>Use of memory after it is freed</string>
- </dict>
- </array>
- <key>description</key><string>Use of memory after it is freed</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Use-after-free</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>652c97005df876a65d64ecd286d6030a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>call_myfree_takingblock</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>93</integer>
- <integer>94</integer>
- <integer>97</integer>
- <integer>98</integer>
- <integer>100</integer>
- <integer>101</integer>
- <integer>102</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>107</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>107</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>109</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>109</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>109</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>109</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>109</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>109</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>109</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Potential leak of memory pointed to by &apos;m&apos;</string>
- <key>message</key>
- <string>Potential leak of memory pointed to by &apos;m&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of memory pointed to by &apos;m&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d8483ccf1d5a1af1e8bcaac6905a18b3</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>LeakedSymbol</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>106</integer>
- <integer>107</integer>
- <integer>108</integer>
- <integer>109</integer>
- <integer>110</integer>
- <integer>111</integer>
- <integer>112</integer>
- <integer>113</integer>
- <integer>114</integer>
- <integer>115</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>123</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>123</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>123</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;function_with_leak1&apos;</string>
- <key>message</key>
- <string>Calling &apos;function_with_leak1&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;use_function_with_leak1&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;use_function_with_leak1&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Potential leak of memory pointed to by &apos;x&apos;</string>
- <key>message</key>
- <string>Potential leak of memory pointed to by &apos;x&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of memory pointed to by &apos;x&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b07aebe89e4ba5ea104a9f957df9531b</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>function_with_leak1</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>119</integer>
- <integer>120</integer>
- <integer>121</integer>
- <integer>122</integer>
- <integer>123</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;function_with_leak2&apos;</string>
- <key>message</key>
- <string>Calling &apos;function_with_leak2&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>127</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;use_function_with_leak2&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;use_function_with_leak2&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>127</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>127</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>129</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>129</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>129</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Potential leak of memory pointed to by &apos;x&apos;</string>
- <key>message</key>
- <string>Potential leak of memory pointed to by &apos;x&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of memory pointed to by &apos;x&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>efe2ffcb7c227e872aa732c5f793895d</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>function_with_leak2</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>129</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>127</integer>
- <integer>128</integer>
- <integer>129</integer>
- <integer>131</integer>
- <integer>132</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;function_with_leak3&apos;</string>
- <key>message</key>
- <string>Calling &apos;function_with_leak3&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;use_function_with_leak3&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;use_function_with_leak3&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Assuming &apos;y&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;y&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>138</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>138</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>138</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Potential leak of memory pointed to by &apos;x&apos;</string>
- <key>message</key>
- <string>Potential leak of memory pointed to by &apos;x&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of memory pointed to by &apos;x&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>0ddc87e8a7e7104428af3905f3057611</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>function_with_leak3</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>138</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>135</integer>
- <integer>136</integer>
- <integer>137</integer>
- <integer>138</integer>
- <integer>140</integer>
- <integer>141</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;function_with_leak4&apos;</string>
- <key>message</key>
- <string>Calling &apos;function_with_leak4&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;use_function_with_leak4&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;use_function_with_leak4&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Assuming &apos;y&apos; is 0</string>
- <key>message</key>
- <string>Assuming &apos;y&apos; is 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>149</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>149</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>149</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Potential leak of memory pointed to by &apos;x&apos;</string>
- <key>message</key>
- <string>Potential leak of memory pointed to by &apos;x&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of memory pointed to by &apos;x&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>948d356840e67fc4baa8cc5d0600463c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>function_with_leak4</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>149</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>144</integer>
- <integer>145</integer>
- <integer>146</integer>
- <integer>149</integer>
- <integer>151</integer>
- <integer>152</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;function_with_leak5&apos;</string>
- <key>message</key>
- <string>Calling &apos;function_with_leak5&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>158</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;use_function_with_leak5&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;use_function_with_leak5&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>158</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>158</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Potential leak of memory pointed to by &apos;x&apos;</string>
- <key>message</key>
- <string>Potential leak of memory pointed to by &apos;x&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of memory pointed to by &apos;x&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2b0361060027060b94915ff4de8aa782</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>function_with_leak5</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>158</integer>
- <integer>159</integer>
- <integer>160</integer>
- <integer>162</integer>
- <integer>163</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>174</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>174</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>174</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;function_with_leak6&apos;</string>
- <key>message</key>
- <string>Calling &apos;function_with_leak6&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>169</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;use_function_with_leak6&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;use_function_with_leak6&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>169</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>169</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Potential leak of memory pointed to by &apos;x&apos;</string>
- <key>message</key>
- <string>Potential leak of memory pointed to by &apos;x&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of memory pointed to by &apos;x&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>73f573faa903ad4308d5155ef979cf31</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>function_with_leak6</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>169</integer>
- <integer>170</integer>
- <integer>171</integer>
- <integer>173</integer>
- <integer>174</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;function_with_leak7&apos;</string>
- <key>message</key>
- <string>Calling &apos;function_with_leak7&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>182</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;use_function_with_leak7&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;use_function_with_leak7&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>182</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>182</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>183</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>183</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>183</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>183</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>183</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returned allocated memory</string>
- <key>message</key>
- <string>Returned allocated memory</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>187</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>187</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>187</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Potential memory leak</string>
- <key>message</key>
- <string>Potential memory leak</string>
- </dict>
- </array>
- <key>description</key><string>Potential memory leak</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>eb5628850b9b9118fbda903e721436a5</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>use_function_with_leak7</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>187</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>182</integer>
- <integer>183</integer>
- <integer>185</integer>
- <integer>186</integer>
- <integer>187</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;my_malloc&apos;</string>
- <key>message</key>
- <string>Calling &apos;my_malloc&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testOnlyRefferToVisibleVariables&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testOnlyRefferToVisibleVariables&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>193</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>193</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returned allocated memory</string>
- <key>message</key>
- <string>Returned allocated memory</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>197</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>197</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>197</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Potential memory leak</string>
- <key>message</key>
- <string>Potential memory leak</string>
- </dict>
- </array>
- <key>description</key><string>Potential memory leak</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ad5b603037bc3581ff94947e86dbb1c8</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testOnlyRefferToVisibleVariables</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>197</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>191</integer>
- <integer>192</integer>
- <integer>193</integer>
- <integer>195</integer>
- <integer>196</integer>
- <integer>197</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;my_malloc_into_struct&apos;</string>
- <key>message</key>
- <string>Calling &apos;my_malloc_into_struct&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testMyMalloc&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testMyMalloc&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>204</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>204</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>204</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>204</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>204</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>204</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>204</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>205</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>205</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returned allocated memory</string>
- <key>message</key>
- <string>Returned allocated memory</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>209</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>209</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>209</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Potential memory leak</string>
- <key>message</key>
- <string>Potential memory leak</string>
- </dict>
- </array>
- <key>description</key><string>Potential memory leak</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8d59cc5cc4b7db55d432abc18b0e6c23</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testMyMalloc</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>209</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>202</integer>
- <integer>203</integer>
- <integer>204</integer>
- <integer>205</integer>
- <integer>207</integer>
- <integer>208</integer>
- <integer>209</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/malloc-plist.c</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/method-call-path-notes.cpp.plist b/test/Analysis/Inputs/expected-plists/method-call-path-notes.cpp.plist
deleted file mode 100644
index 9c6fd13d811e..000000000000
--- a/test/Analysis/Inputs/expected-plists/method-call-path-notes.cpp.plist
+++ /dev/null
@@ -1,845 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; declared without an initial value</string>
- <key>message</key>
- <string>&apos;p&apos; declared without an initial value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Called C++ object pointer is uninitialized</string>
- <key>message</key>
- <string>Called C++ object pointer is uninitialized</string>
- </dict>
- </array>
- <key>description</key><string>Called C++ object pointer is uninitialized</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Called C++ object pointer is uninitialized</string>
- <key>check_name</key><string>core.CallAndMessage</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8c0cdb645ae6be246ed75941dcefd32d</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_ic</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>12</integer>
- <integer>13</integer>
- <integer>14</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Called C++ object pointer is null</string>
- <key>message</key>
- <string>Called C++ object pointer is null</string>
- </dict>
- </array>
- <key>description</key><string>Called C++ object pointer is null</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Called C++ object pointer is null</string>
- <key>check_name</key><string>core.CallAndMessage</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>98e39ef0e4bbc0b9b2b1832285634d67</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_ic_null</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>17</integer>
- <integer>18</integer>
- <integer>19</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Called C++ object pointer is null</string>
- <key>message</key>
- <string>Called C++ object pointer is null</string>
- </dict>
- </array>
- <key>description</key><string>Called C++ object pointer is null</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Called C++ object pointer is null</string>
- <key>check_name</key><string>core.CallAndMessage</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>84f3d9d5009d2ac455b46b4aae88f67f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_ic_set_to_null</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>22</integer>
- <integer>23</integer>
- <integer>24</integer>
- <integer>25</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Called C++ object pointer is null</string>
- <key>message</key>
- <string>Called C++ object pointer is null</string>
- </dict>
- </array>
- <key>description</key><string>Called C++ object pointer is null</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Called C++ object pointer is null</string>
- <key>check_name</key><string>core.CallAndMessage</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c5bd8e35fb6da070914016804720ae4d</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_ic_null</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>28</integer>
- <integer>29</integer>
- <integer>30</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Called C++ object pointer is null</string>
- <key>message</key>
- <string>Called C++ object pointer is null</string>
- </dict>
- </array>
- <key>description</key><string>Called C++ object pointer is null</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Called C++ object pointer is null</string>
- <key>check_name</key><string>core.CallAndMessage</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4681ee922f6860377317b26b3a4bb5d4</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_ic_member_ptr</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>33</integer>
- <integer>34</integer>
- <integer>36</integer>
- <integer>37</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Called C++ object pointer is null</string>
- <key>message</key>
- <string>Called C++ object pointer is null</string>
- </dict>
- </array>
- <key>description</key><string>Called C++ object pointer is null</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Called C++ object pointer is null</string>
- <key>check_name</key><string>core.CallAndMessage</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>e23397f9f2eff1b08593c2b2db137494</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_cast</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>40</integer>
- <integer>41</integer>
- <integer>42</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/method-call-path-notes.cpp</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/model-file.cpp.plist b/test/Analysis/Inputs/expected-plists/model-file.cpp.plist
deleted file mode 100644
index f7965488f25e..000000000000
--- a/test/Analysis/Inputs/expected-plists/model-file.cpp.plist
+++ /dev/null
@@ -1,309 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to 0</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>86cb845e4f1e6abde1c5b319d5b08eca</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>main</string>
- <key>issue_hash_function_offset</key><string>15</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>20</integer>
- <integer>22</integer>
- <integer>24</integer>
- <integer>25</integer>
- <integer>31</integer>
- <integer>35</integer>
- </array>
- <key>1</key>
- <array>
- <integer>1</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/model-file.cpp</string>
- <string>/clang/test/Analysis/Inputs/Models/notzero.model</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/null-deref-path-notes.m.plist b/test/Analysis/Inputs/expected-plists/null-deref-path-notes.m.plist
deleted file mode 100644
index f2b6392433eb..000000000000
--- a/test/Analysis/Inputs/expected-plists/null-deref-path-notes.m.plist
+++ /dev/null
@@ -1,1028 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;obj&apos; is nil</string>
- <key>message</key>
- <string>Assuming &apos;obj&apos; is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;x&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;x&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;x&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;x&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;x&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3ff6dd9f2084f4a0dac8c3688c02fd0f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testNull</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>13</integer>
- <integer>14</integer>
- <integer>18</integer>
- <integer>19</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value assigned to &apos;self&apos;</string>
- <key>message</key>
- <string>Value assigned to &apos;self&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;self&apos; is nil</string>
- <key>message</key>
- <string>Assuming &apos;self&apos; is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Access to instance variable &apos;uniqueID&apos; results in a dereference of a null pointer (loaded from variable &apos;self&apos;)</string>
- <key>message</key>
- <string>Access to instance variable &apos;uniqueID&apos; results in a dereference of a null pointer (loaded from variable &apos;self&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Access to instance variable &apos;uniqueID&apos; results in a dereference of a null pointer (loaded from variable &apos;self&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>208c1267ca2da821fcc1b9183e1d624b</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>initWithID:</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>27</integer>
- <integer>28</integer>
- <integer>29</integer>
- <integer>33</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;coin&apos; is 0</string>
- <key>message</key>
- <string>Assuming &apos;coin&apos; is 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>9e1f67627fbbfb46b4e3a618246e6b0a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>repeatedStores</string>
- <key>issue_hash_function_offset</key><string>11</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>39</integer>
- <integer>40</integer>
- <integer>41</integer>
- <integer>47</integer>
- <integer>50</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;useArray&apos;</string>
- <key>message</key>
- <string>Calling &apos;useArray&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testWithArrayPtr&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testWithArrayPtr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Array access (via ivar &apos;p&apos;) results in a null pointer dereference</string>
- <key>message</key>
- <string>Array access (via ivar &apos;p&apos;) results in a null pointer dereference</string>
- </dict>
- </array>
- <key>description</key><string>Array access (via ivar &apos;p&apos;) results in a null pointer dereference</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>fb0ad1e4e3090d9834d542eb54bc9d2e</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>useArray</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>60</integer>
- <integer>61</integer>
- <integer>66</integer>
- <integer>67</integer>
- <integer>68</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/null-deref-path-notes.m</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/nullability-notes.m.plist b/test/Analysis/Inputs/expected-plists/nullability-notes.m.plist
deleted file mode 100644
index 687520b495f9..000000000000
--- a/test/Analysis/Inputs/expected-plists/nullability-notes.m.plist
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Nullability &apos;nullable&apos; is inferred</string>
- <key>message</key>
- <string>Nullability &apos;nullable&apos; is inferred</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Nullable pointer is passed to a callee that requires a non-null 1st parameter</string>
- <key>message</key>
- <string>Nullable pointer is passed to a callee that requires a non-null 1st parameter</string>
- </dict>
- </array>
- <key>description</key><string>Nullable pointer is passed to a callee that requires a non-null 1st parameter</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Nullability</string>
- <key>check_name</key><string>nullability.NullPassedToNonnull</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b6bc8126de8e6eb3375483a656fe858d</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>method</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>10</integer>
- <integer>14</integer>
- <integer>16</integer>
- <integer>17</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/nullability-notes.m</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/objc-arc.m.plist b/test/Analysis/Inputs/expected-plists/objc-arc.m.plist
deleted file mode 100644
index 650da0909064..000000000000
--- a/test/Analysis/Inputs/expected-plists/objc-arc.m.plist
+++ /dev/null
@@ -1,2089 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b41b510812f2a0d8735c67dfff6a9a5c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_working</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>52</integer>
- <integer>53</integer>
- <integer>54</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;date&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>61d185b2522d15fb327f6784e0217adf</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_cf_leak</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>92</integer>
- <integer>93</integer>
- <integer>94</integer>
- <integer>95</integer>
- <integer>96</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value stored to &apos;x&apos; during its initialization is never read</string>
- <key>message</key>
- <string>Value stored to &apos;x&apos; during its initialization is never read</string>
- </dict>
- </array>
- <key>description</key><string>Value stored to &apos;x&apos; during its initialization is never read</string>
- <key>category</key><string>Dead store</string>
- <key>type</key><string>Dead initialization</string>
- <key>check_name</key><string>deadcode.DeadStores</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>63df5972efc8a7acccdbd2aca10c9e9e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar9424882</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>119</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value stored to &apos;obj1&apos; during its initialization is never read</string>
- <key>message</key>
- <string>Value stored to &apos;obj1&apos; during its initialization is never read</string>
- </dict>
- </array>
- <key>description</key><string>Value stored to &apos;obj1&apos; during its initialization is never read</string>
- <key>category</key><string>Dead store</string>
- <key>type</key><string>Dead initialization</string>
- <key>check_name</key><string>deadcode.DeadStores</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>125290ceaf2b55f5778c262d87b2b6d5</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>from_cf</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>139</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>45</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value stored to &apos;obj4&apos; during its initialization is never read</string>
- <key>message</key>
- <string>Value stored to &apos;obj4&apos; during its initialization is never read</string>
- </dict>
- </array>
- <key>description</key><string>Value stored to &apos;obj4&apos; during its initialization is never read</string>
- <key>category</key><string>Dead store</string>
- <key>type</key><string>Dead initialization</string>
- <key>check_name</key><string>deadcode.DeadStores</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>54627578ee3b8520400ae899bc32b3d6</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>from_cf</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>144</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>44</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value stored to &apos;obj5&apos; during its initialization is never read</string>
- <key>message</key>
- <string>Value stored to &apos;obj5&apos; during its initialization is never read</string>
- </dict>
- </array>
- <key>description</key><string>Value stored to &apos;obj5&apos; during its initialization is never read</string>
- <key>category</key><string>Dead store</string>
- <key>type</key><string>Dead initialization</string>
- <key>check_name</key><string>deadcode.DeadStores</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>27c31d7f5825a1613c0206b5be082800</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>from_cf</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>145</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>48</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value stored to &apos;obj6&apos; during its initialization is never read</string>
- <key>message</key>
- <string>Value stored to &apos;obj6&apos; during its initialization is never read</string>
- </dict>
- </array>
- <key>description</key><string>Value stored to &apos;obj6&apos; during its initialization is never read</string>
- <key>category</key><string>Dead store</string>
- <key>type</key><string>Dead initialization</string>
- <key>check_name</key><string>deadcode.DeadStores</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a59b85c1e38300cb17eaeedcf193f94b</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>from_cf</string>
- <key>issue_hash_function_offset</key><string>8</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>146</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>44</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>48</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;obj5&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;obj5&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;obj5&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5baa7d5f38420d0a035aa61607675f3e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>from_cf</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>138</integer>
- <integer>139</integer>
- <integer>140</integer>
- <integer>141</integer>
- <integer>142</integer>
- <integer>143</integer>
- <integer>144</integer>
- <integer>145</integer>
- <integer>146</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>48</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFCreateString&apos; returns a Core Foundation object of type &apos;CFStringRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFCreateString&apos; returns a Core Foundation object of type &apos;CFStringRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;obj6&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;obj6&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;obj6&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4665e04694fd55e7c4ed7a67860b3b74</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>from_cf</string>
- <key>issue_hash_function_offset</key><string>8</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>138</integer>
- <integer>139</integer>
- <integer>140</integer>
- <integer>141</integer>
- <integer>142</integer>
- <integer>143</integer>
- <integer>144</integer>
- <integer>145</integer>
- <integer>146</integer>
- <integer>147</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>64</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value stored to &apos;cf1&apos; during its initialization is never read</string>
- <key>message</key>
- <string>Value stored to &apos;cf1&apos; during its initialization is never read</string>
- </dict>
- </array>
- <key>description</key><string>Value stored to &apos;cf1&apos; during its initialization is never read</string>
- <key>category</key><string>Dead store</string>
- <key>type</key><string>Dead initialization</string>
- <key>check_name</key><string>deadcode.DeadStores</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>70a67cc8fefa3ad133a35c3ffb579b9e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>to_cf</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>150</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>67</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value stored to &apos;cf2&apos; during its initialization is never read</string>
- <key>message</key>
- <string>Value stored to &apos;cf2&apos; during its initialization is never read</string>
- </dict>
- </array>
- <key>description</key><string>Value stored to &apos;cf2&apos; during its initialization is never read</string>
- <key>category</key><string>Dead store</string>
- <key>type</key><string>Dead initialization</string>
- <key>check_name</key><string>deadcode.DeadStores</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>afc41cacb8f32bfbe4a4152f20cec5bc</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>to_cf</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>151</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>55</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value stored to &apos;cf3&apos; during its initialization is never read</string>
- <key>message</key>
- <string>Value stored to &apos;cf3&apos; during its initialization is never read</string>
- </dict>
- </array>
- <key>description</key><string>Value stored to &apos;cf3&apos; during its initialization is never read</string>
- <key>category</key><string>Dead store</string>
- <key>type</key><string>Dead initialization</string>
- <key>check_name</key><string>deadcode.DeadStores</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>e512cd0ada59beca5acfa53e2a632670</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>to_cf</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>152</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value stored to &apos;cf4&apos; during its initialization is never read</string>
- <key>message</key>
- <string>Value stored to &apos;cf4&apos; during its initialization is never read</string>
- </dict>
- </array>
- <key>description</key><string>Value stored to &apos;cf4&apos; during its initialization is never read</string>
- <key>category</key><string>Dead store</string>
- <key>type</key><string>Dead initialization</string>
- <key>check_name</key><string>deadcode.DeadStores</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a43ae78dcef14395931eeb452f81819f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>to_cf</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>153</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>164</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>164</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>165</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>165</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>165</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>165</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>165</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>165</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>165</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;date&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>798e65f80df0526369f9bb240e3d91fd</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_unretainedObject</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>163</integer>
- <integer>164</integer>
- <integer>165</integer>
- <integer>166</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>178</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>178</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>185</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>185</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>185</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>185</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>189</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>189</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>189</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>189</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>193</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>193</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>193</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>193</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>200</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>200</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>200</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>200</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>200</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFCreateString&apos; returns a Core Foundation object of type &apos;CFStringRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFCreateString&apos; returns a Core Foundation object of type &apos;CFStringRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>200</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>200</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFStringRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFStringRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFStringRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>e1fbcc142b678b3c2c43737ee35b64d9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_arrays</string>
- <key>issue_hash_function_offset</key><string>24</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>176</integer>
- <integer>178</integer>
- <integer>179</integer>
- <integer>180</integer>
- <integer>181</integer>
- <integer>185</integer>
- <integer>186</integer>
- <integer>187</integer>
- <integer>188</integer>
- <integer>189</integer>
- <integer>193</integer>
- <integer>194</integer>
- <integer>195</integer>
- <integer>196</integer>
- <integer>200</integer>
- <integer>202</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>214</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>214</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>214</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSObject with a +0 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSObject with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>214</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>214</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;o&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;o&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;o&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>e300a279615a384d2b310329651d3978</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar11059275_positive</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>213</integer>
- <integer>214</integer>
- <integer>215</integer>
- <integer>216</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>229</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>229</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>37efdaee587b783c6d49a228ff5ba49f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar14061675</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>230</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>222</integer>
- <integer>223</integer>
- <integer>226</integer>
- <integer>229</integer>
- <integer>230</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/objc-arc.m</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/objc-radar17039661.m.plist b/test/Analysis/Inputs/expected-plists/objc-radar17039661.m.plist
deleted file mode 100644
index b778e98bff75..000000000000
--- a/test/Analysis/Inputs/expected-plists/objc-radar17039661.m.plist
+++ /dev/null
@@ -1,1309 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;performAction&apos;</string>
- <key>message</key>
- <string>Calling &apos;performAction&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;runTest&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;runTest&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling &apos;reallyPerformAction&apos;</string>
- <key>message</key>
- <string>Calling &apos;reallyPerformAction&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;performAction&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;performAction&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>3</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;reallyPerformAction&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;reallyPerformAction&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>3</integer>
- <key>extended_message</key>
- <string>Assuming &apos;cond&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;cond&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>50</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>3</integer>
- <key>extended_message</key>
- <string>NSNumber boxed expression produces an object with a +0 retain count</string>
- <key>message</key>
- <string>NSNumber boxed expression produces an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>50</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>3</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>4</integer>
- <key>extended_message</key>
- <string>Entered call</string>
- <key>message</key>
- <string>Entered call</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>4</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>50</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>3</integer>
- <key>extended_message</key>
- <string>Returning to caller</string>
- <key>message</key>
- <string>Returning to caller</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Returning to caller</string>
- <key>message</key>
- <string>Returning to caller</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>3</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;reallyPerformAction&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;reallyPerformAction&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>3</integer>
- <key>extended_message</key>
- <string>Assuming &apos;cond&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;cond&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>50</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>3</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>4</integer>
- <key>extended_message</key>
- <string>Entered call</string>
- <key>message</key>
- <string>Entered call</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>4</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;NSNumber *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;NSNumber *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;NSNumber *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>500e2bbda41c8086771ad98b6bcfdc50</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>23</integer>
- <integer>24</integer>
- <integer>25</integer>
- <integer>28</integer>
- <integer>29</integer>
- <integer>30</integer>
- <integer>32</integer>
- <integer>34</integer>
- <integer>36</integer>
- <integer>38</integer>
- <integer>41</integer>
- <integer>48</integer>
- <integer>49</integer>
- <integer>50</integer>
- <integer>51</integer>
- <integer>53</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/Volumes/Transcend/code/monorepo/llvm-project/clang/test/Analysis/objc-radar17039661.m</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/plist-macros-with-expansion.cpp.plist b/test/Analysis/Inputs/expected-plists/plist-macros-with-expansion.cpp.plist
deleted file mode 100644
index 4d1d42438ef9..000000000000
--- a/test/Analysis/Inputs/expected-plists/plist-macros-with-expansion.cpp.plist
+++ /dev/null
@@ -1,5452 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>SET_PTR_VAR_TO_NULL</string>
- <key>expansion</key><string>ptr = 0</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f8fbc46cc5afbb056d92bd3d3d702781</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>nonFunctionLikeMacroTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>24</integer>
- <integer>25</integer>
- <integer>26</integer>
- <integer>27</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>SET_PTR_VAR_TO_NULL_WITH_NESTED_MACRO</string>
- <key>expansion</key><string>ptr =0</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d5eba61193b41c27fc7b2705cbd607ba</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>nonFunctionLikeNestedMacroTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>37</integer>
- <integer>38</integer>
- <integer>39</integer>
- <integer>40</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;setToNull&apos;</string>
- <key>message</key>
- <string>Calling &apos;setToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;functionLikeMacroTest&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;functionLikeMacroTest&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;setToNull&apos;</string>
- <key>message</key>
- <string>Returning from &apos;setToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>TO_NULL</string>
- <key>expansion</key><string>setToNull(&amp;ptr)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>370a457744311752aac789447b4ef16c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>functionLikeMacroTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>50</integer>
- <integer>51</integer>
- <integer>57</integer>
- <integer>58</integer>
- <integer>59</integer>
- <integer>60</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;setToNull&apos;</string>
- <key>message</key>
- <string>Calling &apos;setToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;functionLikeNestedMacroTest&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;functionLikeNestedMacroTest&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;setToNull&apos;</string>
- <key>message</key>
- <string>Returning from &apos;setToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>80</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>80</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>80</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>TO_NULL</string>
- <key>expansion</key><string>setToNull(&amp;a)</string>
- </dict>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>80</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>DEREF</string>
- <key>expansion</key><string>{ int b; b = 5; } print(a); *a</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>873802674657bba4565f64c7bbf0ded9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>functionLikeNestedMacroTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>80</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>50</integer>
- <integer>51</integer>
- <integer>77</integer>
- <integer>78</integer>
- <integer>79</integer>
- <integer>80</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>99</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>99</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>99</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>99</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>99</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>99</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>99</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>WILL_UNDEF_SET_NULL_TO_PTR</string>
- <key>expansion</key><string>ptr = nullptr;</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>79ce7ac344a15505929edba2fdf178b6</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>undefinedMacroByTheEndOfParsingTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>99</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>96</integer>
- <integer>97</integer>
- <integer>98</integer>
- <integer>99</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>47</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>WILL_REDIFINE_MULTIPLE_TIMES_SET_TO_NULL</string>
- <key>expansion</key><string>ptr = nullptr;</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>cbbecfb64198aebb884f3729dff84896</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>macroRedefinedMultipleTimesTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>113</integer>
- <integer>114</integer>
- <integer>115</integer>
- <integer>116</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>134</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>134</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>44</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>PASS_PTR_TO_MACRO_THAT_WILL_BE_UNDEFD</string>
- <key>expansion</key><string>ptr = nullptr;</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>01684c77381713fd6c7be31ebc9b647a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>undefinedMacroInsideAnotherMacroTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>133</integer>
- <integer>134</integer>
- <integer>135</integer>
- <integer>136</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>52</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>162</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>TO_NULL_AND_PRINT</string>
- <key>expansion</key><string>a = 0; print( &quot;Will this , cause a crash?&quot;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>7a7344244350405a514682fe228e304e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>macroArgContainsCommaInStringTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>160</integer>
- <integer>161</integer>
- <integer>162</integer>
- <integer>163</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>52</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>TO_NULL_AND_PRINT</string>
- <key>expansion</key><string>a = 0; print( &quot;Will this ( cause a crash?&quot;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1d6d14e3f566cec02bd1f3542e3c8044</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>macroArgContainsLParenInStringTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>169</integer>
- <integer>170</integer>
- <integer>171</integer>
- <integer>172</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>179</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>179</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>52</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>TO_NULL_AND_PRINT</string>
- <key>expansion</key><string>a = 0; print( &quot;Will this ) cause a crash?&quot;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>7354d762d71f0d0a3ffc9d6d827fe580</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>macroArgContainsRParenInStringTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>178</integer>
- <integer>179</integer>
- <integer>180</integer>
- <integer>181</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>193</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>193</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;setToNull&apos;</string>
- <key>message</key>
- <string>Calling &apos;setToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;macroArgContainsLParenRParenTest&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;macroArgContainsLParenRParenTest&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;setToNull&apos;</string>
- <key>message</key>
- <string>Returning from &apos;setToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>CALL_FUNCTION</string>
- <key>expansion</key><string>setToNull(&amp;a)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f00b6f77288a374e864a58609e9a42ea</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>macroArgContainsLParenRParenTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>195</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>50</integer>
- <integer>51</integer>
- <integer>192</integer>
- <integer>193</integer>
- <integer>194</integer>
- <integer>195</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>48</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;setToNullAndPrint&apos;</string>
- <key>message</key>
- <string>Calling &apos;setToNullAndPrint&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>201</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;macroArgContainsCommaLParenRParenTest&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;macroArgContainsCommaLParenRParenTest&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>201</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>201</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling &apos;setToNull&apos;</string>
- <key>message</key>
- <string>Calling &apos;setToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;setToNullAndPrint&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;setToNullAndPrint&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning from &apos;setToNull&apos;</string>
- <key>message</key>
- <string>Returning from &apos;setToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>48</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;setToNullAndPrint&apos;</string>
- <key>message</key>
- <string>Returning from &apos;setToNullAndPrint&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>209</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>209</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>209</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>209</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>209</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>209</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>209</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>208</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>CALL_FUNCTION</string>
- <key>expansion</key><string>setToNullAndPrint(&amp;a, &quot;Hello!&quot;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c5805abeb71bb4edb41b49ab317439b9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>macroArgContainsCommaLParenRParenTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>209</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>50</integer>
- <integer>51</integer>
- <integer>201</integer>
- <integer>202</integer>
- <integer>203</integer>
- <integer>206</integer>
- <integer>207</integer>
- <integer>208</integer>
- <integer>209</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>219</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>64</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;setToNullAndPrint&apos;</string>
- <key>message</key>
- <string>Calling &apos;setToNullAndPrint&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>201</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;macroArgContainsCommaLParenRParenTest2&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;macroArgContainsCommaLParenRParenTest2&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>201</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>201</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling &apos;setToNull&apos;</string>
- <key>message</key>
- <string>Calling &apos;setToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;setToNullAndPrint&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;setToNullAndPrint&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning from &apos;setToNull&apos;</string>
- <key>message</key>
- <string>Returning from &apos;setToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>202</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>64</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;setToNullAndPrint&apos;</string>
- <key>message</key>
- <string>Returning from &apos;setToNullAndPrint&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>CALL_FUNCTION_WITH_TWO_PARAMS</string>
- <key>expansion</key><string>setToNullAndPrint( &amp;a, &quot;Hello!&quot;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4014a22ef054933e6ce9be43623ea85e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>macroArgContainsCommaLParenRParenTest2</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>50</integer>
- <integer>51</integer>
- <integer>201</integer>
- <integer>202</integer>
- <integer>203</integer>
- <integer>218</integer>
- <integer>219</integer>
- <integer>220</integer>
- <integer>221</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>231</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>231</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;operator()&apos;</string>
- <key>message</key>
- <string>Calling &apos;operator()&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;commaInBracketsTest&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;commaInBracketsTest&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling &apos;setToNull&apos;</string>
- <key>message</key>
- <string>Calling &apos;setToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;operator()&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;operator()&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning from &apos;setToNull&apos;</string>
- <key>message</key>
- <string>Returning from &apos;setToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;operator()&apos;</string>
- <key>message</key>
- <string>Returning from &apos;operator()&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>236</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>236</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>236</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>236</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>236</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>236</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>236</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>CALL_LAMBDA</string>
- <key>expansion</key><string>([&amp;ptr, str] () mutable { setToNull(&amp;ptr); })()</string>
- </dict>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>CALL_LAMBDA</string>
- <key>expansion</key><string>([&amp;ptr, str] () mutable { setToNull(&amp;ptr); })()</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a8918c38ddfa6a991701e7d19c9cd6bb</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>commaInBracketsTest</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>236</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>50</integer>
- <integer>51</integer>
- <integer>230</integer>
- <integer>231</integer>
- <integer>232</integer>
- <integer>235</integer>
- <integer>236</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;ptr&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;ptr&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>PASTE_CODE</string>
- <key>expansion</key><string>{ int *ptr = nullptr; *ptr = 5; }</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>63042e03ae0d2f3832b141a63b1d4d49</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>commaInBracesTest</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>246</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>245</integer>
- <integer>246</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>268</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>268</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>270</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>270</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>270</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>270</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>270</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>271</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>271</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>271</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>271</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>271</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>271</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>271</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>270</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>POTENTIALLY_EMPTY_PARAM</string>
- <key>expansion</key><string>;ptr = nullptr</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>cd980e278fbcd8f77bbeac79285084e2</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>emptyParamTest</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>271</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>267</integer>
- <integer>268</integer>
- <integer>270</integer>
- <integer>271</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>282</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>282</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>284</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>284</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>284</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>284</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>284</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>284</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>NESTED_EMPTY_PARAM</string>
- <key>expansion</key><string>; ptr = nullptr;</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f6a5f6c93b6e3734842ddabd3d5a7341</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>nestedEmptyParamTest</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>285</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>281</integer>
- <integer>282</integer>
- <integer>284</integer>
- <integer>285</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>295</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>295</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>296</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>296</integer>
- <key>col</key><integer>44</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>296</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>296</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>296</integer>
- <key>col</key><integer>61</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;setToNull&apos;</string>
- <key>message</key>
- <string>Calling &apos;setToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;lParenRParenInNestedMacro&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;lParenRParenInNestedMacro&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>296</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>296</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>296</integer>
- <key>col</key><integer>61</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;setToNull&apos;</string>
- <key>message</key>
- <string>Returning from &apos;setToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>297</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>297</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>297</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>297</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>297</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>297</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>297</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>296</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>CALL_FUNCTION_WITH_ONE_PARAM_THROUGH_MACRO</string>
- <key>expansion</key><string>setToNull( &amp;ptr)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ff00c8344e685317303e814970082d5f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>lParenRParenInNestedMacro</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>297</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>50</integer>
- <integer>51</integer>
- <integer>294</integer>
- <integer>295</integer>
- <integer>296</integer>
- <integer>297</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>315</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>315</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>316</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>316</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>316</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>316</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>316</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>317</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>317</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>317</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>317</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>317</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>317</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>317</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>316</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>VARIADIC_SET_TO_NULL</string>
- <key>expansion</key><string>ptr = nullptr; variadicFunc( 1, 5, &quot;haha!&quot;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1b0880549df23e9ce0edb60955ad5ac1</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>variadicMacroArgumentTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>317</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>314</integer>
- <integer>315</integer>
- <integer>316</integer>
- <integer>317</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>324</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>324</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>327</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>VARIADIC_SET_TO_NULL</string>
- <key>expansion</key><string>ptr = nullptr; variadicFunc()</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6aa30fd6a1e997027333f16c2064d973</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>variadicMacroArgumentWithoutAnyArgumentTest</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>328</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>323</integer>
- <integer>324</integer>
- <integer>327</integer>
- <integer>328</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>343</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>343</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>344</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>344</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>344</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>344</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>344</integer>
- <key>col</key><integer>45</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>345</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>345</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>345</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>345</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>345</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>345</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>345</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>344</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>DECLARE_FUNC_AND_SET_TO_NULL</string>
- <key>expansion</key><string>void generated_whatever(); ptr = nullptr;</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>453ed8096f5394e74e16f965886e5623</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>hashHashOperatorTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>345</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>342</integer>
- <integer>343</integer>
- <integer>344</integer>
- <integer>345</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>352</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>352</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>TO_NULL_AND_PRINT</string>
- <key>expansion</key><string>a = 0; print( &quot;Will this ## cause a crash?&quot;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6817572ced27cb7d28fc87b2aba75fb4</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>macroArgContainsHashHashInStringTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>351</integer>
- <integer>352</integer>
- <integer>353</integer>
- <integer>354</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>366</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>366</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>366</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>366</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>366</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>367</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>367</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>367</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>367</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>367</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>367</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>367</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>366</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>PRINT_STR</string>
- <key>expansion</key><string>print(&quot;Hello&quot;); ptr = nullptr</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>e6947ee72df70243a3b4c9e9eaed0888</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>hashOperatorTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>367</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>364</integer>
- <integer>365</integer>
- <integer>366</integer>
- <integer>367</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>374</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>374</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>52</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>376</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>376</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>376</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>376</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>376</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>376</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>376</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>375</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>TO_NULL_AND_PRINT</string>
- <key>expansion</key><string>a = 0; print( &quot;Will this # cause a crash?&quot;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b1da2db423e721067ed5cfda858890be</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>macroArgContainsHashInStringTest</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>376</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>373</integer>
- <integer>374</integer>
- <integer>375</integer>
- <integer>376</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>422</integer>
- <key>col</key><integer>49</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;getLowestCommonDenominator&apos;</string>
- <key>message</key>
- <string>Calling &apos;getLowestCommonDenominator&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testVeryComplexAlgorithm&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testVeryComplexAlgorithm&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>EUCLIDEAN_ALGORITHM</string>
- <key>expansion</key><string>if (A&lt;0 ){A=-A;} if ( B&lt;0 ){ B=- B;}return B / ( B - B);</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3484e210b755ea46d632296fffd709e0</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>getLowestCommonDenominator</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>417</integer>
- <integer>418</integer>
- <integer>421</integer>
- <integer>422</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>437</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>437</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>438</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>438</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>438</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>438</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>438</integer>
- <key>col</key><integer>67</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>439</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>439</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>439</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>439</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>439</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>439</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>439</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>macro_expansions</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>438</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>name</key><string>YET_ANOTHER_SET_TO_NULL</string>
- <key>expansion</key><string>print((void *)5); print((void *)&quot;Remember the Vasa&quot;); ptr = nullptr;</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>42143f52fc9638fb2c0af41916e09d2f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>439</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>436</integer>
- <integer>437</integer>
- <integer>438</integer>
- <integer>439</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/home/szelethus/Documents/macro_expansion/clang/test/Analysis/plist-macros-with-expansion.cpp</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/plist-macros.cpp.plist b/test/Analysis/Inputs/expected-plists/plist-macros.cpp.plist
deleted file mode 100644
index 996ab0a7333e..000000000000
--- a/test/Analysis/Inputs/expected-plists/plist-macros.cpp.plist
+++ /dev/null
@@ -1,1761 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Memory allocated by malloc() should be deallocated by free(), not &apos;delete&apos;</string>
- <key>message</key>
- <string>Memory allocated by malloc() should be deallocated by free(), not &apos;delete&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Memory allocated by malloc() should be deallocated by free(), not &apos;delete&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Bad deallocator</string>
- <key>check_name</key><string>unix.MismatchedDeallocator</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>81d63a132b4ef0cc96734c17440a1c26</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>noteOnMacro</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>10</integer>
- <integer>11</integer>
- <integer>12</integer>
- <integer>13</integer>
- <integer>14</integer>
- <integer>15</integer>
- <integer>16</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Potential leak of memory pointed to by &apos;x&apos;</string>
- <key>message</key>
- <string>Potential leak of memory pointed to by &apos;x&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of memory pointed to by &apos;x&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Memory leak</string>
- <key>check_name</key><string>unix.Malloc</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2d723d9fb4e5f10dd54a7396866dfce4</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>macroIsFirstInFunction</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>19</integer>
- <integer>20</integer>
- <integer>21</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is equal to null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is equal to null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3570104919aab3f953357f8c87b68bd7</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>macroInExpression</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>26</integer>
- <integer>27</integer>
- <integer>28</integer>
- <integer>30</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>deff163b13f3fd860bc332498b0dbc59</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>macroInExpressionNoNote</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>34</integer>
- <integer>35</integer>
- <integer>36</integer>
- <integer>37</integer>
- <integer>39</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is equal to null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is equal to null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b67b58d85375752578e947b77c6aa70c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>macroWithArgInExpression</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>43</integer>
- <integer>44</integer>
- <integer>45</integer>
- <integer>47</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b53410f6c0d3d07e62ce5c6f91a1810a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>useMultiNoteMacroWithError</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>54</integer>
- <integer>55</integer>
- <integer>56</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;y&apos; is 0</string>
- <key>message</key>
- <string>Assuming &apos;y&apos; is 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>41f58f9549aa1867e461a7996a8d335c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>useMultiNote</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>66</integer>
- <integer>67</integer>
- <integer>68</integer>
- <integer>69</integer>
- <integer>71</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Passing null pointer value via 1st parameter &apos;a&apos;</string>
- <key>message</key>
- <string>Passing null pointer value via 1st parameter &apos;a&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;null_deref&apos;</string>
- <key>message</key>
- <string>Calling &apos;null_deref&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test1&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test1&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2dc47a4afc2f349f12217b38588769f4</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>null_deref</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>76</integer>
- <integer>77</integer>
- <integer>79</integer>
- <integer>82</integer>
- <integer>83</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/plist-macros.cpp</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/plist-output-alternate.m.plist b/test/Analysis/Inputs/expected-plists/plist-output-alternate.m.plist
deleted file mode 100644
index aedf06267269..000000000000
--- a/test/Analysis/Inputs/expected-plists/plist-output-alternate.m.plist
+++ /dev/null
@@ -1,1520 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>dc9c2a657ca759f9744cde2e093cfd59</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_init</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>4</integer>
- <integer>5</integer>
- <integer>6</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8f95d9681490a4e52c167969d0957b39</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_assign</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>9</integer>
- <integer>10</integer>
- <integer>11</integer>
- <integer>12</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;q&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;q&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;q&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;q&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;q&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>94c43fbcad6aaff4ee7433f2d2db0bbe</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_assign_transitive</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>15</integer>
- <integer>16</integer>
- <integer>17</integer>
- <integer>18</integer>
- <integer>19</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>659f01507ffd7efd3ca3eab7179fd7d2</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_cond</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>22</integer>
- <integer>23</integer>
- <integer>24</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;q&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;q&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c90d51e62139e614b57aff7021240a82</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_cond_transitive</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>28</integer>
- <integer>29</integer>
- <integer>30</integer>
- <integer>31</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;x.p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;x.p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from field &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from field &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from field &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>245408d2bc416e324064d990e6dd82a8</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_field</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>35</integer>
- <integer>36</integer>
- <integer>37</integer>
- <integer>38</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>82</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFNumberCreate&apos; returns a Core Foundation object of type &apos;CFNumberRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFNumberCreate&apos; returns a Core Foundation object of type &apos;CFNumberRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;x&apos; is 0</string>
- <key>message</key>
- <string>Assuming &apos;x&apos; is 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;value&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>29a10ca4af622b6146ca082e49d919d6</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar8331641</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>52</integer>
- <integer>53</integer>
- <integer>54</integer>
- <integer>55</integer>
- <integer>57</integer>
- <integer>58</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/plist-output-alternate.m</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/plist-output.m.plist b/test/Analysis/Inputs/expected-plists/plist-output.m.plist
deleted file mode 100644
index cafa9f3b94e8..000000000000
--- a/test/Analysis/Inputs/expected-plists/plist-output.m.plist
+++ /dev/null
@@ -1,6220 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>dc9c2a657ca759f9744cde2e093cfd59</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_init</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>4</integer>
- <integer>5</integer>
- <integer>6</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8f95d9681490a4e52c167969d0957b39</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_assign</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>9</integer>
- <integer>10</integer>
- <integer>11</integer>
- <integer>12</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;q&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;q&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;q&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;q&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;q&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>94c43fbcad6aaff4ee7433f2d2db0bbe</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_assign_transitive</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>15</integer>
- <integer>16</integer>
- <integer>17</integer>
- <integer>18</integer>
- <integer>19</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>659f01507ffd7efd3ca3eab7179fd7d2</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_cond</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>22</integer>
- <integer>23</integer>
- <integer>24</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;q&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;q&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c90d51e62139e614b57aff7021240a82</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_cond_transitive</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>28</integer>
- <integer>29</integer>
- <integer>30</integer>
- <integer>31</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;x.p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;x.p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from field &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from field &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from field &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>245408d2bc416e324064d990e6dd82a8</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_null_field</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>35</integer>
- <integer>36</integer>
- <integer>37</integer>
- <integer>38</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>43</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>43</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>43</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>43</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>43</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>43</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>43</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;a&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;a&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>43</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>43</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;b&apos; is equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;b&apos; is equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b12acffa40177b55b695aa2292533410</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_assumptions</string>
- <key>issue_hash_function_offset</key><string>8</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>41</integer>
- <integer>42</integer>
- <integer>43</integer>
- <integer>46</integer>
- <integer>49</integer>
- <integer>50</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value assigned to &apos;p&apos;</string>
- <key>message</key>
- <string>Value assigned to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming pointer value is null</string>
- <key>message</key>
- <string>Assuming pointer value is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c0a32b8291b0fc7230f847f05f415625</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_cond_assign</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>54</integer>
- <integer>55</integer>
- <integer>56</integer>
- <integer>58</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>75</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>76</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ea1d5db6b4c380a432c88139fdd18f42</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>test</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>74</integer>
- <integer>75</integer>
- <integer>76</integer>
- <integer>77</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value stored to &apos;foo&apos; during its initialization is never read</string>
- <key>message</key>
- <string>Value stored to &apos;foo&apos; during its initialization is never read</string>
- </dict>
- </array>
- <key>description</key><string>Value stored to &apos;foo&apos; during its initialization is never read</string>
- <key>category</key><string>Dead store</string>
- <key>type</key><string>Dead initialization</string>
- <key>check_name</key><string>deadcode.DeadStores</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3dd1ebf91fa4e92eeec82faaeb48beda</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>test2</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>86</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is true</string>
- <key>message</key>
- <string>Assuming the condition is true</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>86</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;foo&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;foo&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;foo&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f533db5cbb9c20d171f9f92105789dc4</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>test2</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>84</integer>
- <integer>85</integer>
- <integer>86</integer>
- <integer>88</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>100</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>08f9a01186cb2f1b78b08ec20260f1c1</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar12280665</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>94</integer>
- <integer>95</integer>
- <integer>96</integer>
- <integer>97</integer>
- <integer>98</integer>
- <integer>100</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>107</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>107</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>107</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>107</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>107</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>108</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>108</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>108</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>108</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>108</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>108</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>108</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>93a53e4c8f02d191b07477940ddcf89c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>radar12322528_for</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>111</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>106</integer>
- <integer>107</integer>
- <integer>108</integer>
- <integer>111</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>117</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>117</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>117</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>117</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>117</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body executed 0 times</string>
- <key>message</key>
- <string>Loop body executed 0 times</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>117</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>117</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f2d2dbf579b0b21a6b68726df6a041fc</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>radar12322528_while</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>114</integer>
- <integer>115</integer>
- <integer>116</integer>
- <integer>117</integer>
- <integer>121</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>127</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>127</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>127</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>127</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>127</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>127</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>127</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>127</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>129</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>129</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>129</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>129</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>127</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>127</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>127</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>127</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>95c7d39fb9d0d8c172b894e02855a07c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>radar12322528_foo_2</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>124</integer>
- <integer>125</integer>
- <integer>126</integer>
- <integer>127</integer>
- <integer>128</integer>
- <integer>129</integer>
- <integer>130</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>134</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>134</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4cbbc713c8267513fef8a33f1327d7ca</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_loop_diagnostics</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>133</integer>
- <integer>134</integer>
- <integer>135</integer>
- <integer>136</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>144</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a5aa7cf7ce6ba6683bebfff63df926fd</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_loop_diagnostics_2</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>139</integer>
- <integer>140</integer>
- <integer>141</integer>
- <integer>142</integer>
- <integer>143</integer>
- <integer>144</integer>
- <integer>145</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>149</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>149</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>154</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>154</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>154</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>154</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>154</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>154</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>154</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>154</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Looping back to the head of the loop</string>
- <key>message</key>
- <string>Looping back to the head of the loop</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3917bac4f8fdce1f6c6393b1f14a1320</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_loop_diagnostics_3</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>148</integer>
- <integer>149</integer>
- <integer>150</integer>
- <integer>151</integer>
- <integer>152</integer>
- <integer>153</integer>
- <integer>154</integer>
- <integer>155</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value stored to &apos;x&apos; is never read</string>
- <key>message</key>
- <string>Value stored to &apos;x&apos; is never read</string>
- </dict>
- </array>
- <key>description</key><string>Value stored to &apos;x&apos; is never read</string>
- <key>category</key><string>Dead store</string>
- <key>type</key><string>Dead increment</string>
- <key>check_name</key><string>deadcode.DeadStores</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c94f341ebaf0fac5d6703aaa7e6bee9b</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_loop_fast_enumeration</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>163</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;x&apos; declared without an initial value</string>
- <key>message</key>
- <string>&apos;x&apos; declared without an initial value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Loop body skipped when collection is empty</string>
- <key>message</key>
- <string>Loop body skipped when collection is empty</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage</string>
- <key>message</key>
- <string>The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage</string>
- </dict>
- </array>
- <key>description</key><string>The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Assigned value is garbage or undefined</string>
- <key>check_name</key><string>core.uninitialized.Assign</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>21c774309bdfd487c3d09a61a671bbcc</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_loop_fast_enumeration</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>163</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>158</integer>
- <integer>159</integer>
- <integer>160</integer>
- <integer>163</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from ivar &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from ivar &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from ivar &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b21eba78798501dc6b716bb91e3f7f01</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>test</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>172</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>170</integer>
- <integer>171</integer>
- <integer>172</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>182</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>182</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>182</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;s.i&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;s.i&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>182</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>182</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>184</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>184</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>184</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>184</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>184</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer passed as an argument to a &apos;nonnull&apos; parameter</string>
- <key>message</key>
- <string>Null pointer passed as an argument to a &apos;nonnull&apos; parameter</string>
- </dict>
- </array>
- <key>description</key><string>Null pointer passed as an argument to a &apos;nonnull&apos; parameter</string>
- <key>category</key><string>API</string>
- <key>type</key><string>Argument with &apos;nonnull&apos; attribute passed null</string>
- <key>check_name</key><string>core.NonNullParamChecker</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c0b359a043c633f1b8d1581f68743361</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>RDar13295437</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>184</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>181</integer>
- <integer>182</integer>
- <integer>183</integer>
- <integer>184</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;x&apos; is nil</string>
- <key>message</key>
- <string>Assuming &apos;x&apos; is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>192</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;returnsPointer&apos; not called because the receiver is nil</string>
- <key>message</key>
- <string>&apos;returnsPointer&apos; not called because the receiver is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a225fec9dc1e56142b68b3df82b00b6c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testFoo</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>194</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>191</integer>
- <integer>192</integer>
- <integer>194</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/plist-output.m</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/plist-stats-output.c.plist b/test/Analysis/Inputs/expected-plists/plist-stats-output.c.plist
deleted file mode 100644
index 8d4cab4832dd..000000000000
--- a/test/Analysis/Inputs/expected-plists/plist-stats-output.c.plist
+++ /dev/null
@@ -1,9 +0,0 @@
- <key>diagnostics</key>
- <array>
- </array>
-<key>statistics</key>
-<string>{
-}
-</string>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/retain-release-path-notes.m.plist b/test/Analysis/Inputs/expected-plists/retain-release-path-notes.m.plist
deleted file mode 100644
index b2b90adad1d3..000000000000
--- a/test/Analysis/Inputs/expected-plists/retain-release-path-notes.m.plist
+++ /dev/null
@@ -1,5022 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSObject with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSObject with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>47</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;leaked&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;leaked&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;leaked&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d21e9660cc6434ef84a51f39ffcdce86</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>creationViaAlloc</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>46</integer>
- <integer>47</integer>
- <integer>48</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;leaked&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;leaked&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;leaked&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f8ec2601a04113e567aa1d09c9902c91</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>creationViaCFCreate</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>51</integer>
- <integer>52</integer>
- <integer>53</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;leaked&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;leaked&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;leaked&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>dd26a8ad9a7a057feaa636974b43ccb0</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>acquisitionViaMethod</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>56</integer>
- <integer>57</integer>
- <integer>58</integer>
- <integer>59</integer>
- <integer>60</integer>
- <integer>61</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Property returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Property returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;leaked&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;leaked&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;leaked&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2f2de5d7fe728958585598b619069e5a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>acquisitionViaProperty</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>64</integer>
- <integer>65</integer>
- <integer>66</integer>
- <integer>67</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFGetSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFGetSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;leaked&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;leaked&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;leaked&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1c02b65e83dad1b22270ff5a71de3118</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>acquisitionViaCFFunction</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>70</integer>
- <integer>71</integer>
- <integer>72</integer>
- <integer>73</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSObject with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSObject with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released by directly sending the &apos;-dealloc&apos; message</string>
- <key>message</key>
- <string>Object released by directly sending the &apos;-dealloc&apos; message</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>03c23f0f82d7f2fd880a22e0d9cf14b9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>explicitDealloc</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>76</integer>
- <integer>77</integer>
- <integer>78</integer>
- <integer>79</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSObject with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSObject with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6f1b3f0c6c7f79f1af9b313273a01e92</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>implicitDealloc</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>85</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>82</integer>
- <integer>83</integer>
- <integer>84</integer>
- <integer>85</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>89</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>89</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>89</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSObject with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSObject with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>89</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>89</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>90</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>91</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>91</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>91</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>91</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>91</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>91</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>91</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>91</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>91</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
- <key>message</key>
- <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>cb5e4205a8f925230a70715914a2e3d2</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>overAutorelease</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>88</integer>
- <integer>89</integer>
- <integer>90</integer>
- <integer>91</integer>
- <integer>92</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Property returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Property returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased but has a +0 retain count</string>
- <key>message</key>
- <string>Object was autoreleased but has a +0 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1edd178e5ad76c79ce9812f519e8f467</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>autoreleaseUnowned</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>95</integer>
- <integer>96</integer>
- <integer>97</integer>
- <integer>98</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;leaked&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;leaked&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;leaked&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3f08690fae9687c29bb23b7a7cb7995b</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>makeCollectableIgnored</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>101</integer>
- <integer>102</integer>
- <integer>103</integer>
- <integer>104</integer>
- <integer>105</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>109</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>109</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>109</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFGetSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFGetSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>109</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>109</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>110</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>110</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>110</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>110</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>110</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- </dict>
- </array>
- <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Method should return an owned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4b621ab5f8f2ef9240699119f4d874cb</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>CFCopyRuleViolation</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>110</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>108</integer>
- <integer>109</integer>
- <integer>110</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;object&apos; is returned from a function whose name (&apos;CFGetRuleViolation&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;object&apos; is returned from a function whose name (&apos;CFGetRuleViolation&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;object&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5248d2310322982d02e5f3d564249b4f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>CFGetRuleViolation</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>113</integer>
- <integer>114</integer>
- <integer>115</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Property returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Property returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- </dict>
- </array>
- <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Method should return an owned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4f23ad2725fb68134cec8b8354cd295c</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>copyViolation</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>121</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>119</integer>
- <integer>120</integer>
- <integer>121</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Subscript returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Subscript returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- </dict>
- </array>
- <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Method should return an owned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>da1dab126ed46b144040160ae8628460</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>copyViolationIndexedSubscript</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>124</integer>
- <integer>125</integer>
- <integer>126</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Subscript returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Subscript returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>130</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- </dict>
- </array>
- <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Method should return an owned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>52877f9471b1ecdaf213b39016b84e52</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>copyViolationKeyedSubscript</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>129</integer>
- <integer>130</integer>
- <integer>131</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of Foo with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of Foo with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;result&apos; is returned from a method whose name (&apos;getViolation&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;result&apos; is returned from a method whose name (&apos;getViolation&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;result&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>cf8c65a18ad9982cb9848a266cd9c61b</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>getViolation</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>134</integer>
- <integer>135</integer>
- <integer>136</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of Foo with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of Foo with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>140</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- </dict>
- </array>
- <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Method should return an owned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>e7b798151545b45a994592df0d27d250</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>copyAutorelease</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>139</integer>
- <integer>140</integer>
- <integer>141</integer>
- <integer>142</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSNumber literal is an object with a +0 retain count</string>
- <key>message</key>
- <string>NSNumber literal is an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4e0c810e2b301aca3f636ad7e3d6b0b8</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testNumericLiteral</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>171</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>169</integer>
- <integer>170</integer>
- <integer>171</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>175</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>175</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>175</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSNumber boxed expression produces an object with a +0 retain count</string>
- <key>message</key>
- <string>NSNumber boxed expression produces an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>175</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>175</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>176</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>176</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>176</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>176</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>176</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1d054002016aa4360aaf23a4c4d8fbb7</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testBoxedInt</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>176</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>174</integer>
- <integer>175</integer>
- <integer>176</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSString boxed expression produces an object with a +0 retain count</string>
- <key>message</key>
- <string>NSString boxed expression produces an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>67ca92144b05322ee4569aea88d08595</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testBoxedString</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>181</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>179</integer>
- <integer>180</integer>
- <integer>181</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>185</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>185</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>185</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSArray literal is an object with a +0 retain count</string>
- <key>message</key>
- <string>NSArray literal is an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>185</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>185</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>32fcec71872b8f62d8d7b1b05284b0fe</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testArray</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>186</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>184</integer>
- <integer>185</integer>
- <integer>186</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>190</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>190</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>190</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSDictionary literal is an object with a +0 retain count</string>
- <key>message</key>
- <string>NSDictionary literal is an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>190</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>190</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d9584825bb1e62066879949e3ade8570</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testDictionary</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>189</integer>
- <integer>190</integer>
- <integer>191</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of MyObj with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of MyObj with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;initX&apos;</string>
- <key>message</key>
- <string>Calling &apos;initX&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>206</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>206</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>206</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Assuming &apos;Cond&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;Cond&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>207</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>209</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>209</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;initX&apos;</string>
- <key>message</key>
- <string>Returning from &apos;initX&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;MyObj *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;MyObj *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;MyObj *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>eef2aef4b58abf21fcfa4bbf69e19c02</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>test</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>206</integer>
- <integer>207</integer>
- <integer>209</integer>
- <integer>224</integer>
- <integer>226</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>226</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;initY&apos;</string>
- <key>message</key>
- <string>Calling &apos;initY&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>214</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>214</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>214</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Method returns an instance of MyObj with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of MyObj with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>215</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;initY&apos;</string>
- <key>message</key>
- <string>Returning from &apos;initY&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;y&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;y&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;y&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8c27524f691296551f9e52856b824326</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>test</string>
- <key>issue_hash_function_offset</key><string>8</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>206</integer>
- <integer>207</integer>
- <integer>209</integer>
- <integer>214</integer>
- <integer>215</integer>
- <integer>216</integer>
- <integer>224</integer>
- <integer>226</integer>
- <integer>232</integer>
- <integer>237</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>248</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>249</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>249</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>249</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>249</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>249</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>249</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>249</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>249</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>249</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>250</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>250</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>250</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>250</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>250</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
- <key>message</key>
- <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4fc36e73ba317d307dc9cc4b3d62fd0a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>CFOverAutorelease</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>250</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>246</integer>
- <integer>247</integer>
- <integer>248</integer>
- <integer>249</integer>
- <integer>250</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFGetSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFGetSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>255</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased but has a +0 retain count</string>
- <key>message</key>
- <string>Object was autoreleased but has a +0 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>08e6a3931d34cda45c09dfda76976e17</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>CFAutoreleaseUnowned</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>256</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>253</integer>
- <integer>254</integer>
- <integer>255</integer>
- <integer>256</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>260</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>260</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>260</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFGetSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFGetSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>260</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>260</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>262</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased 2 times but the object has a +0 retain count</string>
- <key>message</key>
- <string>Object was autoreleased 2 times but the object has a +0 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d9bb23a5435fe15df9d7ffdc27a8a072</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>CFAutoreleaseUnownedMixed</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>263</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>259</integer>
- <integer>260</integer>
- <integer>261</integer>
- <integer>262</integer>
- <integer>263</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/test/Analysis/retain-release-path-notes.m</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/retain-release.m.objc.plist b/test/Analysis/Inputs/expected-plists/retain-release.m.objc.plist
deleted file mode 100644
index 01c317def20d..000000000000
--- a/test/Analysis/Inputs/expected-plists/retain-release.m.objc.plist
+++ /dev/null
@@ -1,26113 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>348</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>348</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>349</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>349</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>349</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>349</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>349</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>349</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>349</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5928b2a4699cbae0686391c20e639007</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f1</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>347</integer>
- <integer>348</integer>
- <integer>349</integer>
- <integer>350</integer>
- <integer>351</integer>
- <integer>352</integer>
- <integer>353</integer>
- <integer>354</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>359</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>359</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>360</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>360</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>360</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>360</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>360</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>360</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>360</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6b2e175938153ac041f52ebbf50b1f43</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f2</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>358</integer>
- <integer>359</integer>
- <integer>360</integer>
- <integer>361</integer>
- <integer>362</integer>
- <integer>363</integer>
- <integer>364</integer>
- <integer>365</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>395</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>395</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>396</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>396</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>396</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>396</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>396</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>396</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>396</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;x&apos; is 0</string>
- <key>message</key>
- <string>Assuming &apos;x&apos; is 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;date&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3fdbd844ddb925306ba2bb1b3626f310</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f5</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>394</integer>
- <integer>395</integer>
- <integer>396</integer>
- <integer>398</integer>
- <integer>401</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>407</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>407</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>407</integer>
- <key>col</key><integer>62</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>407</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>407</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>409</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>409</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>409</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>409</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>409</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;date&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8529da75e357c59fb0a7fefb0b6e0952</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f6</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>409</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>406</integer>
- <integer>407</integer>
- <integer>408</integer>
- <integer>409</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>415</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>415</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>415</integer>
- <key>col</key><integer>62</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>415</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>415</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +2</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +2</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;date&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>eb0faa12081b1e28b218e4c6e53d57ec</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f7</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>414</integer>
- <integer>415</integer>
- <integer>416</integer>
- <integer>417</integer>
- <integer>418</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>415</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>415</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>52</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is returned from a function whose name (&apos;f7&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is returned from a function whose name (&apos;f7&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;date&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>404d4de8faa444bc52fd510380bd0a63</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f7</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>414</integer>
- <integer>415</integer>
- <integer>416</integer>
- <integer>417</integer>
- <integer>418</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>426</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>426</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>426</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;MyDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;MyDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>426</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>426</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>428</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>428</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>428</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>428</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>428</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;date&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>251dff6727b3d99ec95caa28672669ea</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f8</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>428</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>425</integer>
- <integer>426</integer>
- <integer>427</integer>
- <integer>428</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>432</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>432</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;date&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;date&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4af5d8d1438976cc7fa006af5f843b13</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f9</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>431</integer>
- <integer>432</integer>
- <integer>433</integer>
- <integer>435</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>75</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;DADiskCreateFromBSDName&apos; returns a Core Foundation object of type &apos;DADiskRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;DADiskCreateFromBSDName&apos; returns a Core Foundation object of type &apos;DADiskRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is non-null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is non-null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;disk&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;disk&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;disk&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>69ae08a90fe52a921ed423df38ed7480</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f10</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>443</integer>
- <integer>444</integer>
- <integer>445</integer>
- <integer>447</integer>
- <integer>448</integer>
- <integer>450</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>49</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;DADiskCopyDescription&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;DADiskCopyDescription&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;dict&apos; is non-null</string>
- <key>message</key>
- <string>Assuming &apos;dict&apos; is non-null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;dict&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;dict&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;dict&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a7f8c63b1cdc39df79b7457e27ff4930</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f10</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>443</integer>
- <integer>444</integer>
- <integer>445</integer>
- <integer>447</integer>
- <integer>448</integer>
- <integer>450</integer>
- <integer>451</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;DADiskCopyWholeDisk&apos; returns a Core Foundation object of type &apos;DADiskRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;DADiskCopyWholeDisk&apos; returns a Core Foundation object of type &apos;DADiskRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is non-null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is non-null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;disk&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;disk&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;disk&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>cace8e35bed93ecdfa0455ac166aaa97</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f10</string>
- <key>issue_hash_function_offset</key><string>10</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>443</integer>
- <integer>444</integer>
- <integer>445</integer>
- <integer>447</integer>
- <integer>448</integer>
- <integer>450</integer>
- <integer>451</integer>
- <integer>453</integer>
- <integer>454</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>63</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;DADiskCreateFromIOMedia&apos; returns a Core Foundation object of type &apos;DADiskRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;DADiskCreateFromIOMedia&apos; returns a Core Foundation object of type &apos;DADiskRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is non-null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is non-null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;disk&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;disk&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;disk&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>778f70549a15e78703b4dcb3a287df33</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f10</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>443</integer>
- <integer>444</integer>
- <integer>445</integer>
- <integer>447</integer>
- <integer>448</integer>
- <integer>450</integer>
- <integer>451</integer>
- <integer>453</integer>
- <integer>454</integer>
- <integer>456</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>68</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;DADissenterCreate&apos; returns a Core Foundation object of type &apos;DADissenterRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;DADissenterCreate&apos; returns a Core Foundation object of type &apos;DADissenterRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;dissenter&apos; is non-null</string>
- <key>message</key>
- <string>Assuming &apos;dissenter&apos; is non-null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;dissenter&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;dissenter&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;dissenter&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6c188b4716e84cdc55b93d40e6c2daf3</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f10</string>
- <key>issue_hash_function_offset</key><string>13</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>443</integer>
- <integer>444</integer>
- <integer>445</integer>
- <integer>447</integer>
- <integer>448</integer>
- <integer>450</integer>
- <integer>451</integer>
- <integer>453</integer>
- <integer>454</integer>
- <integer>456</integer>
- <integer>457</integer>
- <integer>458</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;dissenter&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;dissenter&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>61</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;DASessionCreate&apos; returns a Core Foundation object of type &apos;DASessionRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;DASessionCreate&apos; returns a Core Foundation object of type &apos;DASessionRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;session&apos; is non-null</string>
- <key>message</key>
- <string>Assuming &apos;session&apos; is non-null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;session&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;session&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;session&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>35b9ac7ff198890c88d5839a898b7fea</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f10</string>
- <key>issue_hash_function_offset</key><string>17</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>443</integer>
- <integer>444</integer>
- <integer>445</integer>
- <integer>447</integer>
- <integer>448</integer>
- <integer>450</integer>
- <integer>451</integer>
- <integer>453</integer>
- <integer>454</integer>
- <integer>456</integer>
- <integer>457</integer>
- <integer>458</integer>
- <integer>460</integer>
- <integer>461</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>478</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>478</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>478</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CMCreateFooRef&apos; returns a Core Foundation object of type &apos;CMFooRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CMCreateFooRef&apos; returns a Core Foundation object of type &apos;CMFooRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>478</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>478</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>479</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>479</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>479</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;f&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;f&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;f&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>17d84d673b35235b52d8f8f00c1d1eea</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testLeakCoreMediaReferenceType</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>479</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>477</integer>
- <integer>478</integer>
- <integer>479</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>482</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>482</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>482</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CMGetFooRef&apos; returns a Core Foundation object of type &apos;CMFooRef&apos; with a +0 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CMGetFooRef&apos; returns a Core Foundation object of type &apos;CMFooRef&apos; with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>482</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>482</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>483</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>483</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>483</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>483</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>483</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1702285448a953b02ab74a8eb9a610d9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testOverReleaseMediaReferenceType</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>483</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>481</integer>
- <integer>482</integer>
- <integer>483</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>57</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;buffer&apos; is not equal to &apos;queue&apos;</string>
- <key>message</key>
- <string>Assuming &apos;buffer&apos; is not equal to &apos;queue&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>FALSE</string>
- <key>message</key>
- <string>FALSE</string>
- </dict>
- </array>
- <key>description</key><string>FALSE</string>
- <key>category</key><string>debug</string>
- <key>type</key><string>Checking analyzer assumptions</string>
- <key>check_name</key><string>debug.ExprInspection</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>78b71dc497a2059b950406cb2a1cfd01</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCMBufferQueueDequeueAndRetain</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>515</integer>
- <integer>516</integer>
- <integer>520</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>57</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;buffer&apos; is equal to &apos;queue&apos;</string>
- <key>message</key>
- <string>Assuming &apos;buffer&apos; is equal to &apos;queue&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>TRUE</string>
- <key>message</key>
- <string>TRUE</string>
- </dict>
- </array>
- <key>description</key><string>TRUE</string>
- <key>category</key><string>debug</string>
- <key>type</key><string>Checking analyzer assumptions</string>
- <key>check_name</key><string>debug.ExprInspection</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>78b71dc497a2059b950406cb2a1cfd01</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCMBufferQueueDequeueAndRetain</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>515</integer>
- <integer>516</integer>
- <integer>520</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>59</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CMBufferQueueDequeueAndRetain&apos; returns a Core Foundation object of type &apos;CMBufferRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CMBufferQueueDequeueAndRetain&apos; returns a Core Foundation object of type &apos;CMBufferRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>57</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;buffer&apos; is not equal to &apos;queue&apos;</string>
- <key>message</key>
- <string>Assuming &apos;buffer&apos; is not equal to &apos;queue&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;buffer&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;buffer&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;buffer&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>402566b4ddf1683dac1aefc1ab3e76e9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCMBufferQueueDequeueAndRetain</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>515</integer>
- <integer>516</integer>
- <integer>520</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>527</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>527</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>540</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>540</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>540</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>540</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>540</integer>
- <key>col</key><integer>49</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayGetValueAtIndex&apos; returns a Core Foundation object of type &apos;const void *&apos; with a +0 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayGetValueAtIndex&apos; returns a Core Foundation object of type &apos;const void *&apos; with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>540</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>540</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>546</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>546</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>546</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>546</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>546</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>143ef5974bfece95e9894da5250aaff0</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f11</string>
- <key>issue_hash_function_offset</key><string>21</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>546</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>525</integer>
- <integer>527</integer>
- <integer>530</integer>
- <integer>531</integer>
- <integer>534</integer>
- <integer>537</integer>
- <integer>540</integer>
- <integer>543</integer>
- <integer>546</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>554</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>554</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>554</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;MyCreateFun&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;MyCreateFun&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>554</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>554</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;o&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;o&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;o&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>af4ad99c5fb565d82e1b4848aaca4e24</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f12</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>553</integer>
- <integer>554</integer>
- <integer>555</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>563</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>563</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>563</integer>
- <key>col</key><integer>75</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>563</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>563</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
- <key>message</key>
- <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>58a0b3f8332f42561f89b11f6eb5e91f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f13_autorelease_b</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>562</integer>
- <integer>563</integer>
- <integer>564</integer>
- <integer>565</integer>
- <integer>566</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>569</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>569</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>569</integer>
- <key>col</key><integer>75</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>569</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>569</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased 2 times but the object has a +0 retain count</string>
- <key>message</key>
- <string>Object was autoreleased 2 times but the object has a +0 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>612dc6574d54c8010703a9776d8a4a0a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f13_autorelease_c</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>568</integer>
- <integer>569</integer>
- <integer>570</integer>
- <integer>571</integer>
- <integer>572</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>576</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>576</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>576</integer>
- <key>col</key><integer>75</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>576</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>576</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>44</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>75</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
- <key>message</key>
- <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c57037289bc3acc586de325df25951ed</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f13_autorelease_d</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>575</integer>
- <integer>576</integer>
- <integer>577</integer>
- <integer>578</integer>
- <integer>579</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>587</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>587</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>587</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>587</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>587</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableArrayRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6abb479bc4c7782a125d680fddf825ef</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f14_leakimmediately</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>586</integer>
- <integer>587</integer>
- <integer>588</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>607</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>607</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>607</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>607</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>607</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer argument in call to CFRelease</string>
- <key>message</key>
- <string>Null pointer argument in call to CFRelease</string>
- </dict>
- </array>
- <key>description</key><string>Null pointer argument in call to CFRelease</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>null passed to CF memory management function</string>
- <key>check_name</key><string>osx.coreFoundation.CFRetainRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>e7e2ba205af363f2c4cec7d01dcb6d6c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f16</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>607</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>601</integer>
- <integer>602</integer>
- <integer>605</integer>
- <integer>606</integer>
- <integer>607</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>610</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>610</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>610</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>610</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>610</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer argument in call to CFRetain</string>
- <key>message</key>
- <string>Null pointer argument in call to CFRetain</string>
- </dict>
- </array>
- <key>description</key><string>Null pointer argument in call to CFRetain</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>null passed to CF memory management function</string>
- <key>check_name</key><string>osx.coreFoundation.CFRetainRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>64f4a3367d5d8e832ca8a23ca4d72717</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f16</string>
- <key>issue_hash_function_offset</key><string>9</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>610</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>601</integer>
- <integer>602</integer>
- <integer>605</integer>
- <integer>609</integer>
- <integer>610</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>613</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>613</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>613</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>613</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>613</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer argument in call to CFMakeCollectable</string>
- <key>message</key>
- <string>Null pointer argument in call to CFMakeCollectable</string>
- </dict>
- </array>
- <key>description</key><string>Null pointer argument in call to CFMakeCollectable</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>null passed to CF memory management function</string>
- <key>check_name</key><string>osx.coreFoundation.CFRetainRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>61123dbb677396de5abbdd778c399140</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f16</string>
- <key>issue_hash_function_offset</key><string>12</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>613</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>601</integer>
- <integer>602</integer>
- <integer>605</integer>
- <integer>612</integer>
- <integer>613</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>616</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>616</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>616</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>616</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>616</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer argument in call to CFAutorelease</string>
- <key>message</key>
- <string>Null pointer argument in call to CFAutorelease</string>
- </dict>
- </array>
- <key>description</key><string>Null pointer argument in call to CFAutorelease</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>null passed to CF memory management function</string>
- <key>check_name</key><string>osx.coreFoundation.CFRetainRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>965bca78fe04bfa55b6ea428da3c20e3</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f16</string>
- <key>issue_hash_function_offset</key><string>15</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>616</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>601</integer>
- <integer>602</integer>
- <integer>605</integer>
- <integer>615</integer>
- <integer>616</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>656</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>656</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>656</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;isl_basic_map_cow&apos; returns an object of type &apos;isl_basic_map *&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;isl_basic_map_cow&apos; returns an object of type &apos;isl_basic_map *&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>656</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>656</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>657</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>657</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>657</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;bmap&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;bmap&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;bmap&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2cfebefee7b63ce3954419e571be4f63</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f18</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>657</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>654</integer>
- <integer>656</integer>
- <integer>657</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>682</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>682</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>682</integer>
- <key>col</key><integer>55</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>682</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>682</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>683</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>683</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>683</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>683</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>683</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- </dict>
- </array>
- <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Method should return an owned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>dcd3becc58a149abe6ade5598138d3dd</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>newString</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>683</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>681</integer>
- <integer>682</integer>
- <integer>683</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>63</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;name&apos; is nil</string>
- <key>message</key>
- <string>Assuming &apos;name&apos; is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>704</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>704</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>704</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>704</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>704</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;kind&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;kind&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;kind&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6688c9cb12f0c76ec80eb03b1d2eddf8</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_6659160</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>704</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>690</integer>
- <integer>691</integer>
- <integer>696</integer>
- <integer>702</integer>
- <integer>703</integer>
- <integer>704</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;name&apos; is non-nil</string>
- <key>message</key>
- <string>Assuming &apos;name&apos; is non-nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;kindC&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;kindC&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;kind&apos; is nil</string>
- <key>message</key>
- <string>Assuming &apos;kind&apos; is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Array access (from variable &apos;kindC&apos;) results in a null pointer dereference</string>
- <key>message</key>
- <string>Array access (from variable &apos;kindC&apos;) results in a null pointer dereference</string>
- </dict>
- </array>
- <key>description</key><string>Array access (from variable &apos;kindC&apos;) results in a null pointer dereference</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2824c4e1d4ab13c3ae5a0ebb2aa4ed89</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_6659160</string>
- <key>issue_hash_function_offset</key><string>27</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>690</integer>
- <integer>691</integer>
- <integer>696</integer>
- <integer>702</integer>
- <integer>703</integer>
- <integer>706</integer>
- <integer>707</integer>
- <integer>714</integer>
- <integer>716</integer>
- <integer>717</integer>
- <integer>718</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>702</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>702</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>702</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>702</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>702</integer>
- <key>col</key><integer>57</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>702</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>702</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;name&apos; is non-nil</string>
- <key>message</key>
- <string>Assuming &apos;name&apos; is non-nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;kind&apos; is non-nil</string>
- <key>message</key>
- <string>Assuming &apos;kind&apos; is non-nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>715</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>715</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>715</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>715</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>723</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>723</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>723</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>723</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>724</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>724</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>724</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>724</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>724</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d04966e9b8e981d8f69bf03823253033</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_6659160</string>
- <key>issue_hash_function_offset</key><string>33</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>724</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>690</integer>
- <integer>691</integer>
- <integer>696</integer>
- <integer>702</integer>
- <integer>703</integer>
- <integer>706</integer>
- <integer>707</integer>
- <integer>714</integer>
- <integer>715</integer>
- <integer>716</integer>
- <integer>717</integer>
- <integer>718</integer>
- <integer>720</integer>
- <integer>723</integer>
- <integer>724</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>746</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>746</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>746</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>746</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>746</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released by directly sending the &apos;-dealloc&apos; message</string>
- <key>message</key>
- <string>Object released by directly sending the &apos;-dealloc&apos; message</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>748</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>748</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>748</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>748</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>748</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1b35183a6aca4df5a8732c8da94e3205</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>pr3820_ReleaseAfterDealloc</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>748</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>744</integer>
- <integer>745</integer>
- <integer>746</integer>
- <integer>747</integer>
- <integer>748</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>754</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>754</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>755</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>755</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>755</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>755</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>755</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>755</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>755</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>757</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>757</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>757</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>757</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>757</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>54f2bd1534fa675b58c4f8eef3120373</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>pr3820_DeallocAfterRelease</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>757</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>752</integer>
- <integer>753</integer>
- <integer>754</integer>
- <integer>755</integer>
- <integer>756</integer>
- <integer>757</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>76</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>84</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>76</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>813</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>813</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>813</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>813</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>814</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>814</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>814</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;dict&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;dict&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;dict&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>055e6f3413539276fedeac241fccd9b8</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>applicationDidFinishLaunching:</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>814</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>808</integer>
- <integer>809</integer>
- <integer>811</integer>
- <integer>813</integer>
- <integer>814</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>76</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>84</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>76</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>824</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>824</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>824</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;dict&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;dict&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;dict&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>444f6019b048a95dd71c6be49ecb73ff</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>radar10102244</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>824</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>820</integer>
- <integer>821</integer>
- <integer>822</integer>
- <integer>824</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>832</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>832</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>833</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>833</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>833</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>833</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>833</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>833</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>833</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>834</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>834</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>834</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>834</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>834</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>641de26edd3d85ca241de577afbcda86</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_6257780_Case1</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>834</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>831</integer>
- <integer>832</integer>
- <integer>833</integer>
- <integer>834</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>909</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>909</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>910</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>910</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>910</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>910</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>910</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of RDar6320065Subclass with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of RDar6320065Subclass with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>910</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>910</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>911</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>911</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>911</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>911</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>911</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;RDar6320065Subclass *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;RDar6320065Subclass *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;RDar6320065Subclass *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8e8ae80fd006f27a952f77494bd1c05f</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>_initReturningNewClassBad</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>911</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>908</integer>
- <integer>909</integer>
- <integer>910</integer>
- <integer>911</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>914</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>914</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>915</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>915</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>915</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>915</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>915</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of RDar6320065Subclass with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of RDar6320065Subclass with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>915</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>915</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- </dict>
- </array>
- <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Method should return an owned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>625e26ef3ae9de238f30175e4e9f4937</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>initReturningNewClassBad2</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>913</integer>
- <integer>914</integer>
- <integer>915</integer>
- <integer>916</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>59</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>59</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method whose name (&apos;NoCopyString&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method whose name (&apos;NoCopyString&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;NSString *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>666dce676597e2cfa3199521864f7b96</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>NoCopyString</string>
- <key>issue_hash_function_offset</key><string>0</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>954</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>59</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>59</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method whose name (&apos;noCopyString&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method whose name (&apos;noCopyString&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;NSString *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>31104cdb408dbc3faf693a5c31973486</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>noCopyString</string>
- <key>issue_hash_function_offset</key><string>0</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>955</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;NoCopyString&apos;</string>
- <key>message</key>
- <string>Calling &apos;NoCopyString&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_RDar6859457&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_RDar6859457&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>59</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;NoCopyString&apos;</string>
- <key>message</key>
- <string>Returning from &apos;NoCopyString&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;NSString *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>909638940b4d7020f51062089653b231</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_RDar6859457</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>954</integer>
- <integer>958</integer>
- <integer>959</integer>
- <integer>960</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;noCopyString&apos;</string>
- <key>message</key>
- <string>Calling &apos;noCopyString&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_RDar6859457&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_RDar6859457&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>59</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;noCopyString&apos;</string>
- <key>message</key>
- <string>Returning from &apos;noCopyString&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>961</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>961</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>961</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>961</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>961</integer>
- <key>col</key><integer>54</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;NSString *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2a37743e32cfa0a86958fed215c30e87</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_RDar6859457</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>961</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>954</integer>
- <integer>955</integer>
- <integer>958</integer>
- <integer>959</integer>
- <integer>960</integer>
- <integer>961</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>994</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>994</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>994</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>994</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>994</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>994</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method whose name (&apos;:&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method whose name (&apos;:&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;NSString *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>20b25f0ba6268e055d8491c67c6a26bd</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>:</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>994</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>993</integer>
- <integer>994</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;id&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;id&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;id&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>706b9d732ece93a88487dbbf0b82fd23</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar6902710</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1021</integer>
- <integer>1022</integer>
- <integer>1023</integer>
- <integer>1024</integer>
- <integer>1025</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;id&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;id&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;id&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>631eebb0c921191c24734f98fe93f6bf</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar6902710</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1021</integer>
- <integer>1022</integer>
- <integer>1023</integer>
- <integer>1024</integer>
- <integer>1025</integer>
- <integer>1026</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns a Core Foundation object of type &apos;CGImageRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Method returns a Core Foundation object of type &apos;CGImageRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>69</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CGImageRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CGImageRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CGImageRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ee36a48521a32c183a086066d3c5ae1f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar6902710</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1021</integer>
- <integer>1022</integer>
- <integer>1023</integer>
- <integer>1024</integer>
- <integer>1025</integer>
- <integer>1026</integer>
- <integer>1027</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>69</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns a Core Foundation object of type &apos;CGImageRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Method returns a Core Foundation object of type &apos;CGImageRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1028</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1028</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1028</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CGImageRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CGImageRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CGImageRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>70a2dd4ee6b6f7caad87a46dc6dd3580</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar6902710</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1028</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1021</integer>
- <integer>1022</integer>
- <integer>1023</integer>
- <integer>1024</integer>
- <integer>1025</integer>
- <integer>1026</integer>
- <integer>1027</integer>
- <integer>1028</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1036</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1036</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1036</integer>
- <key>col</key><integer>45</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns a Core Foundation object of type &apos;CGLayerRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Method returns a Core Foundation object of type &apos;CGLayerRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1036</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1036</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1037</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1037</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1037</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CGLayerRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CGLayerRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CGLayerRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a82448687d1cbf5cb517914dbe6de4fe</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar6945561</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1037</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1035</integer>
- <integer>1036</integer>
- <integer>1037</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1045</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1045</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1045</integer>
- <key>col</key><integer>49</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;IOBSDNameMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;IOBSDNameMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1045</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1045</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1046</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1046</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1046</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableDictionaryRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>540e0145994c1e14ea750fe91a497855</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOBSDNameMatching_wrapper</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1046</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1044</integer>
- <integer>1045</integer>
- <integer>1046</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1049</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1049</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1049</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;IOServiceMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;IOServiceMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1049</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1049</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1050</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1050</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1050</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableDictionaryRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>99d7012d797e181ef8e9a289ee9099eb</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOServiceMatching_wrapper</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1050</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1048</integer>
- <integer>1049</integer>
- <integer>1050</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1053</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1053</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1053</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;IOServiceNameMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;IOServiceNameMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1053</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1053</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1054</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1054</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1054</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableDictionaryRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5d956e58f05bcc1b67ff65e02cbba302</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOServiceNameMatching_wrapper</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1054</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1052</integer>
- <integer>1053</integer>
- <integer>1054</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1061</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1061</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1061</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1061</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1061</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1063</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1063</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1063</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1063</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1063</integer>
- <key>col</key><integer>65</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>84a53bfb58a3a929535b47e28b997382</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOServiceAddNotification_wrapper</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1063</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1058</integer>
- <integer>1059</integer>
- <integer>1061</integer>
- <integer>1062</integer>
- <integer>1063</integer>
- <integer>1064</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1068</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1068</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1068</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;IORegistryEntryIDMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;IORegistryEntryIDMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1068</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1068</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1069</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1069</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1069</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableDictionaryRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>36337ff486f6a8b702e68d13393bc975</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IORegistryEntryIDMatching_wrapper</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1069</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1067</integer>
- <integer>1068</integer>
- <integer>1069</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1073</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1073</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1073</integer>
- <key>col</key><integer>55</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;IOOpenFirmwarePathMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;IOOpenFirmwarePathMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1073</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1073</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1074</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1074</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1074</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableDictionaryRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ee83ca968ddc2ecad7ae4318ce7d1d95</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOOpenFirmwarePathMatching_wrapper</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1074</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1071</integer>
- <integer>1072</integer>
- <integer>1073</integer>
- <integer>1074</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1077</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1077</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1077</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1077</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1077</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>51</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>50</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1079</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1079</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1079</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1079</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1079</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>e8c08b2b3d53f5890907888e16927805</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOServiceGetMatchingService_wrapper</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1079</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1076</integer>
- <integer>1077</integer>
- <integer>1078</integer>
- <integer>1079</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1083</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1083</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1083</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1083</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1083</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>62</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>44</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>51</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1085</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1085</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1085</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1085</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1085</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>31664b5acc7980da73f5545fb16b0910</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOServiceGetMatchingServices_wrapper</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1085</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1082</integer>
- <integer>1083</integer>
- <integer>1084</integer>
- <integer>1085</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1091</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1091</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1091</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1091</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1091</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>106</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>66</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>73</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1093</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1093</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1093</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1093</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1093</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6edae46016a9671e2d5400b100d5efb5</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOServiceAddMatchingNotification_wrapper</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1093</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1088</integer>
- <integer>1089</integer>
- <integer>1091</integer>
- <integer>1092</integer>
- <integer>1093</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1131</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1131</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1134</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1134</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1134</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1134</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1134</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1134</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1134</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count decremented</string>
- <key>message</key>
- <string>Reference count decremented</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1138</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1138</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1138</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1138</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1138</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;number&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>dcec4e2bd254a3c24e84e598b5a827bf</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_7152619</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1138</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>67</integer>
- <integer>68</integer>
- <integer>69</integer>
- <integer>70</integer>
- <integer>71</integer>
- <integer>1130</integer>
- <integer>1131</integer>
- <integer>1132</integer>
- <integer>1133</integer>
- <integer>1134</integer>
- <integer>1135</integer>
- <integer>1136</integer>
- <integer>1137</integer>
- <integer>1138</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1147</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1147</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1159</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1159</integer>
- <key>col</key><integer>67</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1159</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1159</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1159</integer>
- <key>col</key><integer>69</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CGColorSpaceCreateDeviceRGB&apos; returns a Core Foundation object of type &apos;CGColorSpaceRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CGColorSpaceCreateDeviceRGB&apos; returns a Core Foundation object of type &apos;CGColorSpaceRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1159</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1159</integer>
- <key>col</key><integer>67</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CGColorSpaceRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CGColorSpaceRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CGColorSpaceRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>9317a6bf07dd10dc988f2415cc2c4ef7</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_7184450</string>
- <key>issue_hash_function_offset</key><string>13</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1145</integer>
- <integer>1146</integer>
- <integer>1147</integer>
- <integer>1148</integer>
- <integer>1149</integer>
- <integer>1150</integer>
- <integer>1151</integer>
- <integer>1152</integer>
- <integer>1153</integer>
- <integer>1154</integer>
- <integer>1155</integer>
- <integer>1158</integer>
- <integer>1159</integer>
- <integer>1160</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1169</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1169</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>66</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>68</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CGColorSpaceCreateDeviceRGB&apos; returns a Core Foundation object of type &apos;CGColorSpaceRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CGColorSpaceCreateDeviceRGB&apos; returns a Core Foundation object of type &apos;CGColorSpaceRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>66</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CGColorSpaceRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CGColorSpaceRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CGColorSpaceRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ec3e6216b279aa48d8403c6aab30d996</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_7184450_pos</string>
- <key>issue_hash_function_offset</key><string>13</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1167</integer>
- <integer>1168</integer>
- <integer>1169</integer>
- <integer>1170</integer>
- <integer>1171</integer>
- <integer>1172</integer>
- <integer>1173</integer>
- <integer>1174</integer>
- <integer>1175</integer>
- <integer>1176</integer>
- <integer>1177</integer>
- <integer>1180</integer>
- <integer>1181</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1169</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1169</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>107</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CGGradientCreateWithColorComponents&apos; returns a Core Foundation object of type &apos;CGGradientRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CGGradientCreateWithColorComponents&apos; returns a Core Foundation object of type &apos;CGGradientRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1183</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1183</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1183</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1183</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1185</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1185</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1185</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;myGradient&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;myGradient&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;myGradient&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4b3d6bb6b8dc5c51b7dfa8554b24eb66</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_7184450_pos</string>
- <key>issue_hash_function_offset</key><string>13</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1185</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1167</integer>
- <integer>1168</integer>
- <integer>1169</integer>
- <integer>1170</integer>
- <integer>1171</integer>
- <integer>1172</integer>
- <integer>1173</integer>
- <integer>1174</integer>
- <integer>1175</integer>
- <integer>1176</integer>
- <integer>1177</integer>
- <integer>1180</integer>
- <integer>1181</integer>
- <integer>1183</integer>
- <integer>1184</integer>
- <integer>1185</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1219</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1219</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1219</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1219</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1219</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1220</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1220</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1220</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;number&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>42a83016e862ec323e24920873073a5a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_7299394_positive</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1220</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1218</integer>
- <integer>1219</integer>
- <integer>1220</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1454</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1456</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1457</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CGBitmapContextCreateWithData&apos; returns a Core Foundation object of type &apos;CGContextRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CGBitmapContextCreateWithData&apos; returns a Core Foundation object of type &apos;CGContextRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1456</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1458</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1458</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1458</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CGContextRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CGContextRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CGContextRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a416473fed3a9dbc6bfee885bee38216</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_7358899</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1458</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1446</integer>
- <integer>1447</integer>
- <integer>1448</integer>
- <integer>1449</integer>
- <integer>1454</integer>
- <integer>1456</integer>
- <integer>1457</integer>
- <integer>1458</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1474</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1474</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1474</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1474</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1474</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1475</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1475</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1475</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;y&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;y&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;y&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>980dd45e9cf6581dbc2be9ebfc500b7f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar7265711_a</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1475</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1473</integer>
- <integer>1474</integer>
- <integer>1475</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1494</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1494</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1495</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1495</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1495</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1495</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1495</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1495</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1495</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1496</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1496</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1496</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;number&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ebf51fb2b16499cf3a5c57d251a91061</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar7306898</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1496</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1491</integer>
- <integer>1494</integer>
- <integer>1495</integer>
- <integer>1496</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>The &apos;release&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- <key>message</key>
- <string>The &apos;release&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- </dict>
- </array>
- <key>description</key><string>The &apos;release&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>message incorrectly sent to class instead of class instance</string>
- <key>check_name</key><string>osx.cocoa.ClassRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>bdc4aaf3d712232f4ae72dce230189f9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar7252064</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1504</integer>
- <integer>1505</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1506</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1506</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1506</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1506</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1506</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>The &apos;retain&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- <key>message</key>
- <string>The &apos;retain&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- </dict>
- </array>
- <key>description</key><string>The &apos;retain&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>message incorrectly sent to class instead of class instance</string>
- <key>check_name</key><string>osx.cocoa.ClassRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b767178ef573c7bd520dc62faabc32fc</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar7252064</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1506</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1504</integer>
- <integer>1505</integer>
- <integer>1506</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1507</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1507</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1507</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1507</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1507</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>The &apos;autorelease&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- <key>message</key>
- <string>The &apos;autorelease&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- </dict>
- </array>
- <key>description</key><string>The &apos;autorelease&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>message incorrectly sent to class instead of class instance</string>
- <key>check_name</key><string>osx.cocoa.ClassRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3dbe304966f8bffa6bdefc5f3ada7df6</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar7252064</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1507</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1504</integer>
- <integer>1505</integer>
- <integer>1506</integer>
- <integer>1507</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1508</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1508</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1508</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1508</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1508</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>The &apos;drain&apos; message should be sent to instances of class &apos;NSAutoreleasePool&apos; and not the class directly</string>
- <key>message</key>
- <string>The &apos;drain&apos; message should be sent to instances of class &apos;NSAutoreleasePool&apos; and not the class directly</string>
- </dict>
- </array>
- <key>description</key><string>The &apos;drain&apos; message should be sent to instances of class &apos;NSAutoreleasePool&apos; and not the class directly</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>message incorrectly sent to class instead of class instance</string>
- <key>check_name</key><string>osx.cocoa.ClassRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c519bce30f1da4bb6e3ecc46453d6958</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar7252064</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1508</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1504</integer>
- <integer>1505</integer>
- <integer>1506</integer>
- <integer>1507</integer>
- <integer>1508</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1535</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1535</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1535</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1535</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1535</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1536</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1536</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1536</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;str&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;str&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;str&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1174ccc2a30887ebf80fe25fc6722b1a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_attr_1</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1536</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1534</integer>
- <integer>1535</integer>
- <integer>1536</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1539</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1539</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1539</integer>
- <key>col</key><integer>44</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns a Core Foundation object of type &apos;NSString *&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Method returns a Core Foundation object of type &apos;NSString *&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1539</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1539</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1540</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1540</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1540</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;str&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;str&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;str&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ce9963dd1c85ac22cea4e4fef615354e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_attr_1b</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1540</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1538</integer>
- <integer>1539</integer>
- <integer>1540</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1543</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1543</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1544</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1544</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1544</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1544</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1544</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1544</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1544</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;str2&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;str2&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;str2&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>0183088266857082f35eb17f1377fd69</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_attr1c</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1542</integer>
- <integer>1543</integer>
- <integer>1544</integer>
- <integer>1545</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1543</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1543</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +0 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1547</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1547</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1547</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;str4&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;str4&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;str4&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>352a17ef8eddd3aa5f7f6e74a74a4df3</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_attr1c</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1547</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1542</integer>
- <integer>1543</integer>
- <integer>1544</integer>
- <integer>1545</integer>
- <integer>1546</integer>
- <integer>1547</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1550</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1550</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1550</integer>
- <key>col</key><integer>50</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of TestOwnershipAttr with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of TestOwnershipAttr with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1550</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1550</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1551</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1551</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1551</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;x&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d0e564404585060990202acb33f0bb1e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testattr2_a</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1551</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1549</integer>
- <integer>1550</integer>
- <integer>1551</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1554</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1554</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1554</integer>
- <key>col</key><integer>63</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1554</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1554</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;x&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>567dfcbc22471ca4ba9f2fccd9ff14fb</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testattr2_b</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1553</integer>
- <integer>1554</integer>
- <integer>1555</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1558</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1558</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1558</integer>
- <key>col</key><integer>63</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1558</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1558</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1559</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1559</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1559</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1559</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1560</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1560</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1560</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;x&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>83cd2670977d513443836653fee8147b</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testattr2_b_11358224_self_assign_looses_the_leak</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1560</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1557</integer>
- <integer>1558</integer>
- <integer>1559</integer>
- <integer>1560</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1590</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1590</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1590</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1590</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1590</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1590</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method that is annotated as NS_RETURNS_NOT_RETAINED</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method that is annotated as NS_RETURNS_NOT_RETAINED</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;NSString *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f83246e7e738918426df1adc915f4eca</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>newString</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1590</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1589</integer>
- <integer>1590</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;returnsCFRetainedAsCF&apos;</string>
- <key>message</key>
- <string>Calling &apos;returnsCFRetainedAsCF&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1614</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;newCFRetainedAsCFNoAttr&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;newCFRetainedAsCFNoAttr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1614</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1614</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling &apos;returnsRetainedCFDate&apos;</string>
- <key>message</key>
- <string>Calling &apos;returnsRetainedCFDate&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;returnsCFRetainedAsCF&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;returnsCFRetainedAsCF&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>52</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning from &apos;returnsRetainedCFDate&apos;</string>
- <key>message</key>
- <string>Returning from &apos;returnsRetainedCFDate&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;returnsCFRetainedAsCF&apos;</string>
- <key>message</key>
- <string>Returning from &apos;returnsCFRetainedAsCF&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>66</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>66</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- </dict>
- </array>
- <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Method should return an owned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5f233261d96f1d461af36fc3e0efc8eb</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>newCFRetainedAsCFNoAttr</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1604</integer>
- <integer>1605</integer>
- <integer>1606</integer>
- <integer>1614</integer>
- <integer>1615</integer>
- <integer>1622</integer>
- <integer>1623</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;returnsRetainedCFDate&apos;</string>
- <key>message</key>
- <string>Calling &apos;returnsRetainedCFDate&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;alsoReturnsRetained&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;alsoReturnsRetained&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>52</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;returnsRetainedCFDate&apos;</string>
- <key>message</key>
- <string>Returning from &apos;returnsRetainedCFDate&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFDateRef&apos; is returned from a method whose name (&apos;alsoReturnsRetained&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFDateRef&apos; is returned from a method whose name (&apos;alsoReturnsRetained&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFDateRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>7ee55b74b5ee01c6ffa2a3d83c8cf88b</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>alsoReturnsRetained</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1604</integer>
- <integer>1605</integer>
- <integer>1606</integer>
- <integer>1626</integer>
- <integer>1627</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;returnsRetainedCFDate&apos;</string>
- <key>message</key>
- <string>Calling &apos;returnsRetainedCFDate&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;alsoReturnsRetainedAsCF&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;alsoReturnsRetainedAsCF&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>52</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;returnsRetainedCFDate&apos;</string>
- <key>message</key>
- <string>Returning from &apos;returnsRetainedCFDate&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFDateRef&apos; is returned from a method whose name (&apos;alsoReturnsRetainedAsCF&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFDateRef&apos; is returned from a method whose name (&apos;alsoReturnsRetainedAsCF&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFDateRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>177b2cf7eb3d8334393ee0861f5a38ac</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>alsoReturnsRetainedAsCF</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1604</integer>
- <integer>1605</integer>
- <integer>1606</integer>
- <integer>1630</integer>
- <integer>1631</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1651</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1651</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1652</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1652</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1652</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1652</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1652</integer>
- <key>col</key><integer>82</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFNumberCreate&apos; returns a Core Foundation object of type &apos;CFNumberRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFNumberCreate&apos; returns a Core Foundation object of type &apos;CFNumberRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1652</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1652</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1653</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1653</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1653</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;value&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>85e9d8130a1f1ec37f0ba26746abd749</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_panic_negative</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1653</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1650</integer>
- <integer>1651</integer>
- <integer>1652</integer>
- <integer>1653</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1662</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1662</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1663</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1663</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1663</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1663</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1663</integer>
- <key>col</key><integer>82</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFNumberCreate&apos; returns a Core Foundation object of type &apos;CFNumberRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFNumberCreate&apos; returns a Core Foundation object of type &apos;CFNumberRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1663</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1663</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;x&apos; is 0</string>
- <key>message</key>
- <string>Assuming &apos;x&apos; is 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1666</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1666</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1666</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;value&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4a0b16976e0517b38b2ccc16e2928c2e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_panic_neg_2</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1666</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1661</integer>
- <integer>1662</integer>
- <integer>1663</integer>
- <integer>1664</integer>
- <integer>1666</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1686</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1686</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1686</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1686</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1686</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1687</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1687</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1687</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1687</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1687</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;number&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>af73d9c62952a300a7c393ebd5073f75</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_blocks_1_pos</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1687</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1685</integer>
- <integer>1686</integer>
- <integer>1687</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1707</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1707</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1707</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1707</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1707</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_blocks_1_indirect_retain_via_call&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_blocks_1_indirect_retain_via_call&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning to caller</string>
- <key>message</key>
- <string>Returning to caller</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1709</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1709</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1709</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +2</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +2</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;number&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>771b2a332053388ffbdd9ba74ea84c5e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_blocks_1_indirect_retain_via_call</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1709</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1706</integer>
- <integer>1707</integer>
- <integer>1708</integer>
- <integer>1709</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1759</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1759</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;error_to_dump&apos; is not equal to null</string>
- <key>message</key>
- <string>Assuming &apos;error_to_dump&apos; is not equal to null</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1763</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1763</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1763</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1763</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1765</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1765</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1765</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1765</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1765</integer>
- <key>col</key><integer>49</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFErrorCopyUserInfo&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFErrorCopyUserInfo&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1765</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1765</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;info&apos; is not equal to null</string>
- <key>message</key>
- <string>Assuming &apos;info&apos; is not equal to null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1770</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1770</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1770</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;info&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;info&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;info&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>39f8c30f7436f678d5259c0fdd3a0dad</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_8724287</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1770</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1757</integer>
- <integer>1758</integer>
- <integer>1759</integer>
- <integer>1761</integer>
- <integer>1762</integer>
- <integer>1763</integer>
- <integer>1765</integer>
- <integer>1767</integer>
- <integer>1770</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1815</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1815</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1815</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1815</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1815</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1815</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camelcase_createno&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camelcase_createno&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableArrayRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>107e3efdeb8cdff4bef4c64183c4f6fa</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>camelcase_createno</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1815</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1814</integer>
- <integer>1815</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1823</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1823</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1823</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1823</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1823</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1823</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camelcase_copying&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camelcase_copying&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableArrayRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>20c973a013858abb0a926276c956f858</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>camelcase_copying</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1823</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1822</integer>
- <integer>1823</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1844</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1844</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1844</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1844</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1844</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1844</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camel_creat&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camel_creat&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableArrayRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>80ee99e51561a37297429740e3a4da0c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>camel_creat</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1844</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1843</integer>
- <integer>1844</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1856</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1856</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1856</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1856</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1856</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1856</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camel_copymachine&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camel_copymachine&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableArrayRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a4e28a04f6a8d87c8aaf4d71c37cac0f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>camel_copymachine</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1856</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1855</integer>
- <integer>1856</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1876</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1876</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1877</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1877</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1877</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1877</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1877</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1877</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1877</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1878</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1878</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1878</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;vals&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;vals&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;vals&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6b727a438d8411c058fd32867b9402bc</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar6582778</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1878</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1875</integer>
- <integer>1876</integer>
- <integer>1877</integer>
- <integer>1878</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1902</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1902</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1904</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1904</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1904</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1904</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1904</integer>
- <key>col</key><integer>64</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1904</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1904</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b39dcf9df7cec8dd73cbbe25b2a7d6c5</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar10232019_positive</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1901</integer>
- <integer>1902</integer>
- <integer>1904</integer>
- <integer>1905</integer>
- <integer>1907</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2035</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2035</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2035</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2035</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2035</integer>
- <key>col</key><integer>66</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSArray with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSArray with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2035</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2035</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;a&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;a&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;a&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a501f743b22f1feb5dc317fcad4f7556</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_arrays</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2032</integer>
- <integer>2034</integer>
- <integer>2035</integer>
- <integer>2036</integer>
- <integer>2037</integer>
- <integer>2038</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2044</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2044</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2044</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2044</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2044</integer>
- <key>col</key><integer>56</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSArray with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSArray with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2044</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2044</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;a2&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;a2&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;a2&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a141a6ad33e8ff2ae3b13da0ad36ebc5</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_arrays</string>
- <key>issue_hash_function_offset</key><string>12</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2032</integer>
- <integer>2034</integer>
- <integer>2035</integer>
- <integer>2036</integer>
- <integer>2037</integer>
- <integer>2038</integer>
- <integer>2042</integer>
- <integer>2043</integer>
- <integer>2044</integer>
- <integer>2045</integer>
- <integer>2046</integer>
- <integer>2047</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSArray literal is an object with a +0 retain count</string>
- <key>message</key>
- <string>NSArray literal is an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;a3&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;a3&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;a3&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2b072d75e8da8e3fe8f7968a85efb37c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_arrays</string>
- <key>issue_hash_function_offset</key><string>20</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2032</integer>
- <integer>2034</integer>
- <integer>2035</integer>
- <integer>2036</integer>
- <integer>2037</integer>
- <integer>2038</integer>
- <integer>2042</integer>
- <integer>2043</integer>
- <integer>2044</integer>
- <integer>2045</integer>
- <integer>2046</integer>
- <integer>2047</integer>
- <integer>2051</integer>
- <integer>2052</integer>
- <integer>2053</integer>
- <integer>2054</integer>
- <integer>2055</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2060</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2060</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2060</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2060</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2060</integer>
- <key>col</key><integer>57</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSArray with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSArray with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2060</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2060</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;a&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;a&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;a&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>0bfdfb7e392626e0fccc6ab9f58f1ca8</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_arrays</string>
- <key>issue_hash_function_offset</key><string>28</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2032</integer>
- <integer>2034</integer>
- <integer>2035</integer>
- <integer>2036</integer>
- <integer>2037</integer>
- <integer>2038</integer>
- <integer>2042</integer>
- <integer>2043</integer>
- <integer>2044</integer>
- <integer>2045</integer>
- <integer>2046</integer>
- <integer>2047</integer>
- <integer>2051</integer>
- <integer>2052</integer>
- <integer>2053</integer>
- <integer>2054</integer>
- <integer>2055</integer>
- <integer>2059</integer>
- <integer>2060</integer>
- <integer>2061</integer>
- <integer>2063</integer>
- <integer>2064</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2068</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2068</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2068</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2068</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSDictionary literal is an object with a +0 retain count</string>
- <key>message</key>
- <string>NSDictionary literal is an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2073</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2073</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2073</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2073</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2073</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;a&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;a&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;a&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ff7c34e661a42d06a7fb3e9669e70339</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_arrays</string>
- <key>issue_hash_function_offset</key><string>37</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2073</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2032</integer>
- <integer>2034</integer>
- <integer>2035</integer>
- <integer>2036</integer>
- <integer>2037</integer>
- <integer>2038</integer>
- <integer>2042</integer>
- <integer>2043</integer>
- <integer>2044</integer>
- <integer>2045</integer>
- <integer>2046</integer>
- <integer>2047</integer>
- <integer>2051</integer>
- <integer>2052</integer>
- <integer>2053</integer>
- <integer>2054</integer>
- <integer>2055</integer>
- <integer>2059</integer>
- <integer>2060</integer>
- <integer>2061</integer>
- <integer>2063</integer>
- <integer>2064</integer>
- <integer>2068</integer>
- <integer>2069</integer>
- <integer>2070</integer>
- <integer>2072</integer>
- <integer>2073</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSNumber literal is an object with a +0 retain count</string>
- <key>message</key>
- <string>NSNumber literal is an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2079</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2079</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2079</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2079</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2080</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2080</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2080</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;value&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>73e84c042932d2e17e00f00dc3d36d5a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_integer_literals</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2080</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2077</integer>
- <integer>2078</integer>
- <integer>2079</integer>
- <integer>2080</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSNumber boxed expression produces an object with a +0 retain count</string>
- <key>message</key>
- <string>NSNumber boxed expression produces an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;value&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>465e592d4f7a187717d00b8154a614b5</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_boxed_expressions</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2082</integer>
- <integer>2083</integer>
- <integer>2084</integer>
- <integer>2086</integer>
- <integer>2087</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSString boxed expression produces an object with a +0 retain count</string>
- <key>message</key>
- <string>NSString boxed expression produces an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2088</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2088</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2088</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;value&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c701bd0c60f51d96c047aa78c9e0eb99</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_boxed_expressions</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2088</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2082</integer>
- <integer>2083</integer>
- <integer>2084</integer>
- <integer>2086</integer>
- <integer>2087</integer>
- <integer>2088</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2094</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2094</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;y&apos; is &lt;= 2</string>
- <key>message</key>
- <string>Assuming &apos;y&apos; is &lt;= 2</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2098</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2098</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2098</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2098</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2098</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2098</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2098</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2099</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2099</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2099</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2099</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2101</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2101</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2101</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2101</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2101</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a4cedbb647e9632da7a5072cb839e54a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar11400885</string>
- <key>issue_hash_function_offset</key><string>9</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2101</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2091</integer>
- <integer>2092</integer>
- <integer>2094</integer>
- <integer>2095</integer>
- <integer>2098</integer>
- <integer>2099</integer>
- <integer>2100</integer>
- <integer>2101</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2119</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2119</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2127</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2127</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2127</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2127</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2127</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSArray literal is an object with a +0 retain count</string>
- <key>message</key>
- <string>NSArray literal is an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2127</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2127</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2128</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2128</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2128</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2128</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2128</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>fd9427d86a2357fd92478c9c7abbc1f4</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testConsumeAndStopTracking</string>
- <key>issue_hash_function_offset</key><string>10</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2128</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2118</integer>
- <integer>2119</integer>
- <integer>2120</integer>
- <integer>2122</integer>
- <integer>2123</integer>
- <integer>2127</integer>
- <integer>2128</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2132</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2132</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2140</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2140</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2140</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2140</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2140</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSArray literal is an object with a +0 retain count</string>
- <key>message</key>
- <string>NSArray literal is an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2140</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2140</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2141</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2141</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2141</integer>
- <key>col</key><integer>48</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>0e65e51476e5671dcd37f632806e5147</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCFConsumeAndStopTracking</string>
- <key>issue_hash_function_offset</key><string>10</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2131</integer>
- <integer>2132</integer>
- <integer>2133</integer>
- <integer>2135</integer>
- <integer>2136</integer>
- <integer>2140</integer>
- <integer>2141</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2153</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2153</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2153</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CreateMyCFType&apos; returns a Core Foundation object of type &apos;MyCFType&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CreateMyCFType&apos; returns a Core Foundation object of type &apos;MyCFType&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2153</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2154</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2154</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2154</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;x&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a0ba9c47505e923763ea5323ad2f71b7</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_custom_cf</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2154</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2152</integer>
- <integer>2153</integer>
- <integer>2154</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2188</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2188</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2188</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;makeCustom&apos; returns a Core Foundation object of type &apos;MyCFType&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;makeCustom&apos; returns a Core Foundation object of type &apos;MyCFType&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2188</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2188</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2189</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2189</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2189</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;obj&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;obj&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;obj&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>7a6cf8cb3c5e0ca3125d7e27695a810a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCustomReturnsRetained</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2189</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2187</integer>
- <integer>2188</integer>
- <integer>2189</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2192</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2192</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2192</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;getCustom&apos; returns a Core Foundation object of type &apos;MyCFType&apos; with a +0 retain count</string>
- <key>message</key>
- <string>Call to function &apos;getCustom&apos; returns a Core Foundation object of type &apos;MyCFType&apos; with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2192</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2192</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2192</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>810fce32373fe40ba8e2d0894d46f667</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCustomReturnsNotRetained</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2192</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2191</integer>
- <integer>2192</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of MyObj12706177 with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of MyObj12706177 with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;initX&apos;</string>
- <key>message</key>
- <string>Calling &apos;initX&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2204</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test12706177&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test12706177&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2204</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2204</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Assuming &apos;Cond&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;Cond&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2206</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2206</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;initX&apos;</string>
- <key>message</key>
- <string>Returning from &apos;initX&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;MyObj12706177 *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;MyObj12706177 *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;MyObj12706177 *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>68ee7961ffb62c575cc2298cb4836090</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>test12706177</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2204</integer>
- <integer>2205</integer>
- <integer>2206</integer>
- <integer>2210</integer>
- <integer>2211</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFGetSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFGetSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased but has a +0 retain count</string>
- <key>message</key>
- <string>Object was autoreleased but has a +0 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1dc376fbbe90d14b6766585a0e2b7bee</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>getIncorrectlyAutoreleasedCFType</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2225</integer>
- <integer>2227</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- </dict>
- </array>
- <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Method should return an owned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6ae8ea9fe4bf203e6b7bfaf649a6ca6a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>createIncorrectlyAutoreleasedCFType</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2230</integer>
- <integer>2232</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2247</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2247</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2247</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2247</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2247</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2251</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2251</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2251</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2251</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2251</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d4e28f96fc8610b5b4b849f4760956eb</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>useAfterRelease</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2251</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2244</integer>
- <integer>2247</integer>
- <integer>2248</integer>
- <integer>2251</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2256</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2256</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2256</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2256</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2256</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2259</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2259</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2259</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;obj&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;obj&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;obj&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>7986c4b7fb29301c109343dfe4155202</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testAutoreleaseReturnsInput</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2259</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2254</integer>
- <integer>2256</integer>
- <integer>2257</integer>
- <integer>2258</integer>
- <integer>2259</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2276</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2276</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2276</integer>
- <key>col</key><integer>70</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2276</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2276</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>62</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>48</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>61</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2279</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2279</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2279</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;arr&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;arr&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;arr&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2e0dbfdf379acf2f09e46db47d753e8a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>autoreleaseReturningTypedObject</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2279</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2275</integer>
- <integer>2276</integer>
- <integer>2277</integer>
- <integer>2278</integer>
- <integer>2279</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2290</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2290</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2293</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2293</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2293</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2293</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2293</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSNumber literal is an object with a +0 retain count</string>
- <key>message</key>
- <string>NSNumber literal is an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2293</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2293</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2295</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2295</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2295</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased but has a +0 retain count</string>
- <key>message</key>
- <string>Object was autoreleased but has a +0 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>41a2d6f91fdfa9b5f396102a60571e21</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>autoreleaseObjC</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2295</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2289</integer>
- <integer>2290</integer>
- <integer>2291</integer>
- <integer>2293</integer>
- <integer>2294</integer>
- <integer>2295</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2345</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2345</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2346</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2346</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2346</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2346</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2346</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;getViaParam&apos; writes a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count into an out parameter &apos;outObj&apos;</string>
- <key>message</key>
- <string>Call to function &apos;getViaParam&apos; writes a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count into an out parameter &apos;outObj&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2346</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2346</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2347</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2347</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2347</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2347</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2347</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>95dd5581ae4195b71e9a11f34290af5d</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCFReturnsNotRetained</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2347</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2343</integer>
- <integer>2345</integer>
- <integer>2346</integer>
- <integer>2347</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2352</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2352</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2353</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2353</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;getViaParam2&apos; writes a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count into an out parameter &apos;outObj&apos;</string>
- <key>message</key>
- <string>Call to function &apos;getViaParam2&apos; writes a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count into an out parameter &apos;outObj&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2353</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2354</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2354</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2354</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>014103674df4a8a65a96bcdf936637a2</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCFReturnsNotRetainedAnnotated</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2350</integer>
- <integer>2352</integer>
- <integer>2353</integer>
- <integer>2354</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/Volumes/Transcend/code/monorepo/llvm-project/clang/test/Analysis/retain-release.m</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/retain-release.m.objcpp.plist b/test/Analysis/Inputs/expected-plists/retain-release.m.objcpp.plist
deleted file mode 100644
index 88e92cb3e64b..000000000000
--- a/test/Analysis/Inputs/expected-plists/retain-release.m.objcpp.plist
+++ /dev/null
@@ -1,26182 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>348</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>348</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>349</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>349</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>349</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>349</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>349</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>349</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>349</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>350</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>351</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>353</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5928b2a4699cbae0686391c20e639007</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f1</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>354</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>347</integer>
- <integer>348</integer>
- <integer>349</integer>
- <integer>350</integer>
- <integer>351</integer>
- <integer>352</integer>
- <integer>353</integer>
- <integer>354</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>359</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>359</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>360</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>360</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>360</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>360</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>360</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>360</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>360</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>361</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count decremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>362</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>364</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6b2e175938153ac041f52ebbf50b1f43</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f2</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>365</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>358</integer>
- <integer>359</integer>
- <integer>360</integer>
- <integer>361</integer>
- <integer>362</integer>
- <integer>363</integer>
- <integer>364</integer>
- <integer>365</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>395</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>395</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>396</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>396</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>396</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>396</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>396</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>396</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>396</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;x&apos; is 0</string>
- <key>message</key>
- <string>Assuming &apos;x&apos; is 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>398</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;date&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3fdbd844ddb925306ba2bb1b3626f310</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f5</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>401</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>394</integer>
- <integer>395</integer>
- <integer>396</integer>
- <integer>398</integer>
- <integer>401</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>407</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>407</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>407</integer>
- <key>col</key><integer>62</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>407</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>407</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>408</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>409</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>409</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>409</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>409</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>409</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;date&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8529da75e357c59fb0a7fefb0b6e0952</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f6</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>409</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>406</integer>
- <integer>407</integer>
- <integer>408</integer>
- <integer>409</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>415</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>415</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>415</integer>
- <key>col</key><integer>62</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>415</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>415</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>416</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +2</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +2</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;date&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>eb0faa12081b1e28b218e4c6e53d57ec</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f7</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>414</integer>
- <integer>415</integer>
- <integer>416</integer>
- <integer>417</integer>
- <integer>418</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>415</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>415</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>52</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>417</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is returned from a function whose name (&apos;f7&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is returned from a function whose name (&apos;f7&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;date&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>404d4de8faa444bc52fd510380bd0a63</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f7</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>418</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>414</integer>
- <integer>415</integer>
- <integer>416</integer>
- <integer>417</integer>
- <integer>418</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>426</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>426</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>426</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;MyDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;MyDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>426</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>426</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>427</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>428</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>428</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>428</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>428</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>428</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;date&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;date&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>251dff6727b3d99ec95caa28672669ea</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f8</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>428</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>425</integer>
- <integer>426</integer>
- <integer>427</integer>
- <integer>428</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>432</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>432</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>433</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;date&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;date&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4af5d8d1438976cc7fa006af5f843b13</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f9</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>435</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>431</integer>
- <integer>432</integer>
- <integer>433</integer>
- <integer>435</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>75</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;DADiskCreateFromBSDName&apos; returns a Core Foundation object of type &apos;DADiskRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;DADiskCreateFromBSDName&apos; returns a Core Foundation object of type &apos;DADiskRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is non-null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is non-null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;disk&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;disk&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;disk&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>69ae08a90fe52a921ed423df38ed7480</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f10</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>443</integer>
- <integer>444</integer>
- <integer>445</integer>
- <integer>447</integer>
- <integer>448</integer>
- <integer>450</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>49</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;DADiskCopyDescription&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;DADiskCopyDescription&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;dict&apos; is non-null</string>
- <key>message</key>
- <string>Assuming &apos;dict&apos; is non-null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;dict&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;dict&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;dict&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a7f8c63b1cdc39df79b7457e27ff4930</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f10</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>443</integer>
- <integer>444</integer>
- <integer>445</integer>
- <integer>447</integer>
- <integer>448</integer>
- <integer>450</integer>
- <integer>451</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;DADiskCopyWholeDisk&apos; returns a Core Foundation object of type &apos;DADiskRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;DADiskCopyWholeDisk&apos; returns a Core Foundation object of type &apos;DADiskRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is non-null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is non-null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;disk&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;disk&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;disk&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>cace8e35bed93ecdfa0455ac166aaa97</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f10</string>
- <key>issue_hash_function_offset</key><string>10</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>443</integer>
- <integer>444</integer>
- <integer>445</integer>
- <integer>447</integer>
- <integer>448</integer>
- <integer>450</integer>
- <integer>451</integer>
- <integer>453</integer>
- <integer>454</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>63</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;DADiskCreateFromIOMedia&apos; returns a Core Foundation object of type &apos;DADiskRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;DADiskCreateFromIOMedia&apos; returns a Core Foundation object of type &apos;DADiskRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is non-null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is non-null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;disk&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;disk&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;disk&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>778f70549a15e78703b4dcb3a287df33</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f10</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>443</integer>
- <integer>444</integer>
- <integer>445</integer>
- <integer>447</integer>
- <integer>448</integer>
- <integer>450</integer>
- <integer>451</integer>
- <integer>453</integer>
- <integer>454</integer>
- <integer>456</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>457</integer>
- <key>col</key><integer>68</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;DADissenterCreate&apos; returns a Core Foundation object of type &apos;DADissenterRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;DADissenterCreate&apos; returns a Core Foundation object of type &apos;DADissenterRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;dissenter&apos; is non-null</string>
- <key>message</key>
- <string>Assuming &apos;dissenter&apos; is non-null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;dissenter&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;dissenter&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;dissenter&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6c188b4716e84cdc55b93d40e6c2daf3</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f10</string>
- <key>issue_hash_function_offset</key><string>13</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>443</integer>
- <integer>444</integer>
- <integer>445</integer>
- <integer>447</integer>
- <integer>448</integer>
- <integer>450</integer>
- <integer>451</integer>
- <integer>453</integer>
- <integer>454</integer>
- <integer>456</integer>
- <integer>457</integer>
- <integer>458</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>444</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>445</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>447</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>448</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>450</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;dict&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>451</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>453</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;disk&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>454</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>456</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;dissenter&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;dissenter&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>458</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>61</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;DASessionCreate&apos; returns a Core Foundation object of type &apos;DASessionRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;DASessionCreate&apos; returns a Core Foundation object of type &apos;DASessionRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>460</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;session&apos; is non-null</string>
- <key>message</key>
- <string>Assuming &apos;session&apos; is non-null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;session&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;session&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;session&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>35b9ac7ff198890c88d5839a898b7fea</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f10</string>
- <key>issue_hash_function_offset</key><string>17</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>461</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>443</integer>
- <integer>444</integer>
- <integer>445</integer>
- <integer>447</integer>
- <integer>448</integer>
- <integer>450</integer>
- <integer>451</integer>
- <integer>453</integer>
- <integer>454</integer>
- <integer>456</integer>
- <integer>457</integer>
- <integer>458</integer>
- <integer>460</integer>
- <integer>461</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>478</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>478</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>478</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CMCreateFooRef&apos; returns a Core Foundation object of type &apos;CMFooRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CMCreateFooRef&apos; returns a Core Foundation object of type &apos;CMFooRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>478</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>478</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>479</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>479</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>479</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;f&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;f&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;f&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>17d84d673b35235b52d8f8f00c1d1eea</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testLeakCoreMediaReferenceType</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>479</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>477</integer>
- <integer>478</integer>
- <integer>479</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>482</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>482</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>482</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CMGetFooRef&apos; returns a Core Foundation object of type &apos;CMFooRef&apos; with a +0 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CMGetFooRef&apos; returns a Core Foundation object of type &apos;CMFooRef&apos; with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>482</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>482</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>483</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>483</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>483</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>483</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>483</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1702285448a953b02ab74a8eb9a610d9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testOverReleaseMediaReferenceType</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>483</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>481</integer>
- <integer>482</integer>
- <integer>483</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>57</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;buffer&apos; is not equal to &apos;queue&apos;</string>
- <key>message</key>
- <string>Assuming &apos;buffer&apos; is not equal to &apos;queue&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>FALSE</string>
- <key>message</key>
- <string>FALSE</string>
- </dict>
- </array>
- <key>description</key><string>FALSE</string>
- <key>category</key><string>debug</string>
- <key>type</key><string>Checking analyzer assumptions</string>
- <key>check_name</key><string>debug.ExprInspection</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>78b71dc497a2059b950406cb2a1cfd01</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCMBufferQueueDequeueAndRetain</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>515</integer>
- <integer>516</integer>
- <integer>520</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>57</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;buffer&apos; is equal to &apos;queue&apos;</string>
- <key>message</key>
- <string>Assuming &apos;buffer&apos; is equal to &apos;queue&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>TRUE</string>
- <key>message</key>
- <string>TRUE</string>
- </dict>
- </array>
- <key>description</key><string>TRUE</string>
- <key>category</key><string>debug</string>
- <key>type</key><string>Checking analyzer assumptions</string>
- <key>check_name</key><string>debug.ExprInspection</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>78b71dc497a2059b950406cb2a1cfd01</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCMBufferQueueDequeueAndRetain</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>515</integer>
- <integer>516</integer>
- <integer>520</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>59</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CMBufferQueueDequeueAndRetain&apos; returns a Core Foundation object of type &apos;CMBufferRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CMBufferQueueDequeueAndRetain&apos; returns a Core Foundation object of type &apos;CMBufferRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>516</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>57</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;buffer&apos; is not equal to &apos;queue&apos;</string>
- <key>message</key>
- <string>Assuming &apos;buffer&apos; is not equal to &apos;queue&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;buffer&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;buffer&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;buffer&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>402566b4ddf1683dac1aefc1ab3e76e9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCMBufferQueueDequeueAndRetain</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>520</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>515</integer>
- <integer>516</integer>
- <integer>520</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>527</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>527</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>540</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>540</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>540</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>540</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>540</integer>
- <key>col</key><integer>49</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayGetValueAtIndex&apos; returns a Core Foundation object of type &apos;const void *&apos; with a +0 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayGetValueAtIndex&apos; returns a Core Foundation object of type &apos;const void *&apos; with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>540</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>540</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>546</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>546</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>546</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>546</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>546</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>143ef5974bfece95e9894da5250aaff0</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f11</string>
- <key>issue_hash_function_offset</key><string>21</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>546</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>525</integer>
- <integer>527</integer>
- <integer>530</integer>
- <integer>531</integer>
- <integer>534</integer>
- <integer>537</integer>
- <integer>540</integer>
- <integer>543</integer>
- <integer>546</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>554</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>554</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>554</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;MyCreateFun&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;MyCreateFun&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>554</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>554</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;o&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;o&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;o&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>af4ad99c5fb565d82e1b4848aaca4e24</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f12</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>553</integer>
- <integer>554</integer>
- <integer>555</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>563</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>563</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>563</integer>
- <key>col</key><integer>75</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>563</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>563</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>564</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>565</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
- <key>message</key>
- <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>58a0b3f8332f42561f89b11f6eb5e91f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f13_autorelease_b</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>566</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>562</integer>
- <integer>563</integer>
- <integer>564</integer>
- <integer>565</integer>
- <integer>566</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>569</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>569</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>569</integer>
- <key>col</key><integer>75</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>569</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>569</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>570</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>571</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased 2 times but the object has a +0 retain count</string>
- <key>message</key>
- <string>Object was autoreleased 2 times but the object has a +0 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>612dc6574d54c8010703a9776d8a4a0a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f13_autorelease_c</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>572</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>568</integer>
- <integer>569</integer>
- <integer>570</integer>
- <integer>571</integer>
- <integer>572</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>576</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>576</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>576</integer>
- <key>col</key><integer>75</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>576</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>576</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>577</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>578</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>44</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>75</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
- <key>message</key>
- <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c57037289bc3acc586de325df25951ed</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f13_autorelease_d</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>579</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>575</integer>
- <integer>576</integer>
- <integer>577</integer>
- <integer>578</integer>
- <integer>579</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>587</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>587</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>587</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>587</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>587</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableArrayRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6abb479bc4c7782a125d680fddf825ef</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f14_leakimmediately</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>588</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>586</integer>
- <integer>587</integer>
- <integer>588</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>607</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>607</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>607</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>607</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>607</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer argument in call to CFRelease</string>
- <key>message</key>
- <string>Null pointer argument in call to CFRelease</string>
- </dict>
- </array>
- <key>description</key><string>Null pointer argument in call to CFRelease</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>null passed to CF memory management function</string>
- <key>check_name</key><string>osx.coreFoundation.CFRetainRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>e7e2ba205af363f2c4cec7d01dcb6d6c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f16</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>607</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>601</integer>
- <integer>602</integer>
- <integer>605</integer>
- <integer>606</integer>
- <integer>607</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>610</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>610</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>610</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>610</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>610</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer argument in call to CFRetain</string>
- <key>message</key>
- <string>Null pointer argument in call to CFRetain</string>
- </dict>
- </array>
- <key>description</key><string>Null pointer argument in call to CFRetain</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>null passed to CF memory management function</string>
- <key>check_name</key><string>osx.coreFoundation.CFRetainRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>64f4a3367d5d8e832ca8a23ca4d72717</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f16</string>
- <key>issue_hash_function_offset</key><string>9</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>610</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>601</integer>
- <integer>602</integer>
- <integer>605</integer>
- <integer>609</integer>
- <integer>610</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>613</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>613</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>613</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>613</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>613</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer argument in call to CFMakeCollectable</string>
- <key>message</key>
- <string>Null pointer argument in call to CFMakeCollectable</string>
- </dict>
- </array>
- <key>description</key><string>Null pointer argument in call to CFMakeCollectable</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>null passed to CF memory management function</string>
- <key>check_name</key><string>osx.coreFoundation.CFRetainRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>61123dbb677396de5abbdd778c399140</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f16</string>
- <key>issue_hash_function_offset</key><string>12</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>613</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>601</integer>
- <integer>602</integer>
- <integer>605</integer>
- <integer>612</integer>
- <integer>613</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;p&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;p&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>602</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>605</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>616</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>616</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>616</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>616</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>616</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer argument in call to CFAutorelease</string>
- <key>message</key>
- <string>Null pointer argument in call to CFAutorelease</string>
- </dict>
- </array>
- <key>description</key><string>Null pointer argument in call to CFAutorelease</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>null passed to CF memory management function</string>
- <key>check_name</key><string>osx.coreFoundation.CFRetainRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>965bca78fe04bfa55b6ea428da3c20e3</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f16</string>
- <key>issue_hash_function_offset</key><string>15</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>616</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>601</integer>
- <integer>602</integer>
- <integer>605</integer>
- <integer>615</integer>
- <integer>616</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>656</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>656</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>656</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;isl_basic_map_cow&apos; returns an object of type &apos;isl_basic_map *&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;isl_basic_map_cow&apos; returns an object of type &apos;isl_basic_map *&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>656</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>656</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>657</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>657</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>657</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;bmap&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;bmap&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;bmap&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2cfebefee7b63ce3954419e571be4f63</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>f18</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>657</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>654</integer>
- <integer>656</integer>
- <integer>657</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>682</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>682</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>682</integer>
- <key>col</key><integer>55</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>682</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>682</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>683</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>683</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>683</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>683</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>683</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- </dict>
- </array>
- <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Method should return an owned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>dcd3becc58a149abe6ade5598138d3dd</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>newString</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>683</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>681</integer>
- <integer>682</integer>
- <integer>683</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>63</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;name&apos; is nil</string>
- <key>message</key>
- <string>Assuming &apos;name&apos; is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>704</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>704</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>704</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>704</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>704</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;kind&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;kind&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;kind&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6688c9cb12f0c76ec80eb03b1d2eddf8</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_6659160</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>704</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>690</integer>
- <integer>691</integer>
- <integer>696</integer>
- <integer>702</integer>
- <integer>703</integer>
- <integer>704</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;name&apos; is non-nil</string>
- <key>message</key>
- <string>Assuming &apos;name&apos; is non-nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;kindC&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;kindC&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;kind&apos; is nil</string>
- <key>message</key>
- <string>Assuming &apos;kind&apos; is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Array access (from variable &apos;kindC&apos;) results in a null pointer dereference</string>
- <key>message</key>
- <string>Array access (from variable &apos;kindC&apos;) results in a null pointer dereference</string>
- </dict>
- </array>
- <key>description</key><string>Array access (from variable &apos;kindC&apos;) results in a null pointer dereference</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2824c4e1d4ab13c3ae5a0ebb2aa4ed89</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_6659160</string>
- <key>issue_hash_function_offset</key><string>27</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>690</integer>
- <integer>691</integer>
- <integer>696</integer>
- <integer>702</integer>
- <integer>703</integer>
- <integer>706</integer>
- <integer>707</integer>
- <integer>714</integer>
- <integer>716</integer>
- <integer>717</integer>
- <integer>718</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>696</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>702</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>702</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>702</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>702</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>702</integer>
- <key>col</key><integer>57</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>702</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>702</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;name&apos; is non-nil</string>
- <key>message</key>
- <string>Assuming &apos;name&apos; is non-nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>703</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>706</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;kind&apos; is non-nil</string>
- <key>message</key>
- <string>Assuming &apos;kind&apos; is non-nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>714</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>715</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>715</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>715</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>715</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>716</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>717</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>718</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>720</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>723</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>723</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>723</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>723</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>724</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>724</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>724</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>724</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>724</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d04966e9b8e981d8f69bf03823253033</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_6659160</string>
- <key>issue_hash_function_offset</key><string>33</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>724</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>690</integer>
- <integer>691</integer>
- <integer>696</integer>
- <integer>702</integer>
- <integer>703</integer>
- <integer>706</integer>
- <integer>707</integer>
- <integer>714</integer>
- <integer>715</integer>
- <integer>716</integer>
- <integer>717</integer>
- <integer>718</integer>
- <integer>720</integer>
- <integer>723</integer>
- <integer>724</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>746</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>746</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>746</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>746</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>746</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released by directly sending the &apos;-dealloc&apos; message</string>
- <key>message</key>
- <string>Object released by directly sending the &apos;-dealloc&apos; message</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>747</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>748</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>748</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>748</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>748</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>748</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1b35183a6aca4df5a8732c8da94e3205</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>pr3820_ReleaseAfterDealloc</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>748</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>744</integer>
- <integer>745</integer>
- <integer>746</integer>
- <integer>747</integer>
- <integer>748</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>754</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>754</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>755</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>755</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>755</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>755</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>755</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>755</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>755</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>756</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>757</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>757</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>757</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>757</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>757</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>54f2bd1534fa675b58c4f8eef3120373</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>pr3820_DeallocAfterRelease</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>757</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>752</integer>
- <integer>753</integer>
- <integer>754</integer>
- <integer>755</integer>
- <integer>756</integer>
- <integer>757</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>76</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>84</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>76</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>809</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>813</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>813</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>813</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>813</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>814</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>814</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>814</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;dict&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;dict&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;dict&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>055e6f3413539276fedeac241fccd9b8</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>applicationDidFinishLaunching:</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>814</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>808</integer>
- <integer>809</integer>
- <integer>811</integer>
- <integer>813</integer>
- <integer>814</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>76</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>84</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>76</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>821</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>822</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>824</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>824</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>824</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;dict&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;dict&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;dict&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>444f6019b048a95dd71c6be49ecb73ff</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>radar10102244</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>824</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>820</integer>
- <integer>821</integer>
- <integer>822</integer>
- <integer>824</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>832</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>832</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>833</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>833</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>833</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>833</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>833</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>833</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>833</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>834</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>834</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>834</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>834</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>834</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>641de26edd3d85ca241de577afbcda86</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_6257780_Case1</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>834</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>831</integer>
- <integer>832</integer>
- <integer>833</integer>
- <integer>834</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>909</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>909</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>910</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>910</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>910</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>910</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>910</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of RDar6320065Subclass with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of RDar6320065Subclass with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>910</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>910</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>911</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>911</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>911</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>911</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>911</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;RDar6320065Subclass *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;RDar6320065Subclass *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;RDar6320065Subclass *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8e8ae80fd006f27a952f77494bd1c05f</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>_initReturningNewClassBad</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>911</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>908</integer>
- <integer>909</integer>
- <integer>910</integer>
- <integer>911</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>914</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>914</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>915</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>915</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>915</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>915</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>915</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of RDar6320065Subclass with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of RDar6320065Subclass with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>915</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>915</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- </dict>
- </array>
- <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Method should return an owned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>625e26ef3ae9de238f30175e4e9f4937</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>initReturningNewClassBad2</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>916</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>913</integer>
- <integer>914</integer>
- <integer>915</integer>
- <integer>916</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>59</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>59</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method whose name (&apos;NoCopyString&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method whose name (&apos;NoCopyString&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;NSString *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>666dce676597e2cfa3199521864f7b96</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>NoCopyString</string>
- <key>issue_hash_function_offset</key><string>0</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>954</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>59</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>59</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method whose name (&apos;noCopyString&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method whose name (&apos;noCopyString&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;NSString *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>31104cdb408dbc3faf693a5c31973486</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>noCopyString</string>
- <key>issue_hash_function_offset</key><string>0</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>955</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;NoCopyString&apos;</string>
- <key>message</key>
- <string>Calling &apos;NoCopyString&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_RDar6859457&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_RDar6859457&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>954</integer>
- <key>col</key><integer>59</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;NoCopyString&apos;</string>
- <key>message</key>
- <string>Returning from &apos;NoCopyString&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;NSString *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>909638940b4d7020f51062089653b231</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_RDar6859457</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>954</integer>
- <integer>958</integer>
- <integer>959</integer>
- <integer>960</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>959</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;noCopyString&apos;</string>
- <key>message</key>
- <string>Calling &apos;noCopyString&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_RDar6859457&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_RDar6859457&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>955</integer>
- <key>col</key><integer>59</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;noCopyString&apos;</string>
- <key>message</key>
- <string>Returning from &apos;noCopyString&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>960</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>961</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>961</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>961</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>961</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>961</integer>
- <key>col</key><integer>54</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;NSString *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2a37743e32cfa0a86958fed215c30e87</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_RDar6859457</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>961</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>954</integer>
- <integer>955</integer>
- <integer>958</integer>
- <integer>959</integer>
- <integer>960</integer>
- <integer>961</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>994</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>994</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>994</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>994</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>994</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>994</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method whose name (&apos;:&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method whose name (&apos;:&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;NSString *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>20b25f0ba6268e055d8491c67c6a26bd</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>:</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>994</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>993</integer>
- <integer>994</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;id&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;id&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;id&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>706b9d732ece93a88487dbbf0b82fd23</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar6902710</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1021</integer>
- <integer>1022</integer>
- <integer>1023</integer>
- <integer>1024</integer>
- <integer>1025</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1025</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;id&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;id&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;id&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>631eebb0c921191c24734f98fe93f6bf</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar6902710</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1021</integer>
- <integer>1022</integer>
- <integer>1023</integer>
- <integer>1024</integer>
- <integer>1025</integer>
- <integer>1026</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns a Core Foundation object of type &apos;CGImageRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Method returns a Core Foundation object of type &apos;CGImageRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1026</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CGImageRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CGImageRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CGImageRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ee36a48521a32c183a086066d3c5ae1f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar6902710</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1021</integer>
- <integer>1022</integer>
- <integer>1023</integer>
- <integer>1024</integer>
- <integer>1025</integer>
- <integer>1026</integer>
- <integer>1027</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1024</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>69</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns a Core Foundation object of type &apos;CGImageRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Method returns a Core Foundation object of type &apos;CGImageRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1027</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1028</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1028</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1028</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CGImageRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CGImageRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CGImageRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>70a2dd4ee6b6f7caad87a46dc6dd3580</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar6902710</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1028</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1021</integer>
- <integer>1022</integer>
- <integer>1023</integer>
- <integer>1024</integer>
- <integer>1025</integer>
- <integer>1026</integer>
- <integer>1027</integer>
- <integer>1028</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1036</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1036</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1036</integer>
- <key>col</key><integer>45</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns a Core Foundation object of type &apos;CGLayerRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Method returns a Core Foundation object of type &apos;CGLayerRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1036</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1036</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1037</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1037</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1037</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CGLayerRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CGLayerRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CGLayerRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a82448687d1cbf5cb517914dbe6de4fe</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar6945561</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1037</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1035</integer>
- <integer>1036</integer>
- <integer>1037</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1045</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1045</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1045</integer>
- <key>col</key><integer>49</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;IOBSDNameMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;IOBSDNameMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1045</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1045</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1046</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1046</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1046</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableDictionaryRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>540e0145994c1e14ea750fe91a497855</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOBSDNameMatching_wrapper</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1046</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1044</integer>
- <integer>1045</integer>
- <integer>1046</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1049</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1049</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1049</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;IOServiceMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;IOServiceMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1049</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1049</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1050</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1050</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1050</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableDictionaryRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>99d7012d797e181ef8e9a289ee9099eb</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOServiceMatching_wrapper</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1050</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1048</integer>
- <integer>1049</integer>
- <integer>1050</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1053</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1053</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1053</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;IOServiceNameMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;IOServiceNameMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1053</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1053</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1054</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1054</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1054</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableDictionaryRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5d956e58f05bcc1b67ff65e02cbba302</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOServiceNameMatching_wrapper</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1054</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1052</integer>
- <integer>1053</integer>
- <integer>1054</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1061</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1061</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1061</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1061</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1061</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1062</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1063</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1063</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1063</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1063</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1063</integer>
- <key>col</key><integer>65</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>84a53bfb58a3a929535b47e28b997382</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOServiceAddNotification_wrapper</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1063</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1058</integer>
- <integer>1059</integer>
- <integer>1061</integer>
- <integer>1062</integer>
- <integer>1063</integer>
- <integer>1064</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1068</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1068</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1068</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;IORegistryEntryIDMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;IORegistryEntryIDMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1068</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1068</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1069</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1069</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1069</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableDictionaryRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>36337ff486f6a8b702e68d13393bc975</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IORegistryEntryIDMatching_wrapper</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1069</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1067</integer>
- <integer>1068</integer>
- <integer>1069</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1073</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1073</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1073</integer>
- <key>col</key><integer>55</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;IOOpenFirmwarePathMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;IOOpenFirmwarePathMatching&apos; returns a Core Foundation object of type &apos;CFMutableDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1073</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1073</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1074</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1074</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1074</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableDictionaryRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableDictionaryRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ee83ca968ddc2ecad7ae4318ce7d1d95</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOOpenFirmwarePathMatching_wrapper</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1074</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1071</integer>
- <integer>1072</integer>
- <integer>1073</integer>
- <integer>1074</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1077</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1077</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1077</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1077</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1077</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>51</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>50</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1078</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1079</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1079</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1079</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1079</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1079</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>e8c08b2b3d53f5890907888e16927805</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOServiceGetMatchingService_wrapper</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1079</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1076</integer>
- <integer>1077</integer>
- <integer>1078</integer>
- <integer>1079</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1083</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1083</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1083</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1083</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1083</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>62</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>44</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>51</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1084</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1085</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1085</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1085</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1085</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1085</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>31664b5acc7980da73f5545fb16b0910</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOServiceGetMatchingServices_wrapper</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1085</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1082</integer>
- <integer>1083</integer>
- <integer>1084</integer>
- <integer>1085</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1091</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1091</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1091</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CreateDict&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1091</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1091</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>106</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>66</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>73</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1092</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1093</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1093</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1093</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1093</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1093</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6edae46016a9671e2d5400b100d5efb5</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>IOServiceAddMatchingNotification_wrapper</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1093</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1088</integer>
- <integer>1089</integer>
- <integer>1091</integer>
- <integer>1092</integer>
- <integer>1093</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1131</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1131</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1134</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1134</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1134</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1134</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1134</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1134</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1134</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count decremented</string>
- <key>message</key>
- <string>Reference count decremented</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1136</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1138</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1138</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1138</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1138</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1138</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;number&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>dcec4e2bd254a3c24e84e598b5a827bf</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_7152619</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1138</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>63</integer>
- <integer>67</integer>
- <integer>68</integer>
- <integer>69</integer>
- <integer>70</integer>
- <integer>71</integer>
- <integer>1130</integer>
- <integer>1131</integer>
- <integer>1132</integer>
- <integer>1133</integer>
- <integer>1134</integer>
- <integer>1135</integer>
- <integer>1136</integer>
- <integer>1137</integer>
- <integer>1138</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1147</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1147</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1159</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1159</integer>
- <key>col</key><integer>67</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1159</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1159</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1159</integer>
- <key>col</key><integer>69</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CGColorSpaceCreateDeviceRGB&apos; returns a Core Foundation object of type &apos;CGColorSpaceRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CGColorSpaceCreateDeviceRGB&apos; returns a Core Foundation object of type &apos;CGColorSpaceRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1159</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1159</integer>
- <key>col</key><integer>67</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CGColorSpaceRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CGColorSpaceRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CGColorSpaceRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>9317a6bf07dd10dc988f2415cc2c4ef7</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_7184450</string>
- <key>issue_hash_function_offset</key><string>13</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1158</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1145</integer>
- <integer>1146</integer>
- <integer>1147</integer>
- <integer>1148</integer>
- <integer>1149</integer>
- <integer>1150</integer>
- <integer>1151</integer>
- <integer>1152</integer>
- <integer>1153</integer>
- <integer>1154</integer>
- <integer>1155</integer>
- <integer>1158</integer>
- <integer>1159</integer>
- <integer>1160</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1169</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1169</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>66</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>68</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CGColorSpaceCreateDeviceRGB&apos; returns a Core Foundation object of type &apos;CGColorSpaceRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CGColorSpaceCreateDeviceRGB&apos; returns a Core Foundation object of type &apos;CGColorSpaceRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>66</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CGColorSpaceRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CGColorSpaceRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CGColorSpaceRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ec3e6216b279aa48d8403c6aab30d996</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_7184450_pos</string>
- <key>issue_hash_function_offset</key><string>13</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1167</integer>
- <integer>1168</integer>
- <integer>1169</integer>
- <integer>1170</integer>
- <integer>1171</integer>
- <integer>1172</integer>
- <integer>1173</integer>
- <integer>1174</integer>
- <integer>1175</integer>
- <integer>1176</integer>
- <integer>1177</integer>
- <integer>1180</integer>
- <integer>1181</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1169</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1169</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1180</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>107</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CGGradientCreateWithColorComponents&apos; returns a Core Foundation object of type &apos;CGGradientRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CGGradientCreateWithColorComponents&apos; returns a Core Foundation object of type &apos;CGGradientRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1181</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1183</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1183</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1183</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1183</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1185</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1185</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1185</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;myGradient&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;myGradient&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;myGradient&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4b3d6bb6b8dc5c51b7dfa8554b24eb66</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_7184450_pos</string>
- <key>issue_hash_function_offset</key><string>13</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1185</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1167</integer>
- <integer>1168</integer>
- <integer>1169</integer>
- <integer>1170</integer>
- <integer>1171</integer>
- <integer>1172</integer>
- <integer>1173</integer>
- <integer>1174</integer>
- <integer>1175</integer>
- <integer>1176</integer>
- <integer>1177</integer>
- <integer>1180</integer>
- <integer>1181</integer>
- <integer>1183</integer>
- <integer>1184</integer>
- <integer>1185</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1219</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1219</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1219</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1219</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1219</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1220</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1220</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1220</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;number&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>42a83016e862ec323e24920873073a5a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_7299394_positive</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1220</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1218</integer>
- <integer>1219</integer>
- <integer>1220</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1454</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1454</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1456</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1457</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CGBitmapContextCreateWithData&apos; returns a Core Foundation object of type &apos;CGContextRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CGBitmapContextCreateWithData&apos; returns a Core Foundation object of type &apos;CGContextRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1456</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1456</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1458</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1458</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1458</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CGContextRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CGContextRef&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CGContextRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a416473fed3a9dbc6bfee885bee38216</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_7358899</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1458</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1446</integer>
- <integer>1447</integer>
- <integer>1448</integer>
- <integer>1449</integer>
- <integer>1454</integer>
- <integer>1456</integer>
- <integer>1457</integer>
- <integer>1458</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1474</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1474</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1474</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1474</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1474</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1475</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1475</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1475</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;y&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;y&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;y&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>980dd45e9cf6581dbc2be9ebfc500b7f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar7265711_a</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1475</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1473</integer>
- <integer>1474</integer>
- <integer>1475</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1494</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1494</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1495</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1495</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1495</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1495</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1495</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1495</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1495</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1496</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1496</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1496</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;number&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ebf51fb2b16499cf3a5c57d251a91061</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar7306898</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1496</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1491</integer>
- <integer>1494</integer>
- <integer>1495</integer>
- <integer>1496</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>The &apos;release&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- <key>message</key>
- <string>The &apos;release&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- </dict>
- </array>
- <key>description</key><string>The &apos;release&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>message incorrectly sent to class instead of class instance</string>
- <key>check_name</key><string>osx.cocoa.ClassRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>bdc4aaf3d712232f4ae72dce230189f9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar7252064</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1504</integer>
- <integer>1505</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1506</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1506</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1506</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1506</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1506</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>The &apos;retain&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- <key>message</key>
- <string>The &apos;retain&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- </dict>
- </array>
- <key>description</key><string>The &apos;retain&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>message incorrectly sent to class instead of class instance</string>
- <key>check_name</key><string>osx.cocoa.ClassRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b767178ef573c7bd520dc62faabc32fc</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar7252064</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1506</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1504</integer>
- <integer>1505</integer>
- <integer>1506</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1507</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1507</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1507</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1507</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1507</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>The &apos;autorelease&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- <key>message</key>
- <string>The &apos;autorelease&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- </dict>
- </array>
- <key>description</key><string>The &apos;autorelease&apos; message should be sent to instances of class &apos;RDar7252064&apos; and not the class directly</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>message incorrectly sent to class instead of class instance</string>
- <key>check_name</key><string>osx.cocoa.ClassRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3dbe304966f8bffa6bdefc5f3ada7df6</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar7252064</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1507</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1504</integer>
- <integer>1505</integer>
- <integer>1506</integer>
- <integer>1507</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1505</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1508</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1508</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1508</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1508</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1508</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>The &apos;drain&apos; message should be sent to instances of class &apos;NSAutoreleasePool&apos; and not the class directly</string>
- <key>message</key>
- <string>The &apos;drain&apos; message should be sent to instances of class &apos;NSAutoreleasePool&apos; and not the class directly</string>
- </dict>
- </array>
- <key>description</key><string>The &apos;drain&apos; message should be sent to instances of class &apos;NSAutoreleasePool&apos; and not the class directly</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>message incorrectly sent to class instead of class instance</string>
- <key>check_name</key><string>osx.cocoa.ClassRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c519bce30f1da4bb6e3ecc46453d6958</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar7252064</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1508</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1504</integer>
- <integer>1505</integer>
- <integer>1506</integer>
- <integer>1507</integer>
- <integer>1508</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1535</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1535</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1535</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1535</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1535</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1536</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1536</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1536</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;str&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;str&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;str&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1174ccc2a30887ebf80fe25fc6722b1a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_attr_1</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1536</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1534</integer>
- <integer>1535</integer>
- <integer>1536</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1539</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1539</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1539</integer>
- <key>col</key><integer>44</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns a Core Foundation object of type &apos;NSString *&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Method returns a Core Foundation object of type &apos;NSString *&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1539</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1539</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1540</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1540</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1540</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;str&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;str&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;str&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ce9963dd1c85ac22cea4e4fef615354e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_attr_1b</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1540</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1538</integer>
- <integer>1539</integer>
- <integer>1540</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1543</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1543</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1544</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1544</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1544</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1544</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1544</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1544</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1544</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;str2&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;str2&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;str2&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>0183088266857082f35eb17f1377fd69</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_attr1c</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1545</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1542</integer>
- <integer>1543</integer>
- <integer>1544</integer>
- <integer>1545</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1543</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1543</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +0 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>46</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1546</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1547</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1547</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1547</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;str4&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;str4&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;str4&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>352a17ef8eddd3aa5f7f6e74a74a4df3</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_attr1c</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1547</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1542</integer>
- <integer>1543</integer>
- <integer>1544</integer>
- <integer>1545</integer>
- <integer>1546</integer>
- <integer>1547</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1550</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1550</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1550</integer>
- <key>col</key><integer>50</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of TestOwnershipAttr with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of TestOwnershipAttr with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1550</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1550</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1551</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1551</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1551</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;x&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d0e564404585060990202acb33f0bb1e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testattr2_a</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1551</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1549</integer>
- <integer>1550</integer>
- <integer>1551</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1554</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1554</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1554</integer>
- <key>col</key><integer>63</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1554</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1554</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;x&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>567dfcbc22471ca4ba9f2fccd9ff14fb</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testattr2_b</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1555</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1553</integer>
- <integer>1554</integer>
- <integer>1555</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1558</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1558</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1558</integer>
- <key>col</key><integer>63</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an Objective-C object with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1558</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1558</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1559</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1559</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1559</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1559</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1560</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1560</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1560</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;x&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>83cd2670977d513443836653fee8147b</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testattr2_b_11358224_self_assign_looses_the_leak</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1560</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1557</integer>
- <integer>1558</integer>
- <integer>1559</integer>
- <integer>1560</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1590</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1590</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1590</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1590</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1590</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1590</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method that is annotated as NS_RETURNS_NOT_RETAINED</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;NSString *&apos; is returned from a method that is annotated as NS_RETURNS_NOT_RETAINED</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;NSString *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f83246e7e738918426df1adc915f4eca</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>newString</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1590</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1589</integer>
- <integer>1590</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;returnsCFRetainedAsCF&apos;</string>
- <key>message</key>
- <string>Calling &apos;returnsCFRetainedAsCF&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1614</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;newCFRetainedAsCFNoAttr&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;newCFRetainedAsCFNoAttr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1614</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1614</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling &apos;returnsRetainedCFDate&apos;</string>
- <key>message</key>
- <string>Calling &apos;returnsRetainedCFDate&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;returnsCFRetainedAsCF&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;returnsCFRetainedAsCF&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>52</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning from &apos;returnsRetainedCFDate&apos;</string>
- <key>message</key>
- <string>Returning from &apos;returnsRetainedCFDate&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1615</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;returnsCFRetainedAsCF&apos;</string>
- <key>message</key>
- <string>Returning from &apos;returnsCFRetainedAsCF&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>66</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>66</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- </dict>
- </array>
- <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Method should return an owned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5f233261d96f1d461af36fc3e0efc8eb</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>newCFRetainedAsCFNoAttr</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1623</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1604</integer>
- <integer>1605</integer>
- <integer>1606</integer>
- <integer>1614</integer>
- <integer>1615</integer>
- <integer>1622</integer>
- <integer>1623</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;returnsRetainedCFDate&apos;</string>
- <key>message</key>
- <string>Calling &apos;returnsRetainedCFDate&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;alsoReturnsRetained&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;alsoReturnsRetained&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>52</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;returnsRetainedCFDate&apos;</string>
- <key>message</key>
- <string>Returning from &apos;returnsRetainedCFDate&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFDateRef&apos; is returned from a method whose name (&apos;alsoReturnsRetained&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFDateRef&apos; is returned from a method whose name (&apos;alsoReturnsRetained&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFDateRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>7ee55b74b5ee01c6ffa2a3d83c8cf88b</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>alsoReturnsRetained</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1627</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1604</integer>
- <integer>1605</integer>
- <integer>1606</integer>
- <integer>1626</integer>
- <integer>1627</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;returnsRetainedCFDate&apos;</string>
- <key>message</key>
- <string>Calling &apos;returnsRetainedCFDate&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;alsoReturnsRetainedAsCF&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;alsoReturnsRetainedAsCF&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1604</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1606</integer>
- <key>col</key><integer>52</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;returnsRetainedCFDate&apos;</string>
- <key>message</key>
- <string>Returning from &apos;returnsRetainedCFDate&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFDateRef&apos; is returned from a method whose name (&apos;alsoReturnsRetainedAsCF&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFDateRef&apos; is returned from a method whose name (&apos;alsoReturnsRetainedAsCF&apos;) does not start with &apos;copy&apos;, &apos;mutableCopy&apos;, &apos;alloc&apos; or &apos;new&apos;. This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFDateRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>177b2cf7eb3d8334393ee0861f5a38ac</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>alsoReturnsRetainedAsCF</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1631</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1604</integer>
- <integer>1605</integer>
- <integer>1606</integer>
- <integer>1630</integer>
- <integer>1631</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1651</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1651</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1652</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1652</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1652</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1652</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1652</integer>
- <key>col</key><integer>82</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFNumberCreate&apos; returns a Core Foundation object of type &apos;CFNumberRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFNumberCreate&apos; returns a Core Foundation object of type &apos;CFNumberRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1652</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1652</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1653</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1653</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1653</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;value&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>85e9d8130a1f1ec37f0ba26746abd749</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_panic_negative</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1653</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1650</integer>
- <integer>1651</integer>
- <integer>1652</integer>
- <integer>1653</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1662</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1662</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1663</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1663</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1663</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1663</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1663</integer>
- <key>col</key><integer>82</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFNumberCreate&apos; returns a Core Foundation object of type &apos;CFNumberRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFNumberCreate&apos; returns a Core Foundation object of type &apos;CFNumberRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1663</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1663</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;x&apos; is 0</string>
- <key>message</key>
- <string>Assuming &apos;x&apos; is 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1664</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1666</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1666</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1666</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;value&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4a0b16976e0517b38b2ccc16e2928c2e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_panic_neg_2</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1666</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1661</integer>
- <integer>1662</integer>
- <integer>1663</integer>
- <integer>1664</integer>
- <integer>1666</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1686</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1686</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1686</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1686</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1686</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1687</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1687</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1687</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1687</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1687</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;number&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>af73d9c62952a300a7c393ebd5073f75</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_blocks_1_pos</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1687</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1685</integer>
- <integer>1686</integer>
- <integer>1687</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1707</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1707</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1707</integer>
- <key>col</key><integer>53</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSNumber with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1707</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1707</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_blocks_1_indirect_retain_via_call&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_blocks_1_indirect_retain_via_call&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning to caller</string>
- <key>message</key>
- <string>Returning to caller</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1708</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1709</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1709</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1709</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +2</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;number&apos; is not referenced later in this execution path and has a retain count of +2</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;number&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>771b2a332053388ffbdd9ba74ea84c5e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_blocks_1_indirect_retain_via_call</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1709</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1706</integer>
- <integer>1707</integer>
- <integer>1708</integer>
- <integer>1709</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1759</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1759</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;error_to_dump&apos; is not equal to null</string>
- <key>message</key>
- <string>Assuming &apos;error_to_dump&apos; is not equal to null</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Entering loop body</string>
- <key>message</key>
- <string>Entering loop body</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1762</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1763</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1763</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1763</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1763</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1765</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1765</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1765</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1765</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1765</integer>
- <key>col</key><integer>49</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFErrorCopyUserInfo&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFErrorCopyUserInfo&apos; returns a Core Foundation object of type &apos;CFDictionaryRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1765</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1765</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;info&apos; is not equal to null</string>
- <key>message</key>
- <string>Assuming &apos;info&apos; is not equal to null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1767</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1770</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1770</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1770</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;info&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;info&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;info&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>39f8c30f7436f678d5259c0fdd3a0dad</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar_8724287</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1770</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1757</integer>
- <integer>1758</integer>
- <integer>1759</integer>
- <integer>1761</integer>
- <integer>1762</integer>
- <integer>1763</integer>
- <integer>1765</integer>
- <integer>1767</integer>
- <integer>1770</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1815</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1815</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1815</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1815</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1815</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1815</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camelcase_createno&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camelcase_createno&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableArrayRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>107e3efdeb8cdff4bef4c64183c4f6fa</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>camelcase_createno</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1815</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1814</integer>
- <integer>1815</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1823</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1823</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1823</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1823</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1823</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1823</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camelcase_copying&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camelcase_copying&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableArrayRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>20c973a013858abb0a926276c956f858</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>camelcase_copying</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1823</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1822</integer>
- <integer>1823</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1844</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1844</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1844</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1844</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1844</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1844</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camel_creat&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camel_creat&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableArrayRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>80ee99e51561a37297429740e3a4da0c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>camel_creat</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1844</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1843</integer>
- <integer>1844</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1856</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1856</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1856</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1856</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1856</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1856</integer>
- <key>col</key><integer>60</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camel_copymachine&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;CFMutableArrayRef&apos; is returned from a function whose name (&apos;camel_copymachine&apos;) does not contain &apos;Copy&apos; or &apos;Create&apos;. This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;CFMutableArrayRef&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak of returned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a4e28a04f6a8d87c8aaf4d71c37cac0f</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>camel_copymachine</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1856</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1855</integer>
- <integer>1856</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1876</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1876</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1877</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1877</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1877</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1877</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1877</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFDateCreate&apos; returns a Core Foundation object of type &apos;CFDateRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1877</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1877</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1878</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1878</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1878</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;vals&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;vals&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;vals&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6b727a438d8411c058fd32867b9402bc</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar6582778</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1878</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1875</integer>
- <integer>1876</integer>
- <integer>1877</integer>
- <integer>1878</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1902</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1902</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1904</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1904</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1904</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1904</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1904</integer>
- <key>col</key><integer>64</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1904</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1904</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1905</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b39dcf9df7cec8dd73cbbe25b2a7d6c5</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar10232019_positive</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1907</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>1901</integer>
- <integer>1902</integer>
- <integer>1904</integer>
- <integer>1905</integer>
- <integer>1907</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2035</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2035</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2035</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2035</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2035</integer>
- <key>col</key><integer>66</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSArray with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSArray with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2035</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2035</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;a&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;a&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;a&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a501f743b22f1feb5dc317fcad4f7556</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_arrays</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2032</integer>
- <integer>2034</integer>
- <integer>2035</integer>
- <integer>2036</integer>
- <integer>2037</integer>
- <integer>2038</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2044</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2044</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2044</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2044</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2044</integer>
- <key>col</key><integer>56</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSArray with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSArray with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2044</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2044</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;a2&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;a2&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;a2&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a141a6ad33e8ff2ae3b13da0ad36ebc5</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_arrays</string>
- <key>issue_hash_function_offset</key><string>12</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2032</integer>
- <integer>2034</integer>
- <integer>2035</integer>
- <integer>2036</integer>
- <integer>2037</integer>
- <integer>2038</integer>
- <integer>2042</integer>
- <integer>2043</integer>
- <integer>2044</integer>
- <integer>2045</integer>
- <integer>2046</integer>
- <integer>2047</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSArray literal is an object with a +0 retain count</string>
- <key>message</key>
- <string>NSArray literal is an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2052</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;a3&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;a3&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;a3&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2b072d75e8da8e3fe8f7968a85efb37c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_arrays</string>
- <key>issue_hash_function_offset</key><string>20</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2032</integer>
- <integer>2034</integer>
- <integer>2035</integer>
- <integer>2036</integer>
- <integer>2037</integer>
- <integer>2038</integer>
- <integer>2042</integer>
- <integer>2043</integer>
- <integer>2044</integer>
- <integer>2045</integer>
- <integer>2046</integer>
- <integer>2047</integer>
- <integer>2051</integer>
- <integer>2052</integer>
- <integer>2053</integer>
- <integer>2054</integer>
- <integer>2055</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2060</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2060</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2060</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2060</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2060</integer>
- <key>col</key><integer>57</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSArray with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSArray with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2060</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2060</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;a&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;a&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;a&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>0bfdfb7e392626e0fccc6ab9f58f1ca8</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_arrays</string>
- <key>issue_hash_function_offset</key><string>28</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2032</integer>
- <integer>2034</integer>
- <integer>2035</integer>
- <integer>2036</integer>
- <integer>2037</integer>
- <integer>2038</integer>
- <integer>2042</integer>
- <integer>2043</integer>
- <integer>2044</integer>
- <integer>2045</integer>
- <integer>2046</integer>
- <integer>2047</integer>
- <integer>2051</integer>
- <integer>2052</integer>
- <integer>2053</integer>
- <integer>2054</integer>
- <integer>2055</integer>
- <integer>2059</integer>
- <integer>2060</integer>
- <integer>2061</integer>
- <integer>2063</integer>
- <integer>2064</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2034</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2038</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2042</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2047</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2051</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2055</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2059</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2064</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2068</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2068</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2068</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2068</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSDictionary literal is an object with a +0 retain count</string>
- <key>message</key>
- <string>NSDictionary literal is an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2069</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2073</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2073</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2073</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2073</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2073</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;a&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;a&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;a&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ff7c34e661a42d06a7fb3e9669e70339</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_arrays</string>
- <key>issue_hash_function_offset</key><string>37</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2073</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2032</integer>
- <integer>2034</integer>
- <integer>2035</integer>
- <integer>2036</integer>
- <integer>2037</integer>
- <integer>2038</integer>
- <integer>2042</integer>
- <integer>2043</integer>
- <integer>2044</integer>
- <integer>2045</integer>
- <integer>2046</integer>
- <integer>2047</integer>
- <integer>2051</integer>
- <integer>2052</integer>
- <integer>2053</integer>
- <integer>2054</integer>
- <integer>2055</integer>
- <integer>2059</integer>
- <integer>2060</integer>
- <integer>2061</integer>
- <integer>2063</integer>
- <integer>2064</integer>
- <integer>2068</integer>
- <integer>2069</integer>
- <integer>2070</integer>
- <integer>2072</integer>
- <integer>2073</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSNumber literal is an object with a +0 retain count</string>
- <key>message</key>
- <string>NSNumber literal is an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2078</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2079</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2079</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2079</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2079</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2080</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2080</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2080</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;value&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>73e84c042932d2e17e00f00dc3d36d5a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_integer_literals</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2080</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2077</integer>
- <integer>2078</integer>
- <integer>2079</integer>
- <integer>2080</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSNumber boxed expression produces an object with a +0 retain count</string>
- <key>message</key>
- <string>NSNumber boxed expression produces an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;value&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>465e592d4f7a187717d00b8154a614b5</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_boxed_expressions</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2082</integer>
- <integer>2083</integer>
- <integer>2084</integer>
- <integer>2086</integer>
- <integer>2087</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2083</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSString boxed expression produces an object with a +0 retain count</string>
- <key>message</key>
- <string>NSString boxed expression produces an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2086</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2087</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2088</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2088</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2088</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;value&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;value&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>c701bd0c60f51d96c047aa78c9e0eb99</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_objc_boxed_expressions</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2088</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2082</integer>
- <integer>2083</integer>
- <integer>2084</integer>
- <integer>2086</integer>
- <integer>2087</integer>
- <integer>2088</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2094</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2094</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;y&apos; is &lt;= 2</string>
- <key>message</key>
- <string>Assuming &apos;y&apos; is &lt;= 2</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2095</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2098</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2098</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2098</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2098</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2098</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSString with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2098</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2098</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2099</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2099</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2099</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2099</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2100</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2101</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2101</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2101</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2101</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2101</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a4cedbb647e9632da7a5072cb839e54a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>rdar11400885</string>
- <key>issue_hash_function_offset</key><string>9</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2101</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2091</integer>
- <integer>2092</integer>
- <integer>2094</integer>
- <integer>2095</integer>
- <integer>2098</integer>
- <integer>2099</integer>
- <integer>2100</integer>
- <integer>2101</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2119</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2119</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2127</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2127</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2127</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2127</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2127</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSArray literal is an object with a +0 retain count</string>
- <key>message</key>
- <string>NSArray literal is an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2127</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2127</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2128</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2128</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2128</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2128</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2128</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>fd9427d86a2357fd92478c9c7abbc1f4</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testConsumeAndStopTracking</string>
- <key>issue_hash_function_offset</key><string>10</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2128</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2118</integer>
- <integer>2119</integer>
- <integer>2120</integer>
- <integer>2122</integer>
- <integer>2123</integer>
- <integer>2127</integer>
- <integer>2128</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2132</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2132</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2140</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2140</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2140</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2140</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2140</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSArray literal is an object with a +0 retain count</string>
- <key>message</key>
- <string>NSArray literal is an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2140</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2140</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2141</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2141</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2141</integer>
- <key>col</key><integer>48</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>0e65e51476e5671dcd37f632806e5147</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCFConsumeAndStopTracking</string>
- <key>issue_hash_function_offset</key><string>10</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2141</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2131</integer>
- <integer>2132</integer>
- <integer>2133</integer>
- <integer>2135</integer>
- <integer>2136</integer>
- <integer>2140</integer>
- <integer>2141</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2153</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2153</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2153</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CreateMyCFType&apos; returns a Core Foundation object of type &apos;MyCFType&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CreateMyCFType&apos; returns a Core Foundation object of type &apos;MyCFType&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2153</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2154</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2154</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2154</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;x&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;x&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a0ba9c47505e923763ea5323ad2f71b7</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_custom_cf</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2154</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2152</integer>
- <integer>2153</integer>
- <integer>2154</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2188</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2188</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2188</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;makeCustom&apos; returns a Core Foundation object of type &apos;MyCFType&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;makeCustom&apos; returns a Core Foundation object of type &apos;MyCFType&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2188</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2188</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2189</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2189</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2189</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;obj&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;obj&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;obj&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>7a6cf8cb3c5e0ca3125d7e27695a810a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCustomReturnsRetained</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2189</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2187</integer>
- <integer>2188</integer>
- <integer>2189</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2192</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2192</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2192</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;getCustom&apos; returns a Core Foundation object of type &apos;MyCFType&apos; with a +0 retain count</string>
- <key>message</key>
- <string>Call to function &apos;getCustom&apos; returns a Core Foundation object of type &apos;MyCFType&apos; with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2192</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2192</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2192</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>810fce32373fe40ba8e2d0894d46f667</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCustomReturnsNotRetained</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2192</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2191</integer>
- <integer>2192</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of MyObj12706177 with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of MyObj12706177 with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;initX&apos;</string>
- <key>message</key>
- <string>Calling &apos;initX&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2204</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test12706177&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test12706177&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2204</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2204</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Assuming &apos;Cond&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;Cond&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2205</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2206</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2206</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;initX&apos;</string>
- <key>message</key>
- <string>Returning from &apos;initX&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: allocated object of type &apos;MyObj12706177 *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: allocated object of type &apos;MyObj12706177 *&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object of type &apos;MyObj12706177 *&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>68ee7961ffb62c575cc2298cb4836090</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>test12706177</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2204</integer>
- <integer>2205</integer>
- <integer>2206</integer>
- <integer>2210</integer>
- <integer>2211</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFGetSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFGetSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased but has a +0 retain count</string>
- <key>message</key>
- <string>Object was autoreleased but has a +0 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1dc376fbbe90d14b6766585a0e2b7bee</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>getIncorrectlyAutoreleasedCFType</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2227</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2225</integer>
- <integer>2227</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>40</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>42</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>43</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>message</key>
- <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- </dict>
- </array>
- <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Method should return an owned object</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6ae8ea9fe4bf203e6b7bfaf649a6ca6a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>createIncorrectlyAutoreleasedCFType</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2232</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2230</integer>
- <integer>2232</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2247</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2247</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2247</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2247</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2247</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object released</string>
- <key>message</key>
- <string>Object released</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2248</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2251</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2251</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2251</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2251</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2251</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference-counted object is used after it is released</string>
- <key>message</key>
- <string>Reference-counted object is used after it is released</string>
- </dict>
- </array>
- <key>description</key><string>Reference-counted object is used after it is released</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Use-after-release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d4e28f96fc8610b5b4b849f4760956eb</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>useAfterRelease</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2251</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2244</integer>
- <integer>2247</integer>
- <integer>2248</integer>
- <integer>2251</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2256</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2256</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2256</integer>
- <key>col</key><integer>37</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFCreateSomething&apos; returns a Core Foundation object of type &apos;CFTypeRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2256</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2256</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>39</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2257</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2258</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2259</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2259</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2259</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;obj&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;obj&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;obj&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>7986c4b7fb29301c109343dfe4155202</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testAutoreleaseReturnsInput</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2259</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2254</integer>
- <integer>2256</integer>
- <integer>2257</integer>
- <integer>2258</integer>
- <integer>2259</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2276</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2276</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2276</integer>
- <key>col</key><integer>70</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- <key>message</key>
- <string>Call to function &apos;CFArrayCreateMutable&apos; returns a Core Foundation object of type &apos;CFMutableArrayRef&apos; with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2276</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2276</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>62</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>48</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>61</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2277</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +2 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2278</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2279</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2279</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2279</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object leaked: object allocated and stored into &apos;arr&apos; is not referenced later in this execution path and has a retain count of +1</string>
- <key>message</key>
- <string>Object leaked: object allocated and stored into &apos;arr&apos; is not referenced later in this execution path and has a retain count of +1</string>
- </dict>
- </array>
- <key>description</key><string>Potential leak of an object stored into &apos;arr&apos;</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Leak</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2e0dbfdf379acf2f09e46db47d753e8a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>autoreleaseReturningTypedObject</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2279</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2275</integer>
- <integer>2276</integer>
- <integer>2277</integer>
- <integer>2278</integer>
- <integer>2279</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2290</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2290</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2293</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2293</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2293</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2293</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2293</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>NSNumber literal is an object with a +0 retain count</string>
- <key>message</key>
- <string>NSNumber literal is an object with a +0 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2293</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2293</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2294</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2295</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2295</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2295</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased but has a +0 retain count</string>
- <key>message</key>
- <string>Object was autoreleased but has a +0 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>41a2d6f91fdfa9b5f396102a60571e21</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>autoreleaseObjC</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2295</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2289</integer>
- <integer>2290</integer>
- <integer>2291</integer>
- <integer>2293</integer>
- <integer>2294</integer>
- <integer>2295</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2345</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2345</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2346</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2346</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2346</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2346</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2346</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;getViaParam&apos; writes a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count into an out parameter &apos;outObj&apos;</string>
- <key>message</key>
- <string>Call to function &apos;getViaParam&apos; writes a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count into an out parameter &apos;outObj&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2346</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2346</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2347</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2347</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2347</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2347</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2347</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>95dd5581ae4195b71e9a11f34290af5d</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCFReturnsNotRetained</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2347</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2343</integer>
- <integer>2345</integer>
- <integer>2346</integer>
- <integer>2347</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2352</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2352</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2353</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2353</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to function &apos;getViaParam2&apos; writes a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count into an out parameter &apos;outObj&apos;</string>
- <key>message</key>
- <string>Call to function &apos;getViaParam2&apos; writes a Core Foundation object of type &apos;CFTypeRef&apos; with a +0 retain count into an out parameter &apos;outObj&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2353</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2353</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2354</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2354</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>2354</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>message</key>
- <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- </dict>
- </array>
- <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Bad release</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>014103674df4a8a65a96bcdf936637a2</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCFReturnsNotRetainedAnnotated</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2354</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>2350</integer>
- <integer>2352</integer>
- <integer>2353</integer>
- <integer>2354</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/Volumes/Transcend/code/monorepo/llvm-project/clang/test/Analysis/retain-release.m</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/unix-fns.c.plist b/test/Analysis/Inputs/expected-plists/unix-fns.c.plist
deleted file mode 100644
index b21d5bde1aeb..000000000000
--- a/test/Analysis/Inputs/expected-plists/unix-fns.c.plist
+++ /dev/null
@@ -1,3021 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;fd&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;fd&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>84</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to &apos;open&apos; requires a 3rd argument when the &apos;O_CREAT&apos; flag is set</string>
- <key>message</key>
- <string>Call to &apos;open&apos; requires a 3rd argument when the &apos;O_CREAT&apos; flag is set</string>
- </dict>
- </array>
- <key>description</key><string>Call to &apos;open&apos; requires a 3rd argument when the &apos;O_CREAT&apos; flag is set</string>
- <key>category</key><string>Unix API</string>
- <key>type</key><string>Improper use of &apos;open&apos;</string>
- <key>check_name</key><string>unix.API</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5ef25c5c47db3dbfb329901d426452e7</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_open</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>81</integer>
- <integer>82</integer>
- <integer>83</integer>
- <integer>84</integer>
- <integer>87</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;fd&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;fd&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>95</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>44</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>50</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to &apos;openat&apos; requires a 4th argument when the &apos;O_CREAT&apos; flag is set</string>
- <key>message</key>
- <string>Call to &apos;openat&apos; requires a 4th argument when the &apos;O_CREAT&apos; flag is set</string>
- </dict>
- </array>
- <key>description</key><string>Call to &apos;openat&apos; requires a 4th argument when the &apos;O_CREAT&apos; flag is set</string>
- <key>category</key><string>Unix API</string>
- <key>type</key><string>Improper use of &apos;open&apos;</string>
- <key>check_name</key><string>unix.API</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>433b17840bb989e7a13dc6337c1ed220</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_open_at</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>98</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>92</integer>
- <integer>93</integer>
- <integer>94</integer>
- <integer>95</integer>
- <integer>98</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>104</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>104</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>52</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>64</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>52</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>66</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>72</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to &apos;dispatch_once&apos; uses the local variable &apos;pred&apos; for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as &apos;static&apos;?</string>
- <key>message</key>
- <string>Call to &apos;dispatch_once&apos; uses the local variable &apos;pred&apos; for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as &apos;static&apos;?</string>
- </dict>
- </array>
- <key>description</key><string>Call to &apos;dispatch_once&apos; uses the local variable &apos;pred&apos; for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as &apos;static&apos;?</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>Improper use of &apos;dispatch_once&apos;</string>
- <key>check_name</key><string>osx.API</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>173fbcac3fc64dbaec32768d4cfda250</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_dispatch_once</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>52</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>103</integer>
- <integer>104</integer>
- <integer>105</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>115</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to &apos;pthread_once&apos; uses the local variable &apos;pred&apos; for the &quot;control&quot; value. Using such transient memory for the control value is potentially dangerous. Perhaps you intended to declare the variable as &apos;static&apos;?</string>
- <key>message</key>
- <string>Call to &apos;pthread_once&apos; uses the local variable &apos;pred&apos; for the &quot;control&quot; value. Using such transient memory for the control value is potentially dangerous. Perhaps you intended to declare the variable as &apos;static&apos;?</string>
- </dict>
- </array>
- <key>description</key><string>Call to &apos;pthread_once&apos; uses the local variable &apos;pred&apos; for the &quot;control&quot; value. Using such transient memory for the control value is potentially dangerous. Perhaps you intended to declare the variable as &apos;static&apos;?</string>
- <key>category</key><string>Unix API</string>
- <key>type</key><string>Improper use of &apos;pthread_once&apos;</string>
- <key>check_name</key><string>unix.API</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1e2f657a65cf8ee3c3ac2227de05ade4</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_pthread_once</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>114</integer>
- <integer>115</integer>
- <integer>116</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to &apos;malloc&apos; has an allocation size of 0 bytes</string>
- <key>message</key>
- <string>Call to &apos;malloc&apos; has an allocation size of 0 bytes</string>
- </dict>
- </array>
- <key>description</key><string>Call to &apos;malloc&apos; has an allocation size of 0 bytes</string>
- <key>category</key><string>Unix API</string>
- <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
- <key>check_name</key><string>unix.API</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>0e841458f0cb7cf161d35f9db5862dcf</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>pr2899</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>125</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>124</integer>
- <integer>125</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to &apos;calloc&apos; has an allocation size of 0 bytes</string>
- <key>message</key>
- <string>Call to &apos;calloc&apos; has an allocation size of 0 bytes</string>
- </dict>
- </array>
- <key>description</key><string>Call to &apos;calloc&apos; has an allocation size of 0 bytes</string>
- <key>category</key><string>Unix API</string>
- <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
- <key>check_name</key><string>unix.API</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a267ff573c7e8b959a3f886677893eb0</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_calloc</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>136</integer>
- <integer>137</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to &apos;calloc&apos; has an allocation size of 0 bytes</string>
- <key>message</key>
- <string>Call to &apos;calloc&apos; has an allocation size of 0 bytes</string>
- </dict>
- </array>
- <key>description</key><string>Call to &apos;calloc&apos; has an allocation size of 0 bytes</string>
- <key>category</key><string>Unix API</string>
- <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
- <key>check_name</key><string>unix.API</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>14eb72957baab3c63bac610a10e6f48b</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_calloc2</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>142</integer>
- <integer>143</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to &apos;realloc&apos; has an allocation size of 0 bytes</string>
- <key>message</key>
- <string>Call to &apos;realloc&apos; has an allocation size of 0 bytes</string>
- </dict>
- </array>
- <key>description</key><string>Call to &apos;realloc&apos; has an allocation size of 0 bytes</string>
- <key>category</key><string>Unix API</string>
- <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
- <key>check_name</key><string>unix.API</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>7f6f67ebe3d481aed7750005bea7e371</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_realloc</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>154</integer>
- <integer>155</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to &apos;reallocf&apos; has an allocation size of 0 bytes</string>
- <key>message</key>
- <string>Call to &apos;reallocf&apos; has an allocation size of 0 bytes</string>
- </dict>
- </array>
- <key>description</key><string>Call to &apos;reallocf&apos; has an allocation size of 0 bytes</string>
- <key>category</key><string>Unix API</string>
- <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
- <key>check_name</key><string>unix.API</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>4941698efbd81601653dff10ef9c645b</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_reallocf</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>160</integer>
- <integer>161</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>179</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>179</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>179</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>179</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>179</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>179</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>179</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to &apos;alloca&apos; has an allocation size of 0 bytes</string>
- <key>message</key>
- <string>Call to &apos;alloca&apos; has an allocation size of 0 bytes</string>
- </dict>
- </array>
- <key>description</key><string>Call to &apos;alloca&apos; has an allocation size of 0 bytes</string>
- <key>category</key><string>Unix API</string>
- <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
- <key>check_name</key><string>unix.API</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b7ca3488e81d9d9d4b8dc545258ce97c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_alloca</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>179</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>178</integer>
- <integer>179</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to &apos;alloca&apos; has an allocation size of 0 bytes</string>
- <key>message</key>
- <string>Call to &apos;alloca&apos; has an allocation size of 0 bytes</string>
- </dict>
- </array>
- <key>description</key><string>Call to &apos;alloca&apos; has an allocation size of 0 bytes</string>
- <key>category</key><string>Unix API</string>
- <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
- <key>check_name</key><string>unix.API</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1ec52551362b070237f47f6bb6c3847d</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_builtin_alloca</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>191</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>190</integer>
- <integer>191</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to &apos;valloc&apos; has an allocation size of 0 bytes</string>
- <key>message</key>
- <string>Call to &apos;valloc&apos; has an allocation size of 0 bytes</string>
- </dict>
- </array>
- <key>description</key><string>Call to &apos;valloc&apos; has an allocation size of 0 bytes</string>
- <key>category</key><string>Unix API</string>
- <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
- <key>check_name</key><string>unix.API</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>675741e04c8d0071d280324e23f41d35</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_valloc</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>202</integer>
- <integer>203</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>216</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Call to &apos;dispatch_once&apos; uses the local variable &apos;pred&apos; for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as &apos;static&apos;?</string>
- <key>message</key>
- <string>Call to &apos;dispatch_once&apos; uses the local variable &apos;pred&apos; for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as &apos;static&apos;?</string>
- </dict>
- </array>
- <key>description</key><string>Call to &apos;dispatch_once&apos; uses the local variable &apos;pred&apos; for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as &apos;static&apos;?</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>Improper use of &apos;dispatch_once&apos;</string>
- <key>check_name</key><string>osx.API</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8ded1f2025c1e4a4bcd5302dc97006d9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_dispatch_once_in_macro</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>217</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>215</integer>
- <integer>216</integer>
- <integer>217</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>222</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>222</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>222</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>222</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>222</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>227</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; captured by block as a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; captured by block as a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>227</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;dispatch_sync&apos;</string>
- <key>message</key>
- <string>Calling &apos;dispatch_sync&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>227</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;dispatch_sync&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;dispatch_sync&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>223</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Assuming &apos;q&apos; is non-null</string>
- <key>message</key>
- <string>Assuming &apos;q&apos; is non-null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>224</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5d3f4c433004c7a6d4a06aa30cc3ea85</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>225</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>40</integer>
- <integer>221</integer>
- <integer>222</integer>
- <integer>223</integer>
- <integer>224</integer>
- <integer>225</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>232</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>233</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>233</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>233</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>233</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>233</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>233</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>233</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>236</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; captured by block as a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; captured by block as a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>236</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;_dispatch_once&apos;</string>
- <key>message</key>
- <string>Calling &apos;_dispatch_once&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_inline_dispatch_once&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_inline_dispatch_once&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling &apos;dispatch_once&apos;</string>
- <key>message</key>
- <string>Calling &apos;dispatch_once&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>3</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;dispatch_once&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;dispatch_once&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>3</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>265c4fd608dafee211bfa93d21c28866</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>235</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>44</integer>
- <integer>45</integer>
- <integer>46</integer>
- <integer>47</integer>
- <integer>48</integer>
- <integer>52</integer>
- <integer>53</integer>
- <integer>54</integer>
- <integer>55</integer>
- <integer>56</integer>
- <integer>57</integer>
- <integer>58</integer>
- <integer>59</integer>
- <integer>60</integer>
- <integer>61</integer>
- <integer>231</integer>
- <integer>232</integer>
- <integer>233</integer>
- <integer>234</integer>
- <integer>235</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>241</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>245</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;_dispatch_once&apos;</string>
- <key>message</key>
- <string>Calling &apos;_dispatch_once&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test_inline_dispatch_once_reachable&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test_inline_dispatch_once_reachable&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling &apos;dispatch_once&apos;</string>
- <key>message</key>
- <string>Calling &apos;dispatch_once&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>3</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;dispatch_once&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;dispatch_once&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>244</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>244</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>244</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>244</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>244</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>3</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Returning to caller</string>
- <key>message</key>
- <string>Returning to caller</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning from &apos;dispatch_once&apos;</string>
- <key>message</key>
- <string>Returning from &apos;dispatch_once&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>61</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>245</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;_dispatch_once&apos;</string>
- <key>message</key>
- <string>Returning from &apos;_dispatch_once&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1e83bd4361a2351df0b4e77eb3a9109b</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_inline_dispatch_once_reachable</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>247</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>44</integer>
- <integer>45</integer>
- <integer>46</integer>
- <integer>47</integer>
- <integer>48</integer>
- <integer>52</integer>
- <integer>53</integer>
- <integer>54</integer>
- <integer>55</integer>
- <integer>56</integer>
- <integer>57</integer>
- <integer>58</integer>
- <integer>59</integer>
- <integer>60</integer>
- <integer>61</integer>
- <integer>65</integer>
- <integer>240</integer>
- <integer>241</integer>
- <integer>242</integer>
- <integer>243</integer>
- <integer>244</integer>
- <integer>247</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/unix-fns.c</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/expected-plists/yaccignore.c.plist b/test/Analysis/Inputs/expected-plists/yaccignore.c.plist
deleted file mode 100644
index c3ff6dfb7f55..000000000000
--- a/test/Analysis/Inputs/expected-plists/yaccignore.c.plist
+++ /dev/null
@@ -1,4 +0,0 @@
-<key>diagnostics</key>
-
-</dict>
-</plist>
diff --git a/test/Analysis/Inputs/localization-pch.h b/test/Analysis/Inputs/localization-pch.h
deleted file mode 100644
index 973270e24ef2..000000000000
--- a/test/Analysis/Inputs/localization-pch.h
+++ /dev/null
@@ -1,5 +0,0 @@
-// Used to test missing checker for missing localization context comments
-// in precompiled headers.
-
-#define MyLocalizedStringInPCH(key) NSLocalizedString((key), @"")
-
diff --git a/test/Analysis/Inputs/qt-simulator.h b/test/Analysis/Inputs/qt-simulator.h
deleted file mode 100644
index a3c7387d2003..000000000000
--- a/test/Analysis/Inputs/qt-simulator.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#pragma clang system_header
-
-namespace QtPrivate {
-struct QSlotObjectBase {};
-}
-
-namespace Qt {
-enum ConnectionType {};
-}
-
-struct QMetaObject {
- struct Connection {};
-};
-
-struct QObject {
- static QMetaObject::Connection connectImpl(const QObject *, void **,
- const QObject *, void **,
- QtPrivate::QSlotObjectBase *,
- Qt::ConnectionType,
- const int *, const QMetaObject *);
-};
-
-struct QEvent {
- enum Type { None };
- QEvent(Type) {}
-};
-
-struct QCoreApplication : public QObject {
- static void postEvent(QObject *receiver, QEvent *event);
- static QCoreApplication *instance();
-};
-
-struct QApplication : public QCoreApplication {};
diff --git a/test/Analysis/Inputs/system-header-simulator-cxx-std-suppression.h b/test/Analysis/Inputs/system-header-simulator-cxx-std-suppression.h
deleted file mode 100644
index dc53af269c9c..000000000000
--- a/test/Analysis/Inputs/system-header-simulator-cxx-std-suppression.h
+++ /dev/null
@@ -1,146 +0,0 @@
-// This is a fake system header with divide-by-zero bugs introduced in
-// c++ std library functions. We use these bugs to test hard-coded
-// suppression of diagnostics within standard library functions that are known
-// to produce false positives.
-
-#pragma clang system_header
-
-typedef unsigned char uint8_t;
-
-typedef __typeof__(sizeof(int)) size_t;
-void *memmove(void *s1, const void *s2, size_t n);
-
-namespace std {
-
- template <class _Tp>
- class allocator {
- public:
- void deallocate(void *p) {
- ::delete p;
- }
- };
-
- template <class _Alloc>
- class allocator_traits {
- public:
- static void deallocate(void *p) {
- _Alloc().deallocate(p);
- }
- };
-
- template <class _Tp, class _Alloc>
- class __list_imp
- {};
-
- template <class _Tp, class _Alloc = allocator<_Tp> >
- class list
- : private __list_imp<_Tp, _Alloc>
- {
- public:
- void pop_front() {
- // Fake use-after-free.
- // No warning is expected as we are suppressing warning coming
- // out of std::list.
- int z = 0;
- z = 5/z;
- }
- bool empty() const;
- };
-
- // basic_string
- template<class _CharT, class _Alloc = allocator<_CharT> >
- class __attribute__ ((__type_visibility__("default"))) basic_string {
- bool isLong;
- union {
- _CharT localStorage[4];
- _CharT *externalStorage;
-
- void assignExternal(_CharT *newExternal) {
- externalStorage = newExternal;
- }
- } storage;
-
- typedef allocator_traits<_Alloc> __alloc_traits;
-
- public:
- basic_string();
-
- void push_back(int c) {
- // Fake error trigger.
- // No warning is expected as we are suppressing warning coming
- // out of std::basic_string.
- int z = 0;
- z = 5/z;
- }
-
- _CharT *getBuffer() {
- return isLong ? storage.externalStorage : storage.localStorage;
- }
-
- basic_string &operator +=(int c) {
- // Fake deallocate stack-based storage.
- // No warning is expected as we are suppressing warnings within
- // std::basic_string.
- __alloc_traits::deallocate(getBuffer());
- }
-
- basic_string &operator =(const basic_string &other) {
- // Fake deallocate stack-based storage, then use the variable in the
- // same union.
- // No warning is expected as we are suppressing warnings within
- // std::basic_string.
- __alloc_traits::deallocate(getBuffer());
- storage.assignExternal(new _CharT[4]);
- }
- };
-
-template<class _Engine, class _UIntType>
-class __independent_bits_engine {
-public:
- // constructors and seeding functions
- __independent_bits_engine(_Engine& __e, size_t __w);
-};
-
-template<class _Engine, class _UIntType>
-__independent_bits_engine<_Engine, _UIntType>
- ::__independent_bits_engine(_Engine& __e, size_t __w)
-{
- // Fake error trigger.
- // No warning is expected as we are suppressing warning coming
- // out of std::__independent_bits_engine.
- int z = 0;
- z = 5/z;
-}
-
-#if __has_feature(cxx_decltype)
-typedef decltype(nullptr) nullptr_t;
-
-template<class _Tp>
-class shared_ptr
-{
-public:
- constexpr shared_ptr(nullptr_t);
- explicit shared_ptr(_Tp* __p);
-
- shared_ptr(shared_ptr&& __r) { }
-
- ~shared_ptr();
-
- shared_ptr& operator=(shared_ptr&& __r) {
- // Fake error trigger.
- // No warning is expected as we are suppressing warning coming
- // out of std::shared_ptr.
- int z = 0;
- z = 5/z;
- }
-};
-
-template<class _Tp>
-inline
-constexpr
-shared_ptr<_Tp>::shared_ptr(nullptr_t) {
-}
-
-#endif // __has_feature(cxx_decltype)
-}
-
diff --git a/test/Analysis/Inputs/system-header-simulator-cxx.h b/test/Analysis/Inputs/system-header-simulator-cxx.h
deleted file mode 100644
index 6f92a42173da..000000000000
--- a/test/Analysis/Inputs/system-header-simulator-cxx.h
+++ /dev/null
@@ -1,824 +0,0 @@
-// Like the compiler, the static analyzer treats some functions differently if
-// they come from a system header -- for example, it is assumed that system
-// functions do not arbitrarily free() their parameters, and that some bugs
-// found in system headers cannot be fixed by the user and should be
-// suppressed.
-#pragma clang system_header
-
-typedef unsigned char uint8_t;
-
-typedef __typeof__(sizeof(int)) size_t;
-typedef __typeof__((char*)0-(char*)0) ptrdiff_t;
-void *memmove(void *s1, const void *s2, size_t n);
-
-namespace std {
- typedef size_t size_type;
-#if __cplusplus >= 201103L
- using nullptr_t = decltype(nullptr);
-#endif
-}
-
-namespace std {
- struct input_iterator_tag { };
- struct output_iterator_tag { };
- struct forward_iterator_tag : public input_iterator_tag { };
- struct bidirectional_iterator_tag : public forward_iterator_tag { };
- struct random_access_iterator_tag : public bidirectional_iterator_tag { };
-
- template <typename Iterator> struct iterator_traits {
- typedef typename Iterator::difference_type difference_type;
- typedef typename Iterator::value_type value_type;
- typedef typename Iterator::pointer pointer;
- typedef typename Iterator::reference reference;
- typedef typename Iterator::iterator_category iterator_category;
- };
-}
-
-template <typename T, typename Ptr, typename Ref> struct __vector_iterator {
- typedef __vector_iterator<T, T *, T &> iterator;
- typedef __vector_iterator<T, const T *, const T &> const_iterator;
-
- typedef ptrdiff_t difference_type;
- typedef T value_type;
- typedef Ptr pointer;
- typedef Ref reference;
- typedef std::random_access_iterator_tag iterator_category;
-
- __vector_iterator(const Ptr p = 0) : ptr(p) {}
- __vector_iterator(const iterator &rhs): ptr(rhs.base()) {}
- __vector_iterator<T, Ptr, Ref> operator++() { ++ ptr; return *this; }
- __vector_iterator<T, Ptr, Ref> operator++(int) {
- auto tmp = *this;
- ++ ptr;
- return tmp;
- }
- __vector_iterator<T, Ptr, Ref> operator--() { -- ptr; return *this; }
- __vector_iterator<T, Ptr, Ref> operator--(int) {
- auto tmp = *this; -- ptr;
- return tmp;
- }
- __vector_iterator<T, Ptr, Ref> operator+(difference_type n) {
- return ptr + n;
- }
- __vector_iterator<T, Ptr, Ref> operator-(difference_type n) {
- return ptr - n;
- }
- __vector_iterator<T, Ptr, Ref> operator+=(difference_type n) {
- return ptr += n;
- }
- __vector_iterator<T, Ptr, Ref> operator-=(difference_type n) {
- return ptr -= n;
- }
-
- Ref operator*() const { return *ptr; }
- Ptr operator->() const { return *ptr; }
-
- bool operator==(const iterator &rhs) const { return ptr == rhs.ptr; }
- bool operator==(const const_iterator &rhs) const { return ptr == rhs.ptr; }
-
- bool operator!=(const iterator &rhs) const { return ptr != rhs.ptr; }
- bool operator!=(const const_iterator &rhs) const { return ptr != rhs.ptr; }
-
- const Ptr& base() const { return ptr; }
-
-private:
- Ptr ptr;
-};
-
-template <typename T, typename Ptr, typename Ref> struct __deque_iterator {
- typedef __deque_iterator<T, T *, T &> iterator;
- typedef __deque_iterator<T, const T *, const T &> const_iterator;
-
- typedef ptrdiff_t difference_type;
- typedef T value_type;
- typedef Ptr pointer;
- typedef Ref reference;
- typedef std::random_access_iterator_tag iterator_category;
-
- __deque_iterator(const Ptr p = 0) : ptr(p) {}
- __deque_iterator(const iterator &rhs): ptr(rhs.base()) {}
- __deque_iterator<T, Ptr, Ref> operator++() { ++ ptr; return *this; }
- __deque_iterator<T, Ptr, Ref> operator++(int) {
- auto tmp = *this;
- ++ ptr;
- return tmp;
- }
- __deque_iterator<T, Ptr, Ref> operator--() { -- ptr; return *this; }
- __deque_iterator<T, Ptr, Ref> operator--(int) {
- auto tmp = *this; -- ptr;
- return tmp;
- }
- __deque_iterator<T, Ptr, Ref> operator+(difference_type n) {
- return ptr + n;
- }
- __deque_iterator<T, Ptr, Ref> operator-(difference_type n) {
- return ptr - n;
- }
- __deque_iterator<T, Ptr, Ref> operator+=(difference_type n) {
- return ptr += n;
- }
- __deque_iterator<T, Ptr, Ref> operator-=(difference_type n) {
- return ptr -= n;
- }
-
- Ref operator*() const { return *ptr; }
- Ptr operator->() const { return *ptr; }
-
- bool operator==(const iterator &rhs) const { return ptr == rhs.ptr; }
- bool operator==(const const_iterator &rhs) const { return ptr == rhs.ptr; }
-
- bool operator!=(const iterator &rhs) const { return ptr != rhs.ptr; }
- bool operator!=(const const_iterator &rhs) const { return ptr != rhs.ptr; }
-
- const Ptr& base() const { return ptr; }
-
-private:
- Ptr ptr;
-};
-
-template <typename T, typename Ptr, typename Ref> struct __list_iterator {
- typedef __list_iterator<T, __typeof__(T::data) *, __typeof__(T::data) &> iterator;
- typedef __list_iterator<T, const __typeof__(T::data) *, const __typeof__(T::data) &> const_iterator;
-
- typedef ptrdiff_t difference_type;
- typedef T value_type;
- typedef Ptr pointer;
- typedef Ref reference;
- typedef std::bidirectional_iterator_tag iterator_category;
-
- __list_iterator(T* it = 0) : item(it) {}
- __list_iterator(const iterator &rhs): item(rhs.base()) {}
- __list_iterator<T, Ptr, Ref> operator++() { item = item->next; return *this; }
- __list_iterator<T, Ptr, Ref> operator++(int) {
- auto tmp = *this;
- item = item->next;
- return tmp;
- }
- __list_iterator<T, Ptr, Ref> operator--() { item = item->prev; return *this; }
- __list_iterator<T, Ptr, Ref> operator--(int) {
- auto tmp = *this;
- item = item->prev;
- return tmp;
- }
-
- Ref operator*() const { return item->data; }
- Ptr operator->() const { return item->data; }
-
- bool operator==(const iterator &rhs) const { return item == rhs->item; }
- bool operator==(const const_iterator &rhs) const { return item == rhs->item; }
-
- bool operator!=(const iterator &rhs) const { return item != rhs->item; }
- bool operator!=(const const_iterator &rhs) const { return item != rhs->item; }
-
- const T* &base() const { return item; }
-
-private:
- T* item;
-};
-
-template <typename T, typename Ptr, typename Ref> struct __fwdl_iterator {
- typedef __fwdl_iterator<T, __typeof__(T::data) *, __typeof__(T::data) &> iterator;
- typedef __fwdl_iterator<T, const __typeof__(T::data) *, const __typeof__(T::data) &> const_iterator;
-
- typedef ptrdiff_t difference_type;
- typedef T value_type;
- typedef Ptr pointer;
- typedef Ref reference;
- typedef std::forward_iterator_tag iterator_category;
-
- __fwdl_iterator(T* it = 0) : item(it) {}
- __fwdl_iterator(const iterator &rhs): item(rhs.base()) {}
- __fwdl_iterator<T, Ptr, Ref> operator++() { item = item->next; return *this; }
- __fwdl_iterator<T, Ptr, Ref> operator++(int) {
- auto tmp = *this;
- item = item->next;
- return tmp;
- }
- Ref operator*() const { return item->data; }
- Ptr operator->() const { return item->data; }
-
- bool operator==(const iterator &rhs) const { return item == rhs->item; }
- bool operator==(const const_iterator &rhs) const { return item == rhs->item; }
-
- bool operator!=(const iterator &rhs) const { return item != rhs->item; }
- bool operator!=(const const_iterator &rhs) const { return item != rhs->item; }
-
- const T* &base() const { return item; }
-
-private:
- T* item;
-};
-
-namespace std {
- template <class T1, class T2>
- struct pair {
- T1 first;
- T2 second;
-
- pair() : first(), second() {}
- pair(const T1 &a, const T2 &b) : first(a), second(b) {}
-
- template<class U1, class U2>
- pair(const pair<U1, U2> &other) : first(other.first),
- second(other.second) {}
- };
-
- typedef __typeof__(sizeof(int)) size_t;
-
- template <class T> class initializer_list;
-
- template< class T > struct remove_reference {typedef T type;};
- template< class T > struct remove_reference<T&> {typedef T type;};
- template< class T > struct remove_reference<T&&> {typedef T type;};
-
- template<class T>
- typename remove_reference<T>::type&& move(T&& a) {
- typedef typename remove_reference<T>::type&& RvalRef;
- return static_cast<RvalRef>(a);
- }
-
- template <class T>
- void swap(T &a, T &b) {
- T c(std::move(a));
- a = std::move(b);
- b = std::move(c);
- }
-
- template<typename T>
- class vector {
- typedef T value_type;
- typedef size_t size_type;
- typedef __vector_iterator<T, T *, T &> iterator;
- typedef __vector_iterator<T, const T *, const T &> const_iterator;
-
- T *_start;
- T *_finish;
- T *_end_of_storage;
- public:
- vector() : _start(0), _finish(0), _end_of_storage(0) {}
- template <typename InputIterator>
- vector(InputIterator first, InputIterator last);
- vector(const vector &other);
- vector(vector &&other);
- ~vector();
-
- size_t size() const {
- return size_t(_finish - _start);
- }
-
- vector& operator=(const vector &other);
- vector& operator=(vector &&other);
- vector& operator=(std::initializer_list<T> ilist);
-
- void assign(size_type count, const T &value);
- template <typename InputIterator >
- void assign(InputIterator first, InputIterator last);
- void assign(std::initializer_list<T> ilist);
-
- void clear();
-
- void push_back(const T &value);
- void push_back(T &&value);
- template<class... Args>
- void emplace_back(Args&&... args);
- void pop_back();
-
- iterator insert(const_iterator position, const value_type &val);
- iterator insert(const_iterator position, size_type n,
- const value_type &val);
- template <typename InputIterator>
- iterator insert(const_iterator position, InputIterator first,
- InputIterator last);
- iterator insert(const_iterator position, value_type &&val);
- iterator insert(const_iterator position, initializer_list<value_type> il);
-
- template <class... Args>
- iterator emplace(const_iterator position, Args&&... args);
-
- iterator erase(const_iterator position);
- iterator erase(const_iterator first, const_iterator last);
-
- T &operator[](size_t n) {
- return _start[n];
- }
-
- const T &operator[](size_t n) const {
- return _start[n];
- }
-
- iterator begin() { return iterator(_start); }
- const_iterator begin() const { return const_iterator(_start); }
- const_iterator cbegin() const { return const_iterator(_start); }
- iterator end() { return iterator(_finish); }
- const_iterator end() const { return const_iterator(_finish); }
- const_iterator cend() const { return const_iterator(_finish); }
- T& front() { return *begin(); }
- const T& front() const { return *begin(); }
- T& back() { return *(end() - 1); }
- const T& back() const { return *(end() - 1); }
- };
-
- template<typename T>
- class list {
- struct __item {
- T data;
- __item *prev, *next;
- } *_start, *_finish;
- public:
- typedef T value_type;
- typedef size_t size_type;
- typedef __list_iterator<__item, T *, T &> iterator;
- typedef __list_iterator<__item, const T *, const T &> const_iterator;
-
- list() : _start(0), _finish(0) {}
- template <typename InputIterator>
- list(InputIterator first, InputIterator last);
- list(const list &other);
- list(list &&other);
- ~list();
-
- list& operator=(const list &other);
- list& operator=(list &&other);
- list& operator=(std::initializer_list<T> ilist);
-
- void assign(size_type count, const T &value);
- template <typename InputIterator >
- void assign(InputIterator first, InputIterator last);
- void assign(std::initializer_list<T> ilist);
-
- void clear();
-
- void push_back(const T &value);
- void push_back(T &&value);
- template<class... Args>
- void emplace_back(Args&&... args);
- void pop_back();
-
- void push_front(const T &value);
- void push_front(T &&value);
- template<class... Args>
- void emplace_front(Args&&... args);
- void pop_front();
-
- iterator insert(const_iterator position, const value_type &val);
- iterator insert(const_iterator position, size_type n,
- const value_type &val);
- template <typename InputIterator>
- iterator insert(const_iterator position, InputIterator first,
- InputIterator last);
- iterator insert(const_iterator position, value_type &&val);
- iterator insert(const_iterator position, initializer_list<value_type> il);
-
- template <class... Args>
- iterator emplace(const_iterator position, Args&&... args);
-
- iterator erase(const_iterator position);
- iterator erase(const_iterator first, const_iterator last);
-
- iterator begin() { return iterator(_start); }
- const_iterator begin() const { return const_iterator(_start); }
- const_iterator cbegin() const { return const_iterator(_start); }
- iterator end() { return iterator(_finish); }
- const_iterator end() const { return const_iterator(_finish); }
- const_iterator cend() const { return const_iterator(_finish); }
-
- T& front() { return *begin(); }
- const T& front() const { return *begin(); }
- T& back() { return *--end(); }
- const T& back() const { return *--end(); }
- };
-
- template<typename T>
- class deque {
- typedef T value_type;
- typedef size_t size_type;
- typedef __deque_iterator<T, T *, T &> iterator;
- typedef __deque_iterator<T, const T *, const T &> const_iterator;
-
- T *_start;
- T *_finish;
- T *_end_of_storage;
- public:
- deque() : _start(0), _finish(0), _end_of_storage(0) {}
- template <typename InputIterator>
- deque(InputIterator first, InputIterator last);
- deque(const deque &other);
- deque(deque &&other);
- ~deque();
-
- size_t size() const {
- return size_t(_finish - _start);
- }
-
- deque& operator=(const deque &other);
- deque& operator=(deque &&other);
- deque& operator=(std::initializer_list<T> ilist);
-
- void assign(size_type count, const T &value);
- template <typename InputIterator >
- void assign(InputIterator first, InputIterator last);
- void assign(std::initializer_list<T> ilist);
-
- void clear();
-
- void push_back(const T &value);
- void push_back(T &&value);
- template<class... Args>
- void emplace_back(Args&&... args);
- void pop_back();
-
- void push_front(const T &value);
- void push_front(T &&value);
- template<class... Args>
- void emplace_front(Args&&... args);
- void pop_front();
-
- iterator insert(const_iterator position, const value_type &val);
- iterator insert(const_iterator position, size_type n,
- const value_type &val);
- template <typename InputIterator>
- iterator insert(const_iterator position, InputIterator first,
- InputIterator last);
- iterator insert(const_iterator position, value_type &&val);
- iterator insert(const_iterator position, initializer_list<value_type> il);
-
- template <class... Args>
- iterator emplace(const_iterator position, Args&&... args);
-
- iterator erase(const_iterator position);
- iterator erase(const_iterator first, const_iterator last);
-
- T &operator[](size_t n) {
- return _start[n];
- }
-
- const T &operator[](size_t n) const {
- return _start[n];
- }
-
- iterator begin() { return iterator(_start); }
- const_iterator begin() const { return const_iterator(_start); }
- const_iterator cbegin() const { return const_iterator(_start); }
- iterator end() { return iterator(_finish); }
- const_iterator end() const { return const_iterator(_finish); }
- const_iterator cend() const { return const_iterator(_finish); }
- T& front() { return *begin(); }
- const T& front() const { return *begin(); }
- T& back() { return *(end() - 1); }
- const T& back() const { return *(end() - 1); }
- };
-
- template<typename T>
- class forward_list {
- struct __item {
- T data;
- __item *next;
- } *_start;
- public:
- typedef T value_type;
- typedef size_t size_type;
- typedef __fwdl_iterator<__item, T *, T &> iterator;
- typedef __fwdl_iterator<__item, const T *, const T &> const_iterator;
-
- forward_list() : _start(0) {}
- template <typename InputIterator>
- forward_list(InputIterator first, InputIterator last);
- forward_list(const forward_list &other);
- forward_list(forward_list &&other);
- ~forward_list();
-
- forward_list& operator=(const forward_list &other);
- forward_list& operator=(forward_list &&other);
- forward_list& operator=(std::initializer_list<T> ilist);
-
- void assign(size_type count, const T &value);
- template <typename InputIterator >
- void assign(InputIterator first, InputIterator last);
- void assign(std::initializer_list<T> ilist);
-
- void clear();
-
- void push_front(const T &value);
- void push_front(T &&value);
- template<class... Args>
- void emplace_front(Args&&... args);
- void pop_front();
-
- iterator insert_after(const_iterator position, const value_type &val);
- iterator insert_after(const_iterator position, value_type &&val);
- iterator insert_after(const_iterator position, size_type n,
- const value_type &val);
- template <typename InputIterator>
- iterator insert_after(const_iterator position, InputIterator first,
- InputIterator last);
- iterator insert_after(const_iterator position,
- initializer_list<value_type> il);
-
- template <class... Args>
- iterator emplace_after(const_iterator position, Args&&... args);
-
- iterator erase_after(const_iterator position);
- iterator erase_after(const_iterator first, const_iterator last);
-
- iterator begin() { return iterator(_start); }
- const_iterator begin() const { return const_iterator(_start); }
- const_iterator cbegin() const { return const_iterator(_start); }
- iterator end() { return iterator(); }
- const_iterator end() const { return const_iterator(); }
- const_iterator cend() const { return const_iterator(); }
-
- T& front() { return *begin(); }
- const T& front() const { return *begin(); }
- };
-
- template <typename CharT>
- class basic_string {
- public:
- basic_string();
- basic_string(const CharT *s);
-
- ~basic_string();
- void clear();
-
- basic_string &operator=(const basic_string &str);
- basic_string &operator+=(const basic_string &str);
-
- const CharT *c_str() const;
- const CharT *data() const;
- CharT *data();
-
- basic_string &append(size_type count, CharT ch);
- basic_string &assign(size_type count, CharT ch);
- basic_string &erase(size_type index, size_type count);
- basic_string &insert(size_type index, size_type count, CharT ch);
- basic_string &replace(size_type pos, size_type count, const basic_string &str);
- void pop_back();
- void push_back(CharT ch);
- void reserve(size_type new_cap);
- void resize(size_type count);
- void shrink_to_fit();
- void swap(basic_string &other);
- };
-
- typedef basic_string<char> string;
- typedef basic_string<wchar_t> wstring;
-#if __cplusplus >= 201103L
- typedef basic_string<char16_t> u16string;
- typedef basic_string<char32_t> u32string;
-#endif
-
- class exception {
- public:
- exception() throw();
- virtual ~exception() throw();
- virtual const char *what() const throw() {
- return 0;
- }
- };
-
- class bad_alloc : public exception {
- public:
- bad_alloc() throw();
- bad_alloc(const bad_alloc&) throw();
- bad_alloc& operator=(const bad_alloc&) throw();
- virtual const char* what() const throw() {
- return 0;
- }
- };
-
- struct nothrow_t {};
-
- extern const nothrow_t nothrow;
-
- // libc++'s implementation
- template <class _E>
- class initializer_list
- {
- const _E* __begin_;
- size_t __size_;
-
- initializer_list(const _E* __b, size_t __s)
- : __begin_(__b),
- __size_(__s)
- {}
-
- public:
- typedef _E value_type;
- typedef const _E& reference;
- typedef const _E& const_reference;
- typedef size_t size_type;
-
- typedef const _E* iterator;
- typedef const _E* const_iterator;
-
- initializer_list() : __begin_(0), __size_(0) {}
-
- size_t size() const {return __size_;}
- const _E* begin() const {return __begin_;}
- const _E* end() const {return __begin_ + __size_;}
- };
-
- template <bool, class _Tp = void> struct enable_if {};
- template <class _Tp> struct enable_if<true, _Tp> {typedef _Tp type;};
-
- template <class _Tp, _Tp __v>
- struct integral_constant
- {
- static const _Tp value = __v;
- typedef _Tp value_type;
- typedef integral_constant type;
-
- operator value_type() const {return value;}
-
- value_type operator ()() const {return value;}
- };
-
- template <class _Tp, _Tp __v>
- const _Tp integral_constant<_Tp, __v>::value;
-
- template <class _Tp, class _Arg>
- struct is_trivially_assignable
- : integral_constant<bool, __is_trivially_assignable(_Tp, _Arg)>
- {
- };
-
- typedef integral_constant<bool,true> true_type;
- typedef integral_constant<bool,false> false_type;
-
- template <class _Tp> struct is_const : public false_type {};
- template <class _Tp> struct is_const<_Tp const> : public true_type {};
-
- template <class _Tp> struct is_reference : public false_type {};
- template <class _Tp> struct is_reference<_Tp&> : public true_type {};
-
- template <class _Tp, class _Up> struct is_same : public false_type {};
- template <class _Tp> struct is_same<_Tp, _Tp> : public true_type {};
-
- template <class _Tp, bool = is_const<_Tp>::value || is_reference<_Tp>::value >
- struct __add_const {typedef _Tp type;};
-
- template <class _Tp>
- struct __add_const<_Tp, false> {typedef const _Tp type;};
-
- template <class _Tp> struct add_const {typedef typename __add_const<_Tp>::type type;};
-
- template <class _Tp> struct remove_const {typedef _Tp type;};
- template <class _Tp> struct remove_const<const _Tp> {typedef _Tp type;};
-
- template <class _Tp> struct add_lvalue_reference {typedef _Tp& type;};
-
- template <class _Tp> struct is_trivially_copy_assignable
- : public is_trivially_assignable<typename add_lvalue_reference<_Tp>::type,
- typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {};
-
- template<class InputIter, class OutputIter>
- OutputIter __copy(InputIter II, InputIter IE, OutputIter OI) {
- while (II != IE)
- *OI++ = *II++;
-
- return OI;
- }
-
- template <class _Tp, class _Up>
- inline
- typename enable_if
- <
- is_same<typename remove_const<_Tp>::type, _Up>::value &&
- is_trivially_copy_assignable<_Up>::value,
- _Up*
- >::type __copy(_Tp* __first, _Tp* __last, _Up* __result) {
- size_t __n = __last - __first;
-
- if (__n > 0)
- memmove(__result, __first, __n * sizeof(_Up));
-
- return __result + __n;
- }
-
- template<class InputIter, class OutputIter>
- OutputIter copy(InputIter II, InputIter IE, OutputIter OI) {
- return __copy(II, IE, OI);
- }
-
- template <class _BidirectionalIterator, class _OutputIterator>
- inline
- _OutputIterator
- __copy_backward(_BidirectionalIterator __first, _BidirectionalIterator __last,
- _OutputIterator __result)
- {
- while (__first != __last)
- *--__result = *--__last;
- return __result;
- }
-
- template <class _Tp, class _Up>
- inline
- typename enable_if
- <
- is_same<typename remove_const<_Tp>::type, _Up>::value &&
- is_trivially_copy_assignable<_Up>::value,
- _Up*
- >::type __copy_backward(_Tp* __first, _Tp* __last, _Up* __result) {
- size_t __n = __last - __first;
-
- if (__n > 0)
- {
- __result -= __n;
- memmove(__result, __first, __n * sizeof(_Up));
- }
- return __result;
- }
-
- template<class InputIter, class OutputIter>
- OutputIter copy_backward(InputIter II, InputIter IE, OutputIter OI) {
- return __copy_backward(II, IE, OI);
- }
-}
-
-template <class BidirectionalIterator, class Distance>
-void __advance (BidirectionalIterator& it, Distance n,
- std::bidirectional_iterator_tag) {
- if (n >= 0) while(n-- > 0) ++it; else while (n++<0) --it;
-}
-
-template <class RandomAccessIterator, class Distance>
-void __advance (RandomAccessIterator& it, Distance n,
- std::random_access_iterator_tag) {
- it += n;
-}
-
-namespace std {
- template <class InputIterator, class Distance>
- void advance (InputIterator& it, Distance n) {
- __advance(it, n, typename InputIterator::iterator_category());
- }
-
- template <class BidirectionalIterator>
- BidirectionalIterator
- prev (BidirectionalIterator it,
- typename iterator_traits<BidirectionalIterator>::difference_type n =
- 1) {
- advance(it, -n);
- return it;
- }
-
- template <class InputIterator, class T>
- InputIterator find(InputIterator first, InputIterator last, const T &val);
-
- template <class ForwardIterator1, class ForwardIterator2>
- ForwardIterator1 find_first_of(ForwardIterator1 first1,
- ForwardIterator1 last1,
- ForwardIterator2 first2,
- ForwardIterator2 last2);
-
- template <class InputIterator, class OutputIterator>
- OutputIterator copy(InputIterator first, InputIterator last,
- OutputIterator result);
-
-}
-
-#if __cplusplus >= 201103L
-namespace std {
- template <typename T> // TODO: Implement the stub for deleter.
- class unique_ptr {
- public:
- unique_ptr(const unique_ptr &) = delete;
- unique_ptr(unique_ptr &&);
-
- T *get() const;
-
- typename std::add_lvalue_reference<T>::type operator*() const;
- T *operator->() const;
- };
-}
-#endif
-
-#ifdef TEST_INLINABLE_ALLOCATORS
-namespace std {
- void *malloc(size_t);
- void free(void *);
-}
-void* operator new(std::size_t size, const std::nothrow_t&) throw() { return std::malloc(size); }
-void* operator new[](std::size_t size, const std::nothrow_t&) throw() { return std::malloc(size); }
-void operator delete(void* ptr, const std::nothrow_t&) throw() { std::free(ptr); }
-void operator delete[](void* ptr, const std::nothrow_t&) throw() { std::free(ptr); }
-#else
-void* operator new(std::size_t, const std::nothrow_t&) throw();
-void* operator new[](std::size_t, const std::nothrow_t&) throw();
-void operator delete(void*, const std::nothrow_t&) throw();
-void operator delete[](void*, const std::nothrow_t&) throw();
-#endif
-
-void* operator new (std::size_t size, void* ptr) throw() { return ptr; };
-void* operator new[] (std::size_t size, void* ptr) throw() { return ptr; };
-void operator delete (void* ptr, void*) throw() {};
-void operator delete[] (void* ptr, void*) throw() {};
-
-namespace __cxxabiv1 {
-extern "C" {
-extern char *__cxa_demangle(const char *mangled_name,
- char *output_buffer,
- size_t *length,
- int *status);
-}}
-namespace abi = __cxxabiv1;
diff --git a/test/Analysis/Inputs/system-header-simulator-for-cxx-uninitialized-object.h b/test/Analysis/Inputs/system-header-simulator-for-cxx-uninitialized-object.h
deleted file mode 100644
index 2397824fc965..000000000000
--- a/test/Analysis/Inputs/system-header-simulator-for-cxx-uninitialized-object.h
+++ /dev/null
@@ -1,18 +0,0 @@
-// Like the compiler, the static analyzer treats some functions differently if
-// they come from a system header -- for example, it is assumed that system
-// functions do not arbitrarily free() their parameters, and that some bugs
-// found in system headers cannot be fixed by the user and should be
-// suppressed.
-
-#pragma clang system_header
-
-struct RecordInSystemHeader {
- int a;
- int b;
-};
-
-template <class T>
-struct ContainerInSystemHeader {
- T &t;
- ContainerInSystemHeader(T& t) : t(t) {}
-};
diff --git a/test/Analysis/Inputs/system-header-simulator-for-malloc.h b/test/Analysis/Inputs/system-header-simulator-for-malloc.h
deleted file mode 100644
index e76455655e9e..000000000000
--- a/test/Analysis/Inputs/system-header-simulator-for-malloc.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// Like the compiler, the static analyzer treats some functions differently if
-// they come from a system header -- for example, it is assumed that system
-// functions do not arbitrarily free() their parameters, and that some bugs
-// found in system headers cannot be fixed by the user and should be
-// suppressed.
-#pragma clang system_header
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void *calloc(size_t, size_t);
-void free(void *);
-
-
-#if __OBJC__
-
-#import "system-header-simulator-objc.h"
-
-@interface Wrapper : NSData
-- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len;
-@end
-
-@implementation Wrapper
-- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len {
- return [self initWithBytesNoCopy:bytes length:len freeWhenDone:1]; // no-warning
-}
-@end
-
-@interface CustomData : NSData
-+ (id)somethingNoCopy:(char *)bytes;
-+ (id)somethingNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)freeBuffer;
-+ (id)something:(char *)bytes freeWhenDone:(BOOL)freeBuffer;
-@end
-
-#endif
diff --git a/test/Analysis/Inputs/system-header-simulator-for-nullability-cxx.h b/test/Analysis/Inputs/system-header-simulator-for-nullability-cxx.h
deleted file mode 100644
index fe620c9ff197..000000000000
--- a/test/Analysis/Inputs/system-header-simulator-for-nullability-cxx.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#pragma clang system_header
-
-struct S {
- ~S(){}
-};
-
-void foo() {
- S s;
-}
diff --git a/test/Analysis/Inputs/system-header-simulator-for-nullability.h b/test/Analysis/Inputs/system-header-simulator-for-nullability.h
deleted file mode 100644
index 1f6a2b1b29d1..000000000000
--- a/test/Analysis/Inputs/system-header-simulator-for-nullability.h
+++ /dev/null
@@ -1,105 +0,0 @@
-#pragma clang system_header
-
-#define nil 0
-#define BOOL int
-
-#define NS_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin")
-#define NS_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end")
-
-NS_ASSUME_NONNULL_BEGIN
-
-typedef struct _NSZone NSZone;
-typedef unsigned long NSUInteger;
-@class NSCoder, NSEnumerator;
-
-@protocol NSObject
-+ (instancetype)alloc;
-- (instancetype)init;
-- (instancetype)autorelease;
-@end
-
-@protocol NSCopying
-- (id)copyWithZone:(nullable NSZone *)zone;
-@end
-
-@protocol NSMutableCopying
-- (id)mutableCopyWithZone:(nullable NSZone *)zone;
-@end
-
-@protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-
-@protocol NSSecureCoding <NSCoding>
-@required
-+ (BOOL)supportsSecureCoding;
-@end
-
-typedef struct {
- unsigned long state;
- id *itemsPtr;
- unsigned long *mutationsPtr;
- unsigned long extra[5];
-} NSFastEnumerationState;
-
-__attribute__((objc_root_class))
-@interface
-NSObject<NSObject>
-@end
-
-@interface NSString : NSObject<NSCopying>
-- (BOOL)isEqualToString : (NSString *)aString;
-- (NSString *)stringByAppendingString:(NSString *)aString;
-- (nullable NSString *)nullableStringByAppendingString:(NSString *)aString;
-+ (NSString * _Nonnull) generateString;
-+ (NSString *) generateImplicitlyNonnullString;
-+ (NSString * _Nullable) generatePossiblyNullString;
-@end
-
-void NSSystemFunctionTakingNonnull(NSString *s);
-
-@interface NSSystemClass : NSObject
-- (void) takesNonnull:(NSString *)s;
-@end
-
-NSString* _Nullable getPossiblyNullString();
-NSString* _Nonnull getString();
-
-@protocol MyProtocol
-- (NSString * _Nonnull) getString;
-@end
-
-NS_ASSUME_NONNULL_END
-
-@interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSSecureCoding>
-
-- (NSUInteger)count;
-- (id)objectForKey:(id)aKey;
-- (NSEnumerator *)keyEnumerator;
-- (id)objectForKeyedSubscript:(id)aKey;
-
-@end
-
-@interface NSDictionary (NSDictionaryCreation)
-
-+ (id)dictionary;
-+ (id)dictionaryWithObject:(id)object forKey:(id <NSCopying>)key;
-+ (instancetype)dictionaryWithObjects:(const id [])objects forKeys:(const id <NSCopying> [])keys count:(NSUInteger)cnt;
-
-@end
-
-@interface NSMutableDictionary : NSDictionary
-
-- (void)removeObjectForKey:(id)aKey;
-- (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey;
-
-@end
-
-@interface NSMutableDictionary (NSExtendedMutableDictionary)
-
-- (void)addEntriesFromDictionary:(NSDictionary *)otherDictionary;
-- (void)removeAllObjects;
-- (void)setDictionary:(NSDictionary *)otherDictionary;
-- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key __attribute__((availability(macosx,introduced=10.8)));
-
-@end
diff --git a/test/Analysis/Inputs/system-header-simulator-for-objc-dealloc.h b/test/Analysis/Inputs/system-header-simulator-for-objc-dealloc.h
deleted file mode 100644
index f1343e30a754..000000000000
--- a/test/Analysis/Inputs/system-header-simulator-for-objc-dealloc.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#pragma clang system_header
-
-#define nil ((id)0)
-
-typedef signed char BOOL;
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (Class)class;
-@end
-
-@interface NSObject <NSObject> {}
-+ (instancetype)alloc;
-- (void)dealloc;
-- (id)init;
-- (id)retain;
-- (oneway void)release;
-@end
-
-@interface NSRunLoop : NSObject
-+ (NSRunLoop *)currentRunLoop;
-+ (NSRunLoop *)mainRunLoop;
-- (void) run;
-- (void)cancelPerformSelectorsWithTarget:(id)target;
-@end
-
-@interface NSNotificationCenter : NSObject
-+ (NSNotificationCenter *)defaultCenter;
-- (void)removeObserver:(id)observer;
-@end
-
-typedef struct objc_selector *SEL;
-
-void _Block_release(const void *aBlock);
-#define Block_release(...) _Block_release((const void *)(__VA_ARGS__))
-
-@interface CIFilter : NSObject
-@end
-
-extern void xpc_main(void);
diff --git a/test/Analysis/Inputs/system-header-simulator-for-pthread-lock.h b/test/Analysis/Inputs/system-header-simulator-for-pthread-lock.h
deleted file mode 100644
index b290ffe8d879..000000000000
--- a/test/Analysis/Inputs/system-header-simulator-for-pthread-lock.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Like the compiler, the static analyzer treats some functions differently if
-// they come from a system header -- for example, pthread_mutex* functions
-// should not invalidate regions of their arguments.
-#pragma clang system_header
-
-typedef struct {
- void *foo;
-} pthread_mutex_t;
-
-typedef struct {
- void *foo;
-} pthread_mutexattr_t;
-
-typedef struct {
- void *foo;
-} lck_grp_t;
-
-typedef pthread_mutex_t lck_mtx_t;
-
-extern int pthread_mutex_lock(pthread_mutex_t *);
-extern int pthread_mutex_unlock(pthread_mutex_t *);
-extern int pthread_mutex_trylock(pthread_mutex_t *);
-extern int pthread_mutex_destroy(pthread_mutex_t *);
-extern int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);
-extern int lck_mtx_lock(lck_mtx_t *);
-extern int lck_mtx_unlock(lck_mtx_t *);
-extern int lck_mtx_try_lock(lck_mtx_t *);
-extern void lck_mtx_destroy(lck_mtx_t *lck, lck_grp_t *grp);
diff --git a/test/Analysis/Inputs/system-header-simulator-for-simple-stream.h b/test/Analysis/Inputs/system-header-simulator-for-simple-stream.h
deleted file mode 100644
index b65b7a6b0e7b..000000000000
--- a/test/Analysis/Inputs/system-header-simulator-for-simple-stream.h
+++ /dev/null
@@ -1,21 +0,0 @@
-// Like the compiler, the static analyzer treats some functions differently if
-// they come from a system header -- for example, it is assumed that system
-// functions do not arbitrarily free() their parameters, and that some bugs
-// found in system headers cannot be fixed by the user and should be
-// suppressed.
-#pragma clang system_header
-
-typedef struct __sFILE {
- unsigned char *_p;
-} FILE;
-FILE *fopen(const char * restrict, const char * restrict) __asm("_" "fopen" );
-int fputc(int, FILE *);
-int fputs(const char * restrict, FILE * restrict) __asm("_" "fputs" );
-int fclose(FILE *);
-void exit(int);
-
-// The following is a fake system header function
-typedef struct __FileStruct {
- FILE * p;
-} FileStruct;
-void fakeSystemHeaderCall(FileStruct *);
diff --git a/test/Analysis/Inputs/system-header-simulator-for-valist.h b/test/Analysis/Inputs/system-header-simulator-for-valist.h
deleted file mode 100644
index 7299b61353d4..000000000000
--- a/test/Analysis/Inputs/system-header-simulator-for-valist.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// Like the compiler, the static analyzer treats some functions differently if
-// they come from a system header -- for example, it is assumed that system
-// functions do not arbitrarily free() their parameters, and that some bugs
-// found in system headers cannot be fixed by the user and should be
-// suppressed.
-
-#pragma clang system_header
-
-#ifdef __cplusplus
-#define restrict /*restrict*/
-#endif
-
-typedef __builtin_va_list va_list;
-
-#define va_start(ap, param) __builtin_va_start(ap, param)
-#define va_end(ap) __builtin_va_end(ap)
-#define va_arg(ap, type) __builtin_va_arg(ap, type)
-#define va_copy(dst, src) __builtin_va_copy(dst, src)
-
-int vprintf (const char *restrict format, va_list arg);
-
-int vsprintf (char *restrict s, const char *restrict format, va_list arg);
-
-int some_library_function(int n, va_list arg);
-
-// No warning from system header.
-inline void __impl_detail(int fst, ...) {
- va_list va;
- (void)va_arg(va, int);
-}
diff --git a/test/Analysis/Inputs/system-header-simulator-objc.h b/test/Analysis/Inputs/system-header-simulator-objc.h
deleted file mode 100644
index df751d03e642..000000000000
--- a/test/Analysis/Inputs/system-header-simulator-objc.h
+++ /dev/null
@@ -1,151 +0,0 @@
-// Like the compiler, the static analyzer treats some functions differently if
-// they come from a system header -- for example, it is assumed that system
-// functions do not arbitrarily free() their parameters, and that some bugs
-// found in system headers cannot be fixed by the user and should be
-// suppressed.
-#pragma clang system_header
-
-typedef unsigned int UInt32;
-typedef unsigned short UInt16;
-
-typedef signed long CFIndex;
-typedef signed char BOOL;
-#define YES ((BOOL)1)
-#define NO ((BOOL)0)
-
-typedef unsigned long NSUInteger;
-typedef unsigned short unichar;
-typedef UInt16 UniChar;
-
-#ifndef NULL
-#define __DARWIN_NULL ((void *)0)
-#define NULL __DARWIN_NULL
-#endif
-
-#define nil ((id)0)
-
-enum {
- NSASCIIStringEncoding = 1,
- NSNEXTSTEPStringEncoding = 2,
- NSJapaneseEUCStringEncoding = 3,
- NSUTF8StringEncoding = 4,
- NSISOLatin1StringEncoding = 5,
- NSSymbolStringEncoding = 6,
- NSNonLossyASCIIStringEncoding = 7,
-};
-typedef const struct __CFString * CFStringRef;
-typedef struct __CFString * CFMutableStringRef;
-typedef NSUInteger NSStringEncoding;
-typedef UInt32 CFStringEncoding;
-
-typedef const void * CFTypeRef;
-
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern const CFAllocatorRef kCFAllocatorSystemDefault;
-extern const CFAllocatorRef kCFAllocatorMalloc;
-extern const CFAllocatorRef kCFAllocatorMallocZone;
-extern const CFAllocatorRef kCFAllocatorNull;
-
-@class NSString, Protocol;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (id)copy;
-- (oneway void)release;
-- (id)autorelease;
-- (id)init;
-@property (readonly, copy) NSString *description;
-@end @protocol NSCopying - (id)copyWithZone:(NSZone *)zone;
-@end @protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone;
-@end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@interface NSObject <NSObject> {}
-+ (id)allocWithZone:(NSZone *)zone;
-+ (id)alloc;
-- (void)dealloc;
-@end
-@interface NSObject (NSCoderMethods)
-- (id)awakeAfterUsingCoder:(NSCoder *)aDecoder;
-@end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-typedef struct {
-}
-NSFastEnumerationState;
-@protocol NSFastEnumeration - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
-@end @class NSString, NSDictionary;
-@interface NSValue : NSObject <NSCopying, NSCoding>
-+ (NSValue *)valueWithPointer:(const void *)p;
-- (void)getValue:(void *)value;
-@end
-@interface NSNumber : NSValue - (char)charValue;
-- (id)initWithInt:(int)value;
-- (BOOL)boolValue;
-@end @class NSString;
-@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration> - (NSUInteger)count;
-@end @interface NSArray (NSArrayCreation) + (id)array;
-@end @interface NSAutoreleasePool : NSObject {
-}
-- (void)drain;
-@end extern NSString * const NSBundleDidLoadNotification;
-typedef double NSTimeInterval;
-@interface NSDate : NSObject <NSCopying, NSCoding> - (NSTimeInterval)timeIntervalSinceReferenceDate;
-@end
-
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-- (NSString *)stringByAppendingString:(NSString *)aString;
-- ( const char *)UTF8String;
-- (id)initWithUTF8String:(const char *)nullTerminatedCString;
-- (id)initWithCharactersNoCopy:(unichar *)characters length:(NSUInteger)length freeWhenDone:(BOOL)freeBuffer;
-- (id)initWithCharacters:(const unichar *)characters length:(NSUInteger)length;
-- (id)initWithBytes:(const void *)bytes length:(NSUInteger)len encoding:(NSStringEncoding)encoding;
-- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len encoding:(NSStringEncoding)encoding freeWhenDone:(BOOL)freeBuffer;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
-+ (id)stringWithString:(NSString *)string;
-@end @class NSString, NSURL, NSError;
-
-@interface NSMutableString : NSString
-- (void)appendFormat:(NSString *)format, ... __attribute__((format(__NSString__, 1, 2)));
-@end
-
-@interface NSData : NSObject <NSCopying, NSMutableCopying, NSCoding> - (NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b;
-- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;
-- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b;
-- (id)initWithBytes:(void *)bytes length:(NSUInteger) length;
-@end
-
-typedef struct {
-}
-CFDictionaryKeyCallBacks;
-extern const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks;
-typedef struct {
-}
-CFDictionaryValueCallBacks;
-extern const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef struct __CFDictionary * CFMutableDictionaryRef;
-extern CFMutableDictionaryRef CFDictionaryCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
-void CFDictionarySetValue(CFMutableDictionaryRef, const void *, const void *);
-
-
-extern void CFRelease(CFTypeRef cf);
-
-extern CFMutableStringRef CFStringCreateMutableWithExternalCharactersNoCopy(CFAllocatorRef alloc, UniChar *chars, CFIndex numChars, CFIndex capacity, CFAllocatorRef externalCharactersAllocator);
-extern CFStringRef CFStringCreateWithCStringNoCopy(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding, CFAllocatorRef contentsDeallocator);
-extern void CFStringAppend(CFMutableStringRef theString, CFStringRef appendedString);
-
-void SystemHeaderFunctionWithBlockParam(void *, void (^block)(void *), unsigned);
-
-@interface NSPointerArray : NSObject <NSFastEnumeration, NSCopying, NSCoding>
-- (void)addPointer:(void *)pointer;
-- (void)insertPointer:(void *)item atIndex:(NSUInteger)index;
-- (void)replacePointerAtIndex:(NSUInteger)index withPointer:(void *)item;
-- (void *)pointerAtIndex:(NSUInteger)index;
-@end
-
diff --git a/test/Analysis/Inputs/system-header-simulator.h b/test/Analysis/Inputs/system-header-simulator.h
deleted file mode 100644
index 8542387d4277..000000000000
--- a/test/Analysis/Inputs/system-header-simulator.h
+++ /dev/null
@@ -1,115 +0,0 @@
-// Like the compiler, the static analyzer treats some functions differently if
-// they come from a system header -- for example, it is assumed that system
-// functions do not arbitrarily free() their parameters, and that some bugs
-// found in system headers cannot be fixed by the user and should be
-// suppressed.
-#pragma clang system_header
-
-#ifdef __cplusplus
-#define restrict /*restrict*/
-#endif
-
-typedef struct _FILE FILE;
-extern FILE *stdin;
-extern FILE *stdout;
-extern FILE *stderr;
-// Include a variant of standard streams that occur in the pre-processed file.
-extern FILE *__stdinp;
-extern FILE *__stdoutp;
-extern FILE *__stderrp;
-
-int scanf(const char *restrict format, ...);
-int fscanf(FILE *restrict, const char *restrict, ...);
-int printf(const char *restrict format, ...);
-int fprintf(FILE *restrict, const char *restrict, ...);
-int getchar(void);
-
-// Note, on some platforms errno macro gets replaced with a function call.
-extern int errno;
-
-typedef __typeof(sizeof(int)) size_t;
-
-size_t strlen(const char *);
-
-char *strcpy(char *restrict, const char *restrict);
-char *strncpy(char *dst, const char *src, size_t n);
-void *memcpy(void *dst, const void *src, size_t n);
-
-typedef unsigned long __darwin_pthread_key_t;
-typedef __darwin_pthread_key_t pthread_key_t;
-int pthread_setspecific(pthread_key_t, const void *);
-
-typedef long long __int64_t;
-typedef __int64_t __darwin_off_t;
-typedef __darwin_off_t fpos_t;
-
-void setbuf(FILE * restrict, char * restrict);
-int setvbuf(FILE * restrict, char * restrict, int, size_t);
-
-FILE *fopen(const char * restrict, const char * restrict);
-int fclose(FILE *);
-FILE *funopen(const void *,
- int (*)(void *, char *, int),
- int (*)(void *, const char *, int),
- fpos_t (*)(void *, fpos_t, int),
- int (*)(void *));
-
-int sqlite3_bind_text_my(int, const char*, int n, void(*)(void*));
-
-typedef void (*freeCallback) (void*);
-typedef struct {
- int i;
- freeCallback fc;
-} StWithCallback;
-
-int dealocateMemWhenDoneByVal(void*, StWithCallback);
-int dealocateMemWhenDoneByRef(StWithCallback*, const void*);
-
-typedef struct CGContext *CGContextRef;
-CGContextRef CGBitmapContextCreate(void *data/*, size_t width, size_t height,
- size_t bitsPerComponent, size_t bytesPerRow,
- CGColorSpaceRef space,
- CGBitmapInfo bitmapInfo*/);
-void *CGBitmapContextGetData(CGContextRef context);
-
-// Include xpc.
-typedef struct _xpc_connection_s * xpc_connection_t;
-typedef void (*xpc_finalizer_t)(void *value);
-void xpc_connection_set_context(xpc_connection_t connection, void *context);
-void xpc_connection_set_finalizer_f(xpc_connection_t connection, xpc_finalizer_t finalizer);
-void xpc_connection_resume(xpc_connection_t connection);
-
-//The following are fake system header functions for generic testing.
-void fakeSystemHeaderCallInt(int *);
-void fakeSystemHeaderCallIntPtr(int **);
-
-// Some data strauctures may hold onto the pointer and free it later.
-void fake_insque(void *, void *);
-typedef struct fake_rb_tree { void *opaque[8]; } fake_rb_tree_t;
-void fake_rb_tree_init(fake_rb_tree_t *, const void *);
-void *fake_rb_tree_insert_node(fake_rb_tree_t *, void *);
-
-typedef struct __SomeStruct {
- char * p;
-} SomeStruct;
-void fakeSystemHeaderCall(SomeStruct *);
-
-typedef int pid_t;
-pid_t fork(void);
-pid_t vfork(void);
-int execl(const char *path, const char *arg, ...);
-
-void exit(int status) __attribute__ ((__noreturn__));
-void _exit(int status) __attribute__ ((__noreturn__));
-void _Exit(int status) __attribute__ ((__noreturn__));
-
-#define UINT32_MAX 4294967295U
-#define INT64_MIN (-INT64_MAX-1)
-#define __DBL_MAX__ 1.7976931348623157e+308
-#define DBL_MAX __DBL_MAX__
-#ifndef NULL
-#define __DARWIN_NULL 0
-#define NULL __DARWIN_NULL
-#endif
-
-#define offsetof(t, d) __builtin_offsetof(t, d) \ No newline at end of file
diff --git a/test/Analysis/MPIMock.h b/test/Analysis/MPIMock.h
deleted file mode 100644
index 01d2d42fc58a..000000000000
--- a/test/Analysis/MPIMock.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Message Passing Interface mock header. Mocks MPI constants and functions, in
-// order to make them available in distinct integration test files.
-
-#define NULL 0
-
-// mock types
-typedef int MPI_Datatype;
-typedef int MPI_Comm;
-typedef int MPI_Request;
-typedef int MPI_Status;
-typedef int MPI_Op;
-typedef int int8_t;
-typedef int uint8_t;
-typedef int uint16_t;
-typedef int int64_t;
-namespace std { template<class T> struct complex { T real; T imag; }; }
-
-// mock constants
-#define MPI_DATATYPE_NULL 0
-#define MPI_CHAR 0
-#define MPI_BYTE 0
-#define MPI_INT 0
-#define MPI_LONG 0
-#define MPI_LONG_DOUBLE 0
-#define MPI_UNSIGNED 0
-#define MPI_INT8_T 0
-#define MPI_UINT8_T 0
-#define MPI_UINT16_T 0
-#define MPI_C_LONG_DOUBLE_COMPLEX 0
-#define MPI_FLOAT 0
-#define MPI_DOUBLE 0
-#define MPI_CXX_BOOL 0
-#define MPI_CXX_FLOAT_COMPLEX 0
-#define MPI_CXX_DOUBLE_COMPLEX 0
-#define MPI_CXX_LONG_DOUBLE_COMPLEX 0
-#define MPI_IN_PLACE 0
-#define MPI_COMM_WORLD 0
-#define MPI_STATUS_IGNORE 0
-#define MPI_STATUSES_IGNORE 0
-#define MPI_SUM 0
-
-// mock functions
-int MPI_Comm_size(MPI_Comm, int *);
-int MPI_Comm_rank(MPI_Comm, int *);
-int MPI_Send(const void *, int, MPI_Datatype, int, int, MPI_Comm);
-int MPI_Recv(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *);
-int MPI_Isend(const void *, int, MPI_Datatype, int, int, MPI_Comm,
- MPI_Request *);
-int MPI_Irecv(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
-int MPI_Wait(MPI_Request *, MPI_Status *);
-int MPI_Waitall(int, MPI_Request[], MPI_Status[]);
-int MPI_Reduce(const void *, void *, int, MPI_Datatype, MPI_Op, int, MPI_Comm);
-int MPI_Ireduce(const void *, void *, int, MPI_Datatype, MPI_Op, int, MPI_Comm,
- MPI_Request *);
-int MPI_Bcast(void *, int count, MPI_Datatype, int, MPI_Comm);
diff --git a/test/Analysis/Malloc+MismatchedDeallocator+NewDelete.cpp b/test/Analysis/Malloc+MismatchedDeallocator+NewDelete.cpp
deleted file mode 100644
index b5e47b3355da..000000000000
--- a/test/Analysis/Malloc+MismatchedDeallocator+NewDelete.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,unix.MismatchedDeallocator,cplusplus.NewDelete -std=c++11 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,unix.MismatchedDeallocator,cplusplus.NewDelete,cplusplus.NewDeleteLeaks -DLEAKS -std=c++11 -verify %s
-
-#include "Inputs/system-header-simulator-for-malloc.h"
-
-//--------------------------------------------------
-// Check that unix.Malloc catches all types of bugs.
-//--------------------------------------------------
-void testMallocDoubleFree() {
- int *p = (int *)malloc(sizeof(int));
- free(p);
- free(p); // expected-warning{{Attempt to free released memory}}
-}
-
-void testMallocLeak() {
- int *p = (int *)malloc(sizeof(int));
-} // expected-warning{{Potential leak of memory pointed to by 'p'}}
-
-void testMallocUseAfterFree() {
- int *p = (int *)malloc(sizeof(int));
- free(p);
- int j = *p; // expected-warning{{Use of memory after it is freed}}
-}
-
-void testMallocBadFree() {
- int i;
- free(&i); // expected-warning{{Argument to free() is the address of the local variable 'i', which is not memory allocated by malloc()}}
-}
-
-void testMallocOffsetFree() {
- int *p = (int *)malloc(sizeof(int));
- free(++p); // expected-warning{{Argument to free() is offset by 4 bytes from the start of memory allocated by malloc()}}
-}
-
-//-----------------------------------------------------------------
-// Check that unix.MismatchedDeallocator catches all types of bugs.
-//-----------------------------------------------------------------
-void testMismatchedDeallocator() {
- int *x = (int *)malloc(sizeof(int));
- delete x; // expected-warning{{Memory allocated by malloc() should be deallocated by free(), not 'delete'}}
-}
-
-//----------------------------------------------------------------
-// Check that alpha.cplusplus.NewDelete catches all types of bugs.
-//----------------------------------------------------------------
-void testNewDoubleFree() {
- int *p = new int;
- delete p;
- delete p; // expected-warning{{Attempt to free released memory}}
-}
-
-void testNewLeak() {
- int *p = new int;
-}
-#ifdef LEAKS
-// expected-warning@-2 {{Potential leak of memory pointed to by 'p'}}
-#endif
-
-void testNewUseAfterFree() {
- int *p = (int *)operator new(0);
- delete p;
- int j = *p; // expected-warning{{Use of memory after it is freed}}
-}
-
-void testNewBadFree() {
- int i;
- delete &i; // expected-warning{{Argument to 'delete' is the address of the local variable 'i', which is not memory allocated by 'new'}}
-}
-
-void testNewOffsetFree() {
- int *p = new int;
- operator delete(++p); // expected-warning{{Argument to operator delete is offset by 4 bytes from the start of memory allocated by 'new'}}
-}
-
-//----------------------------------------------------------------
-// Test that we check for free errors on escaped pointers.
-//----------------------------------------------------------------
-void changePtr(int **p);
-static int *globalPtr;
-void changePointee(int *p);
-
-void testMismatchedChangePtrThroughCall() {
- int *p = (int*)malloc(sizeof(int)*4);
- changePtr(&p);
- delete p; // no-warning the value of the pointer might have changed
-}
-
-void testMismatchedChangePointeeThroughCall() {
- int *p = (int*)malloc(sizeof(int)*4);
- changePointee(p);
- delete p; // expected-warning{{Memory allocated by malloc() should be deallocated by free(), not 'delete'}}
-}
-
-void testShouldReportDoubleFreeNotMismatched() {
- int *p = (int*)malloc(sizeof(int)*4);
- globalPtr = p;
- free(p);
- delete globalPtr; // expected-warning {{Attempt to free released memory}}
-}
-int *allocIntArray(unsigned c) {
- return new int[c];
-}
-void testMismatchedChangePointeeThroughAssignment() {
- int *arr = allocIntArray(4);
- globalPtr = arr;
- delete arr; // expected-warning{{Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'}}
-}
diff --git a/test/Analysis/Malloc+MismatchedDeallocator_intersections.cpp b/test/Analysis/Malloc+MismatchedDeallocator_intersections.cpp
deleted file mode 100644
index 88435b866acd..000000000000
--- a/test/Analysis/Malloc+MismatchedDeallocator_intersections.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,unix.MismatchedDeallocator -analyzer-store region -std=c++11 -verify %s
-// expected-no-diagnostics
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-//--------------------------------------------------------------------
-// Check that unix.Malloc + unix.MismatchedDeallocator does not enable
-// warnings produced by the alpha.cplusplus.NewDelete checker.
-//--------------------------------------------------------------------
-void testNewDeleteNoWarn() {
- int i;
- delete &i; // no-warning
-
- int *p1 = new int;
- delete ++p1; // no-warning
-
- int *p2 = new int;
- delete p2;
- delete p2; // no-warning
-
- int *p3 = new int; // no-warning
-
- int *p4 = new int;
- delete p4;
- int j = *p4; // no-warning
-}
-
-void testUseZeroAllocNoWarn() {
- int *p1 = (int *)operator new(0);
- *p1 = 1; // no-warning
-
- int *p2 = (int *)operator new[](0);
- p2[0] = 1; // no-warning
-
- int *p3 = new int[0];
- p3[0] = 1; // no-warning
-}
diff --git a/test/Analysis/Malloc+NewDelete_intersections.cpp b/test/Analysis/Malloc+NewDelete_intersections.cpp
deleted file mode 100644
index 9140e1f4a372..000000000000
--- a/test/Analysis/Malloc+NewDelete_intersections.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,cplusplus.NewDelete -std=c++11 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,cplusplus.NewDelete,cplusplus.NewDeleteLeaks -std=c++11 -verify %s
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-//-------------------------------------------------------------------
-// Check that unix.Malloc + cplusplus.NewDelete does not enable
-// warnings produced by unix.MismatchedDeallocator.
-//-------------------------------------------------------------------
-void testMismatchedDeallocator() {
- int *p = (int *)malloc(sizeof(int));
- delete p;
-} // expected-warning{{Potential leak of memory pointed to by 'p'}}
diff --git a/test/Analysis/MemRegion.cpp b/test/Analysis/MemRegion.cpp
deleted file mode 100644
index b8f079a773df..000000000000
--- a/test/Analysis/MemRegion.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=optin.mpi.MPI-Checker -verify %s
-
-#include "MPIMock.h"
-
-// Use MPI-Checker to test 'getDescriptiveName', as the checker uses the
-// function for diagnostics.
-void testGetDescriptiveName() {
- int rank = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- MPI_Request sendReq1;
- MPI_Wait(&sendReq1, MPI_STATUS_IGNORE); // expected-warning{{Request 'sendReq1' has no matching nonblocking call.}}
-}
-
-void testGetDescriptiveName2() {
- int rank = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- MPI_Request sendReq1[10][10][10];
- MPI_Wait(&sendReq1[1][7][9], MPI_STATUS_IGNORE); // expected-warning{{Request 'sendReq1[1][7][9]' has no matching nonblocking call.}}
-}
-
-void testGetDescriptiveName3() {
- int rank = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- typedef struct { MPI_Request req; } ReqStruct;
- ReqStruct rs;
- MPI_Request *r = &rs.req;
- MPI_Wait(r, MPI_STATUS_IGNORE); // expected-warning{{Request 'rs.req' has no matching nonblocking call.}}
-}
-
-void testGetDescriptiveName4() {
- int rank = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- typedef struct { MPI_Request req[2][2]; } ReqStruct;
- ReqStruct rs;
- MPI_Request *r = &rs.req[0][1];
- MPI_Wait(r, MPI_STATUS_IGNORE); // expected-warning{{Request 'rs.req[0][1]' has no matching nonblocking call.}}
-}
-
-void testGetDescriptiveName5() {
- int rank = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- typedef struct { MPI_Request req; } ReqStructInner;
- typedef struct { ReqStructInner req; } ReqStruct;
- ReqStruct rs;
- MPI_Request *r = &rs.req.req;
- MPI_Wait(r, MPI_STATUS_IGNORE); // expected-warning{{Request 'rs.req.req' has no matching nonblocking call.}}
-}
diff --git a/test/Analysis/MismatchedDeallocator-checker-test.mm b/test/Analysis/MismatchedDeallocator-checker-test.mm
deleted file mode 100644
index 013d677e515c..000000000000
--- a/test/Analysis/MismatchedDeallocator-checker-test.mm
+++ /dev/null
@@ -1,233 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.MismatchedDeallocator -fblocks -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.MismatchedDeallocator -fblocks -DTEST_INLINABLE_ALLOCATORS -verify %s
-
-#include "Inputs/system-header-simulator-objc.h"
-#include "Inputs/system-header-simulator-cxx.h"
-
-typedef __typeof__(sizeof(int)) size_t;
-void *malloc(size_t);
-void *realloc(void *ptr, size_t size);
-void *calloc(size_t nmemb, size_t size);
-char *strdup(const char *s);
-void __attribute((ownership_returns(malloc))) *my_malloc(size_t);
-
-void free(void *);
-void __attribute((ownership_takes(malloc, 1))) my_free(void *);
-
-//---------------------------------------------------------------
-// Test if an allocation function matches deallocation function
-//---------------------------------------------------------------
-
-//--------------- test malloc family
-void testMalloc1() {
- int *p = (int *)malloc(sizeof(int));
- delete p; // expected-warning{{Memory allocated by malloc() should be deallocated by free(), not 'delete'}}
-}
-
-void testMalloc2() {
- int *p = (int *)malloc(8);
- int *q = (int *)realloc(p, 16);
- delete q; // expected-warning{{Memory allocated by realloc() should be deallocated by free(), not 'delete'}}
-}
-
-void testMalloc3() {
- int *p = (int *)calloc(1, sizeof(int));
- delete p; // expected-warning{{Memory allocated by calloc() should be deallocated by free(), not 'delete'}}
-}
-
-void testMalloc4(const char *s) {
- char *p = strdup(s);
- delete p; // expected-warning{{Memory allocated by strdup() should be deallocated by free(), not 'delete'}}
-}
-
-void testMalloc5() {
- int *p = (int *)my_malloc(sizeof(int));
- delete p; // expected-warning{{Memory allocated by my_malloc() should be deallocated by free(), not 'delete'}}
-}
-
-void testMalloc6() {
- int *p = (int *)malloc(sizeof(int));
- operator delete(p); // expected-warning{{Memory allocated by malloc() should be deallocated by free(), not operator delete}}
-}
-
-void testMalloc7() {
- int *p = (int *)malloc(sizeof(int));
- delete[] p; // expected-warning{{Memory allocated by malloc() should be deallocated by free(), not 'delete[]'}}
-}
-
-void testMalloc8() {
- int *p = (int *)malloc(sizeof(int));
- operator delete[](p); // expected-warning{{Memory allocated by malloc() should be deallocated by free(), not operator delete[]}}
-}
-
-void testAlloca() {
- int *p = (int *)__builtin_alloca(sizeof(int));
- delete p; // expected-warning{{Memory allocated by alloca() should not be deallocated}}
-}
-
-//--------------- test new family
-void testNew1() {
- int *p = new int;
- free(p); // expected-warning{{Memory allocated by 'new' should be deallocated by 'delete', not free()}}
-}
-
-void testNew2() {
- int *p = (int *)operator new(0);
- free(p); // expected-warning{{Memory allocated by operator new should be deallocated by 'delete', not free()}}
-}
-
-void testNew3() {
- int *p = new int[1];
- free(p); // expected-warning{{Memory allocated by 'new[]' should be deallocated by 'delete[]', not free()}}
-}
-
-void testNew4() {
- int *p = new int;
- realloc(p, sizeof(long)); // expected-warning{{Memory allocated by 'new' should be deallocated by 'delete', not realloc()}}
-}
-
-void testNew5() {
- int *p = (int *)operator new(0);
- realloc(p, sizeof(long)); // expected-warning{{Memory allocated by operator new should be deallocated by 'delete', not realloc()}}
-}
-
-void testNew6() {
- int *p = new int[1];
- realloc(p, sizeof(long)); // expected-warning{{Memory allocated by 'new[]' should be deallocated by 'delete[]', not realloc()}}
-}
-
-int *allocInt() {
- return new int;
-}
-void testNew7() {
- int *p = allocInt();
- delete[] p; // expected-warning{{Memory allocated by 'new' should be deallocated by 'delete', not 'delete[]'}}
-}
-
-void testNew8() {
- int *p = (int *)operator new(0);
- delete[] p; // expected-warning{{Memory allocated by operator new should be deallocated by 'delete', not 'delete[]'}}
-}
-
-int *allocIntArray(unsigned c) {
- return new int[c];
-}
-
-void testNew9() {
- int *p = allocIntArray(1);
- delete p; // expected-warning{{Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'}}
-}
-
-void testNew10() {
- int *p = (int *)operator new[](0);
- delete p; // expected-warning{{Memory allocated by operator new[] should be deallocated by 'delete[]', not 'delete'}}
-}
-
-void testNew11(NSUInteger dataLength) {
- int *p = new int;
- NSData *d = [NSData dataWithBytesNoCopy:p length:sizeof(int) freeWhenDone:1]; // expected-warning{{+dataWithBytesNoCopy:length:freeWhenDone: cannot take ownership of memory allocated by 'new'}}
-}
-
-//-------------------------------------------------------
-// Check for intersection with unix.Malloc bounded with
-// unix.MismatchedDeallocator
-//-------------------------------------------------------
-
-// new/delete oparators are subjects of cplusplus.NewDelete.
-void testNewDeleteNoWarn() {
- int i;
- delete &i; // no-warning
-
- int *p1 = new int;
- delete ++p1; // no-warning
-
- int *p2 = new int;
- delete p2;
- delete p2; // no-warning
-
- int *p3 = new int; // no-warning
-}
-
-void testDeleteOpAfterFree() {
- int *p = (int *)malloc(sizeof(int));
- free(p);
- operator delete(p); // no-warning
-}
-
-void testDeleteAfterFree() {
- int *p = (int *)malloc(sizeof(int));
- free(p);
- delete p; // no-warning
-}
-
-void testStandardPlacementNewAfterFree() {
- int *p = (int *)malloc(sizeof(int));
- free(p);
- p = new(p) int; // no-warning
-}
-
-//---------------------------------------------------------------
-// Check for intersection with cplusplus.NewDelete bounded with
-// unix.MismatchedDeallocator
-//---------------------------------------------------------------
-
-// malloc()/free() are subjects of unix.Malloc and unix.MallocWithAnnotations
-void testMallocFreeNoWarn() {
- int i;
- free(&i); // no-warning
-
- int *p1 = (int *)malloc(sizeof(int));
- free(++p1); // no-warning
-
- int *p2 = (int *)malloc(sizeof(int));
- free(p2);
- free(p2); // no-warning
-
- int *p3 = (int *)malloc(sizeof(int)); // no-warning
-}
-
-void testFreeAfterDelete() {
- int *p = new int;
- delete p;
- free(p); // no-warning
-}
-
-void testStandardPlacementNewAfterDelete() {
- int *p = new int;
- delete p;
- p = new(p) int; // no-warning
-}
-
-
-// Smart pointer example
-template <typename T>
-struct SimpleSmartPointer {
- T *ptr;
-
- explicit SimpleSmartPointer(T *p = 0) : ptr(p) {}
- ~SimpleSmartPointer() {
- delete ptr;
- // expected-warning@-1 {{Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'}}
- // expected-warning@-2 {{Memory allocated by malloc() should be deallocated by free(), not 'delete'}}
- }
-};
-
-void testSimpleSmartPointerArrayNew() {
- {
- SimpleSmartPointer<int> a(new int);
- } // no-warning
-
- {
- SimpleSmartPointer<int> a(new int[4]);
- }
-}
-
-void testSimpleSmartPointerMalloc() {
- {
- SimpleSmartPointer<int> a(new int);
- } // no-warning
-
- {
- SimpleSmartPointer<int> a((int *)malloc(4));
- }
-}
diff --git a/test/Analysis/MismatchedDeallocator-path-notes.cpp b/test/Analysis/MismatchedDeallocator-path-notes.cpp
deleted file mode 100644
index 8cbd401c5a08..000000000000
--- a/test/Analysis/MismatchedDeallocator-path-notes.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.MismatchedDeallocator -analyzer-output=text -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.MismatchedDeallocator -analyzer-output=plist %s -o %t.plist
-// RUN: tail -n +11 %t.plist | diff -u -w -I "<string>/" -I "<string>.:" -I "version" - %S/copypaste/Inputs/expected-plists/MismatchedDeallocator-path-notes.cpp.plist
-
-void changePointee(int *p);
-int *allocIntArray(unsigned c) {
- return new int[c]; // expected-note {{Memory is allocated}}
-}
-void test() {
- int *p = allocIntArray(1); // expected-note {{Calling 'allocIntArray'}}
- // expected-note@-1 {{Returned allocated memory}}
- changePointee(p);
- delete p; // expected-warning {{Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'}}
- // expected-note@-1 {{Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'}}
-}
diff --git a/test/Analysis/MissingDealloc.m b/test/Analysis/MissingDealloc.m
deleted file mode 100644
index bdba93c8815a..000000000000
--- a/test/Analysis/MissingDealloc.m
+++ /dev/null
@@ -1,199 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=osx.cocoa.Dealloc -fblocks -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=osx.cocoa.Dealloc -fblocks -verify -triple x86_64-apple-darwin10 -fobjc-arc %s
-
-#define NON_ARC !__has_feature(objc_arc)
-
-// No diagnostics expected under ARC.
-#if !NON_ARC
- // expected-no-diagnostics
-#endif
-
-typedef signed char BOOL;
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (Class)class;
-@end
-
-@interface NSObject <NSObject> {}
-- (void)dealloc;
-- (id)init;
-@end
-
-typedef struct objc_selector *SEL;
-
-//===------------------------------------------------------------------------===
-// Do not warn about missing -dealloc method. Not enough context to know
-// whether the ivar is retained or not.
-
-@interface MissingDeallocWithIvar : NSObject {
- NSObject *_ivar;
-}
-@end
-
-@implementation MissingDeallocWithIvar
-@end
-
-//===------------------------------------------------------------------------===
-// Do not warn about missing -dealloc method. These properties are not
-// retained or synthesized.
-
-@interface MissingDeallocWithIntProperty : NSObject
-@property (assign) int ivar;
-@end
-
-@implementation MissingDeallocWithIntProperty
-@end
-
-@interface MissingDeallocWithSELProperty : NSObject
-@property (assign) SEL ivar;
-@end
-
-@implementation MissingDeallocWithSELProperty
-@end
-
-//===------------------------------------------------------------------------===
-// Warn about missing -dealloc method.
-
-@interface MissingDeallocWithCopyProperty : NSObject
-@property (copy) NSObject *ivar;
-@end
-
-#if NON_ARC
-// expected-warning@+2{{'MissingDeallocWithCopyProperty' lacks a 'dealloc' instance method but must release '_ivar'}}
-#endif
-@implementation MissingDeallocWithCopyProperty
-@end
-
-@interface MissingDeallocWithRetainProperty : NSObject
-@property (retain) NSObject *ivar;
-@end
-
-#if NON_ARC
-// expected-warning@+2{{'MissingDeallocWithRetainProperty' lacks a 'dealloc' instance method but must release '_ivar'}}
-#endif
-@implementation MissingDeallocWithRetainProperty
-@end
-
-@interface MissingDeallocWithMultipleProperties : NSObject
-@property (retain) NSObject *ivar1;
-@property (retain) NSObject *ivar2;
-@end
-
-#if NON_ARC
-// expected-warning@+2{{'MissingDeallocWithMultipleProperties' lacks a 'dealloc' instance method but must release '_ivar1' and others}}
-#endif
-@implementation MissingDeallocWithMultipleProperties
-@end
-
-@interface MissingDeallocWithIVarAndRetainProperty : NSObject {
- NSObject *_ivar2;
-}
-@property (retain) NSObject *ivar1;
-@end
-
-#if NON_ARC
-// expected-warning@+2{{'MissingDeallocWithIVarAndRetainProperty' lacks a 'dealloc' instance method but must release '_ivar1'}}
-#endif
-@implementation MissingDeallocWithIVarAndRetainProperty
-@end
-
-@interface MissingDeallocWithReadOnlyRetainedProperty : NSObject
-@property (readonly,retain) NSObject *ivar;
-@end
-
-#if NON_ARC
-// expected-warning@+2{{'MissingDeallocWithReadOnlyRetainedProperty' lacks a 'dealloc' instance method but must release '_ivar'}}
-#endif
-@implementation MissingDeallocWithReadOnlyRetainedProperty
-@end
-
-
-//===------------------------------------------------------------------------===
-// Don't warn about iVars that are selectors.
-
-@interface TestSELs : NSObject {
- SEL a;
- SEL b;
-}
-
-@end
-
-@implementation TestSELs
-- (id)init {
- if( (self = [super init]) ) {
- a = @selector(a);
- b = @selector(b);
- }
-
- return self;
-}
-@end
-
-//===------------------------------------------------------------------------===
-// Don't warn about iVars that are IBOutlets.
-
-@class NSWindow;
-
-@interface HasOutlet : NSObject {
-IBOutlet NSWindow *window;
-}
-@end
-
-@implementation HasOutlet // no-warning
-@end
-
-//===------------------------------------------------------------------------===
-// PR 3187: http://llvm.org/bugs/show_bug.cgi?id=3187
-// - Disable the missing -dealloc check for classes that subclass SenTestCase
-
-@class NSString;
-
-@interface SenTestCase : NSObject {}
-@end
-
-@interface MyClassTest : SenTestCase {
- NSString *resourcePath;
-}
-
-@property (retain) NSObject *ivar;
-
-@end
-
-@interface NSBundle : NSObject {}
-+ (NSBundle *)bundleForClass:(Class)aClass;
-- (NSString *)resourcePath;
-@end
-
-@implementation MyClassTest
-- (void)setUp {
- resourcePath = [[NSBundle bundleForClass:[self class]] resourcePath];
-}
-- (void)testXXX {
- // do something which uses resourcepath
-}
-@end
-
-//===------------------------------------------------------------------------===
-// Don't warn for clases that aren't subclasses of NSObject
-
-__attribute__((objc_root_class))
-@interface NonNSObjectMissingDealloc
-@property (retain) NSObject *ivar;
-@end
-@implementation NonNSObjectMissingDealloc
-@end
-
-
-//===------------------------------------------------------------------------===
-// Don't crash on calls to dealloc as a class method.
-
-@interface DeallocingClass : NSObject {}
-@end
-@implementation DeallocingClass
-- (void)dealloc {
- [DeallocingClass dealloc]; // FIXME: Should we warn on this specifically?
-}
-#if NON_ARC
-// expected-warning@-2{{method possibly missing a [super dealloc] call}}
-#endif
-@end
diff --git a/test/Analysis/NSContainers.m b/test/Analysis/NSContainers.m
deleted file mode 100644
index ac33efc1174a..000000000000
--- a/test/Analysis/NSContainers.m
+++ /dev/null
@@ -1,312 +0,0 @@
-// RUN: %clang_analyze_cc1 -Wno-objc-literal-conversion -analyzer-checker=core,osx.cocoa.NonNilReturnValue,osx.cocoa.NilArg,osx.cocoa.Loops,debug.ExprInspection -verify -Wno-objc-root-class %s
-
-void clang_analyzer_eval(int);
-
-typedef unsigned long NSUInteger;
-typedef signed char BOOL;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject
-@end
-@protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
-@end
-@protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
-@end
-@protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@protocol NSSecureCoding <NSCoding>
-@required
-+ (BOOL)supportsSecureCoding;
-@end
-@interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
-
-- (id)mutableCopy;
-@end
-
-typedef struct {
- unsigned long state;
- id *itemsPtr;
- unsigned long *mutationsPtr;
- unsigned long extra[5];
-} NSFastEnumerationState;
-@protocol NSFastEnumeration
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id [])buffer count:(NSUInteger)len;
-@end
-
-@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration>
-- (NSUInteger)count;
-- (id)objectAtIndex:(NSUInteger)index;
-@end
-
-@interface NSArray (NSExtendedArray)
-- (NSArray *)arrayByAddingObject:(id)anObject;
-- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx __attribute__((availability(macosx,introduced=10.8)));
-@end
-
-@interface NSArray (NSArrayCreation)
-+ (instancetype)arrayWithObjects:(const id [])objects count:(NSUInteger)cnt;
-@end
-
-@interface NSMutableArray : NSArray
-
-- (void)addObject:(id)anObject;
-- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
-- (void)removeLastObject;
-- (void)removeObjectAtIndex:(NSUInteger)index;
-- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
-
-@end
-
-@interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration>
-
-- (NSUInteger)count;
-- (id)objectForKey:(id)aKey;
-- (NSEnumerator *)keyEnumerator;
-
-@end
-
-@interface NSDictionary (NSDictionaryCreation)
-
-+ (id)dictionary;
-+ (id)dictionaryWithObject:(id)object forKey:(id <NSCopying>)key;
-+ (instancetype)dictionaryWithObjects:(const id [])objects forKeys:(const id <NSCopying> [])keys count:(NSUInteger)cnt;
-
-@end
-
-@interface NSMutableDictionary : NSDictionary
-
-- (void)removeObjectForKey:(id)aKey;
-- (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey;
-
-@end
-
-@interface NSMutableDictionary (NSExtendedMutableDictionary)
-
-- (void)addEntriesFromDictionary:(NSDictionary *)otherDictionary;
-- (void)removeAllObjects;
-- (void)removeObjectsForKeys:(NSArray *)keyArray;
-- (void)setDictionary:(NSDictionary *)otherDictionary;
-- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key __attribute__((availability(macosx,introduced=10.8)));
-
-@end
-
-@interface NSOrderedSet : NSObject <NSFastEnumeration>
-@end
-@interface NSOrderedSet (NSOrderedSetCreation)
-- (NSUInteger)count;
-@end
-
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSSecureCoding>
-
-@end
-
-@interface NSNull : NSObject <NSCopying, NSSecureCoding>
-+ (NSNull *)null;
-@end
-
-// NSMutableArray API
-void testNilArgNSMutableArray1() {
- NSMutableArray *marray = [[NSMutableArray alloc] init];
- [marray addObject:0]; // expected-warning {{Argument to 'NSMutableArray' method 'addObject:' cannot be nil}}
-}
-
-void testNilArgNSMutableArray2() {
- NSMutableArray *marray = [[NSMutableArray alloc] init];
- [marray insertObject:0 atIndex:1]; // expected-warning {{Argument to 'NSMutableArray' method 'insertObject:atIndex:' cannot be nil}}
-}
-
-void testNilArgNSMutableArray3() {
- NSMutableArray *marray = [[NSMutableArray alloc] init];
- [marray replaceObjectAtIndex:1 withObject:0]; // expected-warning {{Argument to 'NSMutableArray' method 'replaceObjectAtIndex:withObject:' cannot be nil}}
-}
-
-void testNilArgNSMutableArray4() {
- NSMutableArray *marray = [[NSMutableArray alloc] init];
- [marray setObject:0 atIndexedSubscript:1]; // expected-warning {{Argument to 'NSMutableArray' method 'setObject:atIndexedSubscript:' cannot be nil}}
-}
-
-void testNilArgNSMutableArray5() {
- NSMutableArray *marray = [[NSMutableArray alloc] init];
- marray[1] = 0; // expected-warning {{Array element cannot be nil}}
-}
-
-// NSArray API
-void testNilArgNSArray1() {
- NSArray *array = [[NSArray alloc] init];
- NSArray *copyArray = [array arrayByAddingObject:0]; // expected-warning {{Argument to 'NSArray' method 'arrayByAddingObject:' cannot be nil}}
-}
-
-// NSMutableDictionary and NSDictionary APIs.
-void testNilArgNSMutableDictionary1(NSMutableDictionary *d, NSString* key) {
- [d setObject:0 forKey:key]; // expected-warning {{Value argument to 'setObject:forKey:' cannot be nil}}
-}
-
-void testNilArgNSMutableDictionary2(NSMutableDictionary *d, NSObject *obj) {
- [d setObject:obj forKey:0]; // expected-warning {{Key argument to 'setObject:forKey:' cannot be nil}}
-}
-
-void testNilArgNSMutableDictionary3(NSMutableDictionary *d) {
- [d removeObjectForKey:0]; // expected-warning {{Value argument to 'removeObjectForKey:' cannot be nil}}
-}
-
-void testNilArgNSMutableDictionary5(NSMutableDictionary *d, NSString* key) {
- d[key] = 0; // no-warning - removing the mapping for the given key
-}
-void testNilArgNSMutableDictionary6(NSMutableDictionary *d, NSString *key) {
- if (key)
- ;
- d[key] = 0; // expected-warning {{'NSMutableDictionary' key cannot be nil}}
-}
-
-NSDictionary *testNilArgNSDictionary1(NSString* key) {
- return [NSDictionary dictionaryWithObject:0 forKey:key]; // expected-warning {{Value argument to 'dictionaryWithObject:forKey:' cannot be nil}}
-}
-NSDictionary *testNilArgNSDictionary2(NSObject *obj) {
- return [NSDictionary dictionaryWithObject:obj forKey:0]; // expected-warning {{Key argument to 'dictionaryWithObject:forKey:' cannot be nil}}
-}
-
-id testCreateDictionaryLiteralKey(id value, id nilKey) {
- if (nilKey)
- ;
- return @{@"abc":value, nilKey:@"abc"}; // expected-warning {{Dictionary key cannot be nil}}
-}
-
-id testCreateDictionaryLiteralValue(id nilValue) {
- if (nilValue)
- ;
- return @{@"abc":nilValue}; // expected-warning {{Dictionary value cannot be nil}}
-}
-
-id testCreateDictionaryLiteral(id nilValue, id nilKey) {
- if (nilValue)
- ;
- if (nilKey)
- ;
- return @{@"abc":nilValue, nilKey:@"abc"}; // expected-warning {{Dictionary key cannot be nil}}
- // expected-warning@-1 {{Dictionary value cannot be nil}}
-}
-
-id testCreateArrayLiteral(id myNil) {
- if (myNil)
- ;
- return @[ @"a", myNil, @"c" ]; // expected-warning {{Array element cannot be nil}}
-}
-
-// Test inline defensive checks suppression.
-void idc(id x) {
- if (x)
- ;
-}
-void testIDC(NSMutableDictionary *d, NSString *key) {
- idc(key);
- d[key] = @"abc"; // no-warning
-}
-
-@interface Foo {
-@public
- int x;
-}
-- (int *)getPtr;
-- (int)getInt;
-- (NSMutableDictionary *)getDictPtr;
-@property (retain, readonly, nonatomic) Foo* data;
-- (NSString*) stringForKeyFE: (id<NSCopying>)key;
-@end
-
-void idc2(id x) {
- if (!x)
- return;
-}
-Foo *retNil() {
- return 0;
-}
-
-void testIDC2(Foo *obj) {
- idc2(obj);
- *[obj getPtr] = 1; // no-warning
-}
-
-int testIDC3(Foo *obj) {
- idc2(obj);
- return 1/[obj getInt];
-}
-
-void testNilReceiverIDC(Foo *obj, NSString *key) {
- NSMutableDictionary *D = [obj getDictPtr];
- idc(D);
- D[key] = @"abc"; // no-warning
-}
-
-void testNilReceiverRetNil2(NSMutableDictionary *D, Foo *FooPtrIn, id value) {
- NSString* const kKeyIdentifier = @"key";
- Foo *FooPtr = retNil();
- NSString *key = [[FooPtr data] stringForKeyFE: kKeyIdentifier];
- // key is nil because FooPtr is nil. However, FooPtr is set to nil inside an
- // inlined function, so this error report should be suppressed.
- [D setObject: value forKey: key]; // no-warning
-}
-
-void testAssumeNSNullNullReturnsNonNil(NSMutableDictionary *Table, id Object,
- id InValue) {
- id Value = Object ? [Table objectForKey:Object] : [NSNull null];
- if (!Value) {
- Value = InValue;
- [Table setObject:Value forKey:Object]; // no warning
- }
-}
-
-void testCollectionIsNotEmptyWhenCountIsGreaterThanZero(NSMutableDictionary *D){
- if ([D count] > 0) { // Count is greater than zero.
- NSString *s = 0;
- for (NSString *key in D) {
- s = key; // Loop is always entered.
- }
- [D removeObjectForKey:s]; // no warning
- }
-}
-
-void testCountAwareNSOrderedSet(NSOrderedSet *containers, int *validptr) {
- int *x = 0;
- NSUInteger containerCount = [containers count];
- if (containerCount > 0)
- x = validptr;
- for (id c in containers) {
- *x = 1; // no warning
- }
-}
-
-void testLiteralsNonNil() {
- clang_analyzer_eval(!!@[]); // expected-warning{{TRUE}}
- clang_analyzer_eval(!!@{}); // expected-warning{{TRUE}}
-}
-
-@interface NSMutableArray (MySafeAdd)
-- (void)addObject:(id)obj safe:(BOOL)safe;
-@end
-
-void testArrayCategory(NSMutableArray *arr) {
- [arr addObject:0 safe:1]; // no-warning
-}
-
-@interface MyView : NSObject
--(NSArray *)subviews;
-@end
-
-void testNoReportWhenReceiverNil(NSMutableArray *array, int b) {
- // Don't warn about adding nil to a container when the receiver is also
- // definitely nil.
- if (array == 0) {
- [array addObject:0]; // no-warning
- }
-
- MyView *view = b ? [[MyView alloc] init] : 0;
- NSMutableArray *subviews = [[view subviews] mutableCopy];
- // When view is nil, subviews is also nil so there should be no warning
- // here either.
- [subviews addObject:view]; // no-warning
-}
diff --git a/test/Analysis/NSPanel.m b/test/Analysis/NSPanel.m
deleted file mode 100644
index e65b0715a15f..000000000000
--- a/test/Analysis/NSPanel.m
+++ /dev/null
@@ -1,88 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-// BEGIN delta-debugging reduced header stuff
-
-typedef struct objc_selector *SEL;
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (oneway void)release;
-@end
-@protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
-@end
-@protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
-@end
-@protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@interface NSObject <NSObject> {}
-+ (id)alloc;
-@end
-typedef float CGFloat;
-typedef struct _NSPoint {} NSRect;
-static __inline__ __attribute__((always_inline)) NSRect NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) { NSRect r; return r; }
-typedef struct {} NSFastEnumerationState;
-@protocol NSFastEnumeration
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
-@end
-@class NSString;
-@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
-@end
-@interface NSMutableArray : NSArray
-- (void)addObject:(id)anObject;
-@end @class NSAppleEventDescriptor;
-enum { NSBackingStoreRetained = 0, NSBackingStoreNonretained = 1, NSBackingStoreBuffered = 2 };
-typedef NSUInteger NSBackingStoreType;
-@interface NSResponder : NSObject <NSCoding> {} @end
-@protocol NSAnimatablePropertyContainer
-- (id)animator;
-@end
-@protocol NSValidatedUserInterfaceItem
-- (SEL)action;
-@end
-@protocol NSUserInterfaceValidations
-- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem;
-@end @class NSDate, NSDictionary, NSError, NSException, NSNotification;
-enum { NSBorderlessWindowMask = 0, NSTitledWindowMask = 1 << 0, NSClosableWindowMask = 1 << 1, NSMiniaturizableWindowMask = 1 << 2, NSResizableWindowMask = 1 << 3 };
-@interface NSWindow : NSResponder <NSAnimatablePropertyContainer, NSUserInterfaceValidations> {}
-- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag;
-@end
-extern NSString *NSWindowDidBecomeKeyNotification;
-@interface NSPanel : NSWindow {}
-@end
-@class NSTableHeaderView;
-
-// END delta-debugging reduced header stuff
-
-@interface MyClass
-{
- NSMutableArray *panels;
-}
-- (void)myMethod;
-- (void)myMethod2;
-@end
-
-@implementation MyClass // no-warning
-- (void)myMethod
-{
- NSPanel *panel = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, 200, 200) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:(BOOL)1];
-
- [panels addObject:panel];
-
- [panel release]; // no-warning
-}
-- (void)myMethod2
-{
- NSPanel *panel = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, 200, 200) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:(BOOL)1]; // no-warning
-
- [panels addObject:panel];
-}
-@end
-
diff --git a/test/Analysis/NSString.m b/test/Analysis/NSString.m
deleted file mode 100644
index a53fc1e56624..000000000000
--- a/test/Analysis/NSString.m
+++ /dev/null
@@ -1,448 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -analyzer-checker=core,osx.cocoa.NilArg,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -verify -Wno-objc-root-class %s
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -analyzer-checker=core,osx.cocoa.NilArg,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -analyzer-config mode=shallow -verify -Wno-objc-root-class %s
-// RUN: %clang_analyze_cc1 -DTEST_64 -triple x86_64-apple-darwin10 -analyzer-checker=core,osx.cocoa.NilArg,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -verify -Wno-objc-root-class %s
-// RUN: %clang_analyze_cc1 -DOSATOMIC_USE_INLINED -triple i386-apple-darwin10 -analyzer-checker=core,osx.cocoa.NilArg,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -verify -Wno-objc-root-class %s
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from
-// Foundation.h (Mac OS X).
-//
-// It includes the basic definitions for the test cases below.
-// Not directly including Foundation.h directly makes this test case
-// both svelte and portable to non-Mac platforms.
-//===----------------------------------------------------------------------===//
-
-#ifdef TEST_64
-typedef long long int64_t;
-_Bool OSAtomicCompareAndSwap64Barrier( int64_t __oldValue, int64_t __newValue, volatile int64_t *__theValue );
-#define COMPARE_SWAP_BARRIER OSAtomicCompareAndSwap64Barrier
-typedef int64_t intptr_t;
-#else
-typedef int int32_t;
-_Bool OSAtomicCompareAndSwap32Barrier( int32_t __oldValue, int32_t __newValue, volatile int32_t *__theValue );
-#define COMPARE_SWAP_BARRIER OSAtomicCompareAndSwap32Barrier
-typedef int32_t intptr_t;
-#endif
-
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-void CFRelease(CFTypeRef cf);
-typedef const struct __CFDictionary * CFDictionaryRef;
-const void *CFDictionaryGetValue(CFDictionaryRef theDict, const void *key);
-extern CFStringRef CFStringCreateWithFormat(CFAllocatorRef alloc, CFDictionaryRef formatOptions, CFStringRef format, ...);
-typedef signed char BOOL;
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
-@class NSString, Protocol;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-typedef NSInteger NSComparisonResult;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (oneway void)release;
-- (id)retain;
-- (id)autorelease;
-@end
-@protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
-@end
-@protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
-@end
-@protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
-@end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-typedef struct {} NSFastEnumerationState;
-@protocol NSFastEnumeration
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
-@end
-@class NSString;
-typedef struct _NSRange {} NSRange;
-@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
-@end
-@interface NSMutableArray : NSArray
-- (void)addObject:(id)anObject;
-- (id)initWithCapacity:(NSUInteger)numItems;
-@end
-typedef unsigned short unichar;
-@class NSData, NSArray, NSDictionary, NSCharacterSet, NSData, NSURL, NSError, NSLocale;
-typedef NSUInteger NSStringCompareOptions;
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding> - (NSUInteger)length;
-- (NSComparisonResult)compare:(NSString *)string;
-- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;
-- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange;
-- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange locale:(id)locale;
-- (NSComparisonResult)caseInsensitiveCompare:(NSString *)string;
-- (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator;
-+ (id)stringWithFormat:(NSString *)format, ... __attribute__((format(__NSString__, 1, 2)));
-@end
-@interface NSSimpleCString : NSString {} @end
-@interface NSConstantString : NSSimpleCString @end
-extern void *_NSConstantStringClassReference;
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-NSComparisonResult f1(NSString* s) {
- NSString *aString = 0;
- return [s compare:aString]; // expected-warning {{Argument to 'NSString' method 'compare:' cannot be nil}}
-}
-
-NSComparisonResult f2(NSString* s) {
- NSString *aString = 0;
- return [s caseInsensitiveCompare:aString]; // expected-warning {{Argument to 'NSString' method 'caseInsensitiveCompare:' cannot be nil}}
-}
-
-NSComparisonResult f3(NSString* s, NSStringCompareOptions op) {
- NSString *aString = 0;
- return [s compare:aString options:op]; // expected-warning {{Argument to 'NSString' method 'compare:options:' cannot be nil}}
-}
-
-NSComparisonResult f4(NSString* s, NSStringCompareOptions op, NSRange R) {
- NSString *aString = 0;
- return [s compare:aString options:op range:R]; // expected-warning {{Argument to 'NSString' method 'compare:options:range:' cannot be nil}}
-}
-
-NSComparisonResult f5(NSString* s, NSStringCompareOptions op, NSRange R) {
- NSString *aString = 0;
- return [s compare:aString options:op range:R locale:0]; // expected-warning {{Argument to 'NSString' method 'compare:options:range:locale:' cannot be nil}}
-}
-
-NSArray *f6(NSString* s) {
- return [s componentsSeparatedByCharactersInSet:0]; // expected-warning {{Argument to 'NSString' method 'componentsSeparatedByCharactersInSet:' cannot be nil}}
-}
-
-NSString* f7(NSString* s1, NSString* s2, NSString* s3) {
-
- NSString* s4 = (NSString*)
- CFStringCreateWithFormat(kCFAllocatorDefault, 0, // expected-warning{{leak}}
- (CFStringRef) __builtin___CFStringMakeConstantString("%@ %@ (%@)"),
- s1, s2, s3);
-
- CFRetain(s4);
- return s4;
-}
-
-NSMutableArray* f8() {
-
- NSString* s = [[NSString alloc] init];
- NSMutableArray* a = [[NSMutableArray alloc] initWithCapacity:2];
- [a addObject:s];
- [s release]; // no-warning
- return a;
-}
-
-void f9() {
-
- NSString* s = [[NSString alloc] init];
- NSString* q = s;
- [s release];
- [q release]; // expected-warning {{used after it is released}}
-}
-
-NSString* f10() {
- static NSString* s = 0;
- if (!s) s = [[NSString alloc] init];
- return s; // no-warning
-}
-
-// Test case for regression reported in <rdar://problem/6452745>.
-// Essentially 's' should not be considered allocated on the false branch.
-// This exercises the 'EvalAssume' logic in GRTransferFuncs (CFRefCount.cpp).
-NSString* f11(CFDictionaryRef dict, const char* key) {
- NSString* s = (NSString*) CFDictionaryGetValue(dict, key);
- [s retain];
- if (s) {
- [s release];
- }
- return 0;
-}
-
-// Test case for passing a tracked object by-reference to a function we
-// don't understand.
-void unknown_function_f12(NSString** s);
-void f12() {
- NSString *string = [[NSString alloc] init];
- unknown_function_f12(&string); // no-warning
-}
-
-// Test double release of CFString (PR 4014).
-void f13(void) {
- CFStringRef ref = CFStringCreateWithFormat(kCFAllocatorDefault, ((void*)0), ((CFStringRef) __builtin___CFStringMakeConstantString ("" "%d" "")), 100);
- CFRelease(ref);
- CFRelease(ref); // expected-warning{{Reference-counted object is used after it is released}}
-}
-
-@interface MyString : NSString
-@end
-
-void f14(MyString *s) {
- [s compare:0]; // expected-warning {{Argument to 'MyString' method 'compare:' cannot be nil}}
-}
-
-// Test regular use of -autorelease
-@interface TestAutorelease
--(NSString*) getString;
-@end
-@implementation TestAutorelease
--(NSString*) getString {
- NSString *str = [[NSString alloc] init];
- return [str autorelease]; // no-warning
-}
-- (void)m1
-{
- NSString *s = [[NSString alloc] init]; // expected-warning{{leak}}
- [s retain];
- [s autorelease];
-}
-- (void)m2
-{
- NSString *s = [[[NSString alloc] init] autorelease]; // expected-warning{{leak}}
- [s retain];
-}
-- (void)m3
-{
- NSString *s = [[[NSString alloc] init] autorelease];
- [s retain];
- [s autorelease];
-}
-- (void)m4
-{
- NSString *s = [[NSString alloc] init]; // expected-warning{{leak}}
- [s retain];
-}
-- (void)m5
-{
- NSString *s = [[NSString alloc] init];
- [s autorelease];
-}
-@end
-
-@interface C1 : NSObject {}
-- (NSString*) getShared;
-+ (C1*) sharedInstance;
-@end
-@implementation C1 : NSObject {}
-- (NSString*) getShared {
- static NSString* s = 0;
- if (!s) s = [[NSString alloc] init];
- return s; // no-warning
-}
-+ (C1 *)sharedInstance {
- static C1 *sharedInstance = 0;
- if (!sharedInstance) {
- sharedInstance = [[C1 alloc] init];
- }
- return sharedInstance; // no-warning
-}
-@end
-
-@interface SharedClass : NSObject
-+ (id)sharedInstance;
-- (id)notShared;
-@end
-
-@implementation SharedClass
-
-- (id)_init {
- if ((self = [super init])) {
- NSLog(@"Bar");
- }
- return self;
-}
-
-- (id)notShared {
- return [[SharedClass alloc] _init]; // expected-warning{{leak}}
-}
-
-+ (id)sharedInstance {
- static SharedClass *_sharedInstance = 0;
- if (!_sharedInstance) {
- _sharedInstance = [[SharedClass alloc] _init];
- }
- return _sharedInstance; // no-warning
-}
-@end
-
-id testSharedClassFromFunction() {
- return [[SharedClass alloc] _init]; // no-warning
-}
-
-#if !(defined(OSATOMIC_USE_INLINED) && OSATOMIC_USE_INLINED)
-// Test OSCompareAndSwap
-_Bool OSAtomicCompareAndSwapPtr( void *__oldValue, void *__newValue, void * volatile *__theValue );
-extern BOOL objc_atomicCompareAndSwapPtr(id predicate, id replacement, volatile id *objectLocation);
-#else
-// Test that the body farm models are still used even when a body is available.
-_Bool opaque_OSAtomicCompareAndSwapPtr( void *__oldValue, void *__newValue, void * volatile *__theValue );
-_Bool OSAtomicCompareAndSwapPtr( void *__oldValue, void *__newValue, void * volatile *__theValue ) {
- return opaque_OSAtomicCompareAndSwapPtr(__oldValue, __newValue, __theValue);
-}
-// Test that the analyzer doesn't crash when the farm model is used.
-// The analyzer ignores the autosynthesized code.
-_Bool OSAtomicCompareAndSwapEmptyFunction( void *__oldValue, void *__newValue, void * volatile *__theValue ) {
- return 0;
-}
-extern BOOL opaque_objc_atomicCompareAndSwapPtr(id predicate, id replacement, volatile id *objectLocation);
-extern BOOL objc_atomicCompareAndSwapPtr(id predicate, id replacement, volatile id *objectLocation) {
- return opaque_objc_atomicCompareAndSwapPtr(predicate, replacement, objectLocation);
-}
-#endif
-
-void testOSCompareAndSwap() {
- NSString *old = 0;
- NSString *s = [[NSString alloc] init]; // no-warning
- if (!OSAtomicCompareAndSwapPtr(0, s, (void**) &old))
- [s release];
- else
- [old release];
-}
-
-void testOSCompareAndSwapXXBarrier_local() {
- NSString *old = 0;
- NSString *s = [[NSString alloc] init]; // no-warning
- if (!COMPARE_SWAP_BARRIER((intptr_t) 0, (intptr_t) s, (intptr_t*) &old))
- [s release];
- else
- [old release];
-}
-
-void testOSCompareAndSwapXXBarrier_local_no_direct_release() {
- NSString *old = 0;
- NSString *s = [[NSString alloc] init]; // no-warning
- if (!COMPARE_SWAP_BARRIER((intptr_t) 0, (intptr_t) s, (intptr_t*) &old))
- return;
- else
- [old release];
-}
-
-int testOSCompareAndSwapXXBarrier_id(Class myclass, id xclass) {
- if (COMPARE_SWAP_BARRIER(0, (intptr_t) myclass, (intptr_t*) &xclass))
- return 1;
- return 0;
-}
-
-void test_objc_atomicCompareAndSwap_local() {
- NSString *old = 0;
- NSString *s = [[NSString alloc] init]; // no-warning
- if (!objc_atomicCompareAndSwapPtr(0, s, &old))
- [s release];
- else
- [old release];
-}
-
-void test_objc_atomicCompareAndSwap_local_no_direct_release() {
- NSString *old = 0;
- NSString *s = [[NSString alloc] init]; // no-warning
- if (!objc_atomicCompareAndSwapPtr(0, s, &old))
- return;
- else
- [old release];
-}
-
-void test_objc_atomicCompareAndSwap_parameter(NSString **old) {
- NSString *s = [[NSString alloc] init]; // no-warning
- if (!objc_atomicCompareAndSwapPtr(0, s, old))
- [s release];
- else
- [*old release];
-}
-
-void test_objc_atomicCompareAndSwap_parameter_no_direct_release(NSString **old) {
- NSString *s = [[NSString alloc] init]; // expected-warning{{leak}}
- if (!objc_atomicCompareAndSwapPtr(0, s, old))
- return;
- else
- [*old release];
-}
-
-
-// Test stringWithFormat (<rdar://problem/6815234>)
-void test_stringWithFormat() {
- NSString *string = [[NSString stringWithFormat:@"%ld", (long) 100] retain];
- [string release];
- [string release]; // expected-warning{{Incorrect decrement of the reference count}}
-}
-
-// Test isTrackedObjectType().
-typedef NSString* WonkyTypedef;
-@interface TestIsTracked
-+ (WonkyTypedef)newString;
-@end
-
-void test_isTrackedObjectType(void) {
- NSString *str = [TestIsTracked newString]; // expected-warning{{Potential leak}}
-}
-
-// Test isTrackedCFObjectType().
-@interface TestIsCFTracked
-+ (CFStringRef) badNewCFString;
-+ (CFStringRef) newCFString;
-@end
-
-@implementation TestIsCFTracked
-+ (CFStringRef) newCFString {
- return CFStringCreateWithFormat(kCFAllocatorDefault, ((void*)0), ((CFStringRef) __builtin___CFStringMakeConstantString ("" "%d" "")), 100); // no-warning
-}
-+ (CFStringRef) badNewCFString {
- return CFStringCreateWithFormat(kCFAllocatorDefault, ((void*)0), ((CFStringRef) __builtin___CFStringMakeConstantString ("" "%d" "")), 100); // expected-warning{{leak}}
-}
-
-// Test @synchronized
-void test_synchronized(id x) {
- @synchronized(x) {
- NSString *string = [[NSString stringWithFormat:@"%ld", (long) 100] retain]; // expected-warning {{leak}}
- }
-}
-@end
-
-void testOSCompareAndSwapXXBarrier_parameter(NSString **old) {
- NSString *s = [[NSString alloc] init]; // no-warning
- if (!COMPARE_SWAP_BARRIER((intptr_t) 0, (intptr_t) s, (intptr_t*) old))
- [s release];
- else
- [*old release];
-}
-
-void testOSCompareAndSwapXXBarrier_parameter_no_direct_release(NSString **old) {
- NSString *s = [[NSString alloc] init]; // no-warning
- if (!COMPARE_SWAP_BARRIER((intptr_t) 0, (intptr_t) s, (intptr_t*) old))
- [s release];
- else
- return;
-}
-
-@interface AlwaysInlineBodyFarmBodies : NSObject {
- NSString *_value;
-}
- - (NSString *)_value;
- - (void)callValue;
-@end
-
-@implementation AlwaysInlineBodyFarmBodies
-
-- (NSString *)_value {
- if (!_value) {
- NSString *s = [[NSString alloc] init];
- if (!OSAtomicCompareAndSwapPtr(0, s, (void**)&_value)) {
- [s release];
- }
- }
- return _value;
-}
-
-- (void)callValue {
- [self _value];
-}
-@end
diff --git a/test/Analysis/NSWindow.m b/test/Analysis/NSWindow.m
deleted file mode 100644
index e247ff18ceb0..000000000000
--- a/test/Analysis/NSWindow.m
+++ /dev/null
@@ -1,86 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core,deadcode.DeadStores -analyzer-store=region -verify %s
-
-// These declarations were reduced using Delta-Debugging from Foundation.h
-// on Mac OS X. The test cases are below.
-
-typedef struct objc_selector *SEL;
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-@end
-@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@interface NSObject <NSObject> {}
- + (id)alloc;
-@end
-typedef float CGFloat;
-typedef struct _NSPoint {} NSRect;
-NSRect NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h);
-enum { NSBackingStoreRetained = 0, NSBackingStoreNonretained = 1, NSBackingStoreBuffered = 2 };
-typedef NSUInteger NSBackingStoreType;
-@interface NSResponder : NSObject <NSCoding> {}
-@end
-@protocol NSAnimatablePropertyContainer
-- (id)animator;
-@end
-extern NSString *NSAnimationTriggerOrderIn ;
-@class CIFilter, CALayer, NSDictionary, NSScreen, NSShadow, NSTrackingArea;
-@interface NSView : NSResponder <NSAnimatablePropertyContainer> {} @end
-@protocol NSValidatedUserInterfaceItem - (SEL)action; @end
-@protocol NSUserInterfaceValidations - (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem; @end @class NSNotification, NSText, NSView, NSMutableSet, NSSet, NSDate;
-enum { NSBorderlessWindowMask = 0, NSTitledWindowMask = 1 << 0, NSClosableWindowMask = 1 << 1, NSMiniaturizableWindowMask = 1 << 2, NSResizableWindowMask = 1 << 3 };
-@interface NSWindow : NSResponder <NSAnimatablePropertyContainer, NSUserInterfaceValidations> {
- struct __wFlags {} _wFlags;
-}
-- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag;
-- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag screen:(NSScreen *)screen;
-- (void)orderFrontRegardless;
-@end
-
-extern NSString *NSWindowDidBecomeKeyNotification;
-
-// Test cases.
-
-void f1() {
- NSWindow *window = [[NSWindow alloc]
- initWithContentRect:NSMakeRect(0,0,100,100)
- styleMask:NSTitledWindowMask|NSClosableWindowMask
- backing:NSBackingStoreBuffered
- defer:0];
-
- [window orderFrontRegardless]; // no-warning
-}
-
-void f2() {
- NSWindow *window = [[NSWindow alloc]
- initWithContentRect:NSMakeRect(0,0,100,100)
- styleMask:NSTitledWindowMask|NSClosableWindowMask
- backing:NSBackingStoreBuffered
- defer:0
- screen:0];
-
- [window orderFrontRegardless]; // no-warning
-}
-
-void f2b() {
- // FIXME: NSWindow doesn't own itself until it is displayed.
- NSWindow *window = [[NSWindow alloc] // no-warning
- initWithContentRect:NSMakeRect(0,0,100,100)
- styleMask:NSTitledWindowMask|NSClosableWindowMask
- backing:NSBackingStoreBuffered
- defer:0
- screen:0];
-
- [window orderFrontRegardless];
-
- [window retain];
-}
-
-
-void f3() {
- // FIXME: For now we don't track NSWindow.
- NSWindow *window = [NSWindow alloc]; // expected-warning{{never read}}
-}
diff --git a/test/Analysis/NewDelete+MismatchedDeallocator_intersections.cpp b/test/Analysis/NewDelete+MismatchedDeallocator_intersections.cpp
deleted file mode 100644
index 987ed6a31fa8..000000000000
--- a/test/Analysis/NewDelete+MismatchedDeallocator_intersections.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDelete,unix.MismatchedDeallocator -std=c++11 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDelete,cplusplus.NewDeleteLeaks,unix.MismatchedDeallocator -DLEAKS -std=c++11 -verify %s
-// expected-no-diagnostics
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-//------------------------------------------------------------------
-// Check that alpha.cplusplus.NewDelete + unix.MismatchedDeallocator
-// does not enable warnings produced by the unix.Malloc checker.
-//------------------------------------------------------------------
-void testMallocFreeNoWarn() {
- int i;
- free(&i); // no warn
-
- int *p1 = (int *)malloc(sizeof(int));
- free(++p1); // no warn
-
- int *p2 = (int *)malloc(sizeof(int));
- free(p2);
- free(p2); // no warn
-
- int *p3 = (int *)malloc(sizeof(int)); // no warn
-
- int *p4 = (int *)malloc(sizeof(int));
- free(p4);
- int j = *p4; // no warn
-}
diff --git a/test/Analysis/NewDelete-atomics.cpp b/test/Analysis/NewDelete-atomics.cpp
deleted file mode 100644
index 54fce17ea7bd..000000000000
--- a/test/Analysis/NewDelete-atomics.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDelete -std=c++11 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDeleteLeaks -DLEAKS -std=c++11 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDelete -std=c++11 -DTEST_INLINABLE_ALLOCATORS -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDeleteLeaks -DLEAKS -std=c++11 -DTEST_INLINABLE_ALLOCATORS -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-inline-max-stack-depth 2 -analyzer-config ipa-always-inline-size=2 -analyzer-checker=core,cplusplus.NewDelete -std=c++11 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-inline-max-stack-depth 2 -analyzer-config ipa-always-inline-size=2 -analyzer-checker=core,cplusplus.NewDeleteLeaks -DLEAKS -std=c++11 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-inline-max-stack-depth 2 -analyzer-config ipa-always-inline-size=2 -analyzer-checker=core,cplusplus.NewDelete -std=c++11 -DTEST_INLINABLE_ALLOCATORS -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-inline-max-stack-depth 2 -analyzer-config ipa-always-inline-size=2 -analyzer-checker=core,cplusplus.NewDeleteLeaks -DLEAKS -std=c++11 -DTEST_INLINABLE_ALLOCATORS -verify %s
-
-// expected-no-diagnostics
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-typedef enum memory_order {
- memory_order_relaxed = __ATOMIC_RELAXED,
- memory_order_consume = __ATOMIC_CONSUME,
- memory_order_acquire = __ATOMIC_ACQUIRE,
- memory_order_release = __ATOMIC_RELEASE,
- memory_order_acq_rel = __ATOMIC_ACQ_REL,
- memory_order_seq_cst = __ATOMIC_SEQ_CST
-} memory_order;
-
-class Obj {
- int RefCnt;
-
-public:
- int incRef() {
- return __c11_atomic_fetch_add((volatile _Atomic(int) *)&RefCnt, 1,
- memory_order_relaxed);
- }
-
- int decRef() {
- return __c11_atomic_fetch_sub((volatile _Atomic(int) *)&RefCnt, 1,
- memory_order_relaxed);
- }
-
- void foo();
-};
-
-class IntrusivePtr {
- Obj *Ptr;
-
-public:
- IntrusivePtr(Obj *Ptr) : Ptr(Ptr) {
- Ptr->incRef();
- }
-
- IntrusivePtr(const IntrusivePtr &Other) : Ptr(Other.Ptr) {
- Ptr->incRef();
- }
-
- ~IntrusivePtr() {
- // We should not take the path on which the object is deleted.
- if (Ptr->decRef() == 1)
- delete Ptr;
- }
-
- Obj *getPtr() const { return Ptr; } // no-warning
-};
-
-void testDestroyLocalRefPtr() {
- IntrusivePtr p1(new Obj());
- {
- IntrusivePtr p2(p1);
- }
-
- // p1 still maintains ownership. The object is not deleted.
- p1.getPtr()->foo(); // no-warning
-}
-
-void testDestroySymbolicRefPtr(const IntrusivePtr &p1) {
- {
- IntrusivePtr p2(p1);
- }
-
- // p1 still maintains ownership. The object is not deleted.
- p1.getPtr()->foo(); // no-warning
-}
diff --git a/test/Analysis/NewDelete-checker-test.cpp b/test/Analysis/NewDelete-checker-test.cpp
deleted file mode 100644
index 620237cd6ede..000000000000
--- a/test/Analysis/NewDelete-checker-test.cpp
+++ /dev/null
@@ -1,409 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDelete -std=c++11 -fblocks -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDeleteLeaks -DLEAKS -std=c++11 -fblocks -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDelete -std=c++11 -fblocks -analyzer-config c++-allocator-inlining=true -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDeleteLeaks -DLEAKS -std=c++11 -fblocks -analyzer-config c++-allocator-inlining=true -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDelete -std=c++11 -fblocks -DTEST_INLINABLE_ALLOCATORS -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDeleteLeaks -DLEAKS -std=c++11 -fblocks -DTEST_INLINABLE_ALLOCATORS -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDelete -std=c++11 -fblocks -analyzer-config c++-allocator-inlining=true -DTEST_INLINABLE_ALLOCATORS -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDeleteLeaks -DLEAKS -std=c++11 -fblocks -analyzer-config c++-allocator-inlining=true -DTEST_INLINABLE_ALLOCATORS -verify %s
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-typedef __typeof__(sizeof(int)) size_t;
-extern "C" void *malloc(size_t);
-extern "C" void free (void* ptr);
-int *global;
-
-//------------------
-// check for leaks
-//------------------
-
-//----- Standard non-placement operators
-void testGlobalOpNew() {
- void *p = operator new(0);
-}
-#ifdef LEAKS
-// expected-warning@-2{{Potential leak of memory pointed to by 'p'}}
-#endif
-
-void testGlobalOpNewArray() {
- void *p = operator new[](0);
-}
-#ifdef LEAKS
-// expected-warning@-2{{Potential leak of memory pointed to by 'p'}}
-#endif
-
-void testGlobalNewExpr() {
- int *p = new int;
-}
-#ifdef LEAKS
-// expected-warning@-2{{Potential leak of memory pointed to by 'p'}}
-#endif
-
-void testGlobalNewExprArray() {
- int *p = new int[0];
-}
-#ifdef LEAKS
-// expected-warning@-2{{Potential leak of memory pointed to by 'p'}}
-#endif
-
-//----- Standard nothrow placement operators
-void testGlobalNoThrowPlacementOpNewBeforeOverload() {
- void *p = operator new(0, std::nothrow);
-}
-#ifdef LEAKS
-#ifndef TEST_INLINABLE_ALLOCATORS
-// expected-warning@-3{{Potential leak of memory pointed to by 'p'}}
-#endif
-#endif
-
-void testGlobalNoThrowPlacementExprNewBeforeOverload() {
- int *p = new(std::nothrow) int;
-}
-#ifdef LEAKS
-#ifndef TEST_INLINABLE_ALLOCATORS
-// expected-warning@-3{{Potential leak of memory pointed to by 'p'}}
-#endif
-#endif
-
-//----- Standard pointer placement operators
-void testGlobalPointerPlacementNew() {
- int i;
-
- void *p1 = operator new(0, &i); // no warn
-
- void *p2 = operator new[](0, &i); // no warn
-
- int *p3 = new(&i) int; // no warn
-
- int *p4 = new(&i) int[0]; // no warn
-}
-
-//----- Other cases
-void testNewMemoryIsInHeap() {
- int *p = new int;
- if (global != p) // condition is always true as 'p' wraps a heap region that
- // is different from a region wrapped by 'global'
- global = p; // pointer escapes
-}
-
-struct PtrWrapper {
- int *x;
-
- PtrWrapper(int *input) : x(input) {}
-};
-
-void testNewInvalidationPlacement(PtrWrapper *w) {
- // Ensure that we don't consider this a leak.
- new (w) PtrWrapper(new int); // no warn
-}
-
-//-----------------------------------------
-// check for usage of zero-allocated memory
-//-----------------------------------------
-
-void testUseZeroAlloc1() {
- int *p = (int *)operator new(0);
- *p = 1; // expected-warning {{Use of zero-allocated memory}}
- delete p;
-}
-
-int testUseZeroAlloc2() {
- int *p = (int *)operator new[](0);
- return p[0]; // expected-warning {{Use of zero-allocated memory}}
- delete[] p;
-}
-
-void f(int);
-
-void testUseZeroAlloc3() {
- int *p = new int[0];
- f(*p); // expected-warning {{Use of zero-allocated memory}}
- delete[] p;
-}
-
-//---------------
-// other checks
-//---------------
-
-class SomeClass {
-public:
- void f(int *p);
-};
-
-void f(int *p1, int *p2 = 0, int *p3 = 0);
-void g(SomeClass &c, ...);
-
-void testUseFirstArgAfterDelete() {
- int *p = new int;
- delete p;
- f(p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testUseMiddleArgAfterDelete(int *p) {
- delete p;
- f(0, p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testUseLastArgAfterDelete(int *p) {
- delete p;
- f(0, 0, p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testUseSeveralArgsAfterDelete(int *p) {
- delete p;
- f(p, p, p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testUseRefArgAfterDelete(SomeClass &c) {
- delete &c;
- g(c); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testVariadicArgAfterDelete() {
- SomeClass c;
- int *p = new int;
- delete p;
- g(c, 0, p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testUseMethodArgAfterDelete(int *p) {
- SomeClass *c = new SomeClass;
- delete p;
- c->f(p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testUseThisAfterDelete() {
- SomeClass *c = new SomeClass;
- delete c;
- c->f(0); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testDoubleDelete() {
- int *p = new int;
- delete p;
- delete p; // expected-warning{{Attempt to free released memory}}
-}
-
-void testExprDeleteArg() {
- int i;
- delete &i; // expected-warning{{Argument to 'delete' is the address of the local variable 'i', which is not memory allocated by 'new'}}
-}
-
-void testExprDeleteArrArg() {
- int i;
- delete[] &i; // expected-warning{{Argument to 'delete[]' is the address of the local variable 'i', which is not memory allocated by 'new[]'}}
-}
-
-void testAllocDeallocNames() {
- int *p = new(std::nothrow) int[1];
- delete[] (++p);
-#ifndef TEST_INLINABLE_ALLOCATORS
- // expected-warning@-2{{Argument to 'delete[]' is offset by 4 bytes from the start of memory allocated by 'new[]'}}
-#endif
-}
-
-//--------------------------------
-// Test escape of newed const pointer. Note, a const pointer can be deleted.
-//--------------------------------
-struct StWithConstPtr {
- const int *memp;
-};
-void escape(const int &x);
-void escapeStruct(const StWithConstPtr &x);
-void escapePtr(const StWithConstPtr *x);
-void escapeVoidPtr(const void *x);
-
-void testConstEscape() {
- int *p = new int(1);
- escape(*p);
-} // no-warning
-
-void testConstEscapeStruct() {
- StWithConstPtr *St = new StWithConstPtr();
- escapeStruct(*St);
-} // no-warning
-
-void testConstEscapeStructPtr() {
- StWithConstPtr *St = new StWithConstPtr();
- escapePtr(St);
-} // no-warning
-
-void testConstEscapeMember() {
- StWithConstPtr St;
- St.memp = new int(2);
- escapeVoidPtr(St.memp);
-} // no-warning
-
-void testConstEscapePlacementNew() {
- int *x = (int *)malloc(sizeof(int));
- void *y = new (x) int;
- escapeVoidPtr(y);
-} // no-warning
-
-//============== Test Uninitialized delete delete[]========================
-void testUninitDelete() {
- int *x;
- int * y = new int;
- delete y;
- delete x; // expected-warning{{Argument to 'delete' is uninitialized}}
-}
-
-void testUninitDeleteArray() {
- int *x;
- int * y = new int[5];
- delete[] y;
- delete[] x; // expected-warning{{Argument to 'delete[]' is uninitialized}}
-}
-
-void testUninitFree() {
- int *x;
- free(x); // expected-warning{{1st function call argument is an uninitialized value}}
-}
-
-void testUninitDeleteSink() {
- int *x;
- delete x; // expected-warning{{Argument to 'delete' is uninitialized}}
- (*(volatile int *)0 = 1); // no warn
-}
-
-void testUninitDeleteArraySink() {
- int *x;
- delete[] x; // expected-warning{{Argument to 'delete[]' is uninitialized}}
- (*(volatile int *)0 = 1); // no warn
-}
-
-namespace reference_count {
- class control_block {
- unsigned count;
- public:
- control_block() : count(0) {}
- void retain() { ++count; }
- int release() { return --count; }
- };
-
- template <typename T>
- class shared_ptr {
- T *p;
- control_block *control;
-
- public:
- shared_ptr() : p(0), control(0) {}
- explicit shared_ptr(T *p) : p(p), control(new control_block) {
- control->retain();
- }
- shared_ptr(shared_ptr &other) : p(other.p), control(other.control) {
- if (control)
- control->retain();
- }
- ~shared_ptr() {
- if (control && control->release() == 0) {
- delete p;
- delete control;
- }
- };
-
- T &operator *() {
- return *p;
- };
-
- void swap(shared_ptr &other) {
- T *tmp = p;
- p = other.p;
- other.p = tmp;
-
- control_block *ctrlTmp = control;
- control = other.control;
- other.control = ctrlTmp;
- }
- };
-
- void testSingle() {
- shared_ptr<int> a(new int);
- *a = 1;
- }
-
- void testDouble() {
- shared_ptr<int> a(new int);
- shared_ptr<int> b = a;
- *a = 1;
- }
-
- void testInvalidated() {
- shared_ptr<int> a(new int);
- shared_ptr<int> b = a;
- *a = 1;
-
- extern void use(shared_ptr<int> &);
- use(b);
- }
-
- void testNestedScope() {
- shared_ptr<int> a(new int);
- {
- shared_ptr<int> b = a;
- }
- *a = 1;
- }
-
- void testSwap() {
- shared_ptr<int> a(new int);
- shared_ptr<int> b;
- shared_ptr<int> c = a;
- shared_ptr<int>(c).swap(b);
- }
-
- void testUseAfterFree() {
- int *p = new int;
- {
- shared_ptr<int> a(p);
- shared_ptr<int> b = a;
- }
-
- // FIXME: We should get a warning here, but we don't because we've
- // conservatively modeled ~shared_ptr.
- *p = 1;
- }
-}
-
-// Test double delete
-class DerefClass{
-public:
- int *x;
- DerefClass() {}
- ~DerefClass() {*x = 1;}
-};
-
-void testDoubleDeleteClassInstance() {
- DerefClass *foo = new DerefClass();
- delete foo;
- delete foo; // expected-warning {{Attempt to delete released memory}}
-}
-
-class EmptyClass{
-public:
- EmptyClass() {}
- ~EmptyClass() {}
-};
-
-void testDoubleDeleteEmptyClass() {
- EmptyClass *foo = new EmptyClass();
- delete foo;
- delete foo; // expected-warning {{Attempt to delete released memory}}
-}
-
-struct Base {
- virtual ~Base() {}
-};
-
-struct Derived : Base {
-};
-
-Base *allocate() {
- return new Derived;
-}
-
-void shouldNotReportLeak() {
- Derived *p = (Derived *)allocate();
- delete p;
-}
diff --git a/test/Analysis/NewDelete-custom.cpp b/test/Analysis/NewDelete-custom.cpp
deleted file mode 100644
index 8c4d9a663a31..000000000000
--- a/test/Analysis/NewDelete-custom.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDelete,cplusplus.NewDeleteLeaks,unix.Malloc -std=c++11 -fblocks -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDelete,cplusplus.NewDeleteLeaks,unix.Malloc -std=c++11 -fblocks -verify %s -analyzer-config c++-allocator-inlining=false
-#include "Inputs/system-header-simulator-cxx.h"
-
-// expected-no-diagnostics
-
-
-void *allocator(std::size_t size);
-
-void *operator new[](std::size_t size) throw() { return allocator(size); }
-void *operator new(std::size_t size) throw() { return allocator(size); }
-void *operator new(std::size_t size, const std::nothrow_t &nothrow) throw() { return allocator(size); }
-void *operator new(std::size_t, double d);
-
-class C {
-public:
- void *operator new(std::size_t);
-};
-
-void testNewMethod() {
- void *p1 = C::operator new(0); // no warn
-
- C *p2 = new C; // no-warning
-
- C *c3 = ::new C; // no-warning
-}
-
-void testOpNewArray() {
- void *p = operator new[](0); // call is inlined, no warn
-}
-
-void testNewExprArray() {
- int *p = new int[0]; // no-warning
-}
-
-
-//----- Custom non-placement operators
-void testOpNew() {
- void *p = operator new(0); // call is inlined, no warn
-}
-
-void testNewExpr() {
- int *p = new int; // no-warning
-}
-
-//----- Custom NoThrow placement operators
-void testOpNewNoThrow() {
- void *p = operator new(0, std::nothrow); // call is inlined, no warn
-}
-
-void testNewExprNoThrow() {
- int *p = new(std::nothrow) int; // no-warning
-}
-
-//----- Custom placement operators
-void testOpNewPlacement() {
- void *p = operator new(0, 0.1); // no warn
-}
-
-void testNewExprPlacement() {
- int *p = new(0.1) int; // no warn
-}
diff --git a/test/Analysis/NewDelete-intersections.mm b/test/Analysis/NewDelete-intersections.mm
deleted file mode 100644
index b3707858f00c..000000000000
--- a/test/Analysis/NewDelete-intersections.mm
+++ /dev/null
@@ -1,88 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDelete -std=c++11 -fblocks -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDelete,cplusplus.NewDeleteLeaks -std=c++11 -DLEAKS -fblocks -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDelete -std=c++11 -fblocks -DTEST_INLINABLE_ALLOCATORS -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDelete,cplusplus.NewDeleteLeaks -std=c++11 -DLEAKS -fblocks -DTEST_INLINABLE_ALLOCATORS -verify %s
-#include "Inputs/system-header-simulator-cxx.h"
-#include "Inputs/system-header-simulator-objc.h"
-
-typedef __typeof__(sizeof(int)) size_t;
-extern "C" void *malloc(size_t);
-extern "C" void *alloca(size_t);
-extern "C" void free(void *);
-
-//----------------------------------------------------------------------------
-// Check for intersections with unix.Malloc and unix.MallocWithAnnotations
-// checkers bounded with cplusplus.NewDelete.
-//----------------------------------------------------------------------------
-
-//----- malloc()/free() are subjects of unix.Malloc and unix.MallocWithAnnotations
-void testMallocFreeNoWarn() {
- int i;
- free(&i); // no warn
-
- int *p1 = (int *)malloc(sizeof(int));
- free(++p1); // no warn
-
- int *p2 = (int *)malloc(sizeof(int));
- free(p2);
- free(p2); // no warn
-
- int *p3 = (int *)malloc(sizeof(int)); // no warn
-
- int *p4 = (int *)malloc(sizeof(int));
- free(p4);
- int j = *p4; // no warn
-
- int *p5 = (int *)alloca(sizeof(int));
- free(p5); // no warn
-}
-
-void testDeleteMalloced() {
- int *p1 = (int *)malloc(sizeof(int));
- delete p1; // no warn
-
- int *p2 = (int *)__builtin_alloca(sizeof(int));
- delete p2; // no warn
-}
-
-void testUseZeroAllocatedMalloced() {
- int *p1 = (int *)malloc(0);
- *p1 = 1; // no warn
-}
-
-//----- Test free standard new
-void testFreeOpNew() {
- void *p = operator new(0);
- free(p);
-}
-#ifdef LEAKS
-// expected-warning@-2 {{Potential leak of memory pointed to by 'p'}}
-#endif
-
-void testFreeNewExpr() {
- int *p = new int;
- free(p);
-}
-#ifdef LEAKS
-// expected-warning@-2 {{Potential leak of memory pointed to by 'p'}}
-#endif
-
-void testObjcFreeNewed() {
- int *p = new int;
- NSData *nsdata = [NSData dataWithBytesNoCopy:p length:sizeof(int) freeWhenDone:1];
-#ifdef LEAKS
- // expected-warning@-2 {{Potential leak of memory pointed to by 'p'}}
-#endif
-}
-
-void testFreeAfterDelete() {
- int *p = new int;
- delete p;
- free(p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testStandardPlacementNewAfterDelete() {
- int *p = new int;
- delete p;
- p = new(p) int; // expected-warning{{Use of memory after it is freed}}
-}
diff --git a/test/Analysis/NewDelete-path-notes.cpp b/test/Analysis/NewDelete-path-notes.cpp
deleted file mode 100644
index 2195b9d42a4b..000000000000
--- a/test/Analysis/NewDelete-path-notes.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=cplusplus.NewDelete,unix.Malloc -analyzer-output=text -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=cplusplus.NewDelete,unix.Malloc -analyzer-output=text -analyzer-config c++-allocator-inlining=true -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=cplusplus.NewDelete,unix.Malloc -analyzer-output=plist %s -o %t.plist
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/NewDelete-path-notes.cpp.plist -
-
-void test() {
- int *p = new int;
- // expected-note@-1 {{Memory is allocated}}
- if (p)
- // expected-note@-1 {{Taking true branch}}
- delete p;
- // expected-note@-1 {{Memory is released}}
-
- delete p; // expected-warning {{Attempt to free released memory}}
- // expected-note@-1 {{Attempt to free released memory}}
-}
-
-struct Odd {
- void kill() {
- delete this; // expected-note {{Memory is released}}
- }
-};
-
-void test(Odd *odd) {
- odd->kill(); // expected-note{{Calling 'Odd::kill'}}
- // expected-note@-1 {{Returning; memory was released}}
- delete odd; // expected-warning {{Attempt to free released memory}}
- // expected-note@-1 {{Attempt to free released memory}}
-}
-
diff --git a/test/Analysis/NewDelete-sized-deallocation.cpp b/test/Analysis/NewDelete-sized-deallocation.cpp
deleted file mode 100644
index b0f2cfb765c3..000000000000
--- a/test/Analysis/NewDelete-sized-deallocation.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -fsized-deallocation
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -DINCLUDE_INCLUDES
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -DINCLUDE_INCLUDES -fsized-deallocation
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -DINCLUDE_INCLUDES -DTEST_INLINABLE_ALLOCATORS
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -DINCLUDE_INCLUDES -DTEST_INLINABLE_ALLOCATORS -fsized-deallocation
-
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -std=c++14
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -std=c++14 -fsized-deallocation
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -std=c++14 -DINCLUDE_INCLUDES
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -std=c++14 -DINCLUDE_INCLUDES -fsized-deallocation
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -std=c++14 -DINCLUDE_INCLUDES -DTEST_INLINABLE_ALLOCATORS
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -std=c++14 -DINCLUDE_INCLUDES -DTEST_INLINABLE_ALLOCATORS -fsized-deallocation
-
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -std=c++17
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -std=c++17 -fsized-deallocation
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -std=c++17 -DINCLUDE_INCLUDES
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -std=c++17 -DINCLUDE_INCLUDES -fsized-deallocation
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -std=c++17 -DINCLUDE_INCLUDES -DTEST_INLINABLE_ALLOCATORS
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus -verify -analyzer-output=text %s -std=c++17 -DINCLUDE_INCLUDES -DTEST_INLINABLE_ALLOCATORS -fsized-deallocation
-
-// Test all three: undeclared operator delete, operator delete forward-declared
-// in the system header, operator delete defined in system header.
-#ifdef INCLUDE_INCLUDES
-// TEST_INLINABLE_ALLOCATORS is used within this include.
-#include "Inputs/system-header-simulator-cxx.h"
-#endif
-
-void leak() {
- int *x = new int; // expected-note{{Memory is allocated}}
-} // expected-warning{{Potential leak of memory pointed to by 'x'}}
- // expected-note@-1{{Potential leak of memory pointed to by 'x'}}
-
-// This function was incorrectly diagnosed as leak under -fsized-deallocation
-// because the sized operator delete was mistaken for a custom delete.
-void no_leak() {
- int *x = new int; // no-note
- delete x;
-} // no-warning
diff --git a/test/Analysis/NewDelete-variadic.cpp b/test/Analysis/NewDelete-variadic.cpp
deleted file mode 100644
index 523785a70415..000000000000
--- a/test/Analysis/NewDelete-variadic.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDelete,cplusplus.NewDeleteLeaks,unix.Malloc -std=c++11 -fblocks -verify %s
-// expected-no-diagnostics
-
-namespace std {
- typedef __typeof__(sizeof(int)) size_t;
-}
-
-struct X {};
-
-void *operator new(std::size_t, X, ...);
-void *operator new[](std::size_t, X, ...);
-
-void testGlobalCustomVariadicNew() {
- X x;
-
- void *p1 = operator new(0, x); // no warn
-
- void *p2 = operator new[](0, x); // no warn
-
- int *p3 = new (x) int; // no warn
-
- int *p4 = new (x) int[0]; // no warn
-}
diff --git a/test/Analysis/NewDeleteLeaks-PR18394.cpp b/test/Analysis/NewDeleteLeaks-PR18394.cpp
deleted file mode 100644
index 5a5b82cf609c..000000000000
--- a/test/Analysis/NewDeleteLeaks-PR18394.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-config graph-trim-interval=1 -analyzer-max-loop 1 -analyzer-checker=core,cplusplus.NewDeleteLeaks -verify %s
-// expected-no-diagnostics
-
-class A {
-public:
- void f() {};
- ~A() {
- for (int i=0; i<3; i++)
- f();
- }
-};
-
-void error() {
- A *a = new A();
- delete a;
-}
diff --git a/test/Analysis/NewDeleteLeaks-PR19102.cpp b/test/Analysis/NewDeleteLeaks-PR19102.cpp
deleted file mode 100644
index 625b2d4b7af4..000000000000
--- a/test/Analysis/NewDeleteLeaks-PR19102.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDeleteLeaks -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDeleteLeaks -analyzer-config c++-allocator-inlining=true -verify %s
-
-class A0 {};
-
-class A1 {
-public:
- A1(int);
-};
-
-struct S{
- int i;
-};
-
-class A2 {
-public:
- A2();
- A2(S);
- A2(int*);
- A2(S*);
- A2(S&, int);
- A2(int, S**);
-};
-
-void test() {
- new int; // expected-warning@+1 {{Potential memory leak}}
- new A0; // expected-warning@+1 {{Potential memory leak}}
- new A1(0); // expected-warning@+1 {{Potential memory leak}}
- new A2; // expected-warning@+1 {{Potential memory leak}}
- S s;
- s.i = 1;
- S* ps = new S;
- new A2(s); // expected-warning@+1 {{Potential memory leak}}
- new A2(&(s.i)); // expected-warning@+1 {{Potential memory leak}}
- new A2(ps); // no warning
- new A2(*ps, 1); // no warning
- new A2(1, &ps); // no warning
-
- // Tests to ensure that leaks are reported for consumed news no matter what the arguments are.
- A2 *a2p1 = new A2; // expected-warning@+1 {{Potential leak of memory}}
- A2 *a2p2 = new A2(ps); // expected-warning@+1 {{Potential leak of memory}}
- A2 *a2p3 = new A2(*ps, 1); // expected-warning@+1 {{Potential leak of memory}}
- A2 *a2p4 = new A2(1, &ps); // expected-warning@+1 {{Potential leak of memory}}
-}
diff --git a/test/Analysis/NoReturn.m b/test/Analysis/NoReturn.m
deleted file mode 100644
index c08fd0dc5156..000000000000
--- a/test/Analysis/NoReturn.m
+++ /dev/null
@@ -1,145 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-
-#include <stdarg.h>
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from
-// Foundation.h (Mac OS X).
-//
-// It includes the basic definitions for the test cases below.
-// Not directly including Foundation.h directly makes this test case
-// both svelte and portable to non-Mac platforms.
-//===----------------------------------------------------------------------===//
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject - (BOOL)isEqual:(id)object;
-@end @protocol NSCopying - (id)copyWithZone:(NSZone *)zone;
-@end @protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone; @end
-@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; @end
-@interface NSObject <NSObject> {} @end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-+ (id)stringWithFormat:(NSString *)format, ...;
-@end
-@interface NSSimpleCString : NSString {} @end
-@interface NSConstantString : NSSimpleCString @end
-extern void *_NSConstantStringClassReference;
-typedef double NSTimeInterval;
-@interface NSDate : NSObject <NSCopying, NSCoding> - (NSTimeInterval)timeIntervalSinceReferenceDate; @end
-@class NSString, NSDictionary, NSArray;
-@interface NSException : NSObject <NSCopying, NSCoding> {}
-+ (NSException *)exceptionWithName:(NSString *)name reason:(NSString *)reason userInfo:(NSDictionary *)userInfo;
-- (void)raise;
-@end
-@interface NSException (NSExceptionRaisingConveniences)
-+ (void)raise:(NSString *)name format:(NSString *)format, ...;
-+ (void)raise:(NSString *)name format:(NSString *)format arguments:(va_list)argList;
-@end
-
-enum {NSPointerFunctionsStrongMemory = (0 << 0), NSPointerFunctionsZeroingWeakMemory = (1 << 0), NSPointerFunctionsOpaqueMemory = (2 << 0), NSPointerFunctionsMallocMemory = (3 << 0), NSPointerFunctionsMachVirtualMemory = (4 << 0), NSPointerFunctionsObjectPersonality = (0 << 8), NSPointerFunctionsOpaquePersonality = (1 << 8), NSPointerFunctionsObjectPointerPersonality = (2 << 8), NSPointerFunctionsCStringPersonality = (3 << 8), NSPointerFunctionsStructPersonality = (4 << 8), NSPointerFunctionsIntegerPersonality = (5 << 8), NSPointerFunctionsCopyIn = (1 << 16), };
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-int f1(int *x, NSString* s) {
-
- if (x) ++x;
-
- [NSException raise:@"Blah" format:[NSString stringWithFormat:@"Blah %@", s]];
-
- return *x; // no-warning
-}
-
-int f2(int *x, ...) {
-
- if (x) ++x;
- va_list alist;
- va_start(alist, x);
-
- [NSException raise:@"Blah" format:@"Blah %@" arguments:alist];
-
- return *x; // no-warning
-}
-
-int f3(int* x) {
-
- if (x) ++x;
-
- [[NSException exceptionWithName:@"My Exception" reason:@"Want to test exceptions." userInfo:0] raise];
-
- return *x; // no-warning
-}
-
-
-@interface CustomException : NSException
-@end
-
-int testCustomException(int *x) {
- if (x != 0) return 0;
-
- [CustomException raise:@"Blah" format:@"abc"];
-
- return *x; // no-warning
-}
-
-// Test that __attribute__((analyzer_noreturn)) has the intended
-// effect on Objective-C methods.
-
-@interface Radar11634353
-+ (void) doesNotReturn __attribute__((analyzer_noreturn));
-- (void) alsoDoesNotReturn __attribute__((analyzer_noreturn));
-@end
-
-void test_rdar11634353() {
- [Radar11634353 doesNotReturn];
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
-}
-
-void test_rdar11634352_instance(Radar11634353 *o) {
- [o alsoDoesNotReturn];
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
-}
-
-void test_rdar11634353_positive() {
- int *p = 0;
- *p = 0xDEADBEEF; // expected-warning {{null pointer}}
-}
-
-// Test analyzer_noreturn on category methods.
-@interface NSException (OBExtensions)
-+ (void)raise:(NSString *)name reason:(NSString *)reason __attribute__((analyzer_noreturn));
-@end
-
-void PR11959(int *p) {
- if (!p)
- [NSException raise:@"Bad Pointer" reason:@"Who knows?"];
- *p = 0xDEADBEEF; // no-warning
-}
-
-// Test that hard-coded Microsoft _wassert name is recognized as a noreturn
-#define assert(_Expression) (void)( (!!(_Expression)) || (_wassert(#_Expression, __FILE__, __LINE__), 0) )
-extern void _wassert(const char * _Message, const char *_File, unsigned _Line);
-void test_wassert() {
- assert(0);
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
-}
-#undef assert
-
-// Test that hard-coded Android __assert2 name is recognized as a noreturn
-#define assert(_Expression) ((_Expression) ? (void)0 : __assert2(0, 0, 0, 0));
-extern void __assert2(const char *, int, const char *, const char *);
-extern void _wassert(const char * _Message, const char *_File, unsigned _Line);
-void test___assert2() {
- assert(0);
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
-}
-#undef assert
diff --git a/test/Analysis/OSAtomic_mac.cpp b/test/Analysis/OSAtomic_mac.cpp
deleted file mode 100644
index e45f236b2f03..000000000000
--- a/test/Analysis/OSAtomic_mac.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin9 -analyzer-checker=core,osx -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s
-// expected-no-diagnostics
-
-// Test handling of OSAtomicCompareAndSwap when C++ inserts "no-op" casts and we
-// do a forced load and binding to the environment on an expression that would regularly
-// not have an environment binding. This previously triggered a crash (<rdar://problem/9339920>).
-// NOTE: It is critical that the function called is OSAtomicCompareAndSwapIntBarrier.
-bool OSAtomicCompareAndSwapIntBarrier( int __oldValue, int __newValue, volatile int *__theValue ) ;
-static int _rdar9339920_x = 0;
-int rdar9339920_aux();
-
-int rdar9339920_test() {
- int rdar9339920_x = rdar9339920_aux();
- if (rdar9339920_x != _rdar9339920_x) {
- if (OSAtomicCompareAndSwapIntBarrier(_rdar9339920_x, rdar9339920_x, &_rdar9339920_x))
- return 1;
- }
- return 0;
-}
-
diff --git a/test/Analysis/ObjCProperties.m b/test/Analysis/ObjCProperties.m
deleted file mode 100644
index 1a112ec2b128..000000000000
--- a/test/Analysis/ObjCProperties.m
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-store=region -Wno-objc-root-class %s -verify
-// expected-no-diagnostics
-
-// The point of this test cases is to exercise properties in the static
-// analyzer
-
-@interface MyClass {
-@private
- id _X;
-}
-- (id)initWithY:(id)Y;
-@property(copy, readwrite) id X;
-@end
-
-@implementation MyClass
-@synthesize X = _X;
-- (id)initWithY:(id)Y {
- self.X = Y;
- return self;
-}
-@end
diff --git a/test/Analysis/ObjCPropertiesSyntaxChecks.m b/test/Analysis/ObjCPropertiesSyntaxChecks.m
deleted file mode 100644
index 5a25896c8aef..000000000000
--- a/test/Analysis/ObjCPropertiesSyntaxChecks.m
+++ /dev/null
@@ -1,68 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -fblocks -analyzer-checker=osx.ObjCProperty %s -verify
-
-#include "Inputs/system-header-simulator-objc.h"
-
-@interface I : NSObject {
- NSMutableString *_mutableExplicitStr;
- NSMutableString *_trulyMutableStr;
- NSMutableString *_trulyMutableExplicitStr;
-}
-@property(copy) NSString *str; // no-warning
-@property(copy) NSMutableString *mutableStr; // expected-warning{{Property of mutable type 'NSMutableString' has 'copy' attribute; an immutable object will be stored instead}}
-@property(copy) NSMutableString *mutableExplicitStr; // expected-warning{{Property of mutable type 'NSMutableString' has 'copy' attribute; an immutable object will be stored instead}}
-@property(copy, readonly) NSMutableString *mutableReadonlyStr; // no-warning
-@property(copy, readonly) NSMutableString *mutableReadonlyStrOverriddenInChild; // no-warning
-@property(copy, readonly) NSMutableString *mutableReadonlyStrOverriddenInCategory; // no-warning
-@property(copy) NSMutableString *trulyMutableStr; // no-warning
-@property(copy) NSMutableString *trulyMutableExplicitStr; // no-warning
-@property(copy) NSMutableString *trulyMutableStrWithSynthesizedStorage; // no-warning
-@end
-
-@interface I () {}
-@property(copy) NSMutableString *mutableStrInCategory; // expected-warning{{Property of mutable type 'NSMutableString' has 'copy' attribute; an immutable object will be stored instead}}
-@property (copy, readwrite) NSMutableString *mutableReadonlyStrOverriddenInCategory; // expected-warning{{Property of mutable type 'NSMutableString' has 'copy' attribute; an immutable object will be stored instead}}
-@end
-
-@implementation I
-@synthesize mutableExplicitStr = _mutableExplicitStr;
-- (NSMutableString *)trulyMutableStr {
- return _trulyMutableStr;
-}
-- (void)setTrulyMutableStr: (NSMutableString *) S {
- _trulyMutableStr = [S mutableCopy];
-}
-@dynamic trulyMutableExplicitStr;
-- (NSMutableString *)trulyMutableExplicitStr {
- return _trulyMutableExplicitStr;
-}
-- (void)setTrulyMutableExplicitStr: (NSMutableString *) S {
- _trulyMutableExplicitStr = [S mutableCopy];
-}
-@synthesize trulyMutableStrWithSynthesizedStorage;
-- (NSMutableString *)trulyMutableStrWithSynthesizedStorage {
- return trulyMutableStrWithSynthesizedStorage;
-}
-- (void)setTrulyMutableStrWithSynthesizedStorage: (NSMutableString *) S {
- trulyMutableStrWithSynthesizedStorage = [S mutableCopy];
-}
-@end
-
-@interface J : I {}
-@property (copy, readwrite) NSMutableString *mutableReadonlyStrOverriddenInChild; // expected-warning{{Property of mutable type 'NSMutableString' has 'copy' attribute; an immutable object will be stored instead}}
-@end
-
-@implementation J
-@end
-
-// If we do not see the implementation then we do not want to warn,
-// because we may miss a user-defined setter that works correctly.
-@interface IWithoutImpl : NSObject {}
-@property(copy) NSMutableString *mutableStr; // no-warning
-@end
-
-@protocol SomeProtocol
-// Don't warn on protocol properties because it is possible to
-// conform to them correctly; it is only synthesized setters that
-// that are definitely incorrect.
-@property (copy) NSMutableString *myProp; // no-crash // no-warning
-@end
diff --git a/test/Analysis/ObjCRetSigs.m b/test/Analysis/ObjCRetSigs.m
deleted file mode 100644
index 97d33f9f5467..000000000000
--- a/test/Analysis/ObjCRetSigs.m
+++ /dev/null
@@ -1,25 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-checker=osx.cocoa.IncompatibleMethodTypes -verify -Wno-objc-root-class %s
-
-int printf(const char *, ...);
-
-@interface MyBase
--(long long)length;
-@end
-
-@interface MySub : MyBase{}
--(double)length;
-@end
-
-@implementation MyBase
--(long long)length{
- printf("Called MyBase -length;\n");
- return 3;
-}
-@end
-
-@implementation MySub
--(double)length{ // expected-warning{{types are incompatible}}
- printf("Called MySub -length;\n");
- return 3.3;
-}
-@end
diff --git a/test/Analysis/PR12905.c b/test/Analysis/PR12905.c
deleted file mode 100644
index f36b93aacf90..000000000000
--- a/test/Analysis/PR12905.c
+++ /dev/null
@@ -1,8 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core %s
-// PR12905
-
-void C(void);
-
-void t(void) {
- C();
-}
diff --git a/test/Analysis/PR24184.cpp b/test/Analysis/PR24184.cpp
deleted file mode 100644
index 172d3e7e3386..000000000000
--- a/test/Analysis/PR24184.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-// UNSUPPORTED: z3
-// RUN: %clang_analyze_cc1 -w -fcxx-exceptions -analyzer-checker=core -analyzer-checker=alpha.core.PointerArithm,alpha.core.CastToStruct -analyzer-max-loop 64 -verify %s
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core -analyzer-checker=cplusplus -fcxx-exceptions -analyzer-checker alpha.core.PointerArithm,alpha.core.CastToStruct -analyzer-max-loop 63 -verify %s
-
-// These tests used to hit an assertion in the bug report. Test case from http://llvm.org/PR24184.
-typedef struct {
- int cbData;
- unsigned pbData;
-} CRYPT_DATA_BLOB;
-
-typedef enum { DT_NONCE_FIXED } DATA_TYPE;
-int a;
-typedef int *vcreate_t(int *, DATA_TYPE, int, int);
-void fn1(unsigned, unsigned) {
- char b = 0;
- for (; 1; a++, &b + a * 0)
- ;
-}
-
-vcreate_t fn2;
-struct A {
- CRYPT_DATA_BLOB value;
- int m_fn1() {
- int c;
- value.pbData == 0;
- fn1(0, 0);
- }
-};
-struct B {
- A IkeHashAlg;
- A IkeGType;
- A NoncePhase1_r;
-};
-class C {
- int m_fn2(B *);
- void m_fn3(B *, int, int, int);
-};
-int C::m_fn2(B *p1) {
- int *d;
- int e = p1->IkeHashAlg.m_fn1();
- unsigned f = p1->IkeGType.m_fn1(), h;
- int g;
- d = fn2(0, DT_NONCE_FIXED, (char)0, p1->NoncePhase1_r.value.cbData);
- h = 0 | 0;
- m_fn3(p1, 0, 0, 0);
-}
-
-// case 2:
-typedef struct {
- int cbData;
- unsigned char *pbData;
-} CRYPT_DATA_BLOB_1;
-typedef unsigned uint32_t;
-void fn1_1(void *p1, const void *p2) { p1 != p2; }
-
-void fn2_1(uint32_t *p1, unsigned char *p2, uint32_t p3) {
- unsigned i = 0;
- for (0; i < p3; i++)
- fn1_1(p1 + i, p2 + i * 0);
-}
-
-struct A_1 {
- CRYPT_DATA_BLOB_1 value;
- uint32_t m_fn1() {
- uint32_t a;
- if (value.pbData)
- fn2_1(&a, value.pbData, value.cbData);
- return 0;
- }
-};
-struct {
- A_1 HashAlgId;
-} *b;
-void fn3() {
- uint32_t c, d;
- d = b->HashAlgId.m_fn1();
- d << 0 | 0 | 0;
- c = 0;
- 0 | 1 << 0 | 0 && b;
-}
-
-// case 3:
-struct ST {
- char c;
-};
-char *p;
-int foo1(ST);
-int foo2() {
- ST *p1 = (ST *)(p); // expected-warning{{Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption}}
- while (p1->c & 0x0F || p1->c & 0x07)
- p1 = p1 + foo1(*p1);
-}
-
-int foo3(int *node) {
- int i = foo2();
- if (i)
- return foo2();
-}
diff --git a/test/Analysis/PR2978.m b/test/Analysis/PR2978.m
deleted file mode 100644
index 8b7effc66a1e..000000000000
--- a/test/Analysis/PR2978.m
+++ /dev/null
@@ -1,116 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core,osx.cocoa.Dealloc %s -verify
-
-// Tests for the checker which checks missing/extra ivar 'release' calls
-// in dealloc.
-
-@interface NSObject
-- (void)release;
-- (void)dealloc;
-@end
-
-@interface MyClass : NSObject {
-@private
- id _X;
- id _Y;
- id _Z;
- id _K;
- id _L;
- id _N;
- id _M;
- id _P;
- id _Q;
- id _R;
- id _S;
- id _V;
- id _W;
-
- MyClass *_other;
-
- id _nonPropertyIvar;
-}
-@property(retain) id X;
-@property(retain) id Y;
-@property(assign) id Z;
-@property(assign) id K;
-@property(weak) id L;
-@property(readonly) id N;
-@property(retain) id M;
-@property(weak) id P;
-@property(weak) id Q;
-@property(retain) id R;
-@property(weak, readonly) id S;
-
-@property(assign, readonly) id T; // Shadowed in class extension
-@property(assign) id U;
-
-@property(retain) id V;
-@property(retain) id W;
--(id) O;
--(void) setO: (id) arg;
-@end
-
-@interface MyClass ()
-// Shadows T to make it readwrite internally but readonly externally.
-@property(assign, readwrite) id T;
-@end
-
-@implementation MyClass
-@synthesize X = _X;
-@synthesize Y = _Y;
-@synthesize Z = _Z;
-@synthesize K = _K;
-@synthesize L = _L;
-@synthesize N = _N;
-@synthesize M = _M;
-@synthesize Q = _Q;
-@synthesize R = _R;
-@synthesize V = _V;
-@synthesize W = _W;
-
--(id) O{ return 0; }
--(void) setO:(id)arg { }
-
-
--(void) releaseInHelper {
- [_R release]; // no-warning
- _R = @"Hi";
-}
-
-- (void)dealloc
-{
-
- [_X release];
- [_Z release]; // expected-warning{{The '_Z' ivar in 'MyClass' was synthesized for an assign, readwrite property but was released in 'dealloc'}}
- [_T release]; // no-warning
-
- [_other->_Z release]; // no-warning
- [_N release];
-
- self.M = 0; // This will release '_M'
- [self setV:0]; // This will release '_V'
- [self setW:@"newW"]; // This will release '_W', but retain the new value
-
- [_S release]; // expected-warning {{The '_S' ivar in 'MyClass' was synthesized for a weak property but was released in 'dealloc'}}
-
- self.O = 0; // no-warning
-
- [_Q release]; // expected-warning {{The '_Q' ivar in 'MyClass' was synthesized for a weak property but was released in 'dealloc'}}
-
- self.P = 0;
-
- [self releaseInHelper];
-
- [_nonPropertyIvar release]; // no-warning
-
- // Silly, but not an error.
- if (!_U)
- [_U release];
-
- [super dealloc];
- // expected-warning@-1{{The '_Y' ivar in 'MyClass' was retained by a synthesized property but not released before '[super dealloc]'}}
- // expected-warning@-2{{The '_W' ivar in 'MyClass' was retained by a synthesized property but not released before '[super dealloc]'}}
-
-}
-
-@end
-
diff --git a/test/Analysis/PR37855.c b/test/Analysis/PR37855.c
deleted file mode 100644
index e9c2564ba008..000000000000
--- a/test/Analysis/PR37855.c
+++ /dev/null
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -w -DNO_CROSSCHECK -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -w -analyzer-config crosscheck-with-z3=true -verify %s
-// REQUIRES: z3
-
-typedef struct o p;
-struct o {
- struct {
- } s;
-};
-
-void q(*r, p2) { r < p2; }
-
-void k(l, node) {
- struct {
- p *node;
- } * n, *nodep, path[sizeof(void)];
- path->node = l;
- for (n = path; node != l;) {
- q(node, n->node);
- nodep = n;
- }
- if (nodep) // expected-warning {{Branch condition evaluates to a garbage value}}
- n[1].node->s;
-}
diff --git a/test/Analysis/PR38208.c b/test/Analysis/PR38208.c
deleted file mode 100644
index fb0a5a15eac6..000000000000
--- a/test/Analysis/PR38208.c
+++ /dev/null
@@ -1,43 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-
-// expected-no-diagnostics
-
-int foo(int a, int b) {
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- a += b; b -= a;
- return a + b;
-}
diff --git a/test/Analysis/PR3991.m b/test/Analysis/PR3991.m
deleted file mode 100644
index ffdb7b4a6e44..000000000000
--- a/test/Analysis/PR3991.m
+++ /dev/null
@@ -1,69 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-store=region -verify -triple x86_64-apple-darwin9 -Wno-incomplete-implementation %s
-// expected-no-diagnostics
-
-//===----------------------------------------------------------------------===//
-// Delta-debugging produced forward declarations.
-//===----------------------------------------------------------------------===//
-
-typedef signed char BOOL;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject - (BOOL)isEqual:(id)object;
-@end @protocol NSCopying - (id)copyWithZone:(NSZone *)zone;
-@end @protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone;
-@end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
-@end @interface NSObject <NSObject> {
-}
-@end extern id <NSObject> NSAllocateObject(Class aClass, unsigned extraBytes, NSZone *zone);
-@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding> - (unsigned)count;
-@end @class NSTimer, NSPort, NSArray;
-@class NSURLHandle, NSMutableArray, NSMutableData, NSData, NSURL;
-@interface NSResponder : NSObject <NSCoding> {
-}
-@end @class NSBitmapImageRep, NSCursor, NSGraphicsContext, NSImage, NSPasteboard, NSScrollView, NSWindow, NSAttributedString;
-@interface NSView : NSResponder {
- struct __VFlags2 {
- }
- _vFlags2;
-}
-@end @class NSTextField, NSPanel, NSArray, NSWindow, NSImage, NSButton, NSError;
-@interface NSBox : NSView {
-}
-@end @class GDataFeedDocList, GDataServiceTicket, GDataServiceTicket, IHGoogleDocsAdapter;
-@protocol IHGoogleDocsAdapterDelegate - (void)googleDocsAdapter:(IHGoogleDocsAdapter*)inGoogleDocsAdapter accountVerifyIsValid:(BOOL)inIsValid error:(NSError *)inError;
-@end @interface IHGoogleDocsAdapter : NSObject {
-}
-- (NSArray *)entries;
-@end extern Class const kGDataUseRegisteredClass ;
-@interface IHGoogleDocsAdapter () - (GDataFeedDocList *)feedDocList;
-- (NSArray *)directoryPathComponents;
-- (unsigned int)currentPathComponentIndex;
-- (void)setCurrentPathComponentIndex:(unsigned int)aCurrentPathComponentIndex;
-- (NSURL *)folderFeedURL;
-@end
-
-@implementation IHGoogleDocsAdapter - (id)initWithUsername:(NSString *)inUsername password:(NSString *)inPassword owner:(NSObject <IHGoogleDocsAdapterDelegate> *)owner {
- return 0;
-}
-
-//===----------------------------------------------------------------------===//
-// Actual test case:
-//
-// The analyzer currently doesn't reason about ObjCKVCRefExpr. Have both
-// GRExprEngine::Visit and GRExprEngine::VisitLValue have such expressions
-// evaluate to UnknownVal.
-//===----------------------------------------------------------------------===//
-
-- (void)docListListFetchTicket:(GDataServiceTicket *)ticket finishedWithFeed:(GDataFeedDocList *)feed {
- BOOL doGetDir = self.directoryPathComponents != 0 && self.currentPathComponentIndex < [self.directoryPathComponents count];
- if (doGetDir) {
- BOOL isDirExisting = [[self.feedDocList entries] count] > 0;
- if (isDirExisting) {
- if (self.folderFeedURL != 0) {
- if (++self.currentPathComponentIndex == [self.directoryPathComponents count]) {
- }
- }
- }
- }
-}
-@end
diff --git a/test/Analysis/PR7218.c b/test/Analysis/PR7218.c
deleted file mode 100644
index 10a75c98e515..000000000000
--- a/test/Analysis/PR7218.c
+++ /dev/null
@@ -1,6 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-store region -verify %s
-char PR7218(char a) {
- char buf[2];
- buf[0] = a;
- return buf[1]; // expected-warning {{Undefined or garbage value returned to caller}}
-}
diff --git a/test/Analysis/PR9741.cpp b/test/Analysis/PR9741.cpp
deleted file mode 100644
index 542bc2d958ee..000000000000
--- a/test/Analysis/PR9741.cpp
+++ /dev/null
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -Wuninitialized -verify %s
-// expected-no-diagnostics
-
-void f() {
- int a[] = { 1, 2, 3 };
- unsigned int u = 0;
- for (auto x : a)
- ;
-}
diff --git a/test/Analysis/_Bool-increment-decrement.c b/test/Analysis/_Bool-increment-decrement.c
deleted file mode 100644
index 477b6ed43830..000000000000
--- a/test/Analysis/_Bool-increment-decrement.c
+++ /dev/null
@@ -1,140 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify -std=c99 -Dbool=_Bool -Dtrue=1 -Dfalse=0 %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify -std=c11 -Dbool=_Bool -Dtrue=1 -Dfalse=0 %s
-extern void clang_analyzer_eval(bool);
-
-void test__Bool_value() {
- {
- bool b = true;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = false;
- clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
- }
-
- {
- bool b = -10;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = 10;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = 10;
- b++;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = 0;
- b++;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-}
-
-void test__Bool_increment() {
- {
- bool b = true;
- b++;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = false;
- b++;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = true;
- ++b;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = false;
- ++b;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = 0;
- ++b;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = 10;
- ++b;
- ++b;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = -10;
- ++b;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = -1;
- ++b;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-}
-
-void test__Bool_decrement() {
- {
- bool b = true;
- b--;
- clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
- }
-
- {
- bool b = false;
- b--;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = true;
- --b;
- clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
- }
-
- {
- bool b = false;
- --b;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = 0;
- --b;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = 10;
- --b;
- clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
- --b;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = -10;
- --b;
- clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
- }
-
- {
- bool b = 1;
- --b;
- clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
- }
-}
diff --git a/test/Analysis/additive-folding-range-constraints.c b/test/Analysis/additive-folding-range-constraints.c
deleted file mode 100644
index e75223eab05b..000000000000
--- a/test/Analysis/additive-folding-range-constraints.c
+++ /dev/null
@@ -1,304 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config eagerly-assume=false -verify %s
-
-void clang_analyzer_eval(int);
-
-#define UINT_MAX (~0U)
-#define INT_MAX (UINT_MAX & (UINT_MAX >> 1))
-#define INT_MIN (-INT_MAX - 1)
-
-
-// Each of these adjusted ranges has an adjustment small enough to split the
-// solution range across an overflow boundary (Min for <, Max for >).
-// This corresponds to one set of branches in RangeConstraintManager.
-void smallAdjustmentGT (unsigned a) {
- if (a+2 > 1)
- clang_analyzer_eval(a < UINT_MAX-1); // expected-warning{{TRUE}}
- else
- clang_analyzer_eval(a == UINT_MAX-1 || a == UINT_MAX); // expected-warning{{TRUE}}
-}
-
-void smallAdjustmentGE (unsigned a) {
- if (a+2 >= 1)
- clang_analyzer_eval(a < UINT_MAX-1 || a == UINT_MAX); // expected-warning{{TRUE}}
- else
- clang_analyzer_eval(a == UINT_MAX-1); // expected-warning{{TRUE}}
-}
-
-void smallAdjustmentLT (unsigned a) {
- if (a+1 < 2)
- clang_analyzer_eval(a == 0 || a == UINT_MAX); // expected-warning{{TRUE}}
-}
-
-void smallAdjustmentLE (unsigned a) {
- if (a+1 <= 2)
- clang_analyzer_eval(a == 0 || a == 1 || a == UINT_MAX); // expected-warning{{TRUE}}
-}
-
-
-// Each of these adjusted ranges has an adjustment large enough to push the
-// comparison value over an overflow boundary (Min for <, Max for >).
-// This corresponds to one set of branches in RangeConstraintManager.
-void largeAdjustmentGT (unsigned a) {
- if (a-2 > UINT_MAX-1)
- clang_analyzer_eval(a == 1); // expected-warning{{TRUE}}
- else
- clang_analyzer_eval(a != 1); // expected-warning{{TRUE}}
-}
-
-void largeAdjustmentGE (unsigned a) {
- if (a-2 >= UINT_MAX-1)
- clang_analyzer_eval(a == 1 || a == 0); // expected-warning{{TRUE}}
- else
- clang_analyzer_eval(a > 1); // expected-warning{{TRUE}}
-}
-
-void largeAdjustmentLT (unsigned a) {
- if (a+2 < 1)
- clang_analyzer_eval(a == UINT_MAX-1); // expected-warning{{TRUE}}
- else
- clang_analyzer_eval(a != UINT_MAX-1); // expected-warning{{TRUE}}
-}
-
-void largeAdjustmentLE (unsigned a) {
- if (a+2 <= 1)
- clang_analyzer_eval(a == UINT_MAX-1 || a == UINT_MAX); // expected-warning{{TRUE}}
- else
- clang_analyzer_eval(a < UINT_MAX-1); // expected-warning{{TRUE}}
-}
-
-
-// Test the nine cases in RangeConstraintManager's pinning logic.
-// For out-of-range tautologies, it may be the negation that actually
-// triggers the case in question.
-void mixedComparisons1(signed char a) {
- // Case 1: The range is entirely below the symbol's range.
- int min = INT_MIN;
-
- clang_analyzer_eval((a - 2) >= (min + 5LL)); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(a == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == 0x7F); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == -0x80); // expected-warning{{UNKNOWN}}
-}
-
-void mixedComparisons2(signed char a) {
- // Case 2: Only the lower end of the range is outside.
- clang_analyzer_eval((a - 5) < (-0x81LL)); // expected-warning{{UNKNOWN}}
-
- if ((a - 5) < (-0x81LL)) {
- clang_analyzer_eval(a == 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(a == 0x7F); // expected-warning{{FALSE}}
- clang_analyzer_eval(a == -0x80); // expected-warning{{UNKNOWN}}
- }
-}
-
-void mixedComparisons3(signed char a) {
- // Case 3: The entire symbol range is covered.
- clang_analyzer_eval((a - 0x200) < -0x100LL); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(a == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == 0x7F); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == -0x80); // expected-warning{{UNKNOWN}}
-}
-
-void mixedComparisons4(signed char a) {
- // Case 4: The range wraps around, but the lower wrap is out-of-range.
- clang_analyzer_eval((a - 5) > 0LL); // expected-warning{{UNKNOWN}}
-
- if ((a - 5) > 0LL) {
- clang_analyzer_eval(a == 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(a == 0x7F); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == -0x80); // expected-warning{{FALSE}}
- }
-}
-
-void mixedComparisons5(signed char a) {
- // Case 5: The range is inside and may or may not wrap.
- clang_analyzer_eval((a + 5) == 0LL); // expected-warning{{UNKNOWN}}
-
- if ((a + 5) == 0LL) {
- clang_analyzer_eval(a == 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(a == 0x7F); // expected-warning{{FALSE}}
- clang_analyzer_eval(a == -0x80); // expected-warning{{FALSE}}
- } else {
- clang_analyzer_eval(a == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == 0x7F); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == -0x80); // expected-warning{{UNKNOWN}}
- }
-}
-
-void mixedComparisons6(signed char a) {
- // Case 6: Only the upper end of the range is outside.
- clang_analyzer_eval((a + 5) > 0x81LL); // expected-warning{{UNKNOWN}}
-
- if ((a + 5) > 0x81LL) {
- clang_analyzer_eval(a == 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(a == 0x7F); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == -0x80); // expected-warning{{FALSE}}
- }
-}
-
-void mixedComparisons7(signed char a) {
- // Case 7: The range wraps around but is entirely outside the symbol's range.
- int min = INT_MIN;
-
- clang_analyzer_eval((a + 2) >= (min + 5LL)); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(a == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == 0x7F); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == -0x80); // expected-warning{{UNKNOWN}}
-}
-
-void mixedComparisons8(signed char a) {
- // Case 8: The range wraps, but the upper wrap is out of range.
- clang_analyzer_eval((a + 5) < 0LL); // expected-warning{{UNKNOWN}}
-
- if ((a + 5) < 0LL) {
- clang_analyzer_eval(a == 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(a == 0x7F); // expected-warning{{FALSE}}
- clang_analyzer_eval(a == -0x80); // expected-warning{{UNKNOWN}}
- }
-}
-
-void mixedComparisons9(signed char a) {
- // Case 9: The range is entirely above the symbol's range.
- int max = INT_MAX;
-
- clang_analyzer_eval((a + 2) <= (max - 5LL)); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(a == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == 0x7F); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == -0x80); // expected-warning{{UNKNOWN}}
-}
-
-
-void mixedSignedness1(int a) {
- unsigned max = UINT_MAX;
- clang_analyzer_eval(a < max); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2) < max); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2U) < max); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness2(int a) {
- unsigned max = UINT_MAX;
- clang_analyzer_eval(a <= max); // expected-warning{{TRUE}}
- clang_analyzer_eval((a + 2) <= max); // expected-warning{{TRUE}}
- clang_analyzer_eval((a + 2U) <= max); // expected-warning{{TRUE}}
-}
-
-void mixedSignedness3(unsigned a) {
- int max = INT_MAX;
- clang_analyzer_eval(a < max); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2) < max); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2U) < max); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness4(unsigned a) {
- int max = INT_MAX;
- clang_analyzer_eval(a <= max); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2) <= max); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2U) <= max); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness5(unsigned a) {
- int min = INT_MIN;
- clang_analyzer_eval(a < min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2) < min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2U) < min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness6(unsigned a) {
- int min = INT_MIN;
- clang_analyzer_eval(a <= min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2) <= min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2U) <= min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness7(unsigned a) {
- unsigned min = 0;
- clang_analyzer_eval(a < min); // expected-warning{{FALSE}}
- clang_analyzer_eval((a + 2) < min); // expected-warning{{FALSE}}
- clang_analyzer_eval((a + 2U) < min); // expected-warning{{FALSE}}
-}
-
-void mixedSignedness8(unsigned a) {
- unsigned min = 0;
- clang_analyzer_eval(a <= min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2) <= min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2U) <= min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness9(unsigned a) {
- int min = 0;
- clang_analyzer_eval(a < min); // expected-warning{{FALSE}}
- clang_analyzer_eval((a + 2) < min); // expected-warning{{FALSE}}
- clang_analyzer_eval((a + 2U) < min); // expected-warning{{FALSE}}
-}
-
-void mixedSignedness10(unsigned a) {
- int min = 0;
- clang_analyzer_eval(a <= min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2) <= min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2U) <= min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness11(int a) {
- int min = 0;
- clang_analyzer_eval(a < min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2) < min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2U) < min); // expected-warning{{FALSE}}
-}
-
-void mixedSignedness12(int a) {
- int min = 0;
- clang_analyzer_eval(a <= min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2) <= min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2U) <= min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness13(int a) {
- unsigned max = INT_MAX;
- clang_analyzer_eval(a < max); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2) < max); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2U) < max); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness14(int a) {
- unsigned max = INT_MAX;
- clang_analyzer_eval(a <= max); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2) <= max); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2U) <= max); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness15(int a) {
- unsigned min = INT_MIN;
- clang_analyzer_eval(a < min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2) < min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2U) < min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness16(int a) {
- unsigned min = INT_MIN;
- clang_analyzer_eval(a <= min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2) <= min); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a + 2U) <= min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness17(int a) {
- unsigned max = INT_MAX;
- if (a < max)
- return;
-
- clang_analyzer_eval(a < 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(a == INT_MAX); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness18(int a) {
- if (a >= 0)
- return;
-
- clang_analyzer_eval(a < 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(a == (unsigned)INT_MIN); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == UINT_MAX); // expected-warning{{UNKNOWN}}
-}
diff --git a/test/Analysis/additive-folding.cpp b/test/Analysis/additive-folding.cpp
deleted file mode 100644
index 6c84bf345e5e..000000000000
--- a/test/Analysis/additive-folding.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify -Wno-tautological-compare -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(bool);
-
-#define UINT_MAX (~0U)
-#define INT_MAX (UINT_MAX & (UINT_MAX >> 1))
-#define INT_MIN (-INT_MAX - 1)
-
-//---------------
-// Plus/minus
-//---------------
-
-void separateExpressions (int a) {
- int b = a + 1;
- --b;
-
- clang_analyzer_eval(a != 0 && b == 0); // expected-warning{{FALSE}}
-}
-
-void oneLongExpression (int a) {
- // Expression canonicalization should still allow this to work, even though
- // the first term is on the left.
- int b = 15 + a + 15 - 10 - 20;
-
- clang_analyzer_eval(a != 0 && b == 0); // expected-warning{{FALSE}}
-}
-
-void mixedTypes (int a) {
- // Different additive types should not cause crashes when constant-folding.
- // This is part of PR7406.
- int b = a + 1LL;
- clang_analyzer_eval(a != 0 && (b-1) == 0); // not crash, expected-warning{{FALSE}}
-
- int c = a + 1U;
- clang_analyzer_eval(a != 0 && (c-1) == 0); // not crash, expected-warning{{FALSE}}
-}
-
-//---------------
-// Comparisons
-//---------------
-
-// Equality and inequality only
-void eq_ne (unsigned a) {
- if (a == UINT_MAX) {
- clang_analyzer_eval(a+1 == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(a-1 == UINT_MAX-1); // expected-warning{{TRUE}}
- } else {
- clang_analyzer_eval(a+1 != 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(a-1 != UINT_MAX-1); // expected-warning{{TRUE}}
- }
-}
-
-// Mixed typed inequalities (part of PR7406)
-// These should not crash.
-void mixed_eq_ne (int a) {
- if (a == 1) {
- clang_analyzer_eval(a+1U == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(a-1U == 0); // expected-warning{{TRUE}}
- } else {
- clang_analyzer_eval(a+1U != 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(a-1U != 0); // expected-warning{{TRUE}}
- }
-}
-
-
-// Simple order comparisons with no adjustment
-void baselineGT (unsigned a) {
- if (a > 0)
- clang_analyzer_eval(a != 0); // expected-warning{{TRUE}}
- else
- clang_analyzer_eval(a == 0); // expected-warning{{TRUE}}
-}
-
-void baselineGE (unsigned a) {
- if (a >= UINT_MAX)
- clang_analyzer_eval(a == UINT_MAX); // expected-warning{{TRUE}}
- else
- clang_analyzer_eval(a != UINT_MAX); // expected-warning{{TRUE}}
-}
-
-void baselineLT (unsigned a) {
- if (a < UINT_MAX)
- clang_analyzer_eval(a != UINT_MAX); // expected-warning{{TRUE}}
- else
- clang_analyzer_eval(a == UINT_MAX); // expected-warning{{TRUE}}
-}
-
-void baselineLE (unsigned a) {
- if (a <= 0)
- clang_analyzer_eval(a == 0); // expected-warning{{TRUE}}
- else
- clang_analyzer_eval(a != 0); // expected-warning{{TRUE}}
-}
-
-
-// Adjustment gives each of these an extra solution!
-void adjustedGT (unsigned a) {
- clang_analyzer_eval(a-1 > UINT_MAX-1); // expected-warning{{UNKNOWN}}
-}
-
-void adjustedGE (unsigned a) {
- clang_analyzer_eval(a-1 > UINT_MAX-1); // expected-warning{{UNKNOWN}}
-
- if (a-1 >= UINT_MAX-1)
- clang_analyzer_eval(a == UINT_MAX); // expected-warning{{UNKNOWN}}
-}
-
-void adjustedLT (unsigned a) {
- clang_analyzer_eval(a+1 < 1); // expected-warning{{UNKNOWN}}
-}
-
-void adjustedLE (unsigned a) {
- clang_analyzer_eval(a+1 <= 1); // expected-warning{{UNKNOWN}}
-
- if (a+1 <= 1)
- clang_analyzer_eval(a == 0); // expected-warning{{UNKNOWN}}
-}
-
-
-// Tautologies
-// The negative forms are exercised as well
-// because clang_analyzer_eval tests both possibilities.
-void tautologies(unsigned a) {
- clang_analyzer_eval(a <= UINT_MAX); // expected-warning{{TRUE}}
- clang_analyzer_eval(a >= 0); // expected-warning{{TRUE}}
-}
-
-
-// Tautologies from outside the range of the symbol
-void tautologiesOutside(unsigned char a) {
- clang_analyzer_eval(a <= 0x100); // expected-warning{{TRUE}}
- clang_analyzer_eval(a < 0x100); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(a != 0x100); // expected-warning{{TRUE}}
- clang_analyzer_eval(a != -1); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(a > -1); // expected-warning{{TRUE}}
- clang_analyzer_eval(a >= -1); // expected-warning{{TRUE}}
-}
-
-
-// Wraparound with mixed types. Note that the analyzer assumes
-// -fwrapv semantics.
-void mixedWraparoundSanityCheck(int a) {
- int max = INT_MAX;
- int min = INT_MIN;
-
- int b = a + 1;
- clang_analyzer_eval(a == max && b != min); // expected-warning{{FALSE}}
-}
-
-void mixedWraparoundLE_GT(int a) {
- int max = INT_MAX;
- int min = INT_MIN;
-
- clang_analyzer_eval((a + 2) <= (max + 1LL)); // expected-warning{{TRUE}}
- clang_analyzer_eval((a - 2) > (min - 1LL)); // expected-warning{{TRUE}}
- clang_analyzer_eval((a + 2LL) <= max); // expected-warning{{UNKNOWN}}
-}
-
-void mixedWraparoundGE_LT(int a) {
- int max = INT_MAX;
- int min = INT_MIN;
-
- clang_analyzer_eval((a + 2) < (max + 1LL)); // expected-warning{{TRUE}}
- clang_analyzer_eval((a - 2) >= (min - 1LL)); // expected-warning{{TRUE}}
- clang_analyzer_eval((a - 2LL) >= min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedWraparoundEQ_NE(int a) {
- int max = INT_MAX;
-
- clang_analyzer_eval((a + 2) != (max + 1LL)); // expected-warning{{TRUE}}
- clang_analyzer_eval((a + 2LL) == (max + 1LL)); // expected-warning{{UNKNOWN}}
-}
-
-
-// Mixed-signedness comparisons.
-void mixedSignedness(int a, unsigned b) {
- int sMin = INT_MIN;
- unsigned uMin = INT_MIN;
-
- clang_analyzer_eval(a == sMin && a != uMin); // expected-warning{{FALSE}}
- clang_analyzer_eval(b == uMin && b != sMin); // expected-warning{{FALSE}}
-}
-
-void mixedSignedness2(int a) {
- if (a != -1)
- return;
- clang_analyzer_eval(a == UINT_MAX); // expected-warning{{TRUE}}
-}
-
-void mixedSignedness3(unsigned a) {
- if (a != UINT_MAX)
- return;
- clang_analyzer_eval(a == -1); // expected-warning{{TRUE}}
-}
-
-
-void multiplicativeSanityTest(int x) {
- // At one point we were ignoring the *4 completely -- the constraint manager
- // would see x < 8 and then declare the assertion to be known false.
- if (x*4 < 8)
- return;
-
- clang_analyzer_eval(x == 3); // expected-warning{{UNKNOWN}}
-}
-
-void additiveSymSymFolding(int x, int y) {
- // We should simplify 'x - 1' to '0' and handle the comparison,
- // despite both sides being complicated symbols.
- int z = x - 1;
- if (x == 1)
- if (y >= 0)
- clang_analyzer_eval(z <= y); // expected-warning{{TRUE}}
-}
diff --git a/test/Analysis/analyzeOneFunction.m b/test/Analysis/analyzeOneFunction.m
deleted file mode 100644
index 80f34ad525e2..000000000000
--- a/test/Analysis/analyzeOneFunction.m
+++ /dev/null
@@ -1,56 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyze-function="-[Test1 myMethodWithY:withX:]" -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -verify %s
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@protocol NSCopying - (id)copyWithZone:(NSZone *)zone; @end
-@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; @end
-@protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
--(id)retain;
-@end
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
--(id)initWithFormat:(NSString *)f,...;
--(BOOL)isEqualToString:(NSString *)s;
-+ (id)string;
-@end
-
-@interface Test1 : NSObject {
- NSString *text;
-}
--(id)myMethod;
--(id)myMethodWithY:(int)Y withX:(int)X;
-
-@property (nonatomic, assign) NSString *text;
-@end
-
-@implementation Test1
-
-@synthesize text;
-
--(id)myMethod {
- Test1 *cell = [[[Test1 alloc] init] autorelease];
-
- NSString *string1 = [[NSString alloc] initWithFormat:@"test %f", 0.0]; // No warning: this function is not analyzed.
- cell.text = string1;
-
- return cell;
-}
-
--(id)myMethodWithY:(int)Y withX:(int)X {
- Test1 *cell = [[[Test1 alloc] init] autorelease];
-
- NSString *string1 = [[NSString alloc] initWithFormat:@"test %f %d", 0.0, X+Y]; // expected-warning {{Potential leak}}
- cell.text = string1;
-
- return cell;
-}
-
-@end
diff --git a/test/Analysis/analyzer-checker-config.c b/test/Analysis/analyzer-checker-config.c
deleted file mode 100644
index 34e339963f3c..000000000000
--- a/test/Analysis/analyzer-checker-config.c
+++ /dev/null
@@ -1,12 +0,0 @@
-// RUN: not %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc -analyzer-config unix.mallo:Optimistic=true 2>&1 | FileCheck %s
-// RUN: not %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc -analyzer-config uni:Optimistic=true 2>&1 | FileCheck %s
-// RUN: not %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc -analyzer-config uni.:Optimistic=true 2>&1 | FileCheck %s
-// RUN: not %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc -analyzer-config ..:Optimistic=true 2>&1 | FileCheck %s
-// RUN: not %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc -analyzer-config unix.:Optimistic=true 2>&1 | FileCheck %s
-// RUN: not %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc -analyzer-config unrelated:Optimistic=true 2>&1 | FileCheck %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc -analyzer-config unix.Malloc:Optimistic=true
-
-// Just to test clang is working.
-# foo
-
-// CHECK: error:
diff --git a/test/Analysis/analyzer-config.c b/test/Analysis/analyzer-config.c
deleted file mode 100644
index 50b5c2dcf65f..000000000000
--- a/test/Analysis/analyzer-config.c
+++ /dev/null
@@ -1,55 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 %s -o /dev/null -analyzer-checker=core,osx.cocoa,debug.ConfigDumper -analyzer-max-loop 34 > %t 2>&1
-// RUN: FileCheck --input-file=%t %s --match-full-lines
-
-// CHECK: [config]
-// CHECK-NEXT: aggressive-binary-operation-simplification = false
-// CHECK-NEXT: avoid-suppressing-null-argument-paths = false
-// CHECK-NEXT: c++-allocator-inlining = true
-// CHECK-NEXT: c++-container-inlining = false
-// CHECK-NEXT: c++-inlining = destructors
-// CHECK-NEXT: c++-shared_ptr-inlining = false
-// CHECK-NEXT: c++-stdlib-inlining = true
-// CHECK-NEXT: c++-temp-dtor-inlining = true
-// CHECK-NEXT: c++-template-inlining = true
-// CHECK-NEXT: cfg-conditional-static-initializers = true
-// CHECK-NEXT: cfg-implicit-dtors = true
-// CHECK-NEXT: cfg-lifetime = false
-// CHECK-NEXT: cfg-loopexit = false
-// CHECK-NEXT: cfg-rich-constructors = true
-// CHECK-NEXT: cfg-scopes = false
-// CHECK-NEXT: cfg-temporary-dtors = true
-// CHECK-NEXT: crosscheck-with-z3 = false
-// CHECK-NEXT: ctu-dir = ""
-// CHECK-NEXT: ctu-index-name = externalDefMap.txt
-// CHECK-NEXT: display-ctu-progress = false
-// CHECK-NEXT: eagerly-assume = true
-// CHECK-NEXT: elide-constructors = true
-// CHECK-NEXT: expand-macros = false
-// CHECK-NEXT: experimental-enable-naive-ctu-analysis = false
-// CHECK-NEXT: exploration_strategy = unexplored_first_queue
-// CHECK-NEXT: faux-bodies = true
-// CHECK-NEXT: graph-trim-interval = 1000
-// CHECK-NEXT: inline-lambdas = true
-// CHECK-NEXT: ipa = dynamic-bifurcate
-// CHECK-NEXT: ipa-always-inline-size = 3
-// CHECK-NEXT: max-inlinable-size = 100
-// CHECK-NEXT: max-nodes = 225000
-// CHECK-NEXT: max-symbol-complexity = 35
-// CHECK-NEXT: max-times-inline-large = 32
-// CHECK-NEXT: min-cfg-size-treat-functions-as-large = 14
-// CHECK-NEXT: mode = deep
-// CHECK-NEXT: model-path = ""
-// CHECK-NEXT: notes-as-events = false
-// CHECK-NEXT: objc-inlining = true
-// CHECK-NEXT: prune-paths = true
-// CHECK-NEXT: region-store-small-struct-limit = 2
-// CHECK-NEXT: report-in-main-source-file = false
-// CHECK-NEXT: serialize-stats = false
-// CHECK-NEXT: stable-report-filename = false
-// CHECK-NEXT: suppress-c++-stdlib = true
-// CHECK-NEXT: suppress-inlined-defensive-checks = true
-// CHECK-NEXT: suppress-null-return-paths = true
-// CHECK-NEXT: unroll-loops = false
-// CHECK-NEXT: widen-loops = false
-// CHECK-NEXT: [stats]
-// CHECK-NEXT: num-entries = 49
diff --git a/test/Analysis/analyzer-display-progress.cpp b/test/Analysis/analyzer-display-progress.cpp
deleted file mode 100644
index b54044a0a361..000000000000
--- a/test/Analysis/analyzer-display-progress.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-display-progress %s 2>&1 | FileCheck %s
-
-void f() {};
-void g() {};
-void h() {}
-
-struct SomeStruct {
- void f() {}
-};
-
-struct SomeOtherStruct {
- void f() {}
-};
-
-namespace ns {
- struct SomeStruct {
- void f(int) {}
- void f(float, ::SomeStruct) {}
- void f(float, SomeStruct) {}
- };
-}
-
-// CHECK: analyzer-display-progress.cpp f()
-// CHECK: analyzer-display-progress.cpp g()
-// CHECK: analyzer-display-progress.cpp h()
-// CHECK: analyzer-display-progress.cpp SomeStruct::f()
-// CHECK: analyzer-display-progress.cpp SomeOtherStruct::f()
-// CHECK: analyzer-display-progress.cpp ns::SomeStruct::f(int)
-// CHECK: analyzer-display-progress.cpp ns::SomeStruct::f(float, ::SomeStruct)
-// CHECK: analyzer-display-progress.cpp ns::SomeStruct::f(float, struct ns::SomeStruct)
diff --git a/test/Analysis/analyzer-display-progress.m b/test/Analysis/analyzer-display-progress.m
deleted file mode 100644
index 8d0b3d6d5679..000000000000
--- a/test/Analysis/analyzer-display-progress.m
+++ /dev/null
@@ -1,30 +0,0 @@
-// RUN: %clang_analyze_cc1 -fblocks -analyzer-display-progress %s 2>&1 | FileCheck %s
-
-#include "Inputs/system-header-simulator-objc.h"
-
-static void f() {}
-
-@interface I: NSObject
--(void)instanceMethod:(int)arg1 with:(int)arg2;
-+(void)classMethod;
-@end
-
-@implementation I
--(void)instanceMethod:(int)arg1 with:(int)arg2 {}
-+(void)classMethod {}
-@end
-
-void g(I *i, int x, int y) {
- [I classMethod];
- [i instanceMethod: x with: y];
-
- void (^block)(void);
- block = ^{};
- block();
-}
-
-// CHECK: analyzer-display-progress.m f
-// CHECK: analyzer-display-progress.m -[I instanceMethod:with:]
-// CHECK: analyzer-display-progress.m +[I classMethod]
-// CHECK: analyzer-display-progress.m g
-// CHECK: analyzer-display-progress.m block (line: 22, col: 11)
diff --git a/test/Analysis/analyzer-enabled-checkers.c b/test/Analysis/analyzer-enabled-checkers.c
deleted file mode 100644
index 0ea01a010af6..000000000000
--- a/test/Analysis/analyzer-enabled-checkers.c
+++ /dev/null
@@ -1,20 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 %s -o /dev/null -analyzer-checker=core -analyzer-list-enabled-checkers > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-
-// CHECK: OVERVIEW: Clang Static Analyzer Enabled Checkers List
-// CHECK: core.CallAndMessage
-// CHECK: core.DivideZero
-// CHECK: core.DynamicTypePropagation
-// CHECK: core.NonNullParamChecker
-// CHECK: core.NullDereference
-// CHECK: core.StackAddressEscape
-// CHECK: core.UndefinedBinaryOperatorResult
-// CHECK: core.VLASize
-// CHECK: core.builtin.BuiltinFunctions
-// CHECK: core.builtin.NoReturnFunctions
-// CHECK: core.uninitialized.ArraySubscript
-// CHECK: core.uninitialized.Assign
-// CHECK: core.uninitialized.Branch
-// CHECK: core.uninitialized.CapturedBlockVariable
-// CHECK: core.uninitialized.UndefReturn
-
diff --git a/test/Analysis/analyzer-list-configs.c b/test/Analysis/analyzer-list-configs.c
deleted file mode 100644
index c9f6e55167fd..000000000000
--- a/test/Analysis/analyzer-list-configs.c
+++ /dev/null
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -analyzer-config-help 2>&1 | FileCheck %s
-// CHECK: OVERVIEW: Clang Static Analyzer -analyzer-config Option List
-//
-// CHECK: USAGE: clang -cc1 [CLANG_OPTIONS] -analyzer-config <OPTION1=VALUE,OPTION2=VALUE,...>
-//
-// CHCEK: clang -cc1 [CLANG_OPTIONS] -analyzer-config OPTION1=VALUE, -analyzer-config OPTION2=VALUE, ...
-//
-// CHECK: clang [CLANG_OPTIONS] -Xclang -analyzer-config -Xclang<OPTION1=VALUE,OPTION2=VALUE,...>
-//
-// CHECK: clang [CLANG_OPTIONS] -Xclang -analyzer-config -Xclang OPTION1=VALUE, -Xclang -analyzer-config -Xclang OPTION2=VALUE, ...
-//
-//
-// CHECK: OPTIONS:
-//
-// CHECK: aggressive-binary-operation-simplification
-// CHECK: (bool) Whether SValBuilder should rearrange
-// CHECK: comparisons and additive operations of symbolic
-// CHECK: expressions which consist of a sum of a
-// CHECK: symbol and a concrete integer into the format
-// CHECK: where symbols are on the left-hand side
-// CHECK: and the integer is on the right. This is
-// CHECK: only done if both symbols and both concrete
-// CHECK: integers are signed, greater than or equal
-// CHECK: to the quarter of the minimum value of the
-// CHECK: type and less than or equal to the quarter
-// CHECK: of the maximum value of that type. A
-// CHECK: + n
-// CHECK: <OP> B + m becomes A - B <OP> m - n, where
-// CHECK: A and B symbolic, n and m are integers.
-// CHECK: <OP> is any of '==', '!=', '<', '<=', '>',
-// CHECK: '>=', '+' or '-'. The rearrangement also
-// CHECK: happens with '-' instead of '+' on either
-// CHECK: or both side and also if any or both integers
-// CHECK: are missing. (default: false)
diff --git a/test/Analysis/analyzer-stats.c b/test/Analysis/analyzer-stats.c
deleted file mode 100644
index b58e862f6c65..000000000000
--- a/test/Analysis/analyzer-stats.c
+++ /dev/null
@@ -1,30 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,deadcode.DeadStores,debug.Stats -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks -analyzer-max-loop 4 %s
-
-int foo();
-
-int test() { // expected-warning-re{{test -> Total CFGBlocks: {{[0-9]+}} | Unreachable CFGBlocks: 0 | Exhausted Block: no | Empty WorkList: yes}}
- int a = 1;
- a = 34 / 12;
-
- if (foo())
- return a;
-
- a /= 4;
- return a;
-}
-
-
-int sink() // expected-warning-re{{sink -> Total CFGBlocks: {{[0-9]+}} | Unreachable CFGBlocks: 1 | Exhausted Block: yes | Empty WorkList: yes}}
-{
- for (int i = 0; i < 10; ++i) // expected-warning {{(sink): The analyzer generated a sink at this point}}
- ++i;
-
- return 0;
-}
-
-int emptyConditionLoop() // expected-warning-re{{emptyConditionLoop -> Total CFGBlocks: {{[0-9]+}} | Unreachable CFGBlocks: 0 | Exhausted Block: yes | Empty WorkList: yes}}
-{
- int num = 1;
- for (;;)
- num++;
-}
diff --git a/test/Analysis/analyzer_test.py b/test/Analysis/analyzer_test.py
deleted file mode 100644
index 03124333fe7b..000000000000
--- a/test/Analysis/analyzer_test.py
+++ /dev/null
@@ -1,48 +0,0 @@
-import lit.formats
-import lit.TestRunner
-
-# Custom format class for static analyzer tests
-class AnalyzerTest(lit.formats.ShTest):
-
- def __init__(self, execute_external, use_z3_solver=False):
- super(AnalyzerTest, self).__init__(execute_external)
- self.use_z3_solver = use_z3_solver
-
- def execute(self, test, litConfig):
- results = []
-
- # Parse any test requirements ('REQUIRES: ')
- saved_test = test
- lit.TestRunner.parseIntegratedTestScript(test)
-
- if 'z3' not in test.requires:
- results.append(self.executeWithAnalyzeSubstitution(
- saved_test, litConfig, '-analyzer-constraints=range'))
-
- if results[-1].code == lit.Test.FAIL:
- return results[-1]
-
- # If z3 backend available, add an additional run line for it
- if self.use_z3_solver == '1':
- assert(test.config.clang_staticanalyzer_z3 == '1')
- results.append(self.executeWithAnalyzeSubstitution(
- saved_test, litConfig, '-analyzer-constraints=z3 -DANALYZER_CM_Z3'))
-
- # Combine all result outputs into the last element
- for x in results:
- if x != results[-1]:
- results[-1].output = x.output + results[-1].output
-
- if results:
- return results[-1]
- return lit.Test.Result(lit.Test.UNSUPPORTED,
- "Test requires the following unavailable features: z3")
-
- def executeWithAnalyzeSubstitution(self, test, litConfig, substitution):
- saved_substitutions = list(test.config.substitutions)
- test.config.substitutions.append(('%analyze', substitution))
- result = lit.TestRunner.executeShTest(test, litConfig,
- self.execute_external)
- test.config.substitutions = saved_substitutions
-
- return result
diff --git a/test/Analysis/arc-zero-init.m b/test/Analysis/arc-zero-init.m
deleted file mode 100644
index de1e978cd0d8..000000000000
--- a/test/Analysis/arc-zero-init.m
+++ /dev/null
@@ -1,46 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify -fobjc-arc %s
-
-#if __has_feature(objc_arc)
-// expected-no-diagnostics
-#endif
-
-@interface SomeClass
-@end
-
-void simpleStrongPointerValue() {
- SomeClass *x;
- if (x) {}
-#if !__has_feature(objc_arc)
-// expected-warning@-2{{Branch condition evaluates to a garbage value}}
-#endif
-}
-
-void simpleArray() {
- SomeClass *vlaArray[5];
-
- if (vlaArray[0]) {}
-#if !__has_feature(objc_arc)
-// expected-warning@-2{{Branch condition evaluates to a garbage value}}
-#endif
-}
-
-void variableLengthArray() {
- int count = 1;
- SomeClass * vlaArray[count];
-
- if (vlaArray[0]) {}
-#if !__has_feature(objc_arc)
- // expected-warning@-2{{Branch condition evaluates to a garbage value}}
-#endif
-}
-
-void variableLengthArrayWithExplicitStrongAttribute() {
- int count = 1;
- __attribute__((objc_ownership(strong))) SomeClass * vlaArray[count];
-
- if (vlaArray[0]) {}
-#if !__has_feature(objc_arc)
- // expected-warning@-2{{Branch condition evaluates to a garbage value}}
-#endif
-}
diff --git a/test/Analysis/array-struct-region.c b/test/Analysis/array-struct-region.c
deleted file mode 100644
index c27abfb6ac98..000000000000
--- a/test/Analysis/array-struct-region.c
+++ /dev/null
@@ -1,355 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(int);
-
-int string_literal_init() {
- char a[] = "abc";
- char b[2] = "abc"; // expected-warning{{too long}}
- char c[5] = "abc";
-
- clang_analyzer_eval(a[1] == 'b'); // expected-warning{{TRUE}}
- clang_analyzer_eval(b[1] == 'b'); // expected-warning{{TRUE}}
- clang_analyzer_eval(c[1] == 'b'); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(a[3] == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(c[3] == 0); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(c[4] == 0); // expected-warning{{TRUE}}
-
- return 42;
-}
-
-void nested_compound_literals(int rad) {
- int vec[6][2] = {{0.195, 0.02}, {0.383, 0.067}, {0.55, 0.169}, // expected-warning 6 {{implicit conversion from 'double' to 'int' changes value from}}
- {0.831, 0.45}, {0.924, 0.617}, {0.98, 0.805}}; // expected-warning 6 {{implicit conversion from 'double' to 'int' changes value from}}
- int a;
-
- for (a = 0; a < 6; ++a) {
- vec[a][0] *= rad; // no-warning
- vec[a][1] *= rad; // no-warning
- }
-}
-
-void nested_compound_literals_float(float rad) {
- float vec[6][2] = {{0.195, 0.02}, {0.383, 0.067}, {0.55, 0.169},
- {0.831, 0.45}, {0.924, 0.617}, {0.98, 0.805}};
- int a;
-
- for (a = 0; a < 6; ++a) {
- vec[a][0] *= rad; // no-warning
- vec[a][1] *= rad; // no-warning
- }
-}
-
-
-void struct_as_array() {
- struct simple { int x; int y; };
- struct simple a;
- struct simple *p = &a;
-
- p->x = 5;
- clang_analyzer_eval(a.x == 5); // expected-warning{{TRUE}}
- clang_analyzer_eval(p[0].x == 5); // expected-warning{{TRUE}}
-
- p[0].y = 5;
- clang_analyzer_eval(a.y == 5); // expected-warning{{TRUE}}
- clang_analyzer_eval(p->y == 5); // expected-warning{{TRUE}}
-}
-
-
-// PR13264 / <rdar://problem/11802440>
-struct point { int x; int y; };
-struct circle { struct point o; int r; };
-struct circle get_circle() {
- struct circle result;
- result.r = 5;
- result.o = (struct point){0, 0};
- return result;
-}
-
-void struct_in_struct() {
- struct circle c;
- c = get_circle();
- // This used to think c.r was undefined because c.o is a LazyCompoundVal.
- clang_analyzer_eval(c.r == 5); // expected-warning{{TRUE}}
-}
-
-// We also test with floats because we don't model floats right now,
-// and the original bug report used a float.
-struct circle_f { struct point o; float r; };
-struct circle_f get_circle_f() {
- struct circle_f result;
- result.r = 5.0;
- result.o = (struct point){0, 0};
- return result;
-}
-
-float struct_in_struct_f() {
- struct circle_f c;
- c = get_circle_f();
-
- return c.r; // no-warning
-}
-
-
-int randomInt();
-
-int testSymbolicInvalidation(int index) {
- int vals[10];
-
- vals[0] = 42;
- clang_analyzer_eval(vals[0] == 42); // expected-warning{{TRUE}}
-
- vals[index] = randomInt();
- clang_analyzer_eval(vals[0] == 42); // expected-warning{{UNKNOWN}}
-
- return vals[index]; // no-warning
-}
-
-int testConcreteInvalidation(int index) {
- int vals[10];
-
- vals[index] = 42;
- clang_analyzer_eval(vals[index] == 42); // expected-warning{{TRUE}}
- vals[0] = randomInt();
- clang_analyzer_eval(vals[index] == 42); // expected-warning{{UNKNOWN}}
-
- return vals[0]; // no-warning
-}
-
-
-typedef struct {
- int x, y, z;
-} S;
-
-S makeS();
-
-int testSymbolicInvalidationStruct(int index) {
- S vals[10];
-
- vals[0].x = 42;
- clang_analyzer_eval(vals[0].x == 42); // expected-warning{{TRUE}}
-
- vals[index] = makeS();
- clang_analyzer_eval(vals[0].x == 42); // expected-warning{{UNKNOWN}}
-
- return vals[index].x; // no-warning
-}
-
-int testConcreteInvalidationStruct(int index) {
- S vals[10];
-
- vals[index].x = 42;
- clang_analyzer_eval(vals[index].x == 42); // expected-warning{{TRUE}}
- vals[0] = makeS();
- clang_analyzer_eval(vals[index].x == 42); // expected-warning{{UNKNOWN}}
-
- return vals[0].x; // no-warning
-}
-
-typedef struct {
- S a[5];
- S b[5];
-} SS;
-
-int testSymbolicInvalidationDoubleStruct(int index) {
- SS vals;
-
- vals.a[0].x = 42;
- vals.b[0].x = 42;
- clang_analyzer_eval(vals.a[0].x == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(vals.b[0].x == 42); // expected-warning{{TRUE}}
-
- vals.a[index] = makeS();
- clang_analyzer_eval(vals.a[0].x == 42); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(vals.b[0].x == 42); // expected-warning{{TRUE}}
-
- return vals.b[index].x; // no-warning
-}
-
-int testConcreteInvalidationDoubleStruct(int index) {
- SS vals;
-
- vals.a[index].x = 42;
- vals.b[index].x = 42;
- clang_analyzer_eval(vals.a[index].x == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(vals.b[index].x == 42); // expected-warning{{TRUE}}
-
- vals.a[0] = makeS();
- clang_analyzer_eval(vals.a[index].x == 42); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(vals.b[index].x == 42); // expected-warning{{TRUE}}
-
- return vals.b[0].x; // no-warning
-}
-
-
-int testNonOverlappingStructFieldsSimple() {
- S val;
-
- val.x = 1;
- val.y = 2;
- clang_analyzer_eval(val.x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(val.y == 2); // expected-warning{{TRUE}}
-
- return val.z; // expected-warning{{garbage}}
-}
-
-int testNonOverlappingStructFieldsSymbolicBase(int index, int anotherIndex) {
- SS vals;
-
- vals.a[index].x = 42;
- vals.a[index].y = 42;
- clang_analyzer_eval(vals.a[index].x == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(vals.a[index].y == 42); // expected-warning{{TRUE}}
-
- vals.a[anotherIndex].x = 42;
- clang_analyzer_eval(vals.a[index].x == 42); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(vals.a[index].y == 42); // expected-warning{{TRUE}}
-
- // FIXME: False negative. No bind ever set a field 'z'.
- return vals.a[index].z; // no-warning
-}
-
-int testStructFieldChains(int index, int anotherIndex) {
- SS vals[4];
-
- vals[index].a[0].x = 42;
- vals[anotherIndex].a[1].y = 42;
- clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(vals[anotherIndex].a[1].y == 42); // expected-warning{{TRUE}}
-
- // This doesn't affect anything in the 'a' array field.
- vals[anotherIndex].b[1].x = 42;
- clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(vals[anotherIndex].a[1].y == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(vals[anotherIndex].b[1].x == 42); // expected-warning{{TRUE}}
-
- // This doesn't affect anything in the 'b' array field.
- vals[index].a[anotherIndex].x = 42;
- clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(vals[anotherIndex].a[0].x == 42); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(vals[anotherIndex].a[1].y == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(vals[anotherIndex].b[1].x == 42); // expected-warning{{TRUE}}
-
- // FIXME: False negative. No bind ever set a field 'z'.
- return vals[index].a[0].z; // no-warning
-}
-
-int testStructFieldChainsNested(int index, int anotherIndex) {
- SS vals[4];
-
- vals[index].a[0].x = 42;
- clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{TRUE}}
-
- vals[index].b[0] = makeS();
- clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{TRUE}}
-
- vals[index].a[0] = makeS();
- clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{UNKNOWN}}
-
- vals[index].a[0].x = 42;
- clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{TRUE}}
-
- return 0;
-}
-
-typedef struct {
- int zoomLevel;
- struct point center;
-} Outer;
-
-extern int test13116945(struct point x);
-static void radar13116945(struct point centerCoordinate) {
- Outer zoomRegion;
- zoomRegion.zoomLevel = 0;
- zoomRegion.center = centerCoordinate;
- Outer r = zoomRegion;
- test13116945(r.center); // no-warning
-}
-
-
-typedef struct {
- char data[4];
-} ShortString;
-
-typedef struct {
- ShortString str;
- int length;
-} ShortStringWrapper;
-
-void testArrayStructCopy() {
- ShortString s = { "abc" };
- ShortString s2 = s;
- ShortString s3 = s2;
-
- clang_analyzer_eval(s3.data[0] == 'a'); // expected-warning{{TRUE}}
- clang_analyzer_eval(s3.data[1] == 'b'); // expected-warning{{TRUE}}
- clang_analyzer_eval(s3.data[2] == 'c'); // expected-warning{{TRUE}}
-
- s3.data[0] = 'z';
- ShortString s4 = s3;
-
- clang_analyzer_eval(s4.data[0] == 'z'); // expected-warning{{TRUE}}
- clang_analyzer_eval(s4.data[1] == 'b'); // expected-warning{{TRUE}}
- clang_analyzer_eval(s4.data[2] == 'c'); // expected-warning{{TRUE}}
-}
-
-void testArrayStructCopyNested() {
- ShortString s = { "abc" };
- ShortString s2 = s;
-
- ShortStringWrapper w = { s2, 0 };
-
- clang_analyzer_eval(w.str.data[0] == 'a'); // expected-warning{{TRUE}}
- clang_analyzer_eval(w.str.data[1] == 'b'); // expected-warning{{TRUE}}
- clang_analyzer_eval(w.str.data[2] == 'c'); // expected-warning{{TRUE}}
- clang_analyzer_eval(w.length == 0); // expected-warning{{TRUE}}
-
- ShortStringWrapper w2 = w;
- clang_analyzer_eval(w2.str.data[0] == 'a'); // expected-warning{{TRUE}}
- clang_analyzer_eval(w2.str.data[1] == 'b'); // expected-warning{{TRUE}}
- clang_analyzer_eval(w2.str.data[2] == 'c'); // expected-warning{{TRUE}}
- clang_analyzer_eval(w2.length == 0); // expected-warning{{TRUE}}
-
- ShortStringWrapper w3 = w2;
- clang_analyzer_eval(w3.str.data[0] == 'a'); // expected-warning{{TRUE}}
- clang_analyzer_eval(w3.str.data[1] == 'b'); // expected-warning{{TRUE}}
- clang_analyzer_eval(w3.str.data[2] == 'c'); // expected-warning{{TRUE}}
- clang_analyzer_eval(w3.length == 0); // expected-warning{{TRUE}}
-}
-
-// --------------------
-// False positives
-// --------------------
-
-int testMixSymbolicAndConcrete(int index, int anotherIndex) {
- SS vals;
-
- vals.a[index].x = 42;
- vals.a[0].y = 42;
-
- // FIXME: Should be TRUE.
- clang_analyzer_eval(vals.a[index].x == 42); // expected-warning{{UNKNOWN}}
- // Should be TRUE; we set this explicitly.
- clang_analyzer_eval(vals.a[0].y == 42); // expected-warning{{TRUE}}
-
- vals.a[anotherIndex].y = 42;
-
- // Should be UNKNOWN; we set an 'x'.
- clang_analyzer_eval(vals.a[index].x == 42); // expected-warning{{UNKNOWN}}
- // FIXME: Should be TRUE.
- clang_analyzer_eval(vals.a[0].y == 42); // expected-warning{{UNKNOWN}}
-
- return vals.a[0].x; // no-warning
-}
-
-void testFieldChainIsNotEnough(int index) {
- SS vals[4];
-
- vals[index].a[0].x = 42;
- clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{TRUE}}
-
- vals[index].a[1] = makeS();
- // FIXME: Should be TRUE.
- clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{UNKNOWN}}
-}
diff --git a/test/Analysis/array-struct-region.cpp b/test/Analysis/array-struct-region.cpp
deleted file mode 100644
index 48a05fd4057d..000000000000
--- a/test/Analysis/array-struct-region.cpp
+++ /dev/null
@@ -1,199 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core,debug.ExprInspection -verify -x c %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core,debug.ExprInspection -verify -x c++ -analyzer-config c++-inlining=constructors %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core,debug.ExprInspection -DINLINE -verify -x c %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core,debug.ExprInspection -DINLINE -verify -x c++ -analyzer-config c++-inlining=constructors %s
-
-void clang_analyzer_eval(int);
-
-struct S {
- int field;
-
-#if __cplusplus
- const struct S *getThis() const { return this; }
- const struct S *operator +() const { return this; }
-
- bool check() const { return this == this; }
- bool operator !() const { return this != this; }
-
- int operator *() const { return field; }
-#endif
-};
-
-#if __cplusplus
-const struct S *operator -(const struct S &s) { return &s; }
-bool operator ~(const struct S &s) { return (&s) != &s; }
-#endif
-
-
-#ifdef INLINE
-struct S getS() {
- struct S s = { 42 };
- return s;
-}
-#else
-struct S getS();
-#endif
-
-
-void testAssignment() {
- struct S s = getS();
-
- if (s.field != 42) return;
- clang_analyzer_eval(s.field == 42); // expected-warning{{TRUE}}
-
- s.field = 0;
- clang_analyzer_eval(s.field == 0); // expected-warning{{TRUE}}
-
-#if __cplusplus
- clang_analyzer_eval(s.getThis() == &s); // expected-warning{{TRUE}}
- clang_analyzer_eval(+s == &s); // expected-warning{{TRUE}}
- clang_analyzer_eval(-s == &s); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(s.check()); // expected-warning{{TRUE}}
- clang_analyzer_eval(!s); // expected-warning{{FALSE}}
- clang_analyzer_eval(~s); // expected-warning{{FALSE}}
-
- clang_analyzer_eval(*s == 0); // expected-warning{{TRUE}}
-#endif
-}
-
-
-void testImmediateUse() {
- int x = getS().field;
-
- if (x != 42) return;
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-
-#if __cplusplus
- clang_analyzer_eval((void *)getS().getThis() == (void *)&x); // expected-warning{{FALSE}}
- clang_analyzer_eval((void *)+getS() == (void *)&x); // expected-warning{{FALSE}}
- clang_analyzer_eval((void *)-getS() == (void *)&x); // expected-warning{{FALSE}}
-
- clang_analyzer_eval(getS().check()); // expected-warning{{TRUE}}
- clang_analyzer_eval(!getS()); // expected-warning{{FALSE}}
- clang_analyzer_eval(~getS()); // expected-warning{{FALSE}}
-#endif
-}
-
-int getConstrainedField(struct S s) {
- if (s.field != 42) return 42;
- return s.field;
-}
-
-int getAssignedField(struct S s) {
- s.field = 42;
- return s.field;
-}
-
-void testArgument() {
- clang_analyzer_eval(getConstrainedField(getS()) == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(getAssignedField(getS()) == 42); // expected-warning{{TRUE}}
-}
-
-void testImmediateUseParens() {
- int x = ((getS())).field;
-
- if (x != 42) return;
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(getConstrainedField(((getS()))) == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(getAssignedField(((getS()))) == 42); // expected-warning{{TRUE}}
-
-#if __cplusplus
- clang_analyzer_eval(((getS())).check()); // expected-warning{{TRUE}}
- clang_analyzer_eval(!((getS()))); // expected-warning{{FALSE}}
- clang_analyzer_eval(~((getS()))); // expected-warning{{FALSE}}
-#endif
-}
-
-
-//--------------------
-// C++-only tests
-//--------------------
-
-#if __cplusplus
-void testReferenceAssignment() {
- const S &s = getS();
-
- if (s.field != 42) return;
- clang_analyzer_eval(s.field == 42); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(s.getThis() == &s); // expected-warning{{TRUE}}
- clang_analyzer_eval(+s == &s); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(s.check()); // expected-warning{{TRUE}}
- clang_analyzer_eval(!s); // expected-warning{{FALSE}}
- clang_analyzer_eval(~s); // expected-warning{{FALSE}}
-
- clang_analyzer_eval(*s == 42); // expected-warning{{TRUE}}
-}
-
-
-int getConstrainedFieldRef(const S &s) {
- if (s.field != 42) return 42;
- return s.field;
-}
-
-bool checkThis(const S &s) {
- return s.getThis() == &s;
-}
-
-bool checkThisOp(const S &s) {
- return +s == &s;
-}
-
-bool checkThisStaticOp(const S &s) {
- return -s == &s;
-}
-
-void testReferenceArgument() {
- clang_analyzer_eval(getConstrainedFieldRef(getS()) == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(checkThis(getS())); // expected-warning{{TRUE}}
- clang_analyzer_eval(checkThisOp(getS())); // expected-warning{{TRUE}}
- clang_analyzer_eval(checkThisStaticOp(getS())); // expected-warning{{TRUE}}
-}
-
-
-int getConstrainedFieldOp(S s) {
- if (*s != 42) return 42;
- return *s;
-}
-
-int getConstrainedFieldRefOp(const S &s) {
- if (*s != 42) return 42;
- return *s;
-}
-
-void testImmediateUseOp() {
- int x = *getS();
- if (x != 42) return;
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(getConstrainedFieldOp(getS()) == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(getConstrainedFieldRefOp(getS()) == 42); // expected-warning{{TRUE}}
-}
-
-namespace EmptyClass {
- struct Base {
- int& x;
-
- Base(int& x) : x(x) {}
- };
-
- struct Derived : public Base {
- Derived(int& x) : Base(x) {}
-
- void operator=(int a) { x = a; }
- };
-
- Derived ref(int& a) { return Derived(a); }
-
- // There used to be a warning here, because analyzer treated Derived as empty.
- int test() {
- int a;
- ref(a) = 42;
- return a; // no warning
- }
-}
-
-#endif
diff --git a/test/Analysis/array-struct.c b/test/Analysis/array-struct.c
deleted file mode 100644
index 45c4c9d4ad17..000000000000
--- a/test/Analysis/array-struct.c
+++ /dev/null
@@ -1,212 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core.CastToStruct -analyzer-store=region -verify %s
-
-struct s {
- int data;
- int data_array[10];
-};
-
-typedef struct {
- int data;
-} STYPE;
-
-void g(char *p);
-void g1(struct s* p);
-
-// Array to pointer conversion. Array in the struct field.
-void f(void) {
- int a[10];
- int (*p)[10];
- p = &a;
- (*p)[3] = 1;
-
- struct s d;
- struct s *q;
- q = &d;
- q->data = 3;
- d.data_array[9] = 17;
-}
-
-// StringLiteral in lvalue context and pointer to array type.
-// p: ElementRegion, q: StringRegion
-void f2() {
- char *p = "/usr/local";
- char (*q)[4];
- q = &"abc";
-}
-
-// Typedef'ed struct definition.
-void f3() {
- STYPE s;
-}
-
-// Initialize array with InitExprList.
-void f4() {
- int a[] = { 1, 2, 3};
- int b[3] = { 1, 2 };
- struct s c[] = {{1,{1}}};
-}
-
-// Struct variable in lvalue context.
-// Assign UnknownVal to the whole struct.
-void f5() {
- struct s data;
- g1(&data);
-}
-
-// AllocaRegion test.
-void f6() {
- char *p;
- p = __builtin_alloca(10);
- g(p);
- char c = *p;
- p[1] = 'a';
- // Test if RegionStore::EvalBinOp converts the alloca region to element
- // region.
- p += 2;
-}
-
-struct s2;
-
-void g2(struct s2 *p);
-
-// Incomplete struct pointer used as function argument.
-void f7() {
- struct s2 *p = __builtin_alloca(10);
- g2(p);
-}
-
-// sizeof() is unsigned while -1 is signed in array index.
-void f8() {
- int a[10];
- a[sizeof(a)/sizeof(int) - 1] = 1; // no-warning
-}
-
-// Initialization of struct array elements.
-void f9() {
- struct s a[10];
-}
-
-// Initializing array with string literal.
-void f10() {
- char a1[4] = "abc";
- char a3[6] = "abc";
-}
-
-// Retrieve the default value of element/field region.
-void f11() {
- struct s a;
- g1(&a);
- if (a.data == 0) // no-warning
- a.data = 1;
-}
-
-// Convert unsigned offset to signed when creating ElementRegion from
-// SymbolicRegion.
-void f12(int *list) {
- unsigned i = 0;
- list[i] = 1;
-}
-
-struct s1 {
- struct s2 {
- int d;
- } e;
-};
-
-// The binding of a.e.d should not be removed. Test recursive subregion map
-// building: a->e, e->d. Only then 'a' could be added to live region roots.
-void f13(double timeout) {
- struct s1 a;
- a.e.d = (int) timeout;
- if (a.e.d == 10)
- a.e.d = 4;
-}
-
-struct s3 {
- int a[2];
-};
-
-static struct s3 opt;
-
-// Test if the embedded array is retrieved correctly.
-void f14() {
- struct s3 my_opt = opt;
-}
-
-void bar(int*);
-
-struct s3 gets3() {
- struct s3 s;
- return s;
-}
-
-void accessArrayFieldNoCrash() {
- bar(gets3().a);
- bar((gets3().a));
- bar(((gets3().a)));
-}
-
-// Test if the array is correctly invalidated.
-void f15() {
- int a[10];
- bar(a);
- if (a[1]) // no-warning
- (void)1;
-}
-
-struct s3 p[1];
-
-// Code from postgresql.
-// Current cast logic of region store mistakenly leaves the final result region
-// an ElementRegion of type 'char'. Then load a nonloc::SymbolVal from it and
-// assigns to 'a'.
-void f16(struct s3 *p) {
- struct s3 a = *((struct s3*) ((char*) &p[0])); // expected-warning{{Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption}}
-}
-
-void inv(struct s1 *);
-
-// Invalidate the struct field.
-void f17() {
- struct s1 t;
- int x;
- inv(&t);
- if (t.e.d)
- x = 1;
-}
-
-void read(char*);
-
-void f18() {
- char *q;
- char *p = (char *) __builtin_alloca(10);
- read(p);
- q = p;
- q++;
- if (*q) { // no-warning
- }
-}
-
-
-// [PR13927] offsetof replacement macro flagged as "dereference of a null pointer"
-int offset_of_data_array(void)
-{
- return ((char *)&(((struct s*)0)->data_array)) - ((char *)0); // no-warning
-}
-
-int testPointerArithmeticOnVoid(void *bytes) {
- int p = 0;
- if (&bytes[0] == &bytes[1])
- return 6/p; // no-warning
- return 0;
-}
-
-int testRValueArraySubscriptExpr(void *bytes) {
- int *p = (int*)&bytes[0];
- *p = 0;
- if (*(int*)&bytes[0] == 0)
- return 0;
- return 5/(*p); // no-warning
-}
-
-
diff --git a/test/Analysis/asm.cpp b/test/Analysis/asm.cpp
deleted file mode 100644
index 118006350216..000000000000
--- a/test/Analysis/asm.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker debug.ExprInspection -fheinous-gnu-extensions -w %s -verify
-
-int clang_analyzer_eval(int);
-
-int global;
-void testRValueOutput() {
- int &ref = global;
- ref = 1;
- __asm__("" : "=r"(((int)(global)))); // don't crash on rvalue output operand
- clang_analyzer_eval(global == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(ref == 1); // expected-warning{{UNKNOWN}}
-}
diff --git a/test/Analysis/atomics.c b/test/Analysis/atomics.c
deleted file mode 100644
index b3d2d352a228..000000000000
--- a/test/Analysis/atomics.c
+++ /dev/null
@@ -1,95 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify %s -analyzer-config eagerly-assume=false
-
-// Tests for c11 atomics. Many of these tests currently yield unknown
-// because we don't fully model the atomics and instead imprecisely
-// treat their arguments as escaping.
-
-typedef unsigned int uint32_t;
-typedef enum memory_order {
- memory_order_relaxed = __ATOMIC_RELAXED,
- memory_order_consume = __ATOMIC_CONSUME,
- memory_order_acquire = __ATOMIC_ACQUIRE,
- memory_order_release = __ATOMIC_RELEASE,
- memory_order_acq_rel = __ATOMIC_ACQ_REL,
- memory_order_seq_cst = __ATOMIC_SEQ_CST
-} memory_order;
-
-void clang_analyzer_eval(int);
-
-struct RefCountedStruct {
- uint32_t refCount;
- void *ptr;
-};
-
-void test_atomic_fetch_add(struct RefCountedStruct *s) {
- s->refCount = 1;
-
- uint32_t result = __c11_atomic_fetch_add((volatile _Atomic(uint32_t) *)&s->refCount,- 1, memory_order_relaxed);
-
- // When we model atomics fully this should (probably) be FALSE. It should never
- // be TRUE (because the operation mutates the passed in storage).
- clang_analyzer_eval(s->refCount == 1); // expected-warning {{UNKNOWN}}
-
- // When fully modeled this should be TRUE
- clang_analyzer_eval(result == 1); // expected-warning {{UNKNOWN}}
-}
-
-void test_atomic_load(struct RefCountedStruct *s) {
- s->refCount = 1;
-
- uint32_t result = __c11_atomic_load((volatile _Atomic(uint32_t) *)&s->refCount, memory_order_relaxed);
-
- // When we model atomics fully this should (probably) be TRUE.
- clang_analyzer_eval(s->refCount == 1); // expected-warning {{UNKNOWN}}
-
- // When fully modeled this should be TRUE
- clang_analyzer_eval(result == 1); // expected-warning {{UNKNOWN}}
-}
-
-void test_atomic_store(struct RefCountedStruct *s) {
- s->refCount = 1;
-
- __c11_atomic_store((volatile _Atomic(uint32_t) *)&s->refCount, 2, memory_order_relaxed);
-
- // When we model atomics fully this should (probably) be FALSE. It should never
- // be TRUE (because the operation mutates the passed in storage).
- clang_analyzer_eval(s->refCount == 1); // expected-warning {{UNKNOWN}}
-}
-
-void test_atomic_exchange(struct RefCountedStruct *s) {
- s->refCount = 1;
-
- uint32_t result = __c11_atomic_exchange((volatile _Atomic(uint32_t) *)&s->refCount, 2, memory_order_relaxed);
-
- // When we model atomics fully this should (probably) be FALSE. It should never
- // be TRUE (because the operation mutates the passed in storage).
- clang_analyzer_eval(s->refCount == 1); // expected-warning {{UNKNOWN}}
-
- // When fully modeled this should be TRUE
- clang_analyzer_eval(result == 1); // expected-warning {{UNKNOWN}}
-}
-
-
-void test_atomic_compare_exchange_strong(struct RefCountedStruct *s) {
- s->refCount = 1;
- uint32_t expected = 2;
- uint32_t desired = 3;
- _Bool result = __c11_atomic_compare_exchange_strong((volatile _Atomic(uint32_t) *)&s->refCount, &expected, desired, memory_order_relaxed, memory_order_relaxed);
-
- // For now we expect both expected and refCount to be invalidated by the
- // call. In the future we should model more precisely.
- clang_analyzer_eval(s->refCount == 3); // expected-warning {{UNKNOWN}}
- clang_analyzer_eval(expected == 2); // expected-warning {{UNKNOWN}}
-}
-
-void test_atomic_compare_exchange_weak(struct RefCountedStruct *s) {
- s->refCount = 1;
- uint32_t expected = 2;
- uint32_t desired = 3;
- _Bool result = __c11_atomic_compare_exchange_weak((volatile _Atomic(uint32_t) *)&s->refCount, &expected, desired, memory_order_relaxed, memory_order_relaxed);
-
- // For now we expect both expected and refCount to be invalidated by the
- // call. In the future we should model more precisely.
- clang_analyzer_eval(s->refCount == 3); // expected-warning {{UNKNOWN}}
- clang_analyzer_eval(expected == 2); // expected-warning {{UNKNOWN}}
-}
diff --git a/test/Analysis/auto-obj-dtors-cfg-output.cpp b/test/Analysis/auto-obj-dtors-cfg-output.cpp
deleted file mode 100644
index 7e678a1ec78d..000000000000
--- a/test/Analysis/auto-obj-dtors-cfg-output.cpp
+++ /dev/null
@@ -1,1216 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++98 -fcxx-exceptions -fexceptions -analyzer-checker=debug.DumpCFG -analyzer-config cfg-rich-constructors=false %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX98,WARNINGS,CXX98-WARNINGS %s
-// RUN: %clang_analyze_cc1 -std=c++98 -fcxx-exceptions -fexceptions -analyzer-checker=debug.DumpCFG -analyzer-config cfg-rich-constructors=true %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX98,ANALYZER,CXX98-ANALYZER %s
-// RUN: %clang_analyze_cc1 -std=c++11 -fcxx-exceptions -fexceptions -analyzer-checker=debug.DumpCFG -analyzer-config cfg-rich-constructors=false %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX11,WARNINGS,CXX11-WARNINGS %s
-// RUN: %clang_analyze_cc1 -std=c++11 -fcxx-exceptions -fexceptions -analyzer-checker=debug.DumpCFG -analyzer-config cfg-rich-constructors=true %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX11,ANALYZER,CXX11-ANALYZER %s
-
-// This file tests how we construct two different flavors of the Clang CFG -
-// the CFG used by the Sema analysis-based warnings and the CFG used by the
-// static analyzer. The difference in the behavior is checked via FileCheck
-// prefixes (WARNINGS and ANALYZER respectively). When introducing new analyzer
-// flags, no new run lines should be added - just these flags would go to the
-// respective line depending on where is it turned on and where is it turned
-// off. Feel free to add tests that test only one of the CFG flavors if you're
-// not sure how the other flavor is supposed to work in your case.
-
-class A {
-public:
- int x;
-
-// CHECK: [B1 (ENTRY)]
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
- A() {}
-
-// CHECK: [B1 (ENTRY)]
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
- ~A() {}
-
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: 1
-// CHECK-NEXT: 2: return [B1.1];
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
- operator int() const { return 1; }
-};
-
-extern const bool UV;
-
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B1.2], class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: 3: a
-// CHECK-NEXT: 4: [B1.3] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 5: const A &b = a;
-// WARNINGS-NEXT: 6: A() (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 6: A() (CXXConstructExpr, [B1.9], class A)
-// CHECK-NEXT: 7: [B1.6] (BindTemporary)
-// CHECK-NEXT: 8: [B1.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 9: [B1.8]
-// CHECK: 10: const A &c = A();
-// CHECK: 11: [B1.10].~A() (Implicit destructor)
-// CHECK: 12: [B1.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_const_ref() {
- A a;
- const A& b = a;
- const A& c = A();
-}
-
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// WARNINGS-NEXT: 1: A() (CXXConstructExpr, class A)
-// CXX98-ANALYZER-NEXT: 1: A() (CXXConstructExpr, [B1.2], class A)
-// CXX11-ANALYZER-NEXT: 1: A() (CXXConstructExpr, [B1.3], class A)
-// CHECK-NEXT: 2: [B1.1] (BindTemporary)
-// CXX98-NEXT: 3: [B1.2].x
-// CXX98-NEXT: 4: [B1.3]
-// CXX98-NEXT: 5: const int &x = A().x;
-// CXX98-NEXT: 6: [B1.5].~A() (Implicit destructor)
-// CXX11-NEXT: 3: [B1.2]
-// CXX11-NEXT: 4: [B1.3].x
-// CXX11-NEXT: 5: [B1.4] (ImplicitCastExpr, NoOp, const int)
-// CXX11-NEXT: 6: const int &x = A().x;
-// CXX11-NEXT: 7: [B1.6].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_const_ref_to_field() {
- const int &x = A().x;
-}
-
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// WARNINGS-NEXT: 1: A() (CXXConstructExpr, class A)
-// CXX98-ANALYZER-NEXT: 1: A() (CXXConstructExpr, [B1.2], class A)
-// CXX11-ANALYZER-NEXT: 1: A() (CXXConstructExpr, [B1.3], class A)
-// CHECK-NEXT: 2: [B1.1] (BindTemporary)
-// CXX98-NEXT: 3: A::x
-// CXX98-NEXT: 4: &[B1.3]
-// CXX98-NEXT: 5: [B1.2] .* [B1.4]
-// CXX98-NEXT: 6: [B1.5]
-// CXX98-NEXT: 7: const int &x = A() .* &A::x;
-// CXX98-NEXT: 8: [B1.7].~A() (Implicit destructor)
-// CXX11-NEXT: 3: [B1.2]
-// CXX11-NEXT: 4: A::x
-// CXX11-NEXT: 5: &[B1.4]
-// CXX11-NEXT: 6: [B1.3] .* [B1.5]
-// CXX11-NEXT: 7: [B1.6] (ImplicitCastExpr, NoOp, const int)
-// CXX11-NEXT: 8: const int &x = A() .* &A::x;
-// CXX11-NEXT: 9: [B1.8].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_pointer_to_member() {
- const int &x = A().*&A::x;
-}
-
-// FIXME: There should be automatic destructors at the end of scope.
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// WARNINGS-NEXT: 1: A() (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: A() (CXXConstructExpr, [B1.4], class A)
-// CHECK-NEXT: 2: [B1.1] (BindTemporary)
-// CHECK-NEXT: 3: [B1.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 4: [B1.3]
-// CHECK-NEXT: 5: {[B1.4]}
-// CHECK-NEXT: 6: B b = {A()};
-// WARNINGS-NEXT: 7: A() (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 7: A() (CXXConstructExpr, [B1.10], class A)
-// CHECK-NEXT: 8: [B1.7] (BindTemporary)
-// CHECK-NEXT: 9: [B1.8] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 10: [B1.9]
-// CHECK-NEXT: 11: {[B1.10]}
-// WARNINGS-NEXT: 12: A() (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 12: A() (CXXConstructExpr, [B1.15], class A)
-// CHECK-NEXT: 13: [B1.12] (BindTemporary)
-// CHECK-NEXT: 14: [B1.13] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 15: [B1.14]
-// CHECK-NEXT: 16: {[B1.15]}
-// CHECK-NEXT: 17: {[B1.10], [B1.15]}
-// CHECK-NEXT: 18: B bb[2] = {A(), A()};
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_aggregate_lifetime_extension() {
- struct B {
- const A &x;
- };
-
- B b = {A()};
- B bb[2] = {A(), A()};
-}
-
-// In C++98 such class 'C' will not be an aggregate.
-#if __cplusplus >= 201103L
-// FIXME: There should be automatic destructors at the end of the scope.
-// CXX11: [B2 (ENTRY)]
-// CXX11-NEXT: Succs (1): B1
-// CXX11: [B1]
-// CXX11-WARNINGS-NEXT: 1: A() (CXXConstructExpr, class A)
-// CXX11-ANALYZER-NEXT: 1: A() (CXXConstructExpr, [B1.2], [B1.4], class A)
-// CXX11-NEXT: 2: [B1.1] (BindTemporary)
-// CXX11-NEXT: 3: [B1.2] (ImplicitCastExpr, NoOp, const class A)
-// CXX11-NEXT: 4: [B1.3]
-// CXX11-NEXT: 5: [B1.4] (CXXConstructExpr, const class A)
-// CXX11-WARNINGS-NEXT: 6: A() (CXXConstructExpr, class A)
-// CXX11-ANALYZER-NEXT: 6: A() (CXXConstructExpr, [B1.7], [B1.9], class A)
-// CXX11-NEXT: 7: [B1.6] (BindTemporary)
-// CXX11-NEXT: 8: [B1.7] (ImplicitCastExpr, NoOp, const class A)
-// CXX11-NEXT: 9: [B1.8]
-// CXX11-NEXT: 10: [B1.9] (CXXConstructExpr, const class A)
-// FIXME: Why does it look as if the initializer list consumes uncopied objects?
-// CXX11-NEXT: 11: {[B1.2], [B1.7]}
-// CXX11-NEXT: 12: [B1.11] (BindTemporary)
-// CXX11-NEXT: 13: [B1.12]
-// CXX11-NEXT: 14: {[B1.13]}
-// Double curly braces trigger regexps, escape as per FileCheck manual.
-// CXX11-NEXT: 15: C c = {{[{][{]}}A(), A(){{[}][}]}};
-// CXX11-NEXT: 16: ~A() (Temporary object destructor)
-// CXX11-NEXT: 17: ~A() (Temporary object destructor)
-// CXX11-WARNINGS-NEXT: 18: A() (CXXConstructExpr, class A)
-// CXX11-ANALYZER-NEXT: 18: A() (CXXConstructExpr, [B1.19], [B1.21], class A)
-// CXX11-NEXT: 19: [B1.18] (BindTemporary)
-// CXX11-NEXT: 20: [B1.19] (ImplicitCastExpr, NoOp, const class A)
-// CXX11-NEXT: 21: [B1.20]
-// CXX11-NEXT: 22: [B1.21] (CXXConstructExpr, const class A)
-// CXX11-WARNINGS-NEXT: 23: A() (CXXConstructExpr, class A)
-// CXX11-ANALYZER-NEXT: 23: A() (CXXConstructExpr, [B1.24], [B1.26], class A)
-// CXX11-NEXT: 24: [B1.23] (BindTemporary)
-// CXX11-NEXT: 25: [B1.24] (ImplicitCastExpr, NoOp, const class A)
-// CXX11-NEXT: 26: [B1.25]
-// CXX11-NEXT: 27: [B1.26] (CXXConstructExpr, const class A)
-// FIXME: Why does it look as if the initializer list consumes uncopied objects?
-// CXX11-NEXT: 28: {[B1.19], [B1.24]}
-// CXX11-NEXT: 29: [B1.28] (BindTemporary)
-// CXX11-NEXT: 30: [B1.29]
-// CXX11-NEXT: 31: {[B1.30]}
-// CXX11-WARNINGS-NEXT: 32: A() (CXXConstructExpr, class A)
-// CXX11-ANALYZER-NEXT: 32: A() (CXXConstructExpr, [B1.33], [B1.35], class A)
-// CXX11-NEXT: 33: [B1.32] (BindTemporary)
-// CXX11-NEXT: 34: [B1.33] (ImplicitCastExpr, NoOp, const class A)
-// CXX11-NEXT: 35: [B1.34]
-// CXX11-NEXT: 36: [B1.35] (CXXConstructExpr, const class A)
-// CXX11-WARNINGS-NEXT: 37: A() (CXXConstructExpr, class A)
-// CXX11-ANALYZER-NEXT: 37: A() (CXXConstructExpr, [B1.38], [B1.40], class A)
-// CXX11-NEXT: 38: [B1.37] (BindTemporary)
-// CXX11-NEXT: 39: [B1.38] (ImplicitCastExpr, NoOp, const class A)
-// CXX11-NEXT: 40: [B1.39]
-// CXX11-NEXT: 41: [B1.40] (CXXConstructExpr, const class A)
-// FIXME: Why does it look as if the initializer list consumes uncopied objects?
-// CXX11-NEXT: 42: {[B1.33], [B1.38]}
-// CXX11-NEXT: 43: [B1.42] (BindTemporary)
-// CXX11-NEXT: 44: [B1.43]
-// CXX11-NEXT: 45: {[B1.44]}
-// Double curly braces trigger regexps, escape as per FileCheck manual.
-// CXX11-NEXT: 46: {{[{][{]}}[B1.30]}, {[B1.44]{{[}][}]}}
-// Double curly braces trigger regexps, escape as per FileCheck manual.
-// CXX11-NEXT: 47: C cc[2] = {{[{][{][{]}}A(), A(){{[}][}]}}, {{[{][{]}}A(), A(){{[}][}][}]}};
-// CXX11-NEXT: 48: ~A() (Temporary object destructor)
-// CXX11-NEXT: 49: ~A() (Temporary object destructor)
-// CXX11-NEXT: 50: ~A() (Temporary object destructor)
-// CXX11-NEXT: 51: ~A() (Temporary object destructor)
-// CXX11-NEXT: Preds (1): B2
-// CXX11-NEXT: Succs (1): B0
-// CXX11: [B0 (EXIT)]
-// CXX11-NEXT: Preds (1): B1
-void test_aggregate_array_lifetime_extension() {
- struct C {
- const A (&z)[2];
- };
-
- // Until C++17 there are elidable copies here, so there should be 9 temporary
- // destructors of A()s. There are no destructors of 'c' and 'cc' because this
- // aggregate has no destructor. Instead, arrays are lifetime-extended,
- // and copies of A()s within them need to be destroyed via automatic
- // destructors.
- C c = {{A(), A()}};
- C cc[2] = {{{A(), A()}}, {{A(), A()}}};
-}
-#endif
-
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// WARNINGS-NEXT: 1: A() (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: A() (CXXConstructExpr, [B1.2], [B1.4], class A)
-// CHECK-NEXT: 2: [B1.1] (BindTemporary)
-// CHECK-NEXT: 3: [B1.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 4: [B1.3]
-// CHECK-NEXT: 5: [B1.4] (CXXConstructExpr, class A)
-// WARNINGS-NEXT: 6: A() (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 6: A() (CXXConstructExpr, [B1.7], [B1.9], class A)
-// CHECK-NEXT: 7: [B1.6] (BindTemporary)
-// CHECK-NEXT: 8: [B1.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 9: [B1.8]
-// CHECK-NEXT: 10: [B1.9] (CXXConstructExpr, class A)
-// WARNINGS-NEXT: 11: A() (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 11: A() (CXXConstructExpr, [B1.12], [B1.14], class A)
-// CHECK-NEXT: 12: [B1.11] (BindTemporary)
-// CHECK-NEXT: 13: [B1.12] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 14: [B1.13]
-// CHECK-NEXT: 15: [B1.14] (CXXConstructExpr, class A)
-// FIXME: Why does it look as if the initializer list consumes uncopied objects?
-// CHECK-NEXT: 16: {[B1.7], [B1.12]}
-// FIXME: Why does it look as if the initializer list consumes uncopied objects?
-// CHECK-NEXT: 17: {[B1.2], {[B1.7], [B1.12]}}
-// CHECK-NEXT: 18: D d = {A(), {A(), A()}};
-// CHECK-NEXT: 19: ~A() (Temporary object destructor)
-// CHECK-NEXT: 20: ~A() (Temporary object destructor)
-// CHECK-NEXT: 21: ~A() (Temporary object destructor)
-// WARNINGS-NEXT: 22: A() (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 22: A() (CXXConstructExpr, [B1.23], [B1.25], class A)
-// CHECK-NEXT: 23: [B1.22] (BindTemporary)
-// CHECK-NEXT: 24: [B1.23] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 25: [B1.24]
-// CHECK-NEXT: 26: [B1.25] (CXXConstructExpr, class A)
-// WARNINGS-NEXT: 27: A() (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 27: A() (CXXConstructExpr, [B1.28], [B1.30], class A)
-// CHECK-NEXT: 28: [B1.27] (BindTemporary)
-// CHECK-NEXT: 29: [B1.28] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 30: [B1.29]
-// CHECK-NEXT: 31: [B1.30] (CXXConstructExpr, class A)
-// WARNINGS-NEXT: 32: A() (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 32: A() (CXXConstructExpr, [B1.33], [B1.35], class A)
-// CHECK-NEXT: 33: [B1.32] (BindTemporary)
-// CHECK-NEXT: 34: [B1.33] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 35: [B1.34]
-// CHECK-NEXT: 36: [B1.35] (CXXConstructExpr, class A)
-// FIXME: Why does it look as if the initializer list consumes uncopied objects?
-// CHECK-NEXT: 37: {[B1.28], [B1.33]}
-// FIXME: Why does it look as if the initializer list consumes uncopied objects?
-// CHECK-NEXT: 38: {[B1.23], {[B1.28], [B1.33]}}
-// WARNINGS-NEXT: 39: A() (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 39: A() (CXXConstructExpr, [B1.40], [B1.42], class A)
-// CHECK-NEXT: 40: [B1.39] (BindTemporary)
-// CHECK-NEXT: 41: [B1.40] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 42: [B1.41]
-// CHECK-NEXT: 43: [B1.42] (CXXConstructExpr, class A)
-// WARNINGS-NEXT: 44: A() (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 44: A() (CXXConstructExpr, [B1.45], [B1.47], class A)
-// CHECK-NEXT: 45: [B1.44] (BindTemporary)
-// CHECK-NEXT: 46: [B1.45] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 47: [B1.46]
-// CHECK-NEXT: 48: [B1.47] (CXXConstructExpr, class A)
-// WARNINGS-NEXT: 49: A() (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 49: A() (CXXConstructExpr, [B1.50], [B1.52], class A)
-// CHECK-NEXT: 50: [B1.49] (BindTemporary)
-// CHECK-NEXT: 51: [B1.50] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 52: [B1.51]
-// CHECK-NEXT: 53: [B1.52] (CXXConstructExpr, class A)
-// FIXME: Why does it look as if the initializer list consumes uncopied objects?
-// CHECK-NEXT: 54: {[B1.45], [B1.50]}
-// FIXME: Why does it look as if the initializer list consumes uncopied objects?
-// CHECK-NEXT: 55: {[B1.40], {[B1.45], [B1.50]}}
-// Double curly braces trigger regexps, escape as per FileCheck manual.
-// CHECK-NEXT: 56: {{[{][{]}}[B1.23], {[B1.28], [B1.33]{{[}][}]}}, {[B1.40], {[B1.45], [B1.50]{{[}][}][}]}}
-// Double curly braces trigger regexps, escape as per FileCheck manual.
-// CHECK-NEXT: 57: D dd[2] = {{[{][{]}}A(), {A(), A(){{[}][}]}}, {A(), {A(), A(){{[}][}][}]}};
-// CHECK-NEXT: 58: ~A() (Temporary object destructor)
-// CHECK-NEXT: 59: ~A() (Temporary object destructor)
-// CHECK-NEXT: 60: ~A() (Temporary object destructor)
-// CHECK-NEXT: 61: ~A() (Temporary object destructor)
-// CHECK-NEXT: 62: ~A() (Temporary object destructor)
-// CHECK-NEXT: 63: ~A() (Temporary object destructor)
-// CHECK-NEXT: 64: [B1.57].~D() (Implicit destructor)
-// CHECK-NEXT: 65: [B1.18].~D() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_aggregate_with_nontrivial_own_destructor() {
- struct D {
- A y;
- A w[2];
- };
-
- // Until C++17 there are elidable copies here, so there should be 9 temporary
- // destructors of A()s. Destructors of 'd' and 'dd' should implicitly
- // take care of the copies, so there should not be automatic destructors
- // for copies of A()s.
- D d = {A(), {A(), A()}};
- D dd[2] = {{A(), {A(), A()}}, {A(), {A(), A()}}};
-}
-
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A [2])
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B1.2], class A [2])
-// CHECK-NEXT: 2: A a[2];
-// WARNINGS-NEXT: 3: (CXXConstructExpr, class A [0])
-// ANALYZER-NEXT: 3: (CXXConstructExpr, [B1.4], class A [0])
-// CHECK-NEXT: 4: A b[0];
-// CHECK-NEXT: 5: [B1.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_array() {
- A a[2];
- A b[0];
-}
-
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B1.2], class A)
-// CHECK-NEXT: 2: A a;
-// WARNINGS-NEXT: 3: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 3: (CXXConstructExpr, [B1.4], class A)
-// CHECK-NEXT: 4: A c;
-// WARNINGS-NEXT: 5: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 5: (CXXConstructExpr, [B1.6], class A)
-// CHECK-NEXT: 6: A d;
-// CHECK-NEXT: 7: [B1.6].~A() (Implicit destructor)
-// CHECK-NEXT: 8: [B1.4].~A() (Implicit destructor)
-// WARNINGS-NEXT: 9: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 9: (CXXConstructExpr, [B1.10], class A)
-// CHECK: 10: A b;
-// CHECK: 11: [B1.10].~A() (Implicit destructor)
-// CHECK: 12: [B1.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_scope() {
- A a;
- { A c;
- A d;
- }
- A b;
-}
-
-// CHECK: [B4 (ENTRY)]
-// CHECK-NEXT: Succs (1): B3
-// CHECK: [B1]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B1.2], class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B1.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B3.4].~A() (Implicit destructor)
-// CHECK-NEXT: 5: [B3.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B3.4].~A() (Implicit destructor)
-// CHECK-NEXT: 3: [B3.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B3]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B3.2], class A)
-// CHECK-NEXT: 2: A a;
-// WARNINGS-NEXT: 3: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 3: (CXXConstructExpr, [B3.4], class A)
-// CHECK-NEXT: 4: A b;
-// CHECK-NEXT: 5: UV
-// CHECK-NEXT: 6: [B3.5] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B3.6]
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (2): B2 B1
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (2): B1 B2
-void test_return() {
- A a;
- A b;
- if (UV) return;
- A c;
-}
-
-// CHECK: [B8 (ENTRY)]
-// CHECK-NEXT: Succs (1): B7
-// CHECK: [B1]
-// CHECK: l1:
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B1.2], class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B1.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B6.2].~A() (Implicit destructor)
-// CHECK-NEXT: 5: [B7.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (2): B2 B3
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B2.2], class A)
-// CHECK-NEXT: 2: A b;
-// CHECK-NEXT: 3: [B2.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B6.4].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B3]
-// CHECK-NEXT: 1: [B6.4].~A() (Implicit destructor)
-// CHECK-NEXT: T: goto l1;
-// CHECK: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B4]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B4.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B4.2]
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (2): B3 B2
-// CHECK: [B5]
-// CHECK-NEXT: 1: [B6.4].~A() (Implicit destructor)
-// CHECK-NEXT: 2: [B6.2].~A() (Implicit destructor)
-// CHECK-NEXT: T: goto l0;
-// CHECK: Preds (1): B6
-// CHECK-NEXT: Succs (1): B6
-// CHECK: [B6]
-// CHECK: l0:
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B6.2], class A)
-// CHECK-NEXT: 2: A b;
-// WARNINGS-NEXT: 3: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 3: (CXXConstructExpr, [B6.4], class A)
-// CHECK-NEXT: 4: A a;
-// CHECK-NEXT: 5: UV
-// CHECK-NEXT: 6: [B6.5] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B6.6]
-// CHECK-NEXT: Preds (2): B7 B5
-// CHECK-NEXT: Succs (2): B5 B4
-// CHECK: [B7]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B7.2], class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: Preds (1): B8
-// CHECK-NEXT: Succs (1): B6
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_goto() {
- A a;
-l0:
- A b;
- { A a;
- if (UV) goto l0;
- if (UV) goto l1;
- A b;
- }
-l1:
- A c;
-}
-
-// CHECK: [B5 (ENTRY)]
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B4.6].~A() (Implicit destructor)
-// CHECK-NEXT: 2: [B4.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (2): B2 B3
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B2.2], class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B2.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B3]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B3.2], class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B3.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B4]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B4.2], class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: 3: a
-// CHECK-NEXT: 4: [B4.3] (ImplicitCastExpr, NoOp, const class A)
-// WARNINGS-NEXT: 5: [B4.4] (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 5: [B4.4] (CXXConstructExpr, [B4.6], class A)
-// CHECK-NEXT: 6: A b = a;
-// CHECK-NEXT: 7: b
-// CHECK-NEXT: 8: [B4.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 9: [B4.8].operator int
-// CHECK: 10: [B4.8]
-// CHECK: 11: [B4.10] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK: 12: [B4.11] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: if [B4.12]
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (2): B3 B2
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_if_implicit_scope() {
- A a;
- if (A b = a)
- A c;
- else A c;
-}
-
-// CHECK: [B9 (ENTRY)]
-// CHECK-NEXT: Succs (1): B8
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B8.6].~A() (Implicit destructor)
-// WARNINGS-NEXT: 2: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 2: (CXXConstructExpr, [B1.3], class A)
-// CHECK-NEXT: 3: A e;
-// CHECK-NEXT: 4: [B1.3].~A() (Implicit destructor)
-// CHECK-NEXT: 5: [B8.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (2): B2 B5
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B2.2], class A)
-// CHECK-NEXT: 2: A d;
-// CHECK-NEXT: 3: [B2.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B4.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B3]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B4.2].~A() (Implicit destructor)
-// CHECK-NEXT: 3: [B8.6].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B8.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B4]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B4.2], class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: UV
-// CHECK-NEXT: 4: [B4.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B4.4]
-// CHECK-NEXT: Preds (1): B8
-// CHECK-NEXT: Succs (2): B3 B2
-// CHECK: [B5]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B5.2], class A)
-// CHECK-NEXT: 2: A d;
-// CHECK-NEXT: 3: [B5.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B7.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B6]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B7.2].~A() (Implicit destructor)
-// CHECK-NEXT: 3: [B8.6].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B8.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B7]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B7.2], class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: UV
-// CHECK-NEXT: 4: [B7.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B7.4]
-// CHECK-NEXT: Preds (1): B8
-// CHECK-NEXT: Succs (2): B6 B5
-// CHECK: [B8]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B8.2], class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: 3: a
-// CHECK-NEXT: 4: [B8.3] (ImplicitCastExpr, NoOp, const class A)
-// WARNINGS-NEXT: 5: [B8.4] (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 5: [B8.4] (CXXConstructExpr, [B8.6], class A)
-// CHECK-NEXT: 6: A b = a;
-// CHECK-NEXT: 7: b
-// CHECK-NEXT: 8: [B8.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 9: [B8.8].operator int
-// CHECK: 10: [B8.8]
-// CHECK: 11: [B8.10] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK: 12: [B8.11] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: if [B8.12]
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (2): B7 B4
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (3): B1 B3 B6
-void test_if_jumps() {
- A a;
- if (A b = a) {
- A c;
- if (UV) return;
- A d;
- } else {
- A c;
- if (UV) return;
- A d;
- }
- A e;
-}
-
-// CHECK: [B6 (ENTRY)]
-// CHECK-NEXT: Succs (1): B5
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B4.4].~A() (Implicit destructor)
-// CHECK-NEXT: 2: [B5.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B3]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B3.2], class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B3.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B4.4].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: a
-// CHECK-NEXT: 2: [B4.1] (ImplicitCastExpr, NoOp, const class A)
-// WARNINGS-NEXT: 3: [B4.2] (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 3: [B4.2] (CXXConstructExpr, [B4.4], class A)
-// CHECK-NEXT: 4: A b = a;
-// CHECK-NEXT: 5: b
-// CHECK-NEXT: 6: [B4.5] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 7: [B4.6].operator int
-// CHECK-NEXT: 8: [B4.6]
-// CHECK-NEXT: 9: [B4.8] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK: 10: [B4.9] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: while [B4.10]
-// CHECK-NEXT: Preds (2): B2 B5
-// CHECK-NEXT: Succs (2): B3 B1
-// CHECK: [B5]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B5.2], class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_while_implicit_scope() {
- A a;
- while (A b = a)
- A c;
-}
-
-// CHECK: [B12 (ENTRY)]
-// CHECK-NEXT: Succs (1): B11
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B10.4].~A() (Implicit destructor)
-// WARNINGS-NEXT: 2: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 2: (CXXConstructExpr, [B1.3], class A)
-// CHECK-NEXT: 3: A e;
-// CHECK-NEXT: 4: [B1.3].~A() (Implicit destructor)
-// CHECK-NEXT: 5: [B11.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (2): B8 B10
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: Preds (2): B3 B6
-// CHECK-NEXT: Succs (1): B10
-// CHECK: [B3]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B3.2], class A)
-// CHECK-NEXT: 2: A d;
-// CHECK-NEXT: 3: [B3.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B9.2].~A() (Implicit destructor)
-// CHECK-NEXT: 5: [B10.4].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B9.2].~A() (Implicit destructor)
-// CHECK-NEXT: 3: [B10.4].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B11.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B5]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B5.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B5.2]
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (2): B4 B3
-// CHECK: [B6]
-// CHECK-NEXT: 1: [B9.2].~A() (Implicit destructor)
-// CHECK-NEXT: 2: [B10.4].~A() (Implicit destructor)
-// CHECK-NEXT: T: continue;
-// CHECK: Preds (1): B7
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B7]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B7.2]
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (2): B6 B5
-// CHECK: [B8]
-// CHECK-NEXT: 1: [B9.2].~A() (Implicit destructor)
-// CHECK-NEXT: T: break;
-// CHECK: Preds (1): B9
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B9]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B9.2], class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: UV
-// CHECK-NEXT: 4: [B9.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B9.4]
-// CHECK-NEXT: Preds (1): B10
-// CHECK-NEXT: Succs (2): B8 B7
-// CHECK: [B10]
-// CHECK-NEXT: 1: a
-// CHECK-NEXT: 2: [B10.1] (ImplicitCastExpr, NoOp, const class A)
-// WARNINGS-NEXT: 3: [B10.2] (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 3: [B10.2] (CXXConstructExpr, [B10.4], class A)
-// CHECK-NEXT: 4: A b = a;
-// CHECK-NEXT: 5: b
-// CHECK-NEXT: 6: [B10.5] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 7: [B10.6].operator int
-// CHECK-NEXT: 8: [B10.6]
-// CHECK-NEXT: 9: [B10.8] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK: 10: [B10.9] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: while [B10.10]
-// CHECK-NEXT: Preds (2): B2 B11
-// CHECK-NEXT: Succs (2): B9 B1
-// CHECK: [B11]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B11.2], class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: Preds (1): B12
-// CHECK-NEXT: Succs (1): B10
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (2): B1 B4
-void test_while_jumps() {
- A a;
- while (A b = a) {
- A c;
- if (UV) break;
- if (UV) continue;
- if (UV) return;
- A d;
- }
- A e;
-}
-
-// CHECK: [B4 (ENTRY)]
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B1]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: do ... while [B1.2]
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (2): B3 B0
-// CHECK: [B2]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B2.2], class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: 3: [B2.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (2): B3 B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B3]
-// CHECK-NEXT: Preds (1): B1
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_do_implicit_scope() {
- do A a;
- while (UV);
-}
-
-// CHECK: [B12 (ENTRY)]
-// CHECK-NEXT: Succs (1): B11
-// CHECK: [B1]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B1.2], class A)
-// CHECK-NEXT: 2: A d;
-// CHECK-NEXT: 3: [B1.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B11.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (2): B8 B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B2.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: do ... while [B2.2]
-// CHECK-NEXT: Preds (2): B3 B6
-// CHECK-NEXT: Succs (2): B10 B1
-// CHECK: [B3]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B3.2], class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B3.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B9.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B9.2].~A() (Implicit destructor)
-// CHECK-NEXT: 3: [B11.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B5]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B5.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B5.2]
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (2): B4 B3
-// CHECK: [B6]
-// CHECK-NEXT: 1: [B9.2].~A() (Implicit destructor)
-// CHECK-NEXT: T: continue;
-// CHECK: Preds (1): B7
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B7]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B7.2]
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (2): B6 B5
-// CHECK: [B8]
-// CHECK-NEXT: 1: [B9.2].~A() (Implicit destructor)
-// CHECK-NEXT: T: break;
-// CHECK: Preds (1): B9
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B9]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B9.2], class A)
-// CHECK-NEXT: 2: A b;
-// CHECK-NEXT: 3: UV
-// CHECK-NEXT: 4: [B9.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B9.4]
-// CHECK-NEXT: Preds (2): B10 B11
-// CHECK-NEXT: Succs (2): B8 B7
-// CHECK: [B10]
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B9
-// CHECK: [B11]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B11.2], class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: Preds (1): B12
-// CHECK-NEXT: Succs (1): B9
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (2): B1 B4
-void test_do_jumps() {
- A a;
- do {
- A b;
- if (UV) break;
- if (UV) continue;
- if (UV) return;
- A c;
- } while (UV);
- A d;
-}
-
-// CHECK: [B4 (ENTRY)]
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B2.6].~A() (Implicit destructor)
-// CHECK-NEXT: 2: [B2.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (2): B3 B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B2.2], class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: 3: a
-// CHECK-NEXT: 4: [B2.3] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 5: [B2.4] (CXXConstructExpr, class A)
-// CHECK-NEXT: 6: A b = a;
-// CHECK-NEXT: 7: b
-// CHECK-NEXT: 8: [B2.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 9: [B2.8].operator int
-// CHECK: 10: [B2.8]
-// CHECK: 11: [B2.10] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK-NEXT: T: switch [B2.11]
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B3]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B3.2], class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B3.2].~A() (Implicit destructor)
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_switch_implicit_scope() {
- A a;
- switch (A b = a)
- A c;
-}
-
-// CHECK: [B9 (ENTRY)]
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B2.6].~A() (Implicit destructor)
-// WARNINGS-NEXT: 2: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 2: (CXXConstructExpr, [B1.3], class A)
-// CHECK-NEXT: 3: A g;
-// CHECK-NEXT: 4: [B1.3].~A() (Implicit destructor)
-// CHECK-NEXT: 5: [B2.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (3): B3 B7 B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B2.2], class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: 3: a
-// CHECK-NEXT: 4: [B2.3] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 5: [B2.4] (CXXConstructExpr, class A)
-// CHECK-NEXT: 6: A b = a;
-// CHECK-NEXT: 7: b
-// CHECK-NEXT: 8: [B2.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 9: [B2.8].operator int
-// CHECK: 10: [B2.8]
-// CHECK: 11: [B2.10] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK-NEXT: T: switch [B2.11]
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (3): B3 B8 B1
-// CHECK: [B3]
-// CHECK: case 1:
-// CHECK-NEXT: T: break;
-// CHECK: Preds (2): B2 B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B4]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B4.2], class A)
-// CHECK-NEXT: 2: A f;
-// CHECK-NEXT: 3: [B4.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B8.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (1): B3
-// CHECK: [B5]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B8.2].~A() (Implicit destructor)
-// CHECK-NEXT: 3: [B2.6].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B2.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B6]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B6.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B6.2]
-// CHECK-NEXT: Preds (1): B8
-// CHECK-NEXT: Succs (2): B5 B4
-// CHECK: [B7]
-// CHECK-NEXT: 1: [B8.2].~A() (Implicit destructor)
-// CHECK-NEXT: T: break;
-// CHECK: Preds (1): B8
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B8]
-// CHECK: case 0:
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B8.2], class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: UV
-// CHECK-NEXT: 4: [B8.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B8.4]
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (2): B7 B6
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (2): B1 B5
-void test_switch_jumps() {
- A a;
- switch (A b = a) {
- case 0: {
- A c;
- if (UV) break;
- if (UV) return;
- A f;
- }
- case 1:
- break;
- }
- A g;
-}
-
-// CHECK: [B6 (ENTRY)]
-// CHECK-NEXT: Succs (1): B5
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B4.4].~A() (Implicit destructor)
-// CHECK-NEXT: 2: [B5.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B3]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B3.2], class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B3.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B4.4].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: a
-// CHECK-NEXT: 2: [B4.1] (ImplicitCastExpr, NoOp, const class A)
-// WARNINGS-NEXT: 3: [B4.2] (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 3: [B4.2] (CXXConstructExpr, [B4.4], class A)
-// CHECK-NEXT: 4: A b = a;
-// CHECK-NEXT: 5: b
-// CHECK-NEXT: 6: [B4.5] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 7: [B4.6].operator int
-// CHECK-NEXT: 8: [B4.6]
-// CHECK-NEXT: 9: [B4.8] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK: 10: [B4.9] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: for (...; [B4.10]; )
-// CHECK-NEXT: Preds (2): B2 B5
-// CHECK-NEXT: Succs (2): B3 B1
-// CHECK: [B5]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B5.2], class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_for_implicit_scope() {
- for (A a; A b = a; )
- A c;
-}
-
-// CHECK: [B12 (ENTRY)]
-// CHECK-NEXT: Succs (1): B11
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B10.4].~A() (Implicit destructor)
-// CHECK-NEXT: 2: [B11.4].~A() (Implicit destructor)
-// WARNINGS-NEXT: 3: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 3: (CXXConstructExpr, [B1.4], class A)
-// CHECK-NEXT: 4: A f;
-// CHECK-NEXT: 5: [B1.4].~A() (Implicit destructor)
-// CHECK-NEXT: 6: [B11.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (2): B8 B10
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: Preds (2): B3 B6
-// CHECK-NEXT: Succs (1): B10
-// CHECK: [B3]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B3.2], class A)
-// CHECK-NEXT: 2: A e;
-// CHECK-NEXT: 3: [B3.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B9.2].~A() (Implicit destructor)
-// CHECK-NEXT: 5: [B10.4].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B9.2].~A() (Implicit destructor)
-// CHECK-NEXT: 3: [B10.4].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B11.4].~A() (Implicit destructor)
-// CHECK-NEXT: 5: [B11.2].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B5]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B5.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B5.2]
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (2): B4 B3
-// CHECK: [B6]
-// CHECK-NEXT: 1: [B9.2].~A() (Implicit destructor)
-// CHECK-NEXT: T: continue;
-// CHECK: Preds (1): B7
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B7]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B7.2]
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (2): B6 B5
-// CHECK: [B8]
-// CHECK-NEXT: 1: [B9.2].~A() (Implicit destructor)
-// CHECK-NEXT: T: break;
-// CHECK: Preds (1): B9
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B9]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B9.2], class A)
-// CHECK-NEXT: 2: A d;
-// CHECK-NEXT: 3: UV
-// CHECK-NEXT: 4: [B9.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B9.4]
-// CHECK-NEXT: Preds (1): B10
-// CHECK-NEXT: Succs (2): B8 B7
-// CHECK: [B10]
-// CHECK-NEXT: 1: b
-// CHECK-NEXT: 2: [B10.1] (ImplicitCastExpr, NoOp, const class A)
-// WARNINGS-NEXT: 3: [B10.2] (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 3: [B10.2] (CXXConstructExpr, [B10.4], class A)
-// CHECK-NEXT: 4: A c = b;
-// CHECK-NEXT: 5: c
-// CHECK-NEXT: 6: [B10.5] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 7: [B10.6].operator int
-// CHECK-NEXT: 8: [B10.6]
-// CHECK-NEXT: 9: [B10.8] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK: 10: [B10.9] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: for (...; [B10.10]; )
-// CHECK-NEXT: Preds (2): B2 B11
-// CHECK-NEXT: Succs (2): B9 B1
-// CHECK: [B11]
-// WARNINGS-NEXT: 1: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 1: (CXXConstructExpr, [B11.2], class A)
-// CHECK-NEXT: 2: A a;
-// WARNINGS-NEXT: 3: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 3: (CXXConstructExpr, [B11.4], class A)
-// CHECK-NEXT: 4: A b;
-// CHECK-NEXT: Preds (1): B12
-// CHECK-NEXT: Succs (1): B10
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (2): B1 B4
-void test_for_jumps() {
- A a;
- for (A b; A c = b; ) {
- A d;
- if (UV) break;
- if (UV) continue;
- if (UV) return;
- A e;
- }
- A f;
-}
-
-// CHECK: [B3 (ENTRY)]
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B1]
-// CHECK-NEXT: T: try ...
-// CHECK-NEXT: Succs (2): B2 B0
-// CHECK: [B2]
-// CHECK-NEXT: catch (const A &e):
-// CHECK-NEXT: 1: catch (const A &e) {
-// CHECK-NEXT: }
-// CHECK-NEXT: Preds (1): B1
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (3): B2 B1 B3
-void test_catch_const_ref() {
- try {
- } catch (const A& e) {
- }
-}
-
-// CHECK: [B3 (ENTRY)]
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B1]
-// CHECK-NEXT: T: try ...
-// CHECK-NEXT: Succs (2): B2 B0
-// CHECK: [B2]
-// CHECK-NEXT: catch (A e):
-// CHECK-NEXT: 1: catch (A e) {
-// CHECK-NEXT: }
-// CHECK-NEXT: 2: [B2.1].~A() (Implicit destructor)
-// CHECK-NEXT: Preds (1): B1
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (3): B2 B1 B3
-void test_catch_copy() {
- try {
- } catch (A e) {
- }
-}
diff --git a/test/Analysis/autoreleasewritechecker_test.m b/test/Analysis/autoreleasewritechecker_test.m
deleted file mode 100644
index b3d34b9b11fa..000000000000
--- a/test/Analysis/autoreleasewritechecker_test.m
+++ /dev/null
@@ -1,281 +0,0 @@
-// UNSUPPORTED: system-windows
-// RUN: %clang_analyze_cc1 -DARC -fobjc-arc -analyzer-checker=core,osx.cocoa.AutoreleaseWrite %s -triple x86_64-darwin -fblocks -verify
-// RUN: %clang_analyze_cc1 -DNOARC -analyzer-checker=core,osx.cocoa.AutoreleaseWrite %s -fblocks -triple x86_64-darwin -verify
-
-
-typedef signed char BOOL;
-#define YES ((BOOL)1)
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
--(id)retain;
-@end
-typedef int NSZone;
-typedef int NSCoder;
-typedef unsigned long NSUInteger;
-
-@protocol NSCopying - (id)copyWithZone:(NSZone *)zone; @end
-@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; @end
-@interface NSError : NSObject <NSCopying, NSCoding> {}
-+ (id)errorWithDomain:(int)domain;
-@end
-
-typedef int dispatch_semaphore_t;
-typedef void (^block_t)();
-
-typedef enum {
- NSEnumerationConcurrent = (1UL << 0),
- NSEnumerationReverse = (1UL << 1)
-} NSEnumerationOptions;
-
-@interface NSArray
-- (void)enumerateObjectsUsingBlock:(block_t)block;
-@end
-
-@interface NSSet
-- (void)objectsPassingTest:(block_t)block;
-@end
-
-@interface NSDictionary
-- (void)enumerateKeysAndObjectsUsingBlock:(block_t)block;
-@end
-
-@interface NSIndexSet
-- (void)indexesPassingTest:(block_t)block;
-- (NSUInteger)indexWithOptions:(NSEnumerationOptions)opts
- passingTest:(BOOL (^)(NSUInteger idx, BOOL *stop))predicate;
-@end
-
-typedef int group_t;
-typedef struct dispatch_queue_s *dispatch_queue_t;
-typedef void (^dispatch_block_t)(void);
-extern dispatch_queue_t queue;
-
-void dispatch_group_async(dispatch_queue_t queue,
- group_t group,
- dispatch_block_t block);
-void dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
-dispatch_semaphore_t dispatch_semaphore_create(int);
-
-void dispatch_semaphore_wait(dispatch_semaphore_t, int);
-void dispatch_semaphore_signal(dispatch_semaphore_t);
-
-// No warnings without ARC.
-#ifdef NOARC
-
-// expected-no-diagnostics
-BOOL writeToErrorWithIterator(NSError ** error, NSArray *a) {
- [a enumerateObjectsUsingBlock:^{
- *error = [NSError errorWithDomain:1]; // no-warning
- }];
- return 0;
-}
-#endif
-
-#ifdef ARC
-@interface I : NSObject
-- (BOOL) writeToStrongErrorInBlock:(NSError *__strong *)error;
-- (BOOL) writeToErrorInBlock:(NSError *__autoreleasing *)error;
-- (BOOL) writeToLocalErrorInBlock:(NSError **)error;
-- (BOOL) writeToErrorInBlockMultipleTimes:(NSError *__autoreleasing *)error;
-- (BOOL) writeToError:(NSError *__autoreleasing *)error;
-- (BOOL) writeToErrorWithDispatchGroup:(NSError *__autoreleasing *)error;
-@end
-
-@implementation I
-
-- (BOOL) writeToErrorInBlock:(NSError *__autoreleasing *)error {
- dispatch_semaphore_t sem = dispatch_semaphore_create(0l);
- dispatch_async(queue, ^{
- if (error) {
- *error = [NSError errorWithDomain:1]; // expected-warning{{Write to autoreleasing out parameter inside autorelease pool that may exit before method returns; consider writing first to a strong local variable declared outside of the block}}
- }
- dispatch_semaphore_signal(sem);
- });
-
- dispatch_semaphore_wait(sem, 100);
- return 0;
-}
-
-- (BOOL) writeToErrorWithDispatchGroup:(NSError *__autoreleasing *)error {
- dispatch_semaphore_t sem = dispatch_semaphore_create(0l);
- dispatch_group_async(queue, 0, ^{
- if (error) {
- *error = [NSError errorWithDomain:1]; // expected-warning{{Write to autoreleasing out parameter inside autorelease pool that may exit before method returns; consider writing first to a strong local variable declared outside of the block}}
- }
- dispatch_semaphore_signal(sem);
- });
-
- dispatch_semaphore_wait(sem, 100);
- return 0;
-}
-
-- (BOOL) writeToLocalErrorInBlock:(NSError *__autoreleasing *)error {
- dispatch_semaphore_t sem = dispatch_semaphore_create(0l);
- dispatch_async(queue, ^{
- NSError* error2;
- NSError*__strong* error3 = &error2;
- if (error) {
- *error3 = [NSError errorWithDomain:1]; // no-warning
- }
- dispatch_semaphore_signal(sem);
- });
-
- dispatch_semaphore_wait(sem, 100);
- return 0;
-}
-
-- (BOOL) writeToStrongErrorInBlock:(NSError *__strong *)error {
- dispatch_semaphore_t sem = dispatch_semaphore_create(0l);
- dispatch_async(queue, ^{
- if (error) {
- *error = [NSError errorWithDomain:2]; // no-warning
- }
- dispatch_semaphore_signal(sem);
- });
-
- dispatch_semaphore_wait(sem, 100);
- return 0;
-}
-
-- (BOOL) writeToErrorInBlockMultipleTimes:(NSError *__autoreleasing *)error {
- dispatch_semaphore_t sem = dispatch_semaphore_create(0l);
- dispatch_async(queue, ^{
- if (error) {
- *error = [NSError errorWithDomain:1]; // expected-warning{{Write to autoreleasing out parameter inside autorelease pool that may exit before method returns; consider writing first to a strong local variable declared outside of the block}}
- }
- dispatch_semaphore_signal(sem);
- });
- dispatch_async(queue, ^{
- if (error) {
- *error = [NSError errorWithDomain:1]; // expected-warning{{Write to autoreleasing out parameter inside autorelease pool that may exit before method returns; consider writing first to a strong local variable declared outside of the block}}
- *error = [NSError errorWithDomain:1]; // expected-warning{{Write to autoreleasing out parameter inside autorelease pool that may exit before method returns; consider writing first to a strong local variable declared outside of the block}}
- }
- dispatch_semaphore_signal(sem);
- });
- *error = [NSError errorWithDomain:1]; // no-warning
-
- dispatch_semaphore_wait(sem, 100);
- return 0;
-}
-
-- (BOOL) writeToError:(NSError *__autoreleasing *)error {
- *error = [NSError errorWithDomain:1]; // no-warning
- return 0;
-}
-@end
-
-BOOL writeToErrorInBlockFromCFunc(NSError *__autoreleasing* error) {
- dispatch_semaphore_t sem = dispatch_semaphore_create(0l);
- dispatch_async(queue, ^{
- if (error) {
- *error = [NSError errorWithDomain:1]; // expected-warning{{Write to autoreleasing out parameter inside autorelease pool that may exit before function returns; consider writing first to a strong local variable declared outside of the block}}
- }
- dispatch_semaphore_signal(sem);
- });
-
- dispatch_semaphore_wait(sem, 100);
- return 0;
-}
-
-BOOL writeToErrorNoWarning(NSError *__autoreleasing* error) {
- *error = [NSError errorWithDomain:1]; // no-warning
- return 0;
-}
-
-BOOL writeToErrorWithIterator(NSError *__autoreleasing* error, NSArray *a, NSSet *s, NSDictionary *d, NSIndexSet *i) { [a enumerateObjectsUsingBlock:^{
- *error = [NSError errorWithDomain:1]; // expected-warning{{Write to autoreleasing out parameter inside autorelease pool that may exit before function returns; consider writing first to a strong local variable declared outside of the block}}
- }];
- [d enumerateKeysAndObjectsUsingBlock:^{
- *error = [NSError errorWithDomain:1]; // expected-warning{{Write to autoreleasing out parameter inside autorelease pool that may exit before function returns; consider writing first to a strong local variable declared outside of the block}}
- }];
- [s objectsPassingTest:^{
- *error = [NSError errorWithDomain:1]; // expected-warning{{Write to autoreleasing out parameter inside autorelease pool that may exit before function returns; consider writing first to a strong local variable declared outside of the block}}
- }];
- [i indexesPassingTest:^{
- *error = [NSError errorWithDomain:1]; // expected-warning{{Write to autoreleasing out parameter inside autorelease pool that may exit before function returns; consider writing first to a strong local variable declared outside of the block}}
- }];
- [i indexWithOptions: NSEnumerationReverse passingTest:^(NSUInteger idx, BOOL *stop) {
- *error = [NSError errorWithDomain:1]; // expected-warning{{Write to autoreleasing out parameter inside autorelease pool that may exit before function returns; consider writing first to a strong local variable declared outside of the block}}
- return YES;
- }];
- return 0;
-}
-
-void writeIntoError(NSError **error) {
- *error = [NSError errorWithDomain:1];
-}
-
-extern void readError(NSError *error);
-
-void writeToErrorWithIteratorNonnull(NSError *__autoreleasing* _Nonnull error, NSDictionary *a) {
- [a enumerateKeysAndObjectsUsingBlock:^{
- *error = [NSError errorWithDomain:1]; // expected-warning{{Write to autoreleasing out parameter}}
- }];
-}
-
-
-void escapeErrorFromIterator(NSError *__autoreleasing* _Nonnull error, NSDictionary *a) {
- [a enumerateKeysAndObjectsUsingBlock:^{
- writeIntoError(error); // expected-warning{{Capture of autoreleasing out parameter}}
- }];
-}
-
-void noWarningOnRead(NSError *__autoreleasing* error, NSDictionary *a) {
- [a enumerateKeysAndObjectsUsingBlock:^{
- NSError* local = *error; // no-warning
- }];
-}
-
-void noWarningOnEscapeRead(NSError *__autoreleasing* error, NSDictionary *a) {
- [a enumerateKeysAndObjectsUsingBlock:^{
- readError(*error); // no-warning
- }];
-}
-
-@interface ErrorCapture
-- (void) captureErrorOut:(NSError**) error;
-- (void) captureError:(NSError*) error;
-@end
-
-void escapeErrorFromIteratorMethod(NSError *__autoreleasing* _Nonnull error,
- NSDictionary *a,
- ErrorCapture *capturer) {
- [a enumerateKeysAndObjectsUsingBlock:^{
- [capturer captureErrorOut:error]; // expected-warning{{Capture of autoreleasing out parameter}}
- }];
-}
-
-void noWarningOnEscapeReadMethod(NSError *__autoreleasing* error,
- NSDictionary *a,
- ErrorCapture *capturer) {
- [a enumerateKeysAndObjectsUsingBlock:^{
- [capturer captureError:*error]; // no-warning
- }];
-}
-
-void multipleErrors(NSError *__autoreleasing* error, NSDictionary *a) {
- [a enumerateKeysAndObjectsUsingBlock:^{
- writeIntoError(error); // expected-warning{{Capture of autoreleasing out parameter}}
- *error = [NSError errorWithDomain:1]; // expected-warning{{Write to autoreleasing out parameter}}
- writeIntoError(error); // expected-warning{{Capture of autoreleasing out parameter}}
- }];
-}
-
-typedef void (^errBlock)(NSError *__autoreleasing *error);
-
-extern void expectError(errBlock);
-
-void captureAutoreleasingVarFromBlock(NSDictionary *dict) {
- expectError(^(NSError *__autoreleasing *err) {
- [dict enumerateKeysAndObjectsUsingBlock:^{
- writeIntoError(err); // expected-warning{{Capture of autoreleasing out parameter 'err'}}
- }];
- });
-}
-
-#endif
-
diff --git a/test/Analysis/base-init.cpp b/test/Analysis/base-init.cpp
deleted file mode 100644
index 1f59303789b3..000000000000
--- a/test/Analysis/base-init.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config c++-inlining=constructors -verify %s
-
-void clang_analyzer_eval(bool);
-
-class A {
- int x;
-public:
- A();
- int getx() const {
- return x;
- }
-};
-
-A::A() : x(0) {
-}
-
-class B : public A {
- int y;
-public:
- B();
-};
-
-B::B() {
-}
-
-void f() {
- B b;
- clang_analyzer_eval(b.getx() == 0); // expected-warning{{TRUE}}
-}
diff --git a/test/Analysis/bitwise-ops.c b/test/Analysis/bitwise-ops.c
deleted file mode 100644
index fcd3d7dbc7cf..000000000000
--- a/test/Analysis/bitwise-ops.c
+++ /dev/null
@@ -1,58 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -triple x86_64-apple-darwin13 -Wno-shift-count-overflow -verify %s
-
-void clang_analyzer_eval(int);
-#define CHECK(expr) if (!(expr)) return; clang_analyzer_eval(expr)
-
-void testPersistentConstraints(int x, int y) {
- // Sanity check
- CHECK(x); // expected-warning{{TRUE}}
- CHECK(x & 1); // expected-warning{{TRUE}}
-
- CHECK(1 - x); // expected-warning{{TRUE}}
- CHECK(x & y); // expected-warning{{TRUE}}
-}
-
-int testConstantShifts_PR18073(int which) {
- // FIXME: We should have a checker that actually specifically checks bitwise
- // shifts against the width of the LHS's /static/ type, rather than just
- // having BasicValueFactory return "undefined" when dealing with two constant
- // operands.
- switch (which) {
- case 1:
- return 0ULL << 63; // no-warning
- case 2:
- return 0ULL << 64; // expected-warning{{The result of the left shift is undefined due to shifting by '64', which is greater or equal to the width of type 'unsigned long long'}}
- case 3:
- return 0ULL << 65; // expected-warning{{The result of the left shift is undefined due to shifting by '65', which is greater or equal to the width of type 'unsigned long long'}}
-
- default:
- return 0;
- }
-}
-
-int testOverflowShift(int a) {
- if (a == 323) {
- return 1 << a; // expected-warning{{The result of the left shift is undefined due to shifting by '323', which is greater or equal to the width of type 'int'}}
- }
- return 0;
-}
-
-int testNegativeShift(int a) {
- if (a == -5) {
- return 1 << a; // expected-warning{{The result of the left shift is undefined because the right operand is negative}}
- }
- return 0;
-}
-
-int testNegativeLeftShift(int a) {
- if (a == -3) {
- return a << 1; // expected-warning{{The result of the left shift is undefined because the left operand is negative}}
- }
- return 0;
-}
-
-int testUnrepresentableLeftShift(int a) {
- if (a == 8)
- return a << 30; // expected-warning{{The result of the left shift is undefined due to shifting '8' by '30', which is unrepresentable in the unsigned version of the return type 'int'}}
- return 0;
-}
diff --git a/test/Analysis/block-in-critical-section.cpp b/test/Analysis/block-in-critical-section.cpp
deleted file mode 100644
index fcf6188fc033..000000000000
--- a/test/Analysis/block-in-critical-section.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.unix.BlockInCriticalSection -std=c++11 -verify %s
-
-void sleep(int x) {}
-
-namespace std {
-struct mutex {
- void lock() {}
- void unlock() {}
-};
-template<typename T>
-struct lock_guard {
- lock_guard<T>(std::mutex) {}
- ~lock_guard<T>() {}
-};
-template<typename T>
-struct unique_lock {
- unique_lock<T>(std::mutex) {}
- ~unique_lock<T>() {}
-};
-template<typename T>
-struct not_real_lock {
- not_real_lock<T>(std::mutex) {}
-};
-}
-
-void getc() {}
-void fgets() {}
-void read() {}
-void recv() {}
-
-void pthread_mutex_lock() {}
-void pthread_mutex_trylock() {}
-void pthread_mutex_unlock() {}
-
-void mtx_lock() {}
-void mtx_timedlock() {}
-void mtx_trylock() {}
-void mtx_unlock() {}
-
-void testBlockInCriticalSectionWithStdMutex() {
- std::mutex m;
- m.lock();
- sleep(3); // expected-warning {{Call to blocking function 'sleep' inside of critical section}}
- getc(); // expected-warning {{Call to blocking function 'getc' inside of critical section}}
- fgets(); // expected-warning {{Call to blocking function 'fgets' inside of critical section}}
- read(); // expected-warning {{Call to blocking function 'read' inside of critical section}}
- recv(); // expected-warning {{Call to blocking function 'recv' inside of critical section}}
- m.unlock();
-}
-
-void testBlockInCriticalSectionWithPthreadMutex() {
- pthread_mutex_lock();
- sleep(3); // expected-warning {{Call to blocking function 'sleep' inside of critical section}}
- getc(); // expected-warning {{Call to blocking function 'getc' inside of critical section}}
- fgets(); // expected-warning {{Call to blocking function 'fgets' inside of critical section}}
- read(); // expected-warning {{Call to blocking function 'read' inside of critical section}}
- recv(); // expected-warning {{Call to blocking function 'recv' inside of critical section}}
- pthread_mutex_unlock();
-
- pthread_mutex_trylock();
- sleep(3); // expected-warning {{Call to blocking function 'sleep' inside of critical section}}
- getc(); // expected-warning {{Call to blocking function 'getc' inside of critical section}}
- fgets(); // expected-warning {{Call to blocking function 'fgets' inside of critical section}}
- read(); // expected-warning {{Call to blocking function 'read' inside of critical section}}
- recv(); // expected-warning {{Call to blocking function 'recv' inside of critical section}}
- pthread_mutex_unlock();
-}
-
-void testBlockInCriticalSectionC11Locks() {
- mtx_lock();
- sleep(3); // expected-warning {{Call to blocking function 'sleep' inside of critical section}}
- getc(); // expected-warning {{Call to blocking function 'getc' inside of critical section}}
- fgets(); // expected-warning {{Call to blocking function 'fgets' inside of critical section}}
- read(); // expected-warning {{Call to blocking function 'read' inside of critical section}}
- recv(); // expected-warning {{Call to blocking function 'recv' inside of critical section}}
- mtx_unlock();
-
- mtx_timedlock();
- sleep(3); // expected-warning {{Call to blocking function 'sleep' inside of critical section}}
- getc(); // expected-warning {{Call to blocking function 'getc' inside of critical section}}
- fgets(); // expected-warning {{Call to blocking function 'fgets' inside of critical section}}
- read(); // expected-warning {{Call to blocking function 'read' inside of critical section}}
- recv(); // expected-warning {{Call to blocking function 'recv' inside of critical section}}
- mtx_unlock();
-
- mtx_trylock();
- sleep(3); // expected-warning {{Call to blocking function 'sleep' inside of critical section}}
- getc(); // expected-warning {{Call to blocking function 'getc' inside of critical section}}
- fgets(); // expected-warning {{Call to blocking function 'fgets' inside of critical section}}
- read(); // expected-warning {{Call to blocking function 'read' inside of critical section}}
- recv(); // expected-warning {{Call to blocking function 'recv' inside of critical section}}
- mtx_unlock();
-}
-
-void testBlockInCriticalSectionWithNestedMutexes() {
- std::mutex m, n, k;
- m.lock();
- n.lock();
- k.lock();
- sleep(3); // expected-warning {{Call to blocking function 'sleep' inside of critical section}}
- k.unlock();
- sleep(5); // expected-warning {{Call to blocking function 'sleep' inside of critical section}}
- n.unlock();
- sleep(3); // expected-warning {{Call to blocking function 'sleep' inside of critical section}}
- m.unlock();
- sleep(3); // no-warning
-}
-
-void f() {
- sleep(1000); // expected-warning {{Call to blocking function 'sleep' inside of critical section}}
-}
-
-void testBlockInCriticalSectionInterProcedural() {
- std::mutex m;
- m.lock();
- f();
- m.unlock();
-}
-
-void testBlockInCriticalSectionUnexpectedUnlock() {
- std::mutex m;
- m.unlock();
- sleep(1); // no-warning
- m.lock();
- sleep(1); // expected-warning {{Call to blocking function 'sleep' inside of critical section}}
-}
-
-void testBlockInCriticalSectionLockGuard() {
- std::mutex g_mutex;
- std::not_real_lock<std::mutex> not_real_lock(g_mutex);
- sleep(1); // no-warning
-
- std::lock_guard<std::mutex> lock(g_mutex);
- sleep(1); // expected-warning {{Call to blocking function 'sleep' inside of critical section}}
-}
-
-void testBlockInCriticalSectionLockGuardNested() {
- testBlockInCriticalSectionLockGuard();
- sleep(1); // no-warning
-}
-
-void testBlockInCriticalSectionUniqueLock() {
- std::mutex g_mutex;
- std::not_real_lock<std::mutex> not_real_lock(g_mutex);
- sleep(1); // no-warning
-
- std::unique_lock<std::mutex> lock(g_mutex);
- sleep(1); // expected-warning {{Call to blocking function 'sleep' inside of critical section}}
-}
-
-void testBlockInCriticalSectionUniqueLockNested() {
- testBlockInCriticalSectionUniqueLock();
- sleep(1); // no-warning
-}
diff --git a/test/Analysis/block-in-critical-section.m b/test/Analysis/block-in-critical-section.m
deleted file mode 100644
index 73d58479f4bf..000000000000
--- a/test/Analysis/block-in-critical-section.m
+++ /dev/null
@@ -1,10 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.unix.BlockInCriticalSection -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-@interface SomeClass
--(void)someMethod;
-@end
-
-void shouldNotCrash(SomeClass *o) {
- [o someMethod];
-}
diff --git a/test/Analysis/blocks-no-inline.c b/test/Analysis/blocks-no-inline.c
deleted file mode 100644
index 9fa3138ec277..000000000000
--- a/test/Analysis/blocks-no-inline.c
+++ /dev/null
@@ -1,40 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=none -fblocks -analyzer-config eagerly-assume=false -verify %s
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=none -fblocks -analyzer-config eagerly-assume=false -verify -x c++ %s
-
-void clang_analyzer_eval(int);
-
-void testInvalidation() {
- __block int i = 0;
- ^{
- ++i;
- }();
-
- // Under inlining, we will know that i == 1.
- clang_analyzer_eval(i == 0); // expected-warning{{UNKNOWN}}
-}
-
-
-const int globalConstant = 1;
-void testCapturedConstants() {
- const int localConstant = 2;
- static const int staticConstant = 3;
-
- ^{
- clang_analyzer_eval(globalConstant == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(localConstant == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(staticConstant == 3); // expected-warning{{TRUE}}
- }();
-}
-
-typedef const int constInt;
-constInt anotherGlobalConstant = 1;
-void testCapturedConstantsTypedef() {
- constInt localConstant = 2;
- static constInt staticConstant = 3;
-
- ^{
- clang_analyzer_eval(anotherGlobalConstant == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(localConstant == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(staticConstant == 3); // expected-warning{{TRUE}}
- }();
-}
diff --git a/test/Analysis/blocks.m b/test/Analysis/blocks.m
deleted file mode 100644
index 98d0f8a2ebaa..000000000000
--- a/test/Analysis/blocks.m
+++ /dev/null
@@ -1,243 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core -analyzer-store=region -fblocks -analyzer-opt-analyze-nested-blocks -verify %s
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core -analyzer-store=region -fblocks -analyzer-opt-analyze-nested-blocks -verify -x objective-c++ %s
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from Mac OS X headers:
-//===----------------------------------------------------------------------===//
-
-typedef __builtin_va_list va_list;
-typedef unsigned int uint32_t;
-typedef struct dispatch_queue_s *dispatch_queue_t;
-typedef struct dispatch_queue_attr_s *dispatch_queue_attr_t;
-typedef void (^dispatch_block_t)(void);
-void dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
-__attribute__((visibility("default"))) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) dispatch_queue_t dispatch_queue_create(const char *label, dispatch_queue_attr_t attr);
-typedef long dispatch_once_t;
-void dispatch_once(dispatch_once_t *predicate, dispatch_block_t block);
-dispatch_queue_t
-dispatch_queue_create(const char *label, dispatch_queue_attr_t attr);
-
-
-typedef signed char BOOL;
-typedef unsigned long NSUInteger;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (oneway void)release;
-@end
-@protocol NSCopying - (id)copyWithZone:(NSZone *)zone; @end
-@protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone; @end
-@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; @end
-@interface NSObject <NSObject> {}
-+ (id)alloc;
-- (id)init;
-- (id)copy;
-@end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-- (const char *)UTF8String;
-- (id)initWithFormat:(NSString *)format arguments:(va_list)argList __attribute__((format(__NSString__, 1, 0)));
-@end
-@class NSString, NSData;
-typedef struct cssm_sample {} CSSM_SAMPLEGROUP, *CSSM_SAMPLEGROUP_PTR;
-typedef struct __aslclient *aslclient;
-typedef struct __aslmsg *aslmsg;
-aslclient asl_open(const char *ident, const char *facility, uint32_t opts);
-int asl_log(aslclient asl, aslmsg msg, int level, const char *format, ...) __attribute__((__format__ (__printf__, 4, 5)));
-
-//===----------------------------------------------------------------------===//
-// Begin actual test cases.
-//===----------------------------------------------------------------------===//
-
-// test1 - This test case exposed logic that caused the analyzer to crash because of a memory bug
-// in BlockDataRegion. It represents real code that contains two block literals. Eventually
-// via IPA 'logQueue' and 'client' should be updated after the call to 'dispatch_once'.
-void test1(NSString *format, ...) {
- static dispatch_queue_t logQueue;
- static aslclient client;
- static dispatch_once_t pred;
- do {
- if (__builtin_expect(*(&pred), ~0l) != ~0l)
- dispatch_once(&pred, ^{
- logQueue = dispatch_queue_create("com.mycompany.myproduct.asl", 0);
- client = asl_open(((char*)0), "com.mycompany.myproduct", 0);
- });
- } while (0);
-
- va_list args;
- __builtin_va_start(args, format);
-
- NSString *str = [[NSString alloc] initWithFormat:format arguments:args];
- dispatch_async(logQueue, ^{ asl_log(client, ((aslmsg)0), 4, "%s", [str UTF8String]); });
- [str release];
-
- __builtin_va_end(args);
-}
-
-// test2 - Test that captured variables that are uninitialized are flagged
-// as such.
-void test2() {
- static int y = 0;
- int x;
- ^{ y = x + 1; }(); // expected-warning{{Variable 'x' is uninitialized when captured by block}}
-}
-
-void test2_b() {
- static int y = 0;
- __block int x;
- ^{ y = x + 1; }(); // expected-warning {{left operand of '+' is a garbage value}}
-}
-
-void test2_c() {
- typedef void (^myblock)(void);
- myblock f = ^() { f(); }; // expected-warning{{Variable 'f' is uninitialized when captured by block}}
-}
-
-
-void testMessaging() {
- // <rdar://problem/12119814>
- [[^(){} copy] release];
-}
-
-
-@interface rdar12415065 : NSObject
-@end
-
-@implementation rdar12415065
-- (void)test {
- // At one point this crashed because we created a path note at a
- // PreStmtPurgeDeadSymbols point but only knew how to deal with PostStmt
- // points. <rdar://problem/12687586>
-
- extern dispatch_queue_t queue;
-
- if (!queue)
- return;
-
- // This previously was a false positive with 'x' being flagged as being
- // uninitialized when captured by the exterior block (when it is only
- // captured by the interior block).
- dispatch_async(queue, ^{
- double x = 0.0;
- if (24.0f < x) {
- dispatch_async(queue, ^{ (void)x; });
- [self test];
- }
- });
-}
-@end
-
-void testReturnVariousSignatures() {
- (void)^int(){
- return 42;
- }();
-
- (void)^int{
- return 42;
- }();
-
- (void)^(){
- return 42;
- }();
-
- (void)^{
- return 42;
- }();
-}
-
-// This test used to cause infinite loop in the region invalidation.
-void blockCapturesItselfInTheLoop(int x, int m) {
- void (^assignData)(int) = ^(int x){
- x++;
- };
- while (m < 0) {
- void (^loop)(int);
- loop = ^(int x) {
- assignData(x);
- };
- assignData = loop;
- m++;
- }
- assignData(x);
-}
-
-// Blocks that called the function they were contained in that also have
-// static locals caused crashes.
-// rdar://problem/21698099
-void takeNonnullBlock(void (^)(void)) __attribute__((nonnull));
-void takeNonnullIntBlock(int (^)(void)) __attribute__((nonnull));
-
-void testCallContainingWithSignature1()
-{
- takeNonnullBlock(^{
- static const char str[] = "Lost connection to sharingd";
- testCallContainingWithSignature1();
- });
-}
-
-void testCallContainingWithSignature2()
-{
- takeNonnullBlock(^void{
- static const char str[] = "Lost connection to sharingd";
- testCallContainingWithSignature2();
- });
-}
-
-void testCallContainingWithSignature3()
-{
- takeNonnullBlock(^void(){
- static const char str[] = "Lost connection to sharingd";
- testCallContainingWithSignature3();
- });
-}
-
-void testCallContainingWithSignature4()
-{
- takeNonnullBlock(^void(void){
- static const char str[] = "Lost connection to sharingd";
- testCallContainingWithSignature4();
- });
-}
-
-void testCallContainingWithSignature5()
-{
- takeNonnullIntBlock(^{
- static const char str[] = "Lost connection to sharingd";
- testCallContainingWithSignature5();
- return 0;
- });
-}
-
-__attribute__((objc_root_class))
-@interface SuperClass
-- (void)someMethod;
-@end
-
-@interface SomeClass : SuperClass
-@end
-
-// Make sure to properly handle super-calls when a block captures
-// a local variable named 'self'.
-@implementation SomeClass
--(void)foo; {
- /*__weak*/ SomeClass *weakSelf = self;
- (void)(^(void) {
- SomeClass *self = weakSelf;
- (void)(^(void) {
- (void)self;
- [super someMethod]; // no-warning
- });
- });
-}
-@end
-
-// The incorrect block variable initialization below is a hard compile-time
-// error in C++.
-#if !defined(__cplusplus)
-void call_block_with_fewer_arguments() {
- void (^b)() = ^(int a) { };
- b(); // expected-warning {{Block taking 1 argument is called with fewer (0)}}
-}
-#endif
diff --git a/test/Analysis/blocks.mm b/test/Analysis/blocks.mm
deleted file mode 100644
index 8a3f1708514e..000000000000
--- a/test/Analysis/blocks.mm
+++ /dev/null
@@ -1,87 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core -fblocks -analyzer-opt-analyze-nested-blocks -verify -x objective-c++ %s
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,debug.DumpCFG -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-config cfg-rich-constructors=false %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,WARNINGS %s
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,debug.DumpCFG -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-config cfg-rich-constructors=true %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,ANALYZER %s
-
-// This file tests how we construct two different flavors of the Clang CFG -
-// the CFG used by the Sema analysis-based warnings and the CFG used by the
-// static analyzer. The difference in the behavior is checked via FileCheck
-// prefixes (WARNINGS and ANALYZER respectively). When introducing new analyzer
-// flags, no new run lines should be added - just these flags would go to the
-// respective line depending on where is it turned on and where is it turned
-// off. Feel free to add tests that test only one of the CFG flavors if you're
-// not sure how the other flavor is supposed to work in your case.
-
-// expected-no-diagnostics
-
-void testBlockWithoutCopyExpression(int i) {
- // Captures i, with no copy expression.
- (void)(^void() {
- (void)i;
- });
-}
-
-// CHECK-LABEL:void testBlockWithoutCopyExpression(int i)
-// CHECK-NEXT: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-
-// CHECK: [B1]
-// CHECK-NEXT: 1: ^{ }
-// CHECK-NEXT: 2: (void)([B1.1]) (CStyleCastExpr, ToVoid, void)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-
-struct StructWithCopyConstructor {
- StructWithCopyConstructor(int i);
- StructWithCopyConstructor(const StructWithCopyConstructor &s);
-};
-void testBlockWithCopyExpression(StructWithCopyConstructor s) {
- // Captures s, with a copy expression calling the copy constructor for StructWithCopyConstructor.
- (void)(^void() {
- (void)s;
- });
-}
-
-// CHECK-LABEL:void testBlockWithCopyExpression(StructWithCopyConstructor s)
-// CHECK-NEXT: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-
-// CHECK: [B1]
-// CHECK-NEXT: 1: s
-// CHECK-NEXT: 2: [B1.1] (CXXConstructExpr, const struct StructWithCopyConstructor)
-// CHECK-NEXT: 3: ^{ }
-// CHECK-NEXT: 4: (void)([B1.3]) (CStyleCastExpr, ToVoid, void)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-
-void testBlockWithCaptureByReference() {
- __block StructWithCopyConstructor s(5);
- // Captures s by reference, so no copy expression.
- (void)(^void() {
- (void)s;
- });
-}
-
-// CHECK-LABEL:void testBlockWithCaptureByReference()
-// CHECK-NEXT: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-
-// CHECK: [B1]
-// CHECK-NEXT: 1: 5
-// WARNINGS-NEXT: 2: [B1.1] (CXXConstructExpr, struct StructWithCopyConstructor)
-// ANALYZER-NEXT: 2: [B1.1] (CXXConstructExpr, [B1.3], struct StructWithCopyConstructor)
-// CHECK-NEXT: 3: StructWithCopyConstructor s(5) __attribute__((blocks("byref")));
-// CHECK-NEXT: 4: ^{ }
-// CHECK-NEXT: 5: (void)([B1.4]) (CStyleCastExpr, ToVoid, void)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
diff --git a/test/Analysis/bool-assignment.c b/test/Analysis/bool-assignment.c
deleted file mode 100644
index 57a7f0b5dc1b..000000000000
--- a/test/Analysis/bool-assignment.c
+++ /dev/null
@@ -1,106 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core.BoolAssignment -analyzer-store=region -verify -std=c99 -Dbool=_Bool %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core.BoolAssignment -analyzer-store=region -verify -x c++ %s
-
-// Test C++'s bool and C's _Bool.
-// FIXME: We stopped warning on these when SValBuilder got smarter about
-// casts to bool. Arguably, however, these conversions are okay; the result
-// is always 'true' or 'false'.
-
-void test_stdbool_initialization(int y) {
- bool constant = 2; // no-warning
- if (y < 0) {
- bool x = y; // no-warning
- return;
- }
- if (y > 1) {
- bool x = y; // no-warning
- return;
- }
- bool x = y; // no-warning
-}
-
-void test_stdbool_assignment(int y) {
- bool x = 0; // no-warning
- if (y < 0) {
- x = y; // no-warning
- return;
- }
- if (y > 1) {
- x = y; // no-warning
- return;
- }
- x = y; // no-warning
-}
-
-// Test Objective-C's BOOL
-
-typedef signed char BOOL;
-
-void test_BOOL_initialization(int y) {
- BOOL constant = 2; // expected-warning {{Assignment of a non-Boolean value}}
- if (y < 0) {
- BOOL x = y; // expected-warning {{Assignment of a non-Boolean value}}
- return;
- }
- if (y > 200 && y < 250) {
-#ifdef ANALYZER_CM_Z3
- BOOL x = y; // expected-warning {{Assignment of a non-Boolean value}}
-#else
- BOOL x = y; // no-warning
-#endif
- return;
- }
- if (y >= 127 && y < 150) {
- BOOL x = y; // expected-warning{{Assignment of a non-Boolean value}}
- return;
- }
- if (y > 1) {
- BOOL x = y; // expected-warning {{Assignment of a non-Boolean value}}
- return;
- }
- BOOL x = y; // no-warning
-}
-
-void test_BOOL_assignment(int y) {
- BOOL x = 0; // no-warning
- if (y < 0) {
- x = y; // expected-warning {{Assignment of a non-Boolean value}}
- return;
- }
- if (y > 1) {
- x = y; // expected-warning {{Assignment of a non-Boolean value}}
- return;
- }
- x = y; // no-warning
-}
-
-
-// Test MacTypes.h's Boolean
-
-typedef unsigned char Boolean;
-
-void test_Boolean_initialization(int y) {
- Boolean constant = 2; // expected-warning {{Assignment of a non-Boolean value}}
- if (y < 0) {
- Boolean x = y; // expected-warning {{Assignment of a non-Boolean value}}
- return;
- }
- if (y > 1) {
- Boolean x = y; // expected-warning {{Assignment of a non-Boolean value}}
- return;
- }
- Boolean x = y; // no-warning
-}
-
-void test_Boolean_assignment(int y) {
- Boolean x = 0; // no-warning
- if (y < 0) {
- x = y; // expected-warning {{Assignment of a non-Boolean value}}
- return;
- }
- if (y > 1) {
- x = y; // expected-warning {{Assignment of a non-Boolean value}}
- return;
- }
- x = y; // no-warning
-}
diff --git a/test/Analysis/bool-increment.cpp b/test/Analysis/bool-increment.cpp
deleted file mode 100644
index 93002d3b61ec..000000000000
--- a/test/Analysis/bool-increment.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify -std=c++98 -Wno-deprecated %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify -std=c++11 -Wno-deprecated %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify -std=c++14 -Wno-deprecated %s
-
-extern void clang_analyzer_eval(bool);
-
-void test_bool_value() {
- {
- bool b = true;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = false;
- clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
- }
-
- {
- bool b = -10;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = 10;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = 10;
- b++;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-
- {
- bool b = 0;
- b++;
- clang_analyzer_eval(b == 1); // expected-warning{{TRUE}}
- }
-}
-
-void test_bool_increment() {
- {
- bool b = true;
- b++;
- clang_analyzer_eval(b); // expected-warning{{TRUE}}
- }
-
- {
- bool b = false;
- b++;
- clang_analyzer_eval(b); // expected-warning{{TRUE}}
- }
-
- {
- bool b = true;
- ++b;
- clang_analyzer_eval(b); // expected-warning{{TRUE}}
- }
-
- {
- bool b = false;
- ++b;
- clang_analyzer_eval(b); // expected-warning{{TRUE}}
- }
-
- {
- bool b = 0;
- ++b;
- clang_analyzer_eval(b); // expected-warning{{TRUE}}
- }
-
- {
- bool b = 10;
- ++b;
- ++b;
- clang_analyzer_eval(b); // expected-warning{{TRUE}}
- }
-
- {
- bool b = -10;
- ++b;
- clang_analyzer_eval(b); // expected-warning{{TRUE}}
- }
-}
diff --git a/test/Analysis/bsd-string.c b/test/Analysis/bsd-string.c
deleted file mode 100644
index bca42ca89643..000000000000
--- a/test/Analysis/bsd-string.c
+++ /dev/null
@@ -1,45 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.cstring.NullArg,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -verify %s
-
-#define NULL ((void *)0)
-
-typedef __typeof(sizeof(int)) size_t;
-size_t strlcpy(char *dst, const char *src, size_t n);
-size_t strlcat(char *dst, const char *src, size_t n);
-void clang_analyzer_eval(int);
-
-void f1() {
- char overlap[] = "123456789";
- strlcpy(overlap, overlap + 1, 3); // expected-warning{{Arguments must not be overlapping buffers}}
-}
-
-void f2() {
- char buf[5];
- strlcpy(buf, "abcd", sizeof(buf)); // expected-no-warning
- strlcat(buf, "efgh", sizeof(buf)); // expected-warning{{Size argument is greater than the free space in the destination buffer}}
-}
-
-void f3() {
- char dst[2];
- const char *src = "abdef";
- strlcpy(dst, src, 5); // expected-warning{{Size argument is greater than the length of the destination buffer}}
-}
-
-void f4() {
- strlcpy(NULL, "abcdef", 6); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void f5() {
- strlcat(NULL, "abcdef", 6); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void f6() {
- char buf[8];
- strlcpy(buf, "abc", 3);
- size_t len = strlcat(buf, "defg", 4);
- clang_analyzer_eval(len == 7); // expected-warning{{TRUE}}
-}
-
-int f7() {
- char buf[8];
- return strlcpy(buf, "1234567", 0); // no-crash
-}
diff --git a/test/Analysis/bstring.c b/test/Analysis/bstring.c
deleted file mode 100644
index e8c3021f27be..000000000000
--- a/test/Analysis/bstring.c
+++ /dev/null
@@ -1,485 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.cstring,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -DUSE_BUILTINS -analyzer-checker=core,unix.cstring,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -DVARIANT -analyzer-checker=core,unix.cstring,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -DUSE_BUILTINS -DVARIANT -analyzer-checker=core,unix.cstring,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -verify -analyzer-config eagerly-assume=false %s
-
-//===----------------------------------------------------------------------===
-// Declarations
-//===----------------------------------------------------------------------===
-
-// Some functions are so similar to each other that they follow the same code
-// path, such as memcpy and __memcpy_chk, or memcmp and bcmp. If VARIANT is
-// defined, make sure to use the variants instead to make sure they are still
-// checked by the analyzer.
-
-// Some functions are implemented as builtins. These should be #defined as
-// BUILTIN(f), which will prepend "__builtin_" if USE_BUILTINS is defined.
-
-// Functions that have variants and are also available as builtins should be
-// declared carefully! See memcpy() for an example.
-
-#ifdef USE_BUILTINS
-# define BUILTIN(f) __builtin_ ## f
-#else /* USE_BUILTINS */
-# define BUILTIN(f) f
-#endif /* USE_BUILTINS */
-
-typedef typeof(sizeof(int)) size_t;
-
-void clang_analyzer_eval(int);
-
-//===----------------------------------------------------------------------===
-// memcpy()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __memcpy_chk BUILTIN(__memcpy_chk)
-void *__memcpy_chk(void *restrict s1, const void *restrict s2, size_t n,
- size_t destlen);
-
-#define memcpy(a,b,c) __memcpy_chk(a,b,c,(size_t)-1)
-
-#else /* VARIANT */
-
-#define memcpy BUILTIN(memcpy)
-void *memcpy(void *restrict s1, const void *restrict s2, size_t n);
-
-#endif /* VARIANT */
-
-
-void memcpy0 () {
- char src[] = {1, 2, 3, 4};
- char dst[4] = {0};
-
- memcpy(dst, src, 4); // no-warning
-
- clang_analyzer_eval(memcpy(dst, src, 4) == dst); // expected-warning{{TRUE}}
-
- // If we actually model the copy, we can make this known.
- // The important thing for now is that the old value has been invalidated.
- clang_analyzer_eval(dst[0] != 0); // expected-warning{{UNKNOWN}}
-}
-
-void memcpy1 () {
- char src[] = {1, 2, 3, 4};
- char dst[10];
-
- memcpy(dst, src, 5); // expected-warning{{Memory copy function accesses out-of-bound array element}}
-}
-
-void memcpy2 () {
- char src[] = {1, 2, 3, 4};
- char dst[1];
-
- memcpy(dst, src, 4); // expected-warning{{Memory copy function overflows destination buffer}}
-}
-
-void memcpy3 () {
- char src[] = {1, 2, 3, 4};
- char dst[3];
-
- memcpy(dst+1, src+2, 2); // no-warning
-}
-
-void memcpy4 () {
- char src[] = {1, 2, 3, 4};
- char dst[10];
-
- memcpy(dst+2, src+2, 3); // expected-warning{{Memory copy function accesses out-of-bound array element}}
-}
-
-void memcpy5() {
- char src[] = {1, 2, 3, 4};
- char dst[3];
-
- memcpy(dst+2, src+2, 2); // expected-warning{{Memory copy function overflows destination buffer}}
-}
-
-void memcpy6() {
- int a[4] = {0};
- memcpy(a, a, 8); // expected-warning{{overlapping}}
-}
-
-void memcpy7() {
- int a[4] = {0};
- memcpy(a+2, a+1, 8); // expected-warning{{overlapping}}
-}
-
-void memcpy8() {
- int a[4] = {0};
- memcpy(a+1, a+2, 8); // expected-warning{{overlapping}}
-}
-
-void memcpy9() {
- int a[4] = {0};
- memcpy(a+2, a+1, 4); // no-warning
- memcpy(a+1, a+2, 4); // no-warning
-}
-
-void memcpy10() {
- char a[4] = {0};
- memcpy(0, a, 4); // expected-warning{{Null pointer argument in call to memory copy function}}
-}
-
-void memcpy11() {
- char a[4] = {0};
- memcpy(a, 0, 4); // expected-warning{{Null pointer argument in call to memory copy function}}
-}
-
-void memcpy12() {
- char a[4] = {0};
- memcpy(0, a, 0); // no-warning
-}
-
-void memcpy13() {
- char a[4] = {0};
- memcpy(a, 0, 0); // no-warning
-}
-
-void memcpy_unknown_size (size_t n) {
- char a[4], b[4] = {1};
- clang_analyzer_eval(memcpy(a, b, n) == a); // expected-warning{{TRUE}}
-}
-
-void memcpy_unknown_size_warn (size_t n) {
- char a[4];
- void *result = memcpy(a, 0, n); // expected-warning{{Null pointer argument in call to memory copy function}}
- clang_analyzer_eval(result == a); // no-warning (above is fatal)
-}
-
-//===----------------------------------------------------------------------===
-// mempcpy()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __mempcpy_chk BUILTIN(__mempcpy_chk)
-void *__mempcpy_chk(void *restrict s1, const void *restrict s2, size_t n,
- size_t destlen);
-
-#define mempcpy(a,b,c) __mempcpy_chk(a,b,c,(size_t)-1)
-
-#else /* VARIANT */
-
-#define mempcpy BUILTIN(mempcpy)
-void *mempcpy(void *restrict s1, const void *restrict s2, size_t n);
-
-#endif /* VARIANT */
-
-
-void mempcpy0 () {
- char src[] = {1, 2, 3, 4};
- char dst[5] = {0};
-
- mempcpy(dst, src, 4); // no-warning
-
- clang_analyzer_eval(mempcpy(dst, src, 4) == &dst[4]); // expected-warning{{TRUE}}
-
- // If we actually model the copy, we can make this known.
- // The important thing for now is that the old value has been invalidated.
- clang_analyzer_eval(dst[0] != 0); // expected-warning{{UNKNOWN}}
-}
-
-void mempcpy1 () {
- char src[] = {1, 2, 3, 4};
- char dst[10];
-
- mempcpy(dst, src, 5); // expected-warning{{Memory copy function accesses out-of-bound array element}}
-}
-
-void mempcpy2 () {
- char src[] = {1, 2, 3, 4};
- char dst[1];
-
- mempcpy(dst, src, 4); // expected-warning{{Memory copy function overflows destination buffer}}
-}
-
-void mempcpy3 () {
- char src[] = {1, 2, 3, 4};
- char dst[3];
-
- mempcpy(dst+1, src+2, 2); // no-warning
-}
-
-void mempcpy4 () {
- char src[] = {1, 2, 3, 4};
- char dst[10];
-
- mempcpy(dst+2, src+2, 3); // expected-warning{{Memory copy function accesses out-of-bound array element}}
-}
-
-void mempcpy5() {
- char src[] = {1, 2, 3, 4};
- char dst[3];
-
- mempcpy(dst+2, src+2, 2); // expected-warning{{Memory copy function overflows destination buffer}}
-}
-
-void mempcpy6() {
- int a[4] = {0};
- mempcpy(a, a, 8); // expected-warning{{overlapping}}
-}
-
-void mempcpy7() {
- int a[4] = {0};
- mempcpy(a+2, a+1, 8); // expected-warning{{overlapping}}
-}
-
-void mempcpy8() {
- int a[4] = {0};
- mempcpy(a+1, a+2, 8); // expected-warning{{overlapping}}
-}
-
-void mempcpy9() {
- int a[4] = {0};
- mempcpy(a+2, a+1, 4); // no-warning
- mempcpy(a+1, a+2, 4); // no-warning
-}
-
-void mempcpy10() {
- char a[4] = {0};
- mempcpy(0, a, 4); // expected-warning{{Null pointer argument in call to memory copy function}}
-}
-
-void mempcpy11() {
- char a[4] = {0};
- mempcpy(a, 0, 4); // expected-warning{{Null pointer argument in call to memory copy function}}
-}
-
-void mempcpy12() {
- char a[4] = {0};
- mempcpy(0, a, 0); // no-warning
-}
-
-void mempcpy13() {
- char a[4] = {0};
- mempcpy(a, 0, 0); // no-warning
-}
-
-void mempcpy14() {
- int src[] = {1, 2, 3, 4};
- int dst[5] = {0};
- int *p;
-
- p = mempcpy(dst, src, 4 * sizeof(int));
-
- clang_analyzer_eval(p == &dst[4]); // expected-warning{{TRUE}}
-}
-
-struct st {
- int i;
- int j;
-};
-
-void mempcpy15() {
- struct st s1 = {0};
- struct st s2;
- struct st *p1;
- struct st *p2;
-
- p1 = (&s2) + 1;
- p2 = mempcpy(&s2, &s1, sizeof(struct st));
-
- clang_analyzer_eval(p1 == p2); // expected-warning{{TRUE}}
-}
-
-void mempcpy16() {
- struct st s1[10] = {{0}};
- struct st s2[10];
- struct st *p1;
- struct st *p2;
-
- p1 = (&s2[0]) + 5;
- p2 = mempcpy(&s2[0], &s1[0], 5 * sizeof(struct st));
-
- clang_analyzer_eval(p1 == p2); // expected-warning{{TRUE}}
-}
-
-void mempcpy_unknown_size_warn (size_t n) {
- char a[4];
- void *result = mempcpy(a, 0, n); // expected-warning{{Null pointer argument in call to memory copy function}}
- clang_analyzer_eval(result == a); // no-warning (above is fatal)
-}
-
-void mempcpy_unknownable_size (char *src, float n) {
- char a[4];
- // This used to crash because we don't model floats.
- mempcpy(a, src, (size_t)n);
-}
-
-//===----------------------------------------------------------------------===
-// memmove()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __memmove_chk BUILTIN(__memmove_chk)
-void *__memmove_chk(void *s1, const void *s2, size_t n, size_t destlen);
-
-#define memmove(a,b,c) __memmove_chk(a,b,c,(size_t)-1)
-
-#else /* VARIANT */
-
-#define memmove BUILTIN(memmove)
-void *memmove(void *s1, const void *s2, size_t n);
-
-#endif /* VARIANT */
-
-
-void memmove0 () {
- char src[] = {1, 2, 3, 4};
- char dst[4] = {0};
-
- memmove(dst, src, 4); // no-warning
-
- clang_analyzer_eval(memmove(dst, src, 4) == dst); // expected-warning{{TRUE}}
-
- // If we actually model the copy, we can make this known.
- // The important thing for now is that the old value has been invalidated.
- clang_analyzer_eval(dst[0] != 0); // expected-warning{{UNKNOWN}}
-}
-
-void memmove1 () {
- char src[] = {1, 2, 3, 4};
- char dst[10];
-
- memmove(dst, src, 5); // expected-warning{{out-of-bound}}
-}
-
-void memmove2 () {
- char src[] = {1, 2, 3, 4};
- char dst[1];
-
- memmove(dst, src, 4); // expected-warning{{overflow}}
-}
-
-//===----------------------------------------------------------------------===
-// memcmp()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define bcmp BUILTIN(bcmp)
-// __builtin_bcmp is not defined with const in Builtins.def.
-int bcmp(/*const*/ void *s1, /*const*/ void *s2, size_t n);
-#define memcmp bcmp
-//
-#else /* VARIANT */
-
-#define memcmp BUILTIN(memcmp)
-int memcmp(const void *s1, const void *s2, size_t n);
-
-#endif /* VARIANT */
-
-
-void memcmp0 () {
- char a[] = {1, 2, 3, 4};
- char b[4] = { 0 };
-
- memcmp(a, b, 4); // no-warning
-}
-
-void memcmp1 () {
- char a[] = {1, 2, 3, 4};
- char b[10] = { 0 };
-
- memcmp(a, b, 5); // expected-warning{{out-of-bound}}
-}
-
-void memcmp2 () {
- char a[] = {1, 2, 3, 4};
- char b[1] = { 0 };
-
- memcmp(a, b, 4); // expected-warning{{out-of-bound}}
-}
-
-void memcmp3 () {
- char a[] = {1, 2, 3, 4};
-
- clang_analyzer_eval(memcmp(a, a, 4) == 0); // expected-warning{{TRUE}}
-}
-
-void memcmp4 (char *input) {
- char a[] = {1, 2, 3, 4};
-
- clang_analyzer_eval(memcmp(a, input, 4) == 0); // expected-warning{{UNKNOWN}}
-}
-
-void memcmp5 (char *input) {
- char a[] = {1, 2, 3, 4};
-
- clang_analyzer_eval(memcmp(a, 0, 0) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(memcmp(0, a, 0) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(memcmp(a, input, 0) == 0); // expected-warning{{TRUE}}
-}
-
-void memcmp6 (char *a, char *b, size_t n) {
- int result = memcmp(a, b, n);
- if (result != 0)
- clang_analyzer_eval(n != 0); // expected-warning{{TRUE}}
- // else
- // analyzer_assert_unknown(n == 0);
-
- // We can't do the above comparison because n has already been constrained.
- // On one path n == 0, on the other n != 0.
-}
-
-int memcmp7 (char *a, size_t x, size_t y, size_t n) {
- // We used to crash when either of the arguments was unknown.
- return memcmp(a, &a[x*y], n) +
- memcmp(&a[x*y], a, n);
-}
-
-//===----------------------------------------------------------------------===
-// bcopy()
-//===----------------------------------------------------------------------===
-
-#define bcopy BUILTIN(bcopy)
-// __builtin_bcopy is not defined with const in Builtins.def.
-void bcopy(/*const*/ void *s1, void *s2, size_t n);
-
-
-void bcopy0 () {
- char src[] = {1, 2, 3, 4};
- char dst[4] = {0};
-
- bcopy(src, dst, 4); // no-warning
-
- // If we actually model the copy, we can make this known.
- // The important thing for now is that the old value has been invalidated.
- clang_analyzer_eval(dst[0] != 0); // expected-warning{{UNKNOWN}}
-}
-
-void bcopy1 () {
- char src[] = {1, 2, 3, 4};
- char dst[10];
-
- bcopy(src, dst, 5); // expected-warning{{out-of-bound}}
-}
-
-void bcopy2 () {
- char src[] = {1, 2, 3, 4};
- char dst[1];
-
- bcopy(src, dst, 4); // expected-warning{{overflow}}
-}
-
-void *malloc(size_t);
-void free(void *);
-char radar_11125445_memcopythenlogfirstbyte(const char *input, size_t length) {
- char *bytes = malloc(sizeof(char) * (length + 1));
- memcpy(bytes, input, length);
- char x = bytes[0]; // no warning
- free(bytes);
- return x;
-}
-
-struct S {
- char f;
-};
-
-void nocrash_on_locint_offset(void *addr, void* from, struct S s) {
- int iAdd = (int) addr;
- memcpy(((void *) &(s.f)), from, iAdd);
-}
diff --git a/test/Analysis/bstring.cpp b/test/Analysis/bstring.cpp
deleted file mode 100644
index ef03aafbbb81..000000000000
--- a/test/Analysis/bstring.cpp
+++ /dev/null
@@ -1,195 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.cstring,unix.Malloc,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -DUSE_BUILTINS -analyzer-checker=core,unix.cstring,unix.Malloc,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -DVARIANT -analyzer-checker=core,unix.cstring,alpha.unix.cstring,unix.Malloc,debug.ExprInspection -analyzer-store=region -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -DUSE_BUILTINS -DVARIANT -analyzer-checker=core,unix.cstring,alpha.unix.cstring,unix.Malloc,debug.ExprInspection -analyzer-store=region -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -DSUPPRESS_OUT_OF_BOUND -analyzer-checker=core,unix.cstring,unix.Malloc,alpha.unix.cstring.BufferOverlap,alpha.unix.cstring.NotNullTerminated,debug.ExprInspection -analyzer-store=region -verify -analyzer-config eagerly-assume=false %s
-
-#include "Inputs/system-header-simulator-cxx.h"
-#include "Inputs/system-header-simulator-for-malloc.h"
-
-// This provides us with four possible mempcpy() definitions.
-// See also comments in bstring.c.
-
-#ifdef USE_BUILTINS
-#define BUILTIN(f) __builtin_##f
-#else /* USE_BUILTINS */
-#define BUILTIN(f) f
-#endif /* USE_BUILTINS */
-
-#ifdef VARIANT
-
-#define __mempcpy_chk BUILTIN(__mempcpy_chk)
-void *__mempcpy_chk(void *__restrict__ s1, const void *__restrict__ s2,
- size_t n, size_t destlen);
-
-#define mempcpy(a,b,c) __mempcpy_chk(a,b,c,(size_t)-1)
-
-#else /* VARIANT */
-
-#define mempcpy BUILTIN(mempcpy)
-void *mempcpy(void *__restrict__ s1, const void *__restrict__ s2, size_t n);
-
-#endif /* VARIANT */
-
-void clang_analyzer_eval(int);
-
-int *testStdCopyInvalidatesBuffer(std::vector<int> v) {
- int n = v.size();
- int *buf = (int *)malloc(n * sizeof(int));
-
- buf[0] = 66;
-
- // Call to copy should invalidate buf.
- std::copy(v.begin(), v.end(), buf);
-
- int i = buf[0];
-
- clang_analyzer_eval(i == 66); // expected-warning {{UNKNOWN}}
-
- return buf;
-}
-
-int *testStdCopyBackwardInvalidatesBuffer(std::vector<int> v) {
- int n = v.size();
- int *buf = (int *)malloc(n * sizeof(int));
-
- buf[0] = 66;
-
- // Call to copy_backward should invalidate buf.
- std::copy_backward(v.begin(), v.end(), buf + n);
-
- int i = buf[0];
-
- clang_analyzer_eval(i == 66); // expected-warning {{UNKNOWN}}
-
- return buf;
-}
-
-namespace pr34460 {
-short a;
-class b {
- int c;
- long g;
- void d() {
- int e = c;
- f += e;
- mempcpy(f, &a, g);
- }
- unsigned *f;
-};
-}
-
-void *memset(void *dest, int ch, std::size_t count);
-namespace memset_non_pod {
-class Base {
-public:
- int b_mem;
- Base() : b_mem(1) {}
-};
-
-class Derived : public Base {
-public:
- int d_mem;
- Derived() : d_mem(2) {}
-};
-
-void memset1_inheritance() {
- Derived d;
- memset(&d, 0, sizeof(Derived));
- clang_analyzer_eval(d.b_mem == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(d.d_mem == 0); // expected-warning{{TRUE}}
-}
-
-#ifdef SUPPRESS_OUT_OF_BOUND
-void memset2_inheritance_field() {
- Derived d;
- memset(&d.d_mem, 0, sizeof(Derived));
- clang_analyzer_eval(d.b_mem == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(d.d_mem == 0); // expected-warning{{UNKNOWN}}
-}
-
-void memset3_inheritance_field() {
- Derived d;
- memset(&d.b_mem, 0, sizeof(Derived));
- clang_analyzer_eval(d.b_mem == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(d.d_mem == 0); // expected-warning{{TRUE}}
-}
-#endif
-
-void memset4_array_nonpod_object() {
- Derived array[10];
- clang_analyzer_eval(array[1].b_mem == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(array[1].d_mem == 2); // expected-warning{{UNKNOWN}}
- memset(&array[1], 0, sizeof(Derived));
- clang_analyzer_eval(array[1].b_mem == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(array[1].d_mem == 0); // expected-warning{{UNKNOWN}}
-}
-
-void memset5_array_nonpod_object() {
- Derived array[10];
- clang_analyzer_eval(array[1].b_mem == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(array[1].d_mem == 2); // expected-warning{{UNKNOWN}}
- memset(array, 0, sizeof(array));
- clang_analyzer_eval(array[1].b_mem == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(array[1].d_mem == 0); // expected-warning{{TRUE}}
-}
-
-void memset6_new_array_nonpod_object() {
- Derived *array = new Derived[10];
- clang_analyzer_eval(array[2].b_mem == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(array[2].d_mem == 2); // expected-warning{{UNKNOWN}}
- memset(array, 0, 10 * sizeof(Derived));
- clang_analyzer_eval(array[2].b_mem == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(array[2].d_mem == 0); // expected-warning{{TRUE}}
- delete[] array;
-}
-
-void memset7_placement_new() {
- Derived *d = new Derived();
- clang_analyzer_eval(d->b_mem == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(d->d_mem == 2); // expected-warning{{TRUE}}
-
- memset(d, 0, sizeof(Derived));
- clang_analyzer_eval(d->b_mem == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(d->d_mem == 0); // expected-warning{{TRUE}}
-
- Derived *d1 = new (d) Derived();
- clang_analyzer_eval(d1->b_mem == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(d1->d_mem == 2); // expected-warning{{TRUE}}
-
- memset(d1, 0, sizeof(Derived));
- clang_analyzer_eval(d->b_mem == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(d->d_mem == 0); // expected-warning{{TRUE}}
-}
-
-class BaseVirtual {
-public:
- int b_mem;
- virtual int get() { return 1; }
-};
-
-class DerivedVirtual : public BaseVirtual {
-public:
- int d_mem;
-};
-
-#ifdef SUPPRESS_OUT_OF_BOUND
-void memset8_virtual_inheritance_field() {
- DerivedVirtual d;
- memset(&d.b_mem, 0, sizeof(Derived));
- clang_analyzer_eval(d.b_mem == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(d.d_mem == 0); // expected-warning{{UNKNOWN}}
-}
-#endif
-} // namespace memset_non_pod
-
-#ifdef SUPPRESS_OUT_OF_BOUND
-void memset1_new_array() {
- int *array = new int[10];
- memset(array, 0, 10 * sizeof(int));
- clang_analyzer_eval(array[2] == 0); // expected-warning{{TRUE}}
- memset(array + 1, 'a', 10 * sizeof(9));
- clang_analyzer_eval(array[2] == 0); // expected-warning{{UNKNOWN}}
- delete[] array;
-}
-#endif
diff --git a/test/Analysis/bug_hash_test.cpp b/test/Analysis/bug_hash_test.cpp
deleted file mode 100644
index f397d181e665..000000000000
--- a/test/Analysis/bug_hash_test.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,debug.ExprInspection %s -verify
-
-constexpr int clang_analyzer_hashDump(int) { return 5; }
-
-void function(int) {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$void function(int)$27$clang_analyzer_hashDump(5);$Category}}
-}
-
-namespace {
-void variadicParam(int, ...) {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$void (anonymous namespace)::variadicParam(int, ...)$27$clang_analyzer_hashDump(5);$Category}}
-}
-} // namespace
-
-constexpr int f() {
- return clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$int f()$34$returnclang_analyzer_hashDump(5);$Category}}
-}
-
-namespace AA {
-class X {
- X() {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$AA::X::X()$29$clang_analyzer_hashDump(5);$Category}}
- }
-
- static void static_method() {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$void AA::X::static_method()$29$clang_analyzer_hashDump(5);$Category}}
- variadicParam(5);
- }
-
- void method() && {
- struct Y {
- inline void method() const & {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$void AA::X::method()::Y::method() const &$33$clang_analyzer_hashDump(5);$Category}}
- }
- };
-
- Y y;
- y.method();
-
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$void AA::X::method() &&$29$clang_analyzer_hashDump(5);$Category}}
- }
-
- void OutOfLine();
-
- X &operator=(int) {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$class AA::X & AA::X::operator=(int)$29$clang_analyzer_hashDump(5);$Category}}
- return *this;
- }
-
- operator int() {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$AA::X::operator int()$29$clang_analyzer_hashDump(5);$Category}}
- return 0;
- }
-
- explicit operator float() {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$AA::X::operator float()$29$clang_analyzer_hashDump(5);$Category}}
- return 0;
- }
-};
-} // namespace AA
-
-void AA::X::OutOfLine() {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$void AA::X::OutOfLine()$27$clang_analyzer_hashDump(5);$Category}}
-}
-
-void testLambda() {
- []() {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$void testLambda()::(anonymous class)::operator()() const$29$clang_analyzer_hashDump(5);$Category}}
- }();
-}
-
-template <typename T>
-void f(T) {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$void f(T)$27$clang_analyzer_hashDump(5);$Category}}
-}
-
-template <typename T>
-struct TX {
- void f(T) {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$void TX::f(T)$29$clang_analyzer_hashDump(5);$Category}}
- }
-};
-
-template <>
-void f<long>(long) {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$void f(long)$27$clang_analyzer_hashDump(5);$Category}}
-}
-
-template <>
-struct TX<long> {
- void f(long) {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$void TX<long>::f(long)$29$clang_analyzer_hashDump(5);$Category}}
- }
-};
-
-template <typename T>
-struct TTX {
- template<typename S>
- void f(T, S) {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$void TTX::f(T, S)$29$clang_analyzer_hashDump(5);$Category}}
- }
-};
-
-void g() {
- // TX<int> and TX<double> is instantiated from the same code with the same
- // source locations. The same error happining in both of the instantiations
- // should share the common hash. This means we should not include the
- // template argument for these types in the function signature.
- // Note that, we still want the hash to be different for explicit
- // specializations.
- TX<int> x;
- TX<double> y;
- TX<long> xl;
- x.f(1);
- xl.f(1);
- f(5);
- f(3.0);
- y.f(2);
- TTX<int> z;
- z.f<int>(5, 5);
- f(5l);
-}
diff --git a/test/Analysis/bug_hash_test.m b/test/Analysis/bug_hash_test.m
deleted file mode 100644
index fbb70e5d626a..000000000000
--- a/test/Analysis/bug_hash_test.m
+++ /dev/null
@@ -1,36 +0,0 @@
-// RUN: %clang_analyze_cc1 -fblocks -analyzer-checker=core,debug.ExprInspection %s -verify
-
-void clang_analyzer_hashDump(int);
-
-@protocol NSObject
-+ (id)alloc;
-- (id)init;
-@end
-
-@protocol NSCopying
-@end
-
-__attribute__((objc_root_class))
-@interface NSObject <NSObject>
-- (void)method:(int)arg param:(int)arg2;
-@end
-
-@implementation NSObject
-+ (id)alloc {
- return 0;
-}
-- (id)init {
- return self;
-}
-- (void)method:(int)arg param:(int)arg2 {
- clang_analyzer_hashDump(5); // expected-warning {{debug.ExprInspection$NSObject::method:param:$27$clang_analyzer_hashDump(5);$Category}}
-}
-@end
-
-
-void testBlocks() {
- int x = 5;
- ^{
- clang_analyzer_hashDump(x); // expected-warning {{debug.ExprInspection$$29$clang_analyzer_hashDump(x);$Category}}
- }();
-}
diff --git a/test/Analysis/builtin-functions.cpp b/test/Analysis/builtin-functions.cpp
deleted file mode 100644
index da2fcf915d31..000000000000
--- a/test/Analysis/builtin-functions.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,debug.ExprInspection %s -std=c++11 -verify
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_warnIfReached();
-
-void testAddressof(int x) {
- clang_analyzer_eval(&x == __builtin_addressof(x)); // expected-warning{{TRUE}}
-}
-
-void testSize() {
- struct {
- int x;
- int y;
- char z;
- } object;
- clang_analyzer_eval(__builtin_object_size(&object.y, 0) == sizeof(object) - sizeof(int)); // expected-warning{{TRUE}}
-
- // Clang can't actually evaluate these builtin "calls", but importantly they don't actually evaluate the argument expression either.
- int i = 0;
- char buf[10];
- clang_analyzer_eval(__builtin_object_size(&buf[i++], 0) == sizeof(buf)); // expected-warning{{FALSE}}
- clang_analyzer_eval(__builtin_object_size(&buf[++i], 0) == sizeof(buf) - 1); // expected-warning{{FALSE}}
-
- clang_analyzer_eval(i == 0); // expected-warning{{TRUE}}
-}
-
-void test_assume_aligned_1(char *p) {
- char *q;
-
- q = (char*) __builtin_assume_aligned(p, 16);
- clang_analyzer_eval(p == q); // expected-warning{{TRUE}}
-}
-
-void test_assume_aligned_2(char *p) {
- char *q;
-
- q = (char*) __builtin_assume_aligned(p, 16, 8);
- clang_analyzer_eval(p == q); // expected-warning{{TRUE}}
-}
-
-void test_assume_aligned_3(char *p) {
- void *q;
-
- q = __builtin_assume_aligned(p, 16, 8);
- clang_analyzer_eval(p == q); // expected-warning{{TRUE}}
-}
-
-void test_assume_aligned_4(char *p) {
- char *q;
-
- q = (char*) __builtin_assume_aligned(p + 1, 16);
- clang_analyzer_eval(p == q); // expected-warning{{FALSE}}
-}
-
-void f(int i) {
- __builtin_assume(i < 10);
- clang_analyzer_eval(i < 15); // expected-warning {{TRUE}}
-}
-
-void g(int i) {
- if (i > 5) {
- __builtin_assume(i < 5);
- clang_analyzer_warnIfReached(); // Assumtion contradicts constraints.
- // We give up the analysis on this path.
- }
-}
-
-void test_constant_p() {
- int i = 1;
- const int j = 2;
- constexpr int k = 3;
- clang_analyzer_eval(__builtin_constant_p(42) == 1); // expected-warning {{TRUE}}
- clang_analyzer_eval(__builtin_constant_p(i) == 0); // expected-warning {{UNKNOWN}}
- clang_analyzer_eval(__builtin_constant_p(j) == 1); // expected-warning {{TRUE}}
- clang_analyzer_eval(__builtin_constant_p(k) == 1); // expected-warning {{TRUE}}
- clang_analyzer_eval(__builtin_constant_p(i + 42) == 0); // expected-warning {{UNKNOWN}}
- clang_analyzer_eval(__builtin_constant_p(j + 42) == 1); // expected-warning {{TRUE}}
- clang_analyzer_eval(__builtin_constant_p(k + 42) == 1); // expected-warning {{TRUE}}
- clang_analyzer_eval(__builtin_constant_p(" ") == 1); // expected-warning {{TRUE}}
- clang_analyzer_eval(__builtin_constant_p(test_constant_p) == 0); // expected-warning {{UNKNOWN}}
- clang_analyzer_eval(__builtin_constant_p(k - 3) == 0); // expected-warning {{FALSE}}
- clang_analyzer_eval(__builtin_constant_p(k - 3) == 1); // expected-warning {{TRUE}}
-}
diff --git a/test/Analysis/builtin_signbit.cpp b/test/Analysis/builtin_signbit.cpp
deleted file mode 100644
index bf91511c43ce..000000000000
--- a/test/Analysis/builtin_signbit.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-// RUN: %clang -target powerpc-linux-gnu -emit-llvm -S -O0 %s -o - | FileCheck %s --check-prefix=CHECK-BE --check-prefix=CHECK
-// RUN: %clang -target powerpc64-linux-gnu -emit-llvm -S -O0 %s -o - | FileCheck %s --check-prefix=CHECK-BE --check-prefix=CHECK
-// RUN: %clang -target powerpc64le-linux-gnu -emit-llvm -S -O0 %s -o - | FileCheck %s --check-prefix=CHECK-LE --check-prefix=CHECK
-
-bool b;
-double d = -1.0;
-long double ld = -1.0L;
-void test_signbit()
-{
- b = __builtin_signbit(1.0L);
- // CHECK: i128
- // CHECK-LE-NOT: lshr
- // CHECK-BE: lshr
- // CHECK: bitcast
- // CHECK: ppc_fp128
-
- b = __builtin_signbit(ld);
- // CHECK: bitcast
- // CHECK: ppc_fp128
- // CHECK-LE-NOT: lshr
- // CHECK-BE: lshr
-
- b = __builtin_signbitf(1.0);
- // CHECK: store i8 0
-
- b = __builtin_signbitf(d);
- // CHECK: bitcast
- // CHECK-LE-NOT: lshr
- // CHECK-BE-NOT: lshr
-
- b = __builtin_signbitl(1.0L);
- // CHECK: i128
- // CHECK-LE-NOT: lshr
- // CHECK-BE: lshr
- // CHECK: bitcast
- // CHECK: ppc_fp128
-
- b = __builtin_signbitl(ld);
- // CHECK: bitcast
- // CHECK: ppc_fp128
- // CHECK-LE-NOT: lshr
- // CHECK-BE: lshr
-}
diff --git a/test/Analysis/call-invalidation.cpp b/test/Analysis/call-invalidation.cpp
deleted file mode 100644
index c107e1070544..000000000000
--- a/test/Analysis/call-invalidation.cpp
+++ /dev/null
@@ -1,167 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(bool);
-
-void usePointer(int * const *);
-void useReference(int * const &);
-
-void testPointer() {
- int x;
- int *p;
-
- p = &x;
- x = 42;
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
- usePointer(&p);
- clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-
- p = &x;
- x = 42;
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
- useReference(p);
- clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-
- int * const cp1 = &x;
- x = 42;
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
- usePointer(&cp1);
- clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-
- int * const cp2 = &x;
- x = 42;
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
- useReference(cp2);
- clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-}
-
-
-struct Wrapper {
- int *ptr;
-};
-
-void useStruct(Wrapper &w);
-void useConstStruct(const Wrapper &w);
-
-void testPointerStruct() {
- int x;
- Wrapper w;
-
- w.ptr = &x;
- x = 42;
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
- useStruct(w);
- clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-
- w.ptr = &x;
- x = 42;
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
- useConstStruct(w);
- clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-}
-
-
-struct RefWrapper {
- int &ref;
-};
-
-void useStruct(RefWrapper &w);
-void useConstStruct(const RefWrapper &w);
-
-void testReferenceStruct() {
- int x;
- RefWrapper w = { x };
-
- x = 42;
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
- useStruct(w);
- clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-}
-
-// FIXME: This test is split into two functions because region invalidation
-// does not preserve reference bindings. <rdar://problem/13320347>
-void testConstReferenceStruct() {
- int x;
- RefWrapper w = { x };
-
- x = 42;
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
- useConstStruct(w);
- clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-}
-
-
-void usePointerPure(int * const *) __attribute__((pure));
-void usePointerConst(int * const *) __attribute__((const));
-
-void testPureConst() {
- extern int global;
- int x;
- int *p;
-
- p = &x;
- x = 42;
- global = -5;
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(global == -5); // expected-warning{{TRUE}}
-
- usePointerPure(&p);
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(global == -5); // expected-warning{{TRUE}}
-
- usePointerConst(&p);
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(global == -5); // expected-warning{{TRUE}}
-
- usePointer(&p);
- clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(global == -5); // expected-warning{{UNKNOWN}}
-}
-
-
-struct PlainStruct {
- int x, y;
- mutable int z;
-};
-
-PlainStruct glob;
-
-void useAnything(void *);
-void useAnythingConst(const void *);
-
-void testInvalidationThroughBaseRegionPointer() {
- PlainStruct s1;
- s1.x = 1;
- s1.z = 1;
- clang_analyzer_eval(s1.x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(s1.z == 1); // expected-warning{{TRUE}}
- // Not only passing a structure pointer through const pointer parameter,
- // but also passing a field pointer through const pointer parameter
- // should preserve the contents of the structure.
- useAnythingConst(&(s1.y));
- clang_analyzer_eval(s1.x == 1); // expected-warning{{TRUE}}
- // FIXME: Should say "UNKNOWN", because it is not uncommon to
- // modify a mutable member variable through const pointer.
- clang_analyzer_eval(s1.z == 1); // expected-warning{{TRUE}}
- useAnything(&(s1.y));
- clang_analyzer_eval(s1.x == 1); // expected-warning{{UNKNOWN}}
-}
-
-
-void useFirstConstSecondNonConst(const void *x, void *y);
-void useFirstNonConstSecondConst(void *x, const void *y);
-
-void testMixedConstNonConstCalls() {
- PlainStruct s2;
- s2.x = 1;
- useFirstConstSecondNonConst(&(s2.x), &(s2.y));
- clang_analyzer_eval(s2.x == 1); // expected-warning{{UNKNOWN}}
- s2.x = 1;
- useFirstNonConstSecondConst(&(s2.x), &(s2.y));
- clang_analyzer_eval(s2.x == 1); // expected-warning{{UNKNOWN}}
- s2.y = 1;
- useFirstConstSecondNonConst(&(s2.x), &(s2.y));
- clang_analyzer_eval(s2.y == 1); // expected-warning{{UNKNOWN}}
- s2.y = 1;
- useFirstNonConstSecondConst(&(s2.x), &(s2.y));
- clang_analyzer_eval(s2.y == 1); // expected-warning{{UNKNOWN}}
-}
diff --git a/test/Analysis/call_once.cpp b/test/Analysis/call_once.cpp
deleted file mode 100644
index 344de8090787..000000000000
--- a/test/Analysis/call_once.cpp
+++ /dev/null
@@ -1,414 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -fblocks -analyzer-checker=core,debug.ExprInspection -verify %s -o %t.report
-// RUN: %clang_analyze_cc1 -std=c++11 -fblocks -analyzer-checker=core,debug.ExprInspection -DEMULATE_LIBSTDCPP -verify %s -o %t.report
-
-// We do NOT model libcxx03 implementation, but the analyzer should still
-// not crash.
-// RUN: %clang_analyze_cc1 -std=c++11 -fblocks -analyzer-checker=core,debug.ExprInspection -DEMULATE_LIBCXX03 -verify %s -o %t.report
-// RUN: %clang_analyze_cc1 -std=c++11 -fblocks -analyzer-checker=core,debug.ExprInspection -DEMULATE_LIBCXX03 -DEMULATE_LIBSTDCPP -verify %s -o %t.report
-// RUN: rm -rf %t.report
-
-void clang_analyzer_eval(bool);
-
-// Faking std::call_once implementation.
-namespace std {
-
-// Fake std::function implementation.
-template <typename>
-class function;
-class function_base {
- public:
- long field;
-};
-template <typename R, typename... P>
-class function<R(P...)> : function_base {
- public:
- R operator()(P...) const {
-
- // Read from a super-class necessary to reproduce a crash.
- bool a = field;
- }
-};
-
-#ifndef EMULATE_LIBSTDCPP
-typedef struct once_flag_s {
- unsigned long __state_ = 0;
-} once_flag;
-#else
-typedef struct once_flag_s {
- int _M_once = 0;
-} once_flag;
-#endif
-
-#ifndef EMULATE_LIBCXX03
-template <class Callable, class... Args>
-void call_once(once_flag &o, Callable&& func, Args&&... args) {};
-#else
-template <class Callable, class... Args> // libcxx03 call_once
-void call_once(once_flag &o, Callable func, Args&&... args) {};
-#endif
-
-} // namespace std
-
-// Check with Lambdas.
-void test_called_warning() {
- std::once_flag g_initialize;
- int z;
-
- std::call_once(g_initialize, [&] {
- int *x = nullptr;
-#ifndef EMULATE_LIBCXX03
- int y = *x; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}}
-#endif
- z = 200;
- });
-}
-
-void test_called_on_path_inside_no_warning() {
- std::once_flag g_initialize;
-
- int *x = nullptr;
- int y = 100;
- int z;
-
- std::call_once(g_initialize, [&] {
- z = 200;
- x = &z;
- });
-
-#ifndef EMULATE_LIBCXX03
- *x = 100; // no-warning
- clang_analyzer_eval(z == 100); // expected-warning{{TRUE}}
-#endif
-}
-
-void test_called_on_path_no_warning() {
- std::once_flag g_initialize;
-
- int *x = nullptr;
- int y = 100;
-
- std::call_once(g_initialize, [&] {
- x = &y;
- });
-
-#ifndef EMULATE_LIBCXX03
- *x = 100; // no-warning
-#else
- *x = 100; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}}
-#endif
-}
-
-void test_called_on_path_warning() {
- std::once_flag g_initialize;
-
- int y = 100;
- int *x = &y;
-
- std::call_once(g_initialize, [&] {
- x = nullptr;
- });
-
-#ifndef EMULATE_LIBCXX03
- *x = 100; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}}
-#endif
-}
-
-void test_called_once_warning() {
- std::once_flag g_initialize;
-
- int *x = nullptr;
- int y = 100;
-
- std::call_once(g_initialize, [&] {
- x = nullptr;
- });
-
- std::call_once(g_initialize, [&] {
- x = &y;
- });
-
-#ifndef EMULATE_LIBCXX03
- *x = 100; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}}
-#endif
-}
-
-void test_called_once_no_warning() {
- std::once_flag g_initialize;
-
- int *x = nullptr;
- int y = 100;
-
- std::call_once(g_initialize, [&] {
- x = &y;
- });
-
- std::call_once(g_initialize, [&] {
- x = nullptr;
- });
-
-#ifndef EMULATE_LIBCXX03
- *x = 100; // no-warning
-#endif
-}
-
-static int global = 0;
-void funcPointer() {
- global = 1;
-}
-
-void test_func_pointers() {
- static std::once_flag flag;
- std::call_once(flag, &funcPointer);
-#ifndef EMULATE_LIBCXX03
- clang_analyzer_eval(global == 1); // expected-warning{{TRUE}}
-#endif
-}
-
-template <class _Fp>
-class function; // undefined
-template <class _Rp, class... _ArgTypes>
-struct function<_Rp(_ArgTypes...)> {
- _Rp operator()(_ArgTypes...) const {};
- template <class _Fp>
- function(_Fp) {};
-};
-
-// Note: currently we do not support calls to std::function,
-// but the analyzer should not crash either.
-void test_function_objects_warning() {
- int x = 0;
- int *y = &x;
-
- std::once_flag flag;
-
- function<void()> func = [&]() {
- y = nullptr;
- };
-
- std::call_once(flag, func);
-
- func();
- int z = *y;
-}
-
-void test_param_passing_lambda() {
- std::once_flag flag;
- int x = 120;
- int y = 0;
-
- std::call_once(flag, [&](int p) {
- y = p;
- },
- x);
-
-#ifndef EMULATE_LIBCXX03
- clang_analyzer_eval(y == 120); // expected-warning{{TRUE}}
-#endif
-}
-
-void test_param_passing_lambda_false() {
- std::once_flag flag;
- int x = 120;
-
- std::call_once(flag, [&](int p) {
- x = 0;
- },
- x);
-
-#ifndef EMULATE_LIBCXX03
- clang_analyzer_eval(x == 120); // expected-warning{{FALSE}}
-#endif
-}
-
-void test_param_passing_stored_lambda() {
- std::once_flag flag;
- int x = 120;
- int y = 0;
-
- auto lambda = [&](int p) {
- y = p;
- };
-
- std::call_once(flag, lambda, x);
-#ifndef EMULATE_LIBCXX03
- clang_analyzer_eval(y == 120); // expected-warning{{TRUE}}
-#endif
-}
-
-void test_multiparam_passing_lambda() {
- std::once_flag flag;
- int x = 120;
-
- std::call_once(flag, [&](int a, int b, int c) {
- x = a + b + c;
- },
- 1, 2, 3);
-
-#ifndef EMULATE_LIBCXX03
- clang_analyzer_eval(x == 120); // expected-warning{{FALSE}}
- clang_analyzer_eval(x == 6); // expected-warning{{TRUE}}
-#endif
-}
-
-static int global2 = 0;
-void test_param_passing_lambda_global() {
- std::once_flag flag;
- global2 = 0;
- std::call_once(flag, [&](int a, int b, int c) {
- global2 = a + b + c;
- },
- 1, 2, 3);
-#ifndef EMULATE_LIBCXX03
- clang_analyzer_eval(global2 == 6); // expected-warning{{TRUE}}
-#endif
-}
-
-static int global3 = 0;
-void funcptr(int a, int b, int c) {
- global3 = a + b + c;
-}
-
-void test_param_passing_funcptr() {
- std::once_flag flag;
- global3 = 0;
-
- std::call_once(flag, &funcptr, 1, 2, 3);
-
-#ifndef EMULATE_LIBCXX03
- clang_analyzer_eval(global3 == 6); // expected-warning{{TRUE}}
-#endif
-}
-
-void test_blocks() {
- global3 = 0;
- std::once_flag flag;
- std::call_once(flag, ^{
- global3 = 120;
- });
-#ifndef EMULATE_LIBCXX03
- clang_analyzer_eval(global3 == 120); // expected-warning{{TRUE}}
-#endif
-}
-
-int call_once() {
- return 5;
-}
-
-void test_non_std_call_once() {
- int x = call_once();
-#ifndef EMULATE_LIBCXX03
- clang_analyzer_eval(x == 5); // expected-warning{{TRUE}}
-#endif
-}
-
-namespace std {
-template <typename d, typename e>
-void call_once(d, e);
-}
-void g();
-void test_no_segfault_on_different_impl() {
-#ifndef EMULATE_LIBCXX03
- std::call_once(g, false); // no-warning
-#endif
-}
-
-void test_lambda_refcapture() {
- static std::once_flag flag;
- int a = 6;
- std::call_once(flag, [&](int &a) { a = 42; }, a);
-#ifndef EMULATE_LIBCXX03
- clang_analyzer_eval(a == 42); // expected-warning{{TRUE}}
-#endif
-}
-
-void test_lambda_refcapture2() {
- static std::once_flag flag;
- int a = 6;
- std::call_once(flag, [=](int &a) { a = 42; }, a);
-#ifndef EMULATE_LIBCXX03
- clang_analyzer_eval(a == 42); // expected-warning{{TRUE}}
-#endif
-}
-
-void test_lambda_fail_refcapture() {
- static std::once_flag flag;
- int a = 6;
- std::call_once(flag, [=](int a) { a = 42; }, a);
-#ifndef EMULATE_LIBCXX03
- clang_analyzer_eval(a == 42); // expected-warning{{FALSE}}
-#endif
-}
-
-void mutator(int &param) {
- param = 42;
-}
-void test_reftypes_funcptr() {
- static std::once_flag flag;
- int a = 6;
- std::call_once(flag, &mutator, a);
-#ifndef EMULATE_LIBCXX03
- clang_analyzer_eval(a == 42); // expected-warning{{TRUE}}
-#endif
-}
-
-void fail_mutator(int param) {
- param = 42;
-}
-void test_mutator_noref() {
- static std::once_flag flag;
- int a = 6;
- std::call_once(flag, &fail_mutator, a);
-#ifndef EMULATE_LIBCXX03
- clang_analyzer_eval(a == 42); // expected-warning{{FALSE}}
-#endif
-}
-
-// Function is implicitly treated as a function pointer
-// even when an ampersand is not explicitly set.
-void callbackn(int &param) {
- param = 42;
-}
-void test_implicit_funcptr() {
- int x = 0;
- static std::once_flag flagn;
-
- std::call_once(flagn, callbackn, x);
-#ifndef EMULATE_LIBCXX03
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-#endif
-}
-
-int param_passed(int *x) {
- return *x; // no-warning, as std::function is not working yet.
-}
-
-void callback_taking_func_ok(std::function<void(int*)> &innerCallback) {
- innerCallback(nullptr);
-}
-
-// The provided callback expects an std::function, but instead a pointer
-// to a C++ function is provided.
-void callback_with_implicit_cast_ok() {
- std::once_flag flag;
- call_once(flag, callback_taking_func_ok, &param_passed);
-}
-
-void callback_taking_func(std::function<void()> &innerCallback) {
- innerCallback();
-}
-
-// The provided callback expects an std::function, but instead a C function
-// name is provided, and C++ implicitly auto-constructs a pointer from it.
-void callback_with_implicit_cast() {
- std::once_flag flag;
- call_once(flag, callback_taking_func, callback_with_implicit_cast);
-}
-
-std::once_flag another_once_flag;
-typedef void (*my_callback_t)(int *);
-my_callback_t callback;
-int global_int;
-
-void rdar40270582() {
- call_once(another_once_flag, callback, &global_int);
-}
diff --git a/test/Analysis/cast-to-struct.cpp b/test/Analysis/cast-to-struct.cpp
deleted file mode 100644
index c3aba023c56e..000000000000
--- a/test/Analysis/cast-to-struct.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.core.CastToStruct,core -verify %s
-
-struct AB {
- int A;
- int B;
-};
-
-struct ABC {
- int A;
- int B;
- int C;
-};
-
-struct Base {
- Base() : A(0), B(0) {}
- virtual ~Base() {}
-
- int A;
- int B;
-};
-
-struct Derived : public Base {
- Derived() : Base(), C(0) {}
- int C;
-};
-
-void structToStruct(struct AB *P) {
- struct AB Ab;
- struct ABC *Abc;
- Abc = (struct ABC *)&Ab; // expected-warning {{Casting data to a larger structure type and accessing a field can lead to memory access errors or data corruption}}
- Abc = (struct ABC *)P; // No warning; It is not known what data P points at.
- Abc = (struct ABC *)&*P;
-
- // Don't warn when the cast is not widening.
- P = (struct AB *)&Ab; // struct AB * => struct AB *
- struct ABC Abc2;
- P = (struct AB *)&Abc2; // struct ABC * => struct AB *
-
- // True negatives when casting from Base to Derived.
- Derived D1, *D2;
- Base &B1 = D1;
- D2 = (Derived *)&B1;
- D2 = dynamic_cast<Derived *>(&B1);
- D2 = static_cast<Derived *>(&B1);
-
- // True positives when casting from Base to Derived.
- Base B2;
- D2 = (Derived *)&B2;// expected-warning {{Casting data to a larger structure type and accessing a field can lead to memory access errors or data corruption}}
- D2 = dynamic_cast<Derived *>(&B2);// expected-warning {{Casting data to a larger structure type and accessing a field can lead to memory access errors or data corruption}}
- D2 = static_cast<Derived *>(&B2);// expected-warning {{Casting data to a larger structure type and accessing a field can lead to memory access errors or data corruption}}
-
- // False negatives, cast from Base to Derived. With path sensitive analysis
- // these false negatives could be fixed.
- Base *B3 = &B2;
- D2 = (Derived *)B3;
- D2 = dynamic_cast<Derived *>(B3);
- D2 = static_cast<Derived *>(B3);
-}
-
-void intToStruct(int *P) {
- struct ABC *Abc;
- Abc = (struct ABC *)P; // expected-warning {{Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption}}
-
- // Cast from void *.
- void *VP = P;
- Abc = (struct ABC *)VP;
-}
-
-// https://llvm.org/bugs/show_bug.cgi?id=31173
-void dontCrash1(struct AB X) {
- struct UndefS *S = (struct UndefS *)&X;
-}
-
-struct S;
-struct T {
- struct S *P;
-};
-extern struct S Var1, Var2;
-void dontCrash2() {
- ((struct T *) &Var1)->P = &Var2;
-}
diff --git a/test/Analysis/castexpr-callback.c b/test/Analysis/castexpr-callback.c
deleted file mode 100644
index 3b46093db9ae..000000000000
--- a/test/Analysis/castexpr-callback.c
+++ /dev/null
@@ -1,10 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.AnalysisOrder -analyzer-config debug.AnalysisOrder:PreStmtCastExpr=true,debug.AnalysisOrder:PostStmtCastExpr=true %s 2>&1 | FileCheck %s
-
-void test(char c) {
- int i = (int)c;
-}
-
-// CHECK: PreStmt<CastExpr> (Kind : LValueToRValue)
-// CHECK-NEXT: PostStmt<CastExpr> (Kind : LValueToRValue)
-// CHECK-NEXT: PreStmt<CastExpr> (Kind : IntegralCast)
-// CHECK-NEXT: PostStmt<CastExpr> (Kind : IntegralCast)
diff --git a/test/Analysis/casts.c b/test/Analysis/casts.c
deleted file mode 100644
index 2d96aa3571d3..000000000000
--- a/test/Analysis/casts.c
+++ /dev/null
@@ -1,247 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin9 -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin9 -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin9 -analyzer-checker=core,alpha.core,debug.ExprInspection -verify -DEAGERLY_ASSUME=1 -w %s
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin9 -analyzer-checker=core,alpha.core,debug.ExprInspection -verify -DEAGERLY_ASSUME=1 -DBIT32=1 -w %s
-
-extern void clang_analyzer_eval(_Bool);
-
-// Test if the 'storage' region gets properly initialized after it is cast to
-// 'struct sockaddr *'.
-
-typedef unsigned char __uint8_t;
-typedef unsigned int __uint32_t;
-typedef __uint32_t __darwin_socklen_t;
-typedef __uint8_t sa_family_t;
-typedef __darwin_socklen_t socklen_t;
-struct sockaddr { sa_family_t sa_family; };
-struct sockaddr_storage {};
-
-void getsockname();
-
-#ifndef EAGERLY_ASSUME
-
-void f(int sock) {
- struct sockaddr_storage storage;
- struct sockaddr* sockaddr = (struct sockaddr*)&storage; // expected-warning{{Casting data to a larger structure type and accessing a field can lead to memory access errors or data corruption}}
- socklen_t addrlen = sizeof(storage);
- getsockname(sock, sockaddr, &addrlen);
- switch (sockaddr->sa_family) { // no-warning
- default:
- ;
- }
-}
-
-struct s {
- struct s *value;
-};
-
-void f1(struct s **pval) {
- int *tbool = ((void*)0);
- struct s *t = *pval;
- pval = &(t->value);
- tbool = (int *)pval; // use the cast-to type 'int *' to create element region.
- char c = (unsigned char) *tbool; // Should use cast-to type to create symbol.
- if (*tbool == -1) // here load the element region with the correct type 'int'
- (void)3;
-}
-
-void f2(const char *str) {
- unsigned char ch, cl, *p;
-
- p = (unsigned char *)str;
- ch = *p++; // use cast-to type 'unsigned char' to create element region.
- cl = *p++;
- if(!cl)
- cl = 'a';
-}
-
-// Test cast VariableSizeArray to pointer does not crash.
-void *memcpy(void *, void const *, unsigned long);
-typedef unsigned char Byte;
-void doit(char *data, int len) {
- if (len) {
- Byte buf[len];
- memcpy(buf, data, len);
- }
-}
-
-// PR 6013 and 6035 - Test that a cast of a pointer to long and then to int does not crash SValuator.
-void pr6013_6035_test(void *p) {
- unsigned int foo;
- foo = ((long)(p));
- (void) foo;
-}
-
-// PR12511 and radar://11215362 - Test that we support SymCastExpr, which represents symbolic int to float cast.
-char ttt(int intSeconds) {
- double seconds = intSeconds;
- if (seconds)
- return 0;
- return 0;
-}
-
-int foo (int* p) {
- int y = 0;
- if (p == 0) {
- if ((*((void**)&p)) == (void*)0) // Test that the cast to void preserves the symbolic region.
- return 0;
- else
- return 5/y; // This code should be unreachable: no-warning.
- }
- return 0;
-}
-
-void castsToBool() {
- clang_analyzer_eval(0); // expected-warning{{FALSE}}
- clang_analyzer_eval(0U); // expected-warning{{FALSE}}
- clang_analyzer_eval((void *)0); // expected-warning{{FALSE}}
-
- clang_analyzer_eval(1); // expected-warning{{TRUE}}
- clang_analyzer_eval(1U); // expected-warning{{TRUE}}
- clang_analyzer_eval(-1); // expected-warning{{TRUE}}
- clang_analyzer_eval(0x100); // expected-warning{{TRUE}}
- clang_analyzer_eval(0x100U); // expected-warning{{TRUE}}
- clang_analyzer_eval((void *)0x100); // expected-warning{{TRUE}}
-
- extern int symbolicInt;
- clang_analyzer_eval(symbolicInt); // expected-warning{{UNKNOWN}}
- if (symbolicInt)
- clang_analyzer_eval(symbolicInt); // expected-warning{{TRUE}}
-
- extern void *symbolicPointer;
- clang_analyzer_eval(symbolicPointer); // expected-warning{{UNKNOWN}}
- if (symbolicPointer)
- clang_analyzer_eval(symbolicPointer); // expected-warning{{TRUE}}
-
- int localInt;
- int* ptr = &localInt;
- clang_analyzer_eval(ptr); // expected-warning{{TRUE}}
- clang_analyzer_eval(&castsToBool); // expected-warning{{TRUE}}
- clang_analyzer_eval("abc"); // expected-warning{{TRUE}}
-
- extern float globalFloat;
- clang_analyzer_eval(globalFloat); // expected-warning{{UNKNOWN}}
-}
-
-void locAsIntegerCasts(void *p) {
- int x = (int) p;
- clang_analyzer_eval(++x < 10); // no-crash // expected-warning{{UNKNOWN}}
-}
-
-void multiDimensionalArrayPointerCasts() {
- static int x[10][10];
- int *y1 = &(x[3][5]);
- char *z = ((char *) y1) + 2;
- int *y2 = (int *)(z - 2);
- int *y3 = ((int *)x) + 35; // This is offset for [3][5].
-
- clang_analyzer_eval(y1 == y2); // expected-warning{{TRUE}}
-
- // FIXME: should be FALSE (i.e. equal pointers).
- clang_analyzer_eval(y1 - y2); // expected-warning{{UNKNOWN}}
- // FIXME: should be TRUE (i.e. same symbol).
- clang_analyzer_eval(*y1 == *y2); // expected-warning{{UNKNOWN}}
-
- clang_analyzer_eval(*((char *)y1) == *((char *) y2)); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(y1 == y3); // expected-warning{{TRUE}}
-
- // FIXME: should be FALSE (i.e. equal pointers).
- clang_analyzer_eval(y1 - y3); // expected-warning{{UNKNOWN}}
- // FIXME: should be TRUE (i.e. same symbol).
- clang_analyzer_eval(*y1 == *y3); // expected-warning{{UNKNOWN}}
-
- clang_analyzer_eval(*((char *)y1) == *((char *) y3)); // expected-warning{{TRUE}}
-}
-
-void *getVoidPtr();
-
-void testCastVoidPtrToIntPtrThroughIntTypedAssignment() {
- int *x;
- (*((int *)(&x))) = (int)getVoidPtr();
- *x = 1; // no-crash
-}
-
-void testCastUIntPtrToIntPtrThroughIntTypedAssignment() {
- unsigned u;
- int *x;
- (*((int *)(&x))) = (int)&u;
- *x = 1;
- clang_analyzer_eval(u == 1); // expected-warning{{TRUE}}
-}
-
-void testCastVoidPtrToIntPtrThroughUIntTypedAssignment() {
- int *x;
- (*((int *)(&x))) = (int)(unsigned *)getVoidPtr();
- *x = 1; // no-crash
-}
-
-void testLocNonLocSymbolAssume(int a, int *b) {
- if ((int)b < a) {} // no-crash
-}
-
-void testLocNonLocSymbolRemainder(int a, int *b) {
- int c = ((int)b) % a;
- if (a == 1) {
- c += 1;
- }
-}
-
-void testSwitchWithSizeofs() {
- switch (sizeof(char) == 1) { // expected-warning{{switch condition has boolean value}}
- case sizeof(char):; // no-crash
- }
-}
-
-#endif
-
-#ifdef EAGERLY_ASSUME
-
-int globalA;
-extern int globalFunc();
-void no_crash_on_symsym_cast_to_long() {
- char c = globalFunc() - 5;
- c == 0;
- globalA -= c;
- globalA == 3;
- (long)globalA << 48;
- #ifdef BIT32
- // expected-warning@-2{{The result of the left shift is undefined due to shifting by '48', which is greater or equal to the width of type 'long'}}
- #else
- // expected-no-diagnostics
- #endif
-}
-
-#endif
-
-char no_crash_SymbolCast_of_float_type_aux(int *p) {
- *p += 1;
- return *p;
-}
-
-void no_crash_SymbolCast_of_float_type() {
- extern float x;
- char (*f)() = no_crash_SymbolCast_of_float_type_aux;
- f(&x);
-}
-
-double no_crash_reinterpret_double_as_int(double a) {
- *(int *)&a = 1;
- return a * a;
-}
-
-double no_crash_reinterpret_double_as_ptr(double a) {
- *(void **)&a = 0;
- return a * a;
-}
-
-double no_crash_reinterpret_double_as_sym_int(double a, int b) {
- *(int *)&a = b;
- return a * a;
-}
-
-double no_crash_reinterpret_double_as_sym_ptr(double a, void * b) {
- *(void **)&a = b;
- return a * a;
-}
-
diff --git a/test/Analysis/casts.cpp b/test/Analysis/casts.cpp
deleted file mode 100644
index aa2bd9c1fadc..000000000000
--- a/test/Analysis/casts.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++14 -analyzer-checker=core,debug.ExprInspection -analyzer-store=region -verify %s
-
-void clang_analyzer_eval(bool);
-
-bool PR14634(int x) {
- double y = (double)x;
- return !y;
-}
-
-bool PR14634_implicit(int x) {
- double y = (double)x;
- return y;
-}
-
-void intAsBoolAsSwitchCondition(int c) {
- switch ((bool)c) { // expected-warning {{switch condition has boolean value}}
- case 0:
- break;
- }
-
- switch ((int)(bool)c) { // no-warning
- case 0:
- break;
- }
-}
-
-int *&castToIntPtrLValueRef(char *p) {
- return (int *&)*(int *)p;
-}
-bool testCastToIntPtrLValueRef(char *p, int *s) {
- return castToIntPtrLValueRef(p) != s; // no-crash
-}
-
-int *&&castToIntPtrRValueRef(char *p) {
- return (int *&&)*(int *)p;
-}
-bool testCastToIntPtrRValueRef(char *p, int *s) {
- return castToIntPtrRValueRef(p) != s; // no-crash
-}
-
-bool retrievePointerFromBoolean(int *p) {
- bool q;
- *reinterpret_cast<int **>(&q) = p;
- return q;
-}
-
-namespace base_to_derived {
-struct A {};
-struct B : public A{};
-
-void foo(A* a) {
- B* b = (B* ) a;
- A* a2 = (A *) b;
- clang_analyzer_eval(a2 == a); // expected-warning{{TRUE}}
-}
-}
-
-namespace base_to_derived_double_inheritance {
-struct A {
- int x;
-};
-struct B {
- int y;
-};
-struct C : A, B {};
-
-void foo(B *b) {
- C *c = (C *)b;
- b->y = 1;
- clang_analyzer_eval(c->x); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(c->y); // expected-warning{{TRUE}}
-}
-} // namespace base_to_derived_double_inheritance
-
-namespace base_to_derived_opaque_class {
-class NotInt {
-public:
- operator int() { return !x; } // no-crash
- int x;
-};
-
-typedef struct Opaque *OpaqueRef;
-typedef void *VeryOpaqueRef;
-
-class Transparent {
-public:
- int getNotInt() { return NI; }
- NotInt NI;
-};
-
-class SubTransparent : public Transparent {};
-
-SubTransparent *castToDerived(Transparent *TRef) {
- return (SubTransparent *)TRef;
-}
-
-void foo(OpaqueRef ORef) {
- castToDerived(reinterpret_cast<Transparent *>(ORef))->getNotInt();
-}
-
-void foo(VeryOpaqueRef ORef) {
- castToDerived(reinterpret_cast<Transparent *>(ORef))->getNotInt();
-}
-} // namespace base_to_derived_opaque_class
-
-namespace bool_to_nullptr {
-struct S {
- int *a[1];
- bool b;
-};
-void foo(S s) {
- s.b = true;
- for (int i = 0; i < 2; ++i)
- (void)(s.a[i] != nullptr); // no-crash
-}
-} // namespace bool_to_nullptr
diff --git a/test/Analysis/casts.m b/test/Analysis/casts.m
deleted file mode 100644
index 5c81ae6ffbe6..000000000000
--- a/test/Analysis/casts.m
+++ /dev/null
@@ -1,46 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-// Test function pointer casts.
-typedef void* (*MyFuncTest1)(void);
-
-MyFuncTest1 test1_aux(void);
-void test1(void) {
- void *x;
- void* (*p)(void);
- p = ((void*) test1_aux());
- if (p != ((void*) 0)) x = (*p)();
-}
-
-// Test casts from void* to function pointers.
-void* test2(void *p) {
- MyFuncTest1 fp = (MyFuncTest1) p;
- return (*fp)();
-}
-
-// <radar://10087620>
-// A cast from int onjective C property reference to int.
-typedef signed char BOOL;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {} - (id)init; @end
-typedef enum {
- EEOne,
- EETwo
-} RDR10087620Enum;
-@interface RDR10087620 : NSObject {
- RDR10087620Enum elem;
-}
-@property (readwrite, nonatomic) RDR10087620Enum elem;
-@end
-
-static void
-adium_media_ready_cb(RDR10087620 *InObj)
-{
- InObj.elem |= EEOne;
-}
-
-
-// PR16690
-_Bool testLocAsIntegerToBool() {
- return (long long)&testLocAsIntegerToBool;
-}
diff --git a/test/Analysis/cfg-indirect-goto-determinism.cpp b/test/Analysis/cfg-indirect-goto-determinism.cpp
deleted file mode 100644
index 895535e0c712..000000000000
--- a/test/Analysis/cfg-indirect-goto-determinism.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG %s 2>&1 | FileCheck %s
-
-void *target;
-int indirectBlockSuccessorDeterminism() {
- (void)&&L1;
- (void)&&L2;
- (void)&&L3;
- (void)&&L4;
- (void)&&L5;
- (void)&&L6;
- (void)&&L7;
- (void)&&L8;
- (void)&&L9;
- (void)&&L10;
- (void)&&L11;
- (void)&&L12;
- (void)&&L13;
- (void)&&L14;
- (void)&&L15;
- (void)&&L16;
- (void)&&L17;
- (void)&&L18;
- (void)&&L19;
- (void)&&L20;
- (void)&&L21;
- (void)&&L22;
- (void)&&L23;
- (void)&&L24;
- (void)&&L25;
- (void)&&L26;
- (void)&&L27;
- (void)&&L28;
- (void)&&L29;
- (void)&&L30;
- (void)&&L31;
- (void)&&L32;
- (void)&&L33;
- (void)&&L34;
- (void)&&L35;
- (void)&&L36;
- (void)&&L37;
- (void)&&L38;
- (void)&&L39;
- (void)&&L40;
-
- goto *target;
- L1:
- L2:
- L3:
- L4:
- L5:
- L6:
- L7:
- L8:
- L9:
- L10:
- L11:
- L12:
- L13:
- L14:
- L15:
- L16:
- L17:
- L18:
- L19:
- L20:
- L21:
- L22:
- L23:
- L24:
- L25:
- L26:
- L27:
- L28:
- L29:
- L30:
- L31:
- L32:
- L33:
- L34:
- L35:
- L36:
- L37:
- L38:
- L39:
- L40:
- return 0;
-}
-
-// CHECK-LABEL: [B41 (INDIRECT GOTO DISPATCH)]
-// CHECK-NEXT: Preds (1): B42
-// CHECK-NEXT: Succs (40): B1 B2 B3 B4 B5 B6 B7 B8
-// CHECK-NEXT: B9 B10 B11 B12 B13 B14 B15 B16 B17 B18
-// CHECK-NEXT: B19 B20 B21 B22 B23 B24 B25 B26 B27 B28
-// CHECK-NEXT: B29 B30 B31 B32 B33 B34 B35 B36 B37 B38
-// CHECK-NEXT: B39 B40
diff --git a/test/Analysis/cfg-rich-constructors.cpp b/test/Analysis/cfg-rich-constructors.cpp
deleted file mode 100644
index 31c306bbfe9c..000000000000
--- a/test/Analysis/cfg-rich-constructors.cpp
+++ /dev/null
@@ -1,1045 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG -triple x86_64-apple-darwin12 -std=c++11 -w %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX11,ELIDE,CXX11-ELIDE %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG -triple x86_64-apple-darwin12 -std=c++17 -w %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX17,ELIDE,CXX17-ELIDE %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG -triple x86_64-apple-darwin12 -std=c++11 -w -analyzer-config elide-constructors=false %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX11,NOELIDE,CXX11-NOELIDE %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG -triple x86_64-apple-darwin12 -std=c++17 -w -analyzer-config elide-constructors=false %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX17,NOELIDE,CXX17-NOELIDE %s
-
-class C {
-public:
- C();
- C(C *);
- C(int, int);
-
- static C get();
- operator bool() const;
-};
-
-typedef __typeof(sizeof(int)) size_t;
-void *operator new(size_t size, void *placement);
-
-namespace operator_new {
-
-// CHECK: void operatorNewWithConstructor()
-// CHECK: 1: CFGNewAllocator(C *)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B1.3], class C)
-// CHECK-NEXT: 3: new C([B1.2])
-void operatorNewWithConstructor() {
- new C();
-}
-
-// CHECK: void operatorNewWithConstructorWithOperatorNewWithContstructor()
-// CHECK: 1: CFGNewAllocator(C *)
-// CHECK-NEXT: 2: CFGNewAllocator(C *)
-// CHECK-NEXT: 3: (CXXConstructExpr, [B1.4], class C)
-// CHECK-NEXT: 4: new C([B1.3])
-// CHECK-NEXT: 5: [B1.4] (CXXConstructExpr, [B1.6], class C)
-// CHECK-NEXT: 6: new C([B1.5])
-void operatorNewWithConstructorWithOperatorNewWithContstructor() {
- new C(new C());
-}
-
-// CHECK: void operatorPlacementNewWithConstructorWithinPlacementArgument()
-// CHECK: 1: CFGNewAllocator(C *)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B1.3], class C)
-// CHECK-NEXT: 3: new C([B1.2])
-// CHECK-NEXT: 4: [B1.3] (ImplicitCastExpr, BitCast, void *)
-// CHECK-NEXT: 5: CFGNewAllocator(C *)
-// CHECK-NEXT: 6: (CXXConstructExpr, [B1.7], class C)
-// CHECK-NEXT: 7: new ([B1.4]) C([B1.6])
-void operatorPlacementNewWithConstructorWithinPlacementArgument() {
- new (new C()) C();
-}
-
-} // namespace operator_new
-
-namespace decl_stmt {
-
-// CHECK: void simpleVariable()
-// CHECK: 1: (CXXConstructExpr, [B1.2], class C)
-// CHECK-NEXT: 2: C c;
-void simpleVariable() {
- C c;
-}
-
-// CHECK: void simpleVariableWithBraces()
-// CHECK: 1: {} (CXXConstructExpr, [B1.2], class C)
-// CHECK-NEXT: 2: C c{};
-void simpleVariableWithBraces() {
- C c{};
-}
-
-// CHECK: void simpleVariableWithConstructorArgument()
-// CHECK: 1: 0
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, NullToPointer, class C *)
-// CHECK-NEXT: 3: [B1.2] (CXXConstructExpr, [B1.4], class C)
-// CHECK-NEXT: 4: C c(0);
-void simpleVariableWithConstructorArgument() {
- C c(0);
-}
-
-// CHECK: void simpleVariableWithOperatorNewInConstructorArgument()
-// CHECK: 1: CFGNewAllocator(C *)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B1.3], class C)
-// CHECK-NEXT: 3: new C([B1.2])
-// CHECK-NEXT: 4: [B1.3] (CXXConstructExpr, [B1.5], class C)
-// CHECK-NEXT: 5: C c(new C());
-void simpleVariableWithOperatorNewInConstructorArgument() {
- C c(new C());
-}
-
-// CHECK: void simpleVariableWithOperatorNewInBraces()
-// CHECK: 1: CFGNewAllocator(C *)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B1.3], class C)
-// CHECK-NEXT: 3: new C([B1.2])
-// CHECK-NEXT: 4: {[B1.3]} (CXXConstructExpr, [B1.5], class C)
-// CHECK-NEXT: 5: C c{new C()};
-void simpleVariableWithOperatorNewInBraces() {
- C c{new C()};
-}
-
-// CHECK: void simpleVariableInitializedByValue()
-// CHECK: 1: C::get
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, class C (*)(void))
-// CXX11-ELIDE-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.4], [B1.5])
-// CXX11-NOELIDE-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.4])
-// CXX11-NEXT: 4: [B1.3]
-// CXX11-NEXT: 5: [B1.4] (CXXConstructExpr, [B1.6], class C)
-// CXX11-NEXT: 6: C c = C::get();
-// CXX17-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.4])
-// CXX17-NEXT: 4: C c = C::get();
-void simpleVariableInitializedByValue() {
- C c = C::get();
-}
-
-// FIXME: Find construction contexts for both branches in C++17.
-// Note that once it gets detected, the test for the get() branch would not
-// fail, because FileCheck allows partial matches.
-// CHECK: void simpleVariableWithTernaryOperator(bool coin)
-// CHECK: [B1]
-// CXX11-NEXT: 1: [B4.2] ? [B2.5] : [B3.6]
-// CXX11-NEXT: 2: [B1.1]
-// CXX11-NEXT: 3: [B1.2] (CXXConstructExpr, [B1.4], class C)
-// CXX11-NEXT: 4: C c = coin ? C::get() : C(0);
-// CXX17-NEXT: 1: [B4.2] ? [B2.3] : [B3.4]
-// CXX17-NEXT: 2: C c = coin ? C::get() : C(0);
-// CHECK: [B2]
-// CHECK-NEXT: 1: C::get
-// CHECK-NEXT: 2: [B2.1] (ImplicitCastExpr, FunctionToPointerDecay, class C (*)(void))
-// CXX11-ELIDE-NEXT: 3: [B2.2]() (CXXRecordTypedCall, [B2.4], [B2.5])
-// CXX11-NOELIDE-NEXT: 3: [B2.2]() (CXXRecordTypedCall, [B2.4])
-// CXX11-NEXT: 4: [B2.3]
-// CXX11-ELIDE-NEXT: 5: [B2.4] (CXXConstructExpr, [B1.2], [B1.3], class C)
-// CXX11-NOELIDE-NEXT: 5: [B2.4] (CXXConstructExpr, [B1.2], class C)
-// CXX17-NEXT: 3: [B2.2]()
-// CHECK: [B3]
-// CHECK-NEXT: 1: 0
-// CHECK-NEXT: 2: [B3.1] (ImplicitCastExpr, NullToPointer, class C *)
-// CXX11-ELIDE-NEXT: 3: [B3.2] (CXXConstructExpr, [B3.5], [B3.6], class C)
-// CXX11-NOELIDE-NEXT: 3: [B3.2] (CXXConstructExpr, [B3.5], class C)
-// CXX11-NEXT: 4: C([B3.3]) (CXXFunctionalCastExpr, ConstructorConversion, class C)
-// CXX11-NEXT: 5: [B3.4]
-// CXX11-ELIDE-NEXT: 6: [B3.5] (CXXConstructExpr, [B1.2], [B1.3], class C)
-// CXX11-NOELIDE-NEXT: 6: [B3.5] (CXXConstructExpr, [B1.2], class C)
-// CXX17-NEXT: 3: [B3.2] (CXXConstructExpr, class C)
-// CXX17-NEXT: 4: C([B3.3]) (CXXFunctionalCastExpr, ConstructorConversion, class C)
-// CHECK: [B4]
-// CHECK-NEXT: 1: coin
-// CHECK-NEXT: 2: [B4.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: [B4.2] ? ... : ...
-void simpleVariableWithTernaryOperator(bool coin) {
- C c = coin ? C::get() : C(0);
-}
-
-// CHECK: void simpleVariableWithElidableCopy()
-// CHECK: 1: 0
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, NullToPointer, class C *)
-// CXX11-ELIDE-NEXT: 3: [B1.2] (CXXConstructExpr, [B1.5], [B1.6], class C)
-// CXX11-NOELIDE-NEXT: 3: [B1.2] (CXXConstructExpr, [B1.5], class C)
-// CXX17-NEXT: 3: [B1.2] (CXXConstructExpr, [B1.5], class C)
-// CHECK-NEXT: 4: C([B1.3]) (CXXFunctionalCastExpr, ConstructorConversion, class C)
-// CXX11-NEXT: 5: [B1.4]
-// CXX11-NEXT: 6: [B1.5] (CXXConstructExpr, [B1.7], class C)
-// CXX11-NEXT: 7: C c = C(0);
-// CXX17-NEXT: 5: C c = C(0);
-void simpleVariableWithElidableCopy() {
- C c = C(0);
-}
-
-// CHECK: void referenceVariableWithConstructor()
-// CHECK: 1: 0
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, NullToPointer, class C *)
-// CHECK-NEXT: 3: [B1.2] (CXXConstructExpr, [B1.4], const class C)
-// CHECK-NEXT: 4: [B1.3]
-// CHECK-NEXT: 5: const C &c(0);
-void referenceVariableWithConstructor() {
- const C &c(0);
-}
-
-// CHECK: void referenceVariableWithInitializer()
-// CHECK: 1: C() (CXXConstructExpr, [B1.3], class C)
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, NoOp, const class C)
-// CHECK-NEXT: 3: [B1.2]
-// CHECK-NEXT: 4: const C &c = C();
-void referenceVariableWithInitializer() {
- const C &c = C();
-}
-
-// CHECK: void referenceVariableWithTernaryOperator(bool coin)
-// CHECK: [B1]
-// CXX11-NEXT: 1: [B4.2] ? [B2.5] : [B3.6]
-// CXX17-NEXT: 1: [B4.2] ? [B2.3] : [B3.4]
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, NoOp, const class C)
-// CHECK-NEXT: 3: [B1.2]
-// CHECK-NEXT: 4: const C &c = coin ? C::get() : C(0);
-// CHECK: [B2]
-// CHECK-NEXT: 1: C::get
-// CHECK-NEXT: 2: [B2.1] (ImplicitCastExpr, FunctionToPointerDecay, class C (*)(void))
-// CXX11-ELIDE-NEXT: 3: [B2.2]() (CXXRecordTypedCall, [B2.4], [B2.5])
-// CXX11-NOELIDE-NEXT: 3: [B2.2]() (CXXRecordTypedCall, [B2.4])
-// CXX11-NEXT: 4: [B2.3]
-// CXX11-NEXT: 5: [B2.4] (CXXConstructExpr, [B1.3], class C)
-// CXX17-NEXT: 3: [B2.2]() (CXXRecordTypedCall, [B1.3])
-// CHECK: [B3]
-// CHECK-NEXT: 1: 0
-// CHECK-NEXT: 2: [B3.1] (ImplicitCastExpr, NullToPointer, class C *)
-// CXX11-ELIDE-NEXT: 3: [B3.2] (CXXConstructExpr, [B3.5], [B3.6], class C)
-// CXX11-NOELIDE-NEXT: 3: [B3.2] (CXXConstructExpr, [B3.5], class C)
-// CXX11-NEXT: 4: C([B3.3]) (CXXFunctionalCastExpr, ConstructorConversion, class C)
-// CXX11-NEXT: 5: [B3.4]
-// CXX11-NEXT: 6: [B3.5] (CXXConstructExpr, [B1.3], class C)
-// CXX17-NEXT: 3: [B3.2] (CXXConstructExpr, [B1.3], class C)
-// CXX17-NEXT: 4: C([B3.3]) (CXXFunctionalCastExpr, ConstructorConversion, class C)
-// CHECK: [B4]
-// CHECK-NEXT: 1: coin
-// CHECK-NEXT: 2: [B4.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: [B4.2] ? ... : ...
-void referenceVariableWithTernaryOperator(bool coin) {
- const C &c = coin ? C::get() : C(0);
-}
-
-} // end namespace decl_stmt
-
-namespace ctor_initializers {
-
-class D: public C {
- C c1;
-
-public:
-
-// CHECK: D()
-// CHECK: 1: (CXXConstructExpr, C() (Base initializer), class C)
-// CHECK-NEXT: 2: C([B1.1]) (Base initializer)
-// CHECK-NEXT: 3: CFGNewAllocator(C *)
-// CHECK-NEXT: 4: (CXXConstructExpr, [B1.5], class C)
-// CHECK-NEXT: 5: new C([B1.4])
-// CHECK-NEXT: 6: [B1.5] (CXXConstructExpr, c1([B1.5]) (Member initializer), class C)
-// CHECK-NEXT: 7: c1([B1.6]) (Member initializer)
- D(): C(), c1(new C()) {}
-
-// CHECK: D(int)
-// CHECK: 1: (CXXConstructExpr, D() (Delegating initializer), class ctor_initializers::D)
-// CHECK-NEXT: 2: D([B1.1]) (Delegating initializer)
- D(int): D() {}
-
-// FIXME: Why is CXXRecordTypedCall not present in C++17? Note that once it gets
-// detected the test would not fail, because FileCheck allows partial matches.
-// CHECK: D(double)
-// CHECK: 1: C::get
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, class C (*)(void))
-// CHECK-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.4])
-// CHECK-NEXT: 4: [B1.3]
-// CHECK-NEXT: 5: [B1.4] (CXXConstructExpr, C([B1.4]) (Base initializer), class C)
-// CHECK-NEXT: 6: C([B1.5]) (Base initializer)
-// CHECK-NEXT: 7: CFGNewAllocator(C *)
-// CHECK-NEXT: 8: C::get
-// CHECK-NEXT: 9: [B1.8] (ImplicitCastExpr, FunctionToPointerDecay, class C (*)(void))
-// CXX11-ELIDE-NEXT: 10: [B1.9]() (CXXRecordTypedCall, [B1.11], [B1.12])
-// CXX11-NOELIDE-NEXT: 10: [B1.9]() (CXXRecordTypedCall, [B1.11])
-// CXX11-NEXT: 11: [B1.10]
-// CXX11-NEXT: 12: [B1.11] (CXXConstructExpr, [B1.13], class C)
-// CXX11-NEXT: 13: new C([B1.12])
-// CXX11-NEXT: 14: [B1.13] (CXXConstructExpr, c1([B1.13]) (Member initializer), class C)
-// CXX11-NEXT: 15: c1([B1.14]) (Member initializer)
-// CXX17-NEXT: 10: [B1.9]()
-// CXX17-NEXT: 11: new C([B1.10])
-// CXX17-NEXT: 12: [B1.11] (CXXConstructExpr, c1([B1.11]) (Member initializer), class C)
-// CXX17-NEXT: 13: c1([B1.12]) (Member initializer)
- D(double): C(C::get()), c1(new C(C::get())) {}
-};
-
-// Let's see if initializers work well for fields with destructors.
-class E {
-public:
- static E get();
- ~E();
-};
-
-class F {
- E e;
-
-public:
-// FIXME: There should be no temporary destructor in C++17.
-// CHECK: F()
-// CHECK: 1: E::get
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, class ctor_initializers::E (*)(
-// CXX11-ELIDE-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.4], [B1.6], [B1.7])
-// CXX11-NOELIDE-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.4], [B1.6])
-// CXX11-NEXT: 4: [B1.3] (BindTemporary)
-// CXX11-NEXT: 5: [B1.4] (ImplicitCastExpr, NoOp, const class ctor_initializers::E)
-// CXX11-NEXT: 6: [B1.5]
-// CXX11-NEXT: 7: [B1.6] (CXXConstructExpr, e([B1.6]) (Member initializer), class ctor_initializers
-// CXX11-NEXT: 8: e([B1.7]) (Member initializer)
-// CXX11-NEXT: 9: ~ctor_initializers::E() (Temporary object destructor)
-// CXX17-NEXT: 3: [B1.2]() (CXXRecordTypedCall, e([B1.4]) (Member initializer), [B1.4])
-// CXX17-NEXT: 4: [B1.3] (BindTemporary)
-// CXX17-NEXT: 5: e([B1.4]) (Member initializer)
-// CXX17-NEXT: 6: ~ctor_initializers::E() (Temporary object destructor)
- F(): e(E::get()) {}
-};
-} // end namespace ctor_initializers
-
-namespace return_stmt_without_dtor {
-
-// CHECK: C returnVariable()
-// CHECK: 1: (CXXConstructExpr, [B1.2], class C)
-// CHECK-NEXT: 2: C c;
-// CHECK-NEXT: 3: c
-// CHECK-NEXT: 4: [B1.3] (ImplicitCastExpr, NoOp, class C)
-// CHECK-NEXT: 5: [B1.4] (CXXConstructExpr, [B1.6], class C)
-// CHECK-NEXT: 6: return [B1.5];
-C returnVariable() {
- C c;
- return c;
-}
-
-// CHECK: C returnEmptyBraces()
-// CHECK: 1: {} (CXXConstructExpr, [B1.2], class C)
-// CHECK-NEXT: 2: return [B1.1];
-C returnEmptyBraces() {
- return {};
-}
-
-// CHECK: C returnBracesWithOperatorNew()
-// CHECK: 1: CFGNewAllocator(C *)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B1.3], class C)
-// CHECK-NEXT: 3: new C([B1.2])
-// CHECK-NEXT: 4: {[B1.3]} (CXXConstructExpr, [B1.5], class C)
-// CHECK-NEXT: 5: return [B1.4];
-C returnBracesWithOperatorNew() {
- return {new C()};
-}
-
-// CHECK: C returnBracesWithMultipleItems()
-// CHECK: 1: 123
-// CHECK-NEXT: 2: 456
-// CHECK-NEXT: 3: {[B1.1], [B1.2]} (CXXConstructExpr, [B1.4], class C)
-// CHECK-NEXT: 4: return [B1.3];
-C returnBracesWithMultipleItems() {
- return {123, 456};
-}
-
-// CHECK: C returnTemporary()
-// CXX11-ELIDE: 1: C() (CXXConstructExpr, [B1.2], [B1.3], class C)
-// CXX11-NOELIDE: 1: C() (CXXConstructExpr, [B1.2], class C)
-// CXX11-NEXT: 2: [B1.1]
-// CXX11-NEXT: 3: [B1.2] (CXXConstructExpr, [B1.4], class C)
-// CXX11-NEXT: 4: return [B1.3];
-// CXX17: 1: C() (CXXConstructExpr, [B1.2], class C)
-// CXX17-NEXT: 2: return [B1.1];
-C returnTemporary() {
- return C();
-}
-
-// CHECK: C returnTemporaryWithArgument()
-// CHECK: 1: nullptr
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, NullToPointer, class C *)
-// CXX11-ELIDE-NEXT: 3: [B1.2] (CXXConstructExpr, [B1.5], [B1.6], class C)
-// CXX11-NOELIDE-NEXT: 3: [B1.2] (CXXConstructExpr, [B1.5], class C)
-// CXX17-NEXT: 3: [B1.2] (CXXConstructExpr, [B1.5], class C)
-// CHECK-NEXT: 4: C([B1.3]) (CXXFunctionalCastExpr, ConstructorConversion, class C)
-// CXX11-NEXT: 5: [B1.4]
-// CXX11-NEXT: 6: [B1.5] (CXXConstructExpr, [B1.7], class C)
-// CXX11-NEXT: 7: return [B1.6];
-// CXX17-NEXT: 5: return [B1.4];
-
-C returnTemporaryWithArgument() {
- return C(nullptr);
-}
-
-// CHECK: C returnTemporaryConstructedByFunction()
-// CHECK: 1: C::get
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, class C (*)(void))
-// CXX11-ELIDE-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.4], [B1.5])
-// CXX11-NOELIDE-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.4])
-// CXX11-NEXT: 4: [B1.3]
-// CXX11-NEXT: 5: [B1.4] (CXXConstructExpr, [B1.6], class C)
-// CXX11-NEXT: 6: return [B1.5];
-// CXX17-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.4])
-// CXX17-NEXT: 4: return [B1.3];
-C returnTemporaryConstructedByFunction() {
- return C::get();
-}
-
-// CHECK: C returnChainOfCopies()
-// CHECK: 1: C::get
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, class C (*)(void))
-// CXX11-ELIDE-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.4], [B1.5])
-// CXX11-NOELIDE-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.4])
-// CXX11-NEXT: 4: [B1.3]
-// CXX11-ELIDE-NEXT: 5: [B1.4] (CXXConstructExpr, [B1.7], [B1.8], class C)
-// CXX11-NOELIDE-NEXT: 5: [B1.4] (CXXConstructExpr, [B1.7], class C)
-// CXX11-NEXT: 6: C([B1.5]) (CXXFunctionalCastExpr, ConstructorConversion, class C)
-// CXX11-NEXT: 7: [B1.6]
-// CXX11-NEXT: 8: [B1.7] (CXXConstructExpr, [B1.9], class C)
-// CXX11-NEXT: 9: return [B1.8];
-// CXX17-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.5])
-// CXX17-NEXT: 4: C([B1.3]) (CXXFunctionalCastExpr, NoOp, class C)
-// CXX17-NEXT: 5: return [B1.4];
-C returnChainOfCopies() {
- return C(C::get());
-}
-
-} // end namespace return_stmt_without_dtor
-
-namespace return_stmt_with_dtor {
-
-class D {
-public:
- D();
- ~D();
-};
-
-// FIXME: There should be no temporary destructor in C++17.
-// CHECK: return_stmt_with_dtor::D returnTemporary()
-// CXX11-ELIDE: 1: return_stmt_with_dtor::D() (CXXConstructExpr, [B1.2], [B1.4], [B1.5], class return_stmt_with_dtor::D)
-// CXX11-NOELIDE: 1: return_stmt_with_dtor::D() (CXXConstructExpr, [B1.2], [B1.4], class return_stmt_with_dtor::D)
-// CXX11-NEXT: 2: [B1.1] (BindTemporary)
-// CXX11-NEXT: 3: [B1.2] (ImplicitCastExpr, NoOp, const class return_stmt_with_dtor::D)
-// CXX11-NEXT: 4: [B1.3]
-// CXX11-NEXT: 5: [B1.4] (CXXConstructExpr, [B1.7], class return_stmt_with_dtor::D)
-// CXX11-NEXT: 6: ~return_stmt_with_dtor::D() (Temporary object destructor)
-// CXX11-NEXT: 7: return [B1.5];
-// CXX17: 1: return_stmt_with_dtor::D() (CXXConstructExpr, [B1.4], [B1.2], class return_stmt_w
-// CXX17-NEXT: 2: [B1.1] (BindTemporary)
-// CXX17-NEXT: 3: ~return_stmt_with_dtor::D() (Temporary object destructor)
-// CXX17-NEXT: 4: return [B1.2];
-D returnTemporary() {
- return D();
-}
-
-// FIXME: There should be no temporary destructor in C++17.
-// CHECK: void returnByValueIntoVariable()
-// CHECK: 1: returnTemporary
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, class return_stmt_with_dtor::D (*)(void))
-// CXX11-ELIDE-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.4], [B1.6], [B1.7])
-// CXX11-NOELIDE-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.4], [B1.6])
-// CXX11-NEXT: 4: [B1.3] (BindTemporary)
-// CXX11-NEXT: 5: [B1.4] (ImplicitCastExpr, NoOp, const class return_stmt_with_dtor::D)
-// CXX11-NEXT: 6: [B1.5]
-// CXX11-NEXT: 7: [B1.6] (CXXConstructExpr, [B1.8], class return_stmt_with_dtor::D)
-// CXX11-NEXT: 8: return_stmt_with_dtor::D d = returnTemporary();
-// CXX11-NEXT: 9: ~return_stmt_with_dtor::D() (Temporary object destructor)
-// CXX11-NEXT: 10: [B1.8].~D() (Implicit destructor)
-// CXX17-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.5], [B1.4])
-// CXX17-NEXT: 4: [B1.3] (BindTemporary)
-// CXX17-NEXT: 5: return_stmt_with_dtor::D d = returnTemporary();
-// CXX17-NEXT: 6: ~return_stmt_with_dtor::D() (Temporary object destructor)
-// CXX17-NEXT: 7: [B1.5].~D() (Implicit destructor)
-void returnByValueIntoVariable() {
- D d = returnTemporary();
-}
-
-} // end namespace return_stmt_with_dtor
-
-namespace temporary_object_expr_without_dtors {
-
-// TODO: Should provide construction context for the constructor,
-// even if there is no specific trigger statement here.
-// CHECK: void simpleTemporary()
-// CHECK 1: C() (CXXConstructExpr, class C)
-void simpleTemporary() {
- C();
-}
-
-// CHECK: void temporaryInCondition()
-// CHECK: 1: C() (CXXConstructExpr, [B2.2], class C)
-// CHECK-NEXT: 2: [B2.1]
-// CHECK-NEXT: 3: [B2.2] (ImplicitCastExpr, NoOp, const class C)
-// CHECK-NEXT: 4: [B2.3].operator bool
-// CHECK-NEXT: 5: [B2.3]
-// CHECK-NEXT: 6: [B2.5] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK-NEXT: T: if [B2.6]
-void temporaryInCondition() {
- if (C());
-}
-
-// CHECK: void temporaryInConditionVariable()
-// CXX11-ELIDE: 1: C() (CXXConstructExpr, [B2.2], [B2.3], class C)
-// CXX11-NOELIDE: 1: C() (CXXConstructExpr, [B2.2], class C)
-// CXX11-NEXT: 2: [B2.1]
-// CXX11-NEXT: 3: [B2.2] (CXXConstructExpr, [B2.4], class C)
-// CXX11-NEXT: 4: C c = C();
-// CXX11-NEXT: 5: c
-// CXX11-NEXT: 6: [B2.5] (ImplicitCastExpr, NoOp, const class C)
-// CXX11-NEXT: 7: [B2.6].operator bool
-// CXX11-NEXT: 8: [B2.6]
-// CXX11-NEXT: 9: [B2.8] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CXX11-NEXT: T: if [B2.9]
-// CXX17: 1: C() (CXXConstructExpr, [B2.2], class C)
-// CXX17-NEXT: 2: C c = C();
-// CXX17-NEXT: 3: c
-// CXX17-NEXT: 4: [B2.3] (ImplicitCastExpr, NoOp, const class C)
-// CXX17-NEXT: 5: [B2.4].operator bool
-// CXX17-NEXT: 6: [B2.4]
-// CXX17-NEXT: 7: [B2.6] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CXX17-NEXT: T: if [B2.7]
-void temporaryInConditionVariable() {
- if (C c = C());
-}
-
-
-// CHECK: void temporaryInForLoopConditionVariable()
-// CHECK: [B2]
-// CXX11-ELIDE-NEXT: 1: C() (CXXConstructExpr, [B2.2], [B2.3], class C)
-// CXX11-NOELIDE-NEXT: 1: C() (CXXConstructExpr, [B2.2], class C)
-// CXX11-NEXT: 2: [B2.1]
-// CXX11-NEXT: 3: [B2.2] (CXXConstructExpr, [B2.4], class C)
-// CXX11-NEXT: 4: C c2 = C();
-// CXX11-NEXT: 5: c2
-// CXX11-NEXT: 6: [B2.5] (ImplicitCastExpr, NoOp, const class C)
-// CXX11-NEXT: 7: [B2.6].operator bool
-// CXX11-NEXT: 8: [B2.6]
-// CXX11-NEXT: 9: [B2.8] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CXX11-NEXT: T: for (...; [B2.9]; )
-// CXX17-NEXT: 1: C() (CXXConstructExpr, [B2.2], class C)
-// CXX17-NEXT: 2: C c2 = C();
-// CXX17-NEXT: 3: c2
-// CXX17-NEXT: 4: [B2.3] (ImplicitCastExpr, NoOp, const class C)
-// CXX17-NEXT: 5: [B2.4].operator bool
-// CXX17-NEXT: 6: [B2.4]
-// CXX17-NEXT: 7: [B2.6] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CXX17-NEXT: T: for (...; [B2.7]; )
-// CHECK: [B3]
-// CXX11-ELIDE-NEXT: 1: C() (CXXConstructExpr, [B3.2], [B3.3], class C)
-// CXX11-NOELIDE-NEXT: 1: C() (CXXConstructExpr, [B3.2], class C)
-// CXX11-NEXT: 2: [B3.1]
-// CXX11-NEXT: 3: [B3.2] (CXXConstructExpr, [B3.4], class C)
-// CXX11-NEXT: 4: C c1 = C();
-// CXX17-NEXT: 1: C() (CXXConstructExpr, [B3.2], class C)
-// CXX17-NEXT: 2: C c1 = C();
-void temporaryInForLoopConditionVariable() {
- for (C c1 = C(); C c2 = C(); );
-}
-
-
-// CHECK: void temporaryInWhileLoopConditionVariable()
-// CXX11-ELIDE: 1: C() (CXXConstructExpr, [B2.2], [B2.3], class C)
-// CXX11-NOELIDE: 1: C() (CXXConstructExpr, [B2.2], class C)
-// CXX11-NEXT: 2: [B2.1]
-// CXX11-NEXT: 3: [B2.2] (CXXConstructExpr, [B2.4], class C)
-// CXX11-NEXT: 4: C c = C();
-// CXX11-NEXT: 5: c
-// CXX11-NEXT: 6: [B2.5] (ImplicitCastExpr, NoOp, const class C)
-// CXX11-NEXT: 7: [B2.6].operator bool
-// CXX11-NEXT: 8: [B2.6]
-// CXX11-NEXT: 9: [B2.8] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CXX11-NEXT: T: while [B2.9]
-// CXX17: 1: C() (CXXConstructExpr, [B2.2], class C)
-// CXX17-NEXT: 2: C c = C();
-// CXX17-NEXT: 3: c
-// CXX17-NEXT: 4: [B2.3] (ImplicitCastExpr, NoOp, const class C)
-// CXX17-NEXT: 5: [B2.4].operator bool
-// CXX17-NEXT: 6: [B2.4]
-// CXX17-NEXT: 7: [B2.6] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CXX17-NEXT: T: while [B2.7]
-void temporaryInWhileLoopConditionVariable() {
- while (C c = C());
-}
-
-} // end namespace temporary_object_expr_without_dtors
-
-namespace temporary_object_expr_with_dtors {
-
-class D {
-public:
- D();
- D(int);
- ~D();
-
- static D get();
-
- operator bool() const;
-};
-
-// CHECK: void simpleTemporary()
-// CHECK: 1: temporary_object_expr_with_dtors::D() (CXXConstructExpr, [B1.2], class temporary_object_expr_with_dtors::D)
-// CHECK-NEXT: 2: [B1.1] (BindTemporary)
-// CHECK-NEXT: 3: ~temporary_object_expr_with_dtors::D() (Temporary object destructor)
-void simpleTemporary() {
- D();
-}
-
-// CHECK: void temporaryInCondition()
-// CHECK: 1: temporary_object_expr_with_dtors::D() (CXXConstructExpr, [B2.2], [B2.3], class temporary_object_expr_with_dtors::D)
-// CHECK-NEXT: 2: [B2.1] (BindTemporary)
-// CHECK-NEXT: 3: [B2.2]
-// CHECK-NEXT: 4: [B2.3] (ImplicitCastExpr, NoOp, const class temporary_object_expr_with_dtors::D)
-// CHECK-NEXT: 5: [B2.4].operator bool
-// CHECK-NEXT: 6: [B2.4]
-// CHECK-NEXT: 7: [B2.6] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK-NEXT: 8: ~temporary_object_expr_with_dtors::D() (Temporary object destructor)
-// CHECK-NEXT: T: if [B2.7]
-void temporaryInCondition() {
- if (D());
-}
-
-// CHECK: void referenceVariableWithConstructor()
-// CHECK: 1: 0
-// CHECK-NEXT: 2: [B1.1] (CXXConstructExpr, [B1.4], const class temporary_object_expr_with_dtors::D)
-// CHECK-NEXT: 3: [B1.2] (BindTemporary)
-// CHECK-NEXT: 4: [B1.3]
-// CHECK-NEXT: 5: const temporary_object_expr_with_dtors::D &d(0);
-// CHECK-NEXT: 6: [B1.5].~D() (Implicit destructor)
-void referenceVariableWithConstructor() {
- const D &d(0);
-}
-
-// CHECK: void referenceVariableWithInitializer()
-// CHECK: 1: temporary_object_expr_with_dtors::D() (CXXConstructExpr, [B1.4], class temporary_object_expr_with_dtors::D)
-// CHECK-NEXT: 2: [B1.1] (BindTemporary)
-// CHECK-NEXT: 3: [B1.2] (ImplicitCastExpr, NoOp, const class temporary_object_expr_with_dtors::D)
-// CHECK-NEXT: 4: [B1.3]
-// CHECK-NEXT: 5: const temporary_object_expr_with_dtors::D &d = temporary_object_expr_with_dtors::D();
-// CHECK-NEXT: 6: [B1.5].~D() (Implicit destructor)
-void referenceVariableWithInitializer() {
- const D &d = D();
-}
-
-// CHECK: void referenceVariableWithTernaryOperator(bool coin)
-// CXX11: [B1]
-// CXX11-NEXT: 1: [B4.4].~D() (Implicit destructor)
-// CXX11: [B2]
-// CXX11-NEXT: 1: ~temporary_object_expr_with_dtors::D() (Temporary object destructor)
-// CXX11: [B3]
-// CXX11-NEXT: 1: ~temporary_object_expr_with_dtors::D() (Temporary object destructor)
-// CXX11: [B4]
-// CXX11-NEXT: 1: [B7.2] ? [B5.8] : [B6.8]
-// CXX11-NEXT: 2: [B4.1] (ImplicitCastExpr, NoOp, const class temporary_object_expr_with_dtors::D)
-// CXX11-NEXT: 3: [B4.2]
-// CXX11-NEXT: 4: const temporary_object_expr_with_dtors::D &d = coin ? D::get() : temporary_object_expr_with_dtors::D(0);
-// CXX11-NEXT: T: (Temp Dtor) [B6.3]
-// CXX11: [B5]
-// CXX11-NEXT: 1: D::get
-// CXX11-NEXT: 2: [B5.1] (ImplicitCastExpr, FunctionToPointerDecay, class temporary_object_expr_with_dtors::D (*)(void))
-// CXX11-ELIDE-NEXT: 3: [B5.2]() (CXXRecordTypedCall, [B5.4], [B5.6], [B5.7])
-// CXX11-NOELIDE-NEXT: 3: [B5.2]() (CXXRecordTypedCall, [B5.4], [B5.6])
-// CXX11-NEXT: 4: [B5.3] (BindTemporary)
-// CXX11-NEXT: 5: [B5.4] (ImplicitCastExpr, NoOp, const class temporary_object_expr_with_dtors::D)
-// CXX11-NEXT: 6: [B5.5]
-// CXX11-NEXT: 7: [B5.6] (CXXConstructExpr, [B4.3], class temporary_object_expr_with_dtors::D)
-// CXX11-NEXT: 8: [B5.7] (BindTemporary)
-// CXX11: [B6]
-// CXX11-NEXT: 1: 0
-// CXX11-ELIDE-NEXT: 2: [B6.1] (CXXConstructExpr, [B6.3], [B6.6], [B6.7], class temporary_object_expr_with_dtors::D)
-// CXX11-NOELIDE-NEXT: 2: [B6.1] (CXXConstructExpr, [B6.3], [B6.6], class temporary_object_expr_with_dtors::D)
-// CXX11-NEXT: 3: [B6.2] (BindTemporary)
-// CXX11-NEXT: 4: temporary_object_expr_with_dtors::D([B6.3]) (CXXFunctionalCastExpr, ConstructorConversion, class temporary_object_expr_with_dtors::D)
-// CXX11-NEXT: 5: [B6.4] (ImplicitCastExpr, NoOp, const class temporary_object_expr_with_dtors::D)
-// CXX11-NEXT: 6: [B6.5]
-// CXX11-NEXT: 7: [B6.6] (CXXConstructExpr, [B4.3], class temporary_object_expr_with_dtors::D)
-// CXX11-NEXT: 8: [B6.7] (BindTemporary)
-// CXX11: [B7]
-// CXX11-NEXT: 1: coin
-// CXX11-NEXT: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CXX11-NEXT: T: [B7.2] ? ... : ...
-// CXX17: [B1]
-// CXX17-NEXT: 1: [B4.2] ? [B2.4] : [B3.4]
-// CXX17-NEXT: 2: [B1.1] (ImplicitCastExpr, NoOp, const class temporary_object_expr_with_dtors::D)
-// CXX17-NEXT: 3: [B1.2]
-// CXX17-NEXT: 4: const temporary_object_expr_with_dtors::D &d = coin ? D::get() : temporary_object_expr_with_dtors::D(0);
-// CXX17-NEXT: 5: [B1.4].~D() (Implicit destructor)
-// CXX17: [B2]
-// CXX17-NEXT: 1: D::get
-// CXX17-NEXT: 2: [B2.1] (ImplicitCastExpr, FunctionToPointerDecay, class temporary_object_expr_with_dtors::D (*)(void))
-// CXX17-NEXT: 3: [B2.2]() (CXXRecordTypedCall, [B1.3])
-// CXX17-NEXT: 4: [B2.3] (BindTemporary)
-// CXX17: [B3]
-// CXX17-NEXT: 1: 0
-// CXX17-NEXT: 2: [B3.1] (CXXConstructExpr, [B1.3], class temporary_object_expr_with_dtors::D)
-// CXX17-NEXT: 3: [B3.2] (BindTemporary)
-// CXX17-NEXT: 4: temporary_object_expr_with_dtors::D([B3.3]) (CXXFunctionalCastExpr, ConstructorConversion, class temporary_object_expr_with_dtors::D)
-// CXX17: [B4]
-// CXX17-NEXT: 1: coin
-// CXX17-NEXT: 2: [B4.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CXX17-NEXT: T: [B4.2] ? ... : ...
-void referenceVariableWithTernaryOperator(bool coin) {
- const D &d = coin ? D::get() : D(0);
-}
-
-// CHECK: void referenceWithFunctionalCast()
-// CHECK: 1: 1
-// CHECK-NEXT: 2: [B1.1] (CXXConstructExpr, [B1.5], class temporary_object_expr_with_dtors::D)
-// CHECK-NEXT: 3: [B1.2] (BindTemporary)
-// CHECK-NEXT: 4: temporary_object_expr_with_dtors::D([B1.3]) (CXXFunctionalCastExpr, ConstructorCon
-// CHECK-NEXT: 5: [B1.4]
-// CHECK-NEXT: 6: temporary_object_expr_with_dtors::D &&d = temporary_object_expr_with_dtors::D(1);
-// CHECK-NEXT: 7: [B1.6].~D() (Implicit destructor)
-void referenceWithFunctionalCast() {
- D &&d = D(1);
-}
-
-// Test the condition constructor, we don't care about branch constructors here.
-// CHECK: void constructorInTernaryCondition()
-// CXX11: 1: 1
-// CXX11-NEXT: 2: [B7.1] (CXXConstructExpr, [B7.3], [B7.5], class temporary_object_expr_with_dtors::D)
-// CXX11-NEXT: 3: [B7.2] (BindTemporary)
-// CXX11-NEXT: 4: temporary_object_expr_with_dtors::D([B7.3]) (CXXFunctionalCastExpr, ConstructorConversion, class temporary_object_expr_with_dtors::D)
-// CXX11-NEXT: 5: [B7.4]
-// CXX11-NEXT: 6: [B7.5] (ImplicitCastExpr, NoOp, const class temporary_object_expr_with_dtors::D)
-// CXX11-NEXT: 7: [B7.6].operator bool
-// CXX11-NEXT: 8: [B7.6]
-// CXX11-NEXT: 9: [B7.8] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CXX11-NEXT: T: [B7.9] ? ... : ...
-// CXX17: 1: 1
-// CXX17-NEXT: 2: [B4.1] (CXXConstructExpr, [B4.3], [B4.5], class temporary_object_expr_with_dtors::D)
-// CXX17-NEXT: 3: [B4.2] (BindTemporary)
-// CXX17-NEXT: 4: temporary_object_expr_with_dtors::D([B4.3]) (CXXFunctionalCastExpr, ConstructorConversion, class temporary_object_expr_with_dtors::D)
-// CXX17-NEXT: 5: [B4.4]
-// CXX17-NEXT: 6: [B4.5] (ImplicitCastExpr, NoOp, const class temporary_object_expr_with_dtors::D)
-// CXX17-NEXT: 7: [B4.6].operator bool
-// CXX17-NEXT: 8: [B4.6]
-// CXX17-NEXT: 9: [B4.8] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CXX17-NEXT: T: [B4.9] ? ... : ...
-void constructorInTernaryCondition() {
- const D &d = D(1) ? D(2) : D(3);
-}
-
-} // end namespace temporary_object_expr_with_dtors
-
-namespace implicit_constructor_conversion {
-
-class A {};
-A get();
-
-class B {
-public:
- B(const A &);
- ~B() {}
-};
-
-// CHECK: void implicitConstructionConversionFromTemporary()
-// CHECK: 1: implicit_constructor_conversion::A() (CXXConstructExpr, [B1.3], class implicit_constructor_conversion::A)
-// CXX11-NEXT: 2: [B1.1] (ImplicitCastExpr, NoOp, const class implicit_constructor_conversion::A)
-// CXX11-NEXT: 3: [B1.2]
-// CXX11-ELIDE-NEXT: 4: [B1.3] (CXXConstructExpr, [B1.6], [B1.8], [B1.9], class implicit_constructor_conversion::B)
-// CXX11-NOELIDE-NEXT: 4: [B1.3] (CXXConstructExpr, [B1.6], [B1.8], class implicit_constructor_conversion::B)
-// CXX11-NEXT: 5: [B1.4] (ImplicitCastExpr, ConstructorConversion, class implicit_constructor_conversion::B)
-// CXX11-NEXT: 6: [B1.5] (BindTemporary)
-// CXX11-NEXT: 7: [B1.6] (ImplicitCastExpr, NoOp, const class implicit_constructor_conversion::B)
-// CXX11-NEXT: 8: [B1.7]
-// CXX11-NEXT: 9: [B1.8] (CXXConstructExpr, [B1.10], class implicit_constructor_conversion::B)
-// CXX11-NEXT: 10: implicit_constructor_conversion::B b = implicit_constructor_conversion::A();
-// CXX11-NEXT: 11: ~implicit_constructor_conversion::B() (Temporary object destructor)
-// CXX11-NEXT: 12: [B1.10].~B() (Implicit destructor)
-// CXX17-NEXT: 2: [B1.1] (ImplicitCastExpr, NoOp, const class implicit_constructor_conversion::A)
-// CXX17-NEXT: 3: [B1.2]
-// CXX17-NEXT: 4: [B1.3] (CXXConstructExpr, [B1.6], class implicit_constructor_conversion::B)
-// CXX17-NEXT: 5: [B1.4] (ImplicitCastExpr, ConstructorConversion, class implicit_constructor_conversion::B)
-// CXX17-NEXT: 6: implicit_constructor_conversion::B b = implicit_constructor_conversion::A();
-// CXX17-NEXT: 7: [B1.6].~B() (Implicit destructor)
-void implicitConstructionConversionFromTemporary() {
- B b = A();
-}
-
-// CHECK: void implicitConstructionConversionFromFunctionValue()
-// CHECK: 1: get
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, class implicit_constructor_conversion::A (*)(void))
-// CHECK-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.5])
-// CHECK-NEXT: 4: [B1.3] (ImplicitCastExpr, NoOp, const class implicit_constructor_conversion::A)
-// CHECK-NEXT: 5: [B1.4]
-// CXX11-ELIDE-NEXT: 6: [B1.5] (CXXConstructExpr, [B1.8], [B1.10], [B1.11], class implicit_constructor_conversion::B)
-// CXX11-NOELIDE-NEXT: 6: [B1.5] (CXXConstructExpr, [B1.8], [B1.10], class implicit_constructor_conversion::B)
-// CXX11-NEXT: 7: [B1.6] (ImplicitCastExpr, ConstructorConversion, class implicit_constructor_conversion::B)
-// CXX11-NEXT: 8: [B1.7] (BindTemporary)
-// CXX11-NEXT: 9: [B1.8] (ImplicitCastExpr, NoOp, const class implicit_constructor_conversion::B)
-// CXX11-NEXT: 10: [B1.9]
-// CXX11-NEXT: 11: [B1.10] (CXXConstructExpr, [B1.12], class implicit_constructor_conversion::B)
-// CXX11-NEXT: 12: implicit_constructor_conversion::B b = get();
-// CXX11-NEXT: 13: ~implicit_constructor_conversion::B() (Temporary object destructor)
-// CXX11-NEXT: 14: [B1.12].~B() (Implicit destructor)
-// CXX17-NEXT: 6: [B1.5] (CXXConstructExpr, [B1.8], class implicit_constructor_conversion::B)
-// CXX17-NEXT: 7: [B1.6] (ImplicitCastExpr, ConstructorConversion, class implicit_constructor_conversion::B)
-// CXX17-NEXT: 8: implicit_constructor_conversion::B b = get();
-// CXX17-NEXT: 9: [B1.8].~B() (Implicit destructor)
-void implicitConstructionConversionFromFunctionValue() {
- B b = get();
-}
-
-// CHECK: void implicitConstructionConversionFromTemporaryWithLifetimeExtension()
-// CHECK: 1: implicit_constructor_conversion::A() (CXXConstructExpr, [B1.3], class implicit_constructor_conversion::A)
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, NoOp, const class implicit_constructor_conversion::A)
-// CHECK-NEXT: 3: [B1.2]
-// CHECK-NEXT: 4: [B1.3] (CXXConstructExpr, [B1.7], class implicit_constructor_conversion::B)
-// CHECK-NEXT: 5: [B1.4] (ImplicitCastExpr, ConstructorConversion, class implicit_constructor_conversion::B)
-// CHECK-NEXT: 6: [B1.5] (ImplicitCastExpr, NoOp, const class implicit_constructor_conversion::B)
-// CHECK-NEXT: 7: [B1.6]
-// CHECK-NEXT: 8: const implicit_constructor_conversion::B &b = implicit_constructor_conversion::A();
-// CHECK-NEXT: 9: [B1.8].~B() (Implicit destructor)
-void implicitConstructionConversionFromTemporaryWithLifetimeExtension() {
- const B &b = A();
-}
-
-// CHECK: void implicitConstructionConversionFromFunctionValueWithLifetimeExtension()
-// CHECK: 1: get
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, class implicit_constructor_conver
-// CHECK-NEXT: 3: [B1.2]() (CXXRecordTypedCall, [B1.5])
-// CHECK-NEXT: 4: [B1.3] (ImplicitCastExpr, NoOp, const class implicit_constructor_conversion::A)
-// CHECK-NEXT: 5: [B1.4]
-// CHECK-NEXT: 6: [B1.5] (CXXConstructExpr, [B1.9], class implicit_constructor_conversion::B)
-// CHECK-NEXT: 7: [B1.6] (ImplicitCastExpr, ConstructorConversion, class implicit_constructor_convers
-// CHECK-NEXT: 8: [B1.7] (ImplicitCastExpr, NoOp, const class implicit_constructor_conversion::B)
-// CHECK-NEXT: 9: [B1.8]
-// CHECK-NEXT: 10: const implicit_constructor_conversion::B &b = get();
-// CHECK-NEXT: 11: [B1.10].~B() (Implicit destructor)
-void implicitConstructionConversionFromFunctionValueWithLifetimeExtension() {
- const B &b = get(); // no-crash
-}
-
-} // end namespace implicit_constructor_conversion
-
-namespace argument_constructors {
-class D {
-public:
- D();
- ~D();
-};
-
-class E {
-public:
- E(D d);
- E(D d1, D d2);
-};
-
-void useC(C c);
-void useCByReference(const C &c);
-void useD(D d);
-void useDByReference(const D &d);
-void useCAndD(C c, D d);
-
-// CHECK: void passArgument()
-// CHECK: 1: useC
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(class C))
-// CXX11-ELIDE-NEXT: 3: C() (CXXConstructExpr, [B1.4], [B1.5], class C)
-// CXX11-NOELIDE-NEXT: 3: C() (CXXConstructExpr, [B1.4], class C)
-// CXX11-NEXT: 4: [B1.3]
-// CXX11-NEXT: 5: [B1.4] (CXXConstructExpr, [B1.6]+0, class C)
-// CXX11-NEXT: 6: [B1.2]([B1.5])
-// CXX17-NEXT: 3: C() (CXXConstructExpr, [B1.4]+0, class C)
-// CXX17-NEXT: 4: [B1.2]([B1.3])
-void passArgument() {
- useC(C());
-}
-
-// CHECK: void passTwoArguments()
-// CHECK: [B1]
-// CHECK-NEXT: 1: useCAndD
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(class C, class argument_constructors::D))
-// CXX11-ELIDE-NEXT: 3: C() (CXXConstructExpr, [B1.4], [B1.5], class C)
-// CXX11-NOELIDE-NEXT: 3: C() (CXXConstructExpr, [B1.4], class C)
-// CXX11-NEXT: 4: [B1.3]
-// CXX11-NEXT: 5: [B1.4] (CXXConstructExpr, [B1.12]+0, class C)
-// CXX11-ELIDE-NEXT: 6: argument_constructors::D() (CXXConstructExpr, [B1.7], [B1.9], [B1.10], class argument_constructors::D)
-// CXX11-NOELIDE-NEXT: 6: argument_constructors::D() (CXXConstructExpr, [B1.7], [B1.9], class argument_constructors::D)
-// CXX11-NEXT: 7: [B1.6] (BindTemporary)
-// CXX11-NEXT: 8: [B1.7] (ImplicitCastExpr, NoOp, const class argument_constructors::D)
-// CXX11-NEXT: 9: [B1.8]
-// CXX11-NEXT: 10: [B1.9] (CXXConstructExpr, [B1.11], [B1.12]+1, class argument_constructors::D)
-// CXX11-NEXT: 11: [B1.10] (BindTemporary)
-// CXX11-NEXT: 12: [B1.2]([B1.5], [B1.11])
-// CXX11-NEXT: 13: ~argument_constructors::D() (Temporary object destructor)
-// CXX11-NEXT: 14: ~argument_constructors::D() (Temporary object destructor)
-// CXX17-NEXT: 3: C() (CXXConstructExpr, [B1.6]+0, class C)
-// CXX17-NEXT: 4: argument_constructors::D() (CXXConstructExpr, [B1.5], [B1.6]+1, class argument_co
-// CXX17-NEXT: 5: [B1.4] (BindTemporary)
-// CXX17-NEXT: 6: [B1.2]([B1.3], [B1.5])
-// CXX17-NEXT: 7: ~argument_constructors::D() (Temporary object destructor)
-void passTwoArguments() {
- useCAndD(C(), D());
-}
-
-// CHECK: void passArgumentByReference()
-// CHECK: 1: useCByReference
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(const class C &))
-// CHECK-NEXT: 3: C() (CXXConstructExpr, [B1.5], class C)
-// CHECK-NEXT: 4: [B1.3] (ImplicitCastExpr, NoOp, const class C)
-// CHECK-NEXT: 5: [B1.4]
-// CHECK-NEXT: 6: [B1.2]([B1.5])
-void passArgumentByReference() {
- useCByReference(C());
-}
-
-// CHECK: void passArgumentWithDestructor()
-// CHECK: 1: useD
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(class argument_constructors::D))
-// CXX11-ELIDE-NEXT: 3: argument_constructors::D() (CXXConstructExpr, [B1.4], [B1.6], [B1.7], class argument_constructors::D)
-// CXX11-NOELIDE-NEXT: 3: argument_constructors::D() (CXXConstructExpr, [B1.4], [B1.6], class argument_constructors::D)
-// CXX11-NEXT: 4: [B1.3] (BindTemporary)
-// CXX11-NEXT: 5: [B1.4] (ImplicitCastExpr, NoOp, const class argument_constructors::D)
-// CXX11-NEXT: 6: [B1.5]
-// CXX11-NEXT: 7: [B1.6] (CXXConstructExpr, [B1.8], [B1.9]+0, class argument_constructors::D)
-// CXX11-NEXT: 8: [B1.7] (BindTemporary)
-// CXX11-NEXT: 9: [B1.2]([B1.8])
-// CXX11-NEXT: 10: ~argument_constructors::D() (Temporary object destructor)
-// CXX11-NEXT: 11: ~argument_constructors::D() (Temporary object destructor)
-// CXX17-NEXT: 3: argument_constructors::D() (CXXConstructExpr, [B1.4], [B1.5]+0, class argument_constructors::D)
-// CXX17-NEXT: 4: [B1.3] (BindTemporary)
-// CXX17-NEXT: 5: [B1.2]([B1.4])
-// CXX17-NEXT: 6: ~argument_constructors::D() (Temporary object destructor)
-void passArgumentWithDestructor() {
- useD(D());
-}
-
-// CHECK: void passArgumentWithDestructorByReference()
-// CHECK: 1: useDByReference
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(const class argumen
-// CHECK-NEXT: 3: argument_constructors::D() (CXXConstructExpr, [B1.4], [B1.6], class argument_c
-// CHECK-NEXT: 4: [B1.3] (BindTemporary)
-// CHECK-NEXT: 5: [B1.4] (ImplicitCastExpr, NoOp, const class argument_constructors::D)
-// CHECK-NEXT: 6: [B1.5]
-// CHECK-NEXT: 7: [B1.2]([B1.6])
-// CHECK-NEXT: 8: ~argument_constructors::D() (Temporary object destructor)
-void passArgumentWithDestructorByReference() {
- useDByReference(D());
-}
-
-// CHECK: void passArgumentIntoAnotherConstructor()
-// CXX11-ELIDE: 1: argument_constructors::D() (CXXConstructExpr, [B1.2], [B1.4], [B1.5], class argument_constructors::D)
-// CXX11-NOELIDE: 1: argument_constructors::D() (CXXConstructExpr, [B1.2], [B1.4], class argument_constructors::D)
-// CXX11-NEXT: 2: [B1.1] (BindTemporary)
-// CXX11-NEXT: 3: [B1.2] (ImplicitCastExpr, NoOp, const class argument_constructors::D)
-// CXX11-NEXT: 4: [B1.3]
-// CXX11-NEXT: 5: [B1.4] (CXXConstructExpr, [B1.6], [B1.7]+0, class argument_constructors::D)
-// CXX11-NEXT: 6: [B1.5] (BindTemporary)
-// CXX11-ELIDE-NEXT: 7: [B1.6] (CXXConstructExpr, [B1.9], [B1.10], class argument_constructors::E)
-// CXX11-NOELIDE-NEXT: 7: [B1.6] (CXXConstructExpr, [B1.9], class argument_constructors::E)
-// CXX11-NEXT: 8: argument_constructors::E([B1.7]) (CXXFunctionalCastExpr, ConstructorConversion, class argument_constructors::E)
-// CXX11-NEXT: 9: [B1.8]
-// CXX11-NEXT: 10: [B1.9] (CXXConstructExpr, [B1.11], class argument_constructors::E)
-// CXX11-NEXT: 11: argument_constructors::E e = argument_constructors::E(argument_constructors::D());
-// CXX11-NEXT: 12: ~argument_constructors::D() (Temporary object destructor)
-// CXX11-NEXT: 13: ~argument_constructors::D() (Temporary object destructor)
-// CXX17: 1: argument_constructors::D() (CXXConstructExpr, [B1.2], [B1.3]+0, class argument_constructors::D)
-// CXX17-NEXT: 2: [B1.1] (BindTemporary)
-// CXX17-NEXT: 3: [B1.2] (CXXConstructExpr, [B1.5], class argument_constructors::E)
-// CXX17-NEXT: 4: argument_constructors::E([B1.3]) (CXXFunctionalCastExpr, ConstructorConversion, class argument_constructors::E)
-// CXX17-NEXT: 5: argument_constructors::E e = argument_constructors::E(argument_constructors::D());
-// CXX17-NEXT: 6: ~argument_constructors::D() (Temporary object destructor)
-void passArgumentIntoAnotherConstructor() {
- E e = E(D());
-}
-
-
-// CHECK: void passTwoArgumentsIntoAnotherConstructor()
-// CXX11-ELIDE: 1: argument_constructors::D() (CXXConstructExpr, [B1.2], [B1.4], [B1.5], class argument_constructors::D)
-// CXX11-NOELIDE: 1: argument_constructors::D() (CXXConstructExpr, [B1.2], [B1.4], class argument_constructors::D)
-// CXX11-NEXT: 2: [B1.1] (BindTemporary)
-// CXX11-NEXT: 3: [B1.2] (ImplicitCastExpr, NoOp, const class argument_constructors::D)
-// CXX11-NEXT: 4: [B1.3]
-// CXX11-NEXT: 5: [B1.4] (CXXConstructExpr, [B1.6], [B1.13]+0, class argument_constructors::D)
-// CXX11-NEXT: 6: [B1.5] (BindTemporary)
-// CXX11-ELIDE-NEXT: 7: argument_constructors::D() (CXXConstructExpr, [B1.8], [B1.10], [B1.11], class argument_constructors::D)
-// CXX11-NOELIDE-NEXT: 7: argument_constructors::D() (CXXConstructExpr, [B1.8], [B1.10], class argument_constructors::D)
-// CXX11-NEXT: 8: [B1.7] (BindTemporary)
-// CXX11-NEXT: 9: [B1.8] (ImplicitCastExpr, NoOp, const class argument_constructors::D)
-// CXX11-NEXT: 10: [B1.9]
-// CXX11-NEXT: 11: [B1.10] (CXXConstructExpr, [B1.12], [B1.13]+1, class argument_constructors::D)
-// CXX11-NEXT: 12: [B1.11] (BindTemporary)
-// CXX11-NEXT: 13: argument_constructors::E([B1.6], [B1.12]) (CXXConstructExpr, class argument_constructors::E)
-// CXX11-NEXT: 14: ~argument_constructors::D() (Temporary object destructor)
-// CXX11-NEXT: 15: ~argument_constructors::D() (Temporary object destructor)
-// CXX11-NEXT: 16: ~argument_constructors::D() (Temporary object destructor)
-// CXX11-NEXT: 17: ~argument_constructors::D() (Temporary object destructor)
-// CXX17: 1: argument_constructors::D() (CXXConstructExpr, [B1.2], [B1.5]+0, class argument_constructors::D)
-// CXX17-NEXT: 2: [B1.1] (BindTemporary)
-// CXX17-NEXT: 3: argument_constructors::D() (CXXConstructExpr, [B1.4], [B1.5]+1, class argument_constructors::D)
-// CXX17-NEXT: 4: [B1.3] (BindTemporary)
-// CXX17-NEXT: 5: argument_constructors::E([B1.2], [B1.4]) (CXXConstructExpr, class argument_constructors::E)
-// CXX17-NEXT: 6: ~argument_constructors::D() (Temporary object destructor)
-// CXX17-NEXT: 7: ~argument_constructors::D() (Temporary object destructor)
-void passTwoArgumentsIntoAnotherConstructor() {
- E(D(), D());
-}
-} // end namespace argument_constructors
-
-namespace copy_elision_with_extra_arguments {
-class C {
-public:
- C();
- C(const C &c, int x = 0);
-};
-
-// CHECK: void testCopyElisionWhenCopyConstructorHasExtraArguments()
-// CHECK: [B1]
-// CXX11-ELIDE-NEXT: 1: copy_elision_with_extra_arguments::C() (CXXConstructExpr, [B1.3], [B1.5], class copy_elision_with_extra_arguments::C)
-// CXX11-NOELIDE-NEXT: 1: copy_elision_with_extra_arguments::C() (CXXConstructExpr, [B1.3], class copy_elision_with_extra_arguments::C)
-// CXX11-NEXT: 2: [B1.1] (ImplicitCastExpr, NoOp, const class copy_elision_with_extra_arguments::C)
-// CXX11-NEXT: 3: [B1.2]
-// CXX11-NEXT: 4:
-// CXX11-NEXT: 5: [B1.3] (CXXConstructExpr, [B1.6], class copy_elision_with_extra_arguments::C)
-// CXX11-NEXT: 6: copy_elision_with_extra_arguments::C c = copy_elision_with_extra_arguments::C();
-// CXX17-NEXT: 1: copy_elision_with_extra_arguments::C() (CXXConstructExpr, [B1.2], class copy_elision_with_extra_arguments::C)
-// CXX17-NEXT: 2: copy_elision_with_extra_arguments::C c = copy_elision_with_extra_arguments::C();
-void testCopyElisionWhenCopyConstructorHasExtraArguments() {
- C c = C();
-}
-} // namespace copy_elision_with_extra_arguments
-
-
-namespace operators {
-class C {
-public:
- C(int);
- C &operator+(C Other);
-};
-
-// FIXME: Find construction context for the this-argument of the operator.
-// CHECK: void testOperators()
-// CHECK: [B1]
-// CHECK-NEXT: 1: operator+
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, class operators::C &(*)(class o
-// CHECK-NEXT: 3: 1
-// CHECK-NEXT: 4: [B1.3] (CXXConstructExpr, [B1.6], class operators::C)
-// CHECK-NEXT: 5: operators::C([B1.4]) (CXXFunctionalCastExpr, ConstructorConversion, class operato
-// CHECK-NEXT: 6: [B1.5]
-// CHECK-NEXT: 7: 2
-// CXX11-ELIDE-NEXT: 8: [B1.7] (CXXConstructExpr, [B1.10], [B1.11], class operators::C)
-// CXX11-NOELIDE-NEXT: 8: [B1.7] (CXXConstructExpr, [B1.10], class operators::C)
-// CXX11-NEXT: 9: operators::C([B1.8]) (CXXFunctionalCastExpr, ConstructorConversion, class operato
-// CXX11-NEXT: 10: [B1.9]
-// CXX11-NEXT: 11: [B1.10] (CXXConstructExpr, [B1.12]+1, class operators::C)
-// CXX11-NEXT: 12: [B1.6] + [B1.11] (OperatorCall)
-// CXX17-NEXT: 8: [B1.7] (CXXConstructExpr, [B1.10]+1, class operators::C)
-// CXX17-NEXT: 9: operators::C([B1.8]) (CXXFunctionalCastExpr, ConstructorConversion, class operato
-// CXX17-NEXT: 10: [B1.6] + [B1.9] (OperatorCall)
-void testOperators() {
- C(1) + C(2);
-}
-} // namespace operators
-
-namespace variadic_function_arguments {
-class C {
- public:
- C(int);
-};
-
-int variadic(...);
-
-// This code is quite exotic, so let's not test the CFG for it,
-// but only make sure we don't crash.
-void testCrashOnVariadicArgument() {
- C c(variadic(0 ? c : 0)); // no-crash
-}
-} // namespace variadic_function_arguments
diff --git a/test/Analysis/cfg-rich-constructors.mm b/test/Analysis/cfg-rich-constructors.mm
deleted file mode 100644
index 289094293eb5..000000000000
--- a/test/Analysis/cfg-rich-constructors.mm
+++ /dev/null
@@ -1,66 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG -triple x86_64-apple-darwin12 -std=c++11 -w %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX11,ELIDE,CXX11-ELIDE %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG -triple x86_64-apple-darwin12 -std=c++17 -w %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX17,ELIDE,CXX17-ELIDE %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG -triple x86_64-apple-darwin12 -std=c++11 -w -analyzer-config elide-constructors=false %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX11,NOELIDE,CXX11-NOELIDE %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG -triple x86_64-apple-darwin12 -std=c++17 -w -analyzer-config elide-constructors=false %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX17,NOELIDE,CXX17-NOELIDE %s
-
-class D {
-public:
- D();
- ~D();
-};
-
-@interface E {}
--(void) foo: (D) d;
--(D) bar;
-@end
-
-// CHECK: void passArgumentIntoMessage(E *e)
-// CHECK: 1: e
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, LValueToRValue, E *)
-// CXX11-ELIDE-NEXT: 3: D() (CXXConstructExpr, [B1.4], [B1.6], [B1.7], class D)
-// CXX11-NOELIDE-NEXT: 3: D() (CXXConstructExpr, [B1.4], [B1.6], class D)
-// CXX11-NEXT: 4: [B1.3] (BindTemporary)
-// CXX11-NEXT: 5: [B1.4] (ImplicitCastExpr, NoOp, const class D)
-// CXX11-NEXT: 6: [B1.5]
-// CXX11-NEXT: 7: [B1.6] (CXXConstructExpr, [B1.8], [B1.9]+0, class D)
-// CXX11-NEXT: 8: [B1.7] (BindTemporary)
-// Double brackets trigger FileCheck variables, escape.
-// CXX11-NEXT: 9: {{\[}}[B1.2] foo:[B1.8]]
-// CXX11-NEXT: 10: ~D() (Temporary object destructor)
-// CXX11-NEXT: 11: ~D() (Temporary object destructor)
-// CXX17-NEXT: 3: D() (CXXConstructExpr, [B1.4], [B1.5]+0, class D)
-// CXX17-NEXT: 4: [B1.3] (BindTemporary)
-// Double brackets trigger FileCheck variables, escape.
-// CXX17-NEXT: 5: {{\[}}[B1.2] foo:[B1.4]]
-// CXX17-NEXT: 6: ~D() (Temporary object destructor)
-void passArgumentIntoMessage(E *e) {
- [e foo: D()];
-}
-
-// CHECK: void returnObjectFromMessage(E *e)
-// CHECK: [B1]
-// CHECK-NEXT: 1: e
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, LValueToRValue, E *)
-// Double brackets trigger FileCheck variables, escape.
-// CXX11-ELIDE-NEXT: 3: {{\[}}[B1.2] bar] (CXXRecordTypedCall, [B1.4], [B1.6], [B1.7])
-// CXX11-NOELIDE-NEXT: 3: {{\[}}[B1.2] bar] (CXXRecordTypedCall, [B1.4], [B1.6])
-// CXX11-NEXT: 4: [B1.3] (BindTemporary)
-// CXX11-NEXT: 5: [B1.4] (ImplicitCastExpr, NoOp, const class D)
-// CXX11-NEXT: 6: [B1.5]
-// CXX11-NEXT: 7: [B1.6] (CXXConstructExpr, [B1.8], class D)
-// CXX11-NEXT: 8: D d = [e bar];
-// CXX11-NEXT: 9: ~D() (Temporary object destructor)
-// CXX11-NEXT: 10: [B1.8].~D() (Implicit destructor)
-// Double brackets trigger FileCheck variables, escape.
-// CXX17-NEXT: 3: {{\[}}[B1.2] bar] (CXXRecordTypedCall, [B1.5], [B1.4])
-// CXX17-NEXT: 4: [B1.3] (BindTemporary)
-// CXX17-NEXT: 5: D d = [e bar];
-// CXX17-NEXT: 6: ~D() (Temporary object destructor)
-// CXX17-NEXT: 7: [B1.5].~D() (Implicit destructor)
-void returnObjectFromMessage(E *e) {
- D d = [e bar];
-}
diff --git a/test/Analysis/cfg.cpp b/test/Analysis/cfg.cpp
deleted file mode 100644
index f43a809c77ef..000000000000
--- a/test/Analysis/cfg.cpp
+++ /dev/null
@@ -1,494 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG -triple x86_64-apple-darwin12 -fheinous-gnu-extensions -std=c++11 -analyzer-config cfg-rich-constructors=false %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,WARNINGS %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG -triple x86_64-apple-darwin12 -fheinous-gnu-extensions -std=c++11 -analyzer-config cfg-rich-constructors=true %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,ANALYZER %s
-
-// This file tests how we construct two different flavors of the Clang CFG -
-// the CFG used by the Sema analysis-based warnings and the CFG used by the
-// static analyzer. The difference in the behavior is checked via FileCheck
-// prefixes (WARNINGS and ANALYZER respectively). When introducing new analyzer
-// flags, no new run lines should be added - just these flags would go to the
-// respective line depending on where is it turned on and where is it turned
-// off. Feel free to add tests that test only one of the CFG flavors if you're
-// not sure how the other flavor is supposed to work in your case.
-
-// CHECK-LABEL: void checkWrap(int i)
-// CHECK: ENTRY
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK: Succs (21): B2 B3 B4 B5 B6 B7 B8 B9
-// CHECK: B10 B11 B12 B13 B14 B15 B16 B17 B18 B19
-// CHECK: B20 B21 B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (21): B2 B3 B4 B5 B6 B7 B8 B9
-// CHECK-NEXT: B10 B11 B12 B13 B14 B15 B16 B17 B18 B19
-// CHECK-NEXT: B20 B21 B1
-void checkWrap(int i) {
- switch(i) {
- case 0: break;
- case 1: break;
- case 2: break;
- case 3: break;
- case 4: break;
- case 5: break;
- case 6: break;
- case 7: break;
- case 8: break;
- case 9: break;
- case 10: break;
- case 11: break;
- case 12: break;
- case 13: break;
- case 14: break;
- case 15: break;
- case 16: break;
- case 17: break;
- case 18: break;
- case 19: break;
- }
-}
-
-// CHECK-LABEL: void checkDeclStmts()
-// CHECK: ENTRY
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: int i;
-// CHECK-NEXT: 2: int j;
-// CHECK-NEXT: 3: 1
-// CHECK-NEXT: 4: int k = 1;
-// CHECK-NEXT: 5: int l;
-// CHECK-NEXT: 6: 2
-// CHECK-NEXT: 7: int m = 2;
-// WARNINGS-NEXT: (CXXConstructExpr, struct standalone)
-// ANALYZER-NEXT: (CXXConstructExpr, [B1.9], struct standalone)
-// CHECK-NEXT: 9: struct standalone myStandalone;
-// WARNINGS-NEXT: (CXXConstructExpr, struct (anonymous struct at {{.*}}))
-// ANALYZER-NEXT: (CXXConstructExpr, [B1.11], struct (anonymous struct at {{.*}}))
-// CHECK-NEXT: 11: struct (anonymous struct at {{.*}}) myAnon;
-// WARNINGS-NEXT: (CXXConstructExpr, struct named)
-// ANALYZER-NEXT: (CXXConstructExpr, [B1.13], struct named)
-// CHECK-NEXT: 13: struct named myNamed;
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-void checkDeclStmts() {
- int i, j;
- int k = 1, l, m = 2;
-
- struct standalone { int x, y; };
- struct standalone myStandalone;
-
- struct { int x, y; } myAnon;
-
- struct named { int x, y; } myNamed;
-
- static_assert(1, "abc");
-}
-
-
-// CHECK-LABEL: void checkGCCAsmRValueOutput()
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: int arg
-// CHECK-NEXT: 2: arg
-// CHECK-NEXT: 3: (int)[B1.2] (CStyleCastExpr, NoOp, int)
-// CHECK-NEXT: 4: asm ("" : "=r" ([B1.3]));
-// CHECK-NEXT: 5: arg
-// CHECK-NEXT: 6: asm ("" : "=r" ([B1.5]));
-void checkGCCAsmRValueOutput() {
- int arg;
- __asm__("" : "=r"((int)arg)); // rvalue output operand
- __asm__("" : "=r"(arg)); // lvalue output operand
-}
-
-
-// CHECK-LABEL: void F(EmptyE e)
-// CHECK: ENTRY
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: e
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, LValueToRValue, enum EmptyE)
-// CHECK-NEXT: 3: [B1.2] (ImplicitCastExpr, IntegralCast, int)
-// CHECK-NEXT: T: switch [B1.3]
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-enum EmptyE {};
-void F(EmptyE e) {
- switch (e) {}
-}
-
-// CHECK-LABEL: void testBuiltinSize()
-// CHECK: ENTRY
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: __builtin_object_size
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, BuiltinFnToFnPtr, unsigned long (*)(const void *, int) noexcept)
-// CHECK-NEXT: 3: [B1.2](dummy(), 0)
-// CHECK-NEXT: 4: (void)[B1.3] (CStyleCastExpr, ToVoid, void)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void testBuiltinSize() {
- extern int *dummy();
- (void)__builtin_object_size(dummy(), 0);
-}
-
-
-class A {
-public:
- A() {}
- ~A() {}
-};
-
-// CHECK-LABEL: void test_deletedtor()
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: CFGNewAllocator(A *)
-// WARNINGS-NEXT: 2: (CXXConstructExpr, class A)
-// ANALYZER-NEXT: 2: (CXXConstructExpr, [B1.3], class A)
-// CHECK-NEXT: 3: new A([B1.2])
-// CHECK-NEXT: 4: A *a = new A();
-// CHECK-NEXT: 5: a
-// CHECK-NEXT: 6: [B1.5] (ImplicitCastExpr, LValueToRValue, class A *)
-// CHECK-NEXT: 7: [B1.6]->~A() (Implicit destructor)
-// CHECK-NEXT: 8: delete [B1.6]
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_deletedtor() {
- A *a = new A();
- delete a;
-}
-
-// CHECK-LABEL: void test_deleteArraydtor()
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: 5
-// CHECK-NEXT: 2: CFGNewAllocator(A *)
-// WARNINGS-NEXT: 3: (CXXConstructExpr, class A [5])
-// ANALYZER-NEXT: 3: (CXXConstructExpr, [B1.4], class A [5])
-// CHECK-NEXT: 4: new A {{\[\[}}B1.1]]
-// CHECK-NEXT: 5: A *a = new A [5];
-// CHECK-NEXT: 6: a
-// CHECK-NEXT: 7: [B1.6] (ImplicitCastExpr, LValueToRValue, class A *)
-// CHECK-NEXT: 8: [B1.7]->~A() (Implicit destructor)
-// CHECK-NEXT: 9: delete [] [B1.7]
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_deleteArraydtor() {
- A *a = new A[5];
- delete[] a;
-}
-
-
-namespace NoReturnSingleSuccessor {
- struct A {
- A();
- ~A();
- };
-
- struct B : public A {
- B();
- ~B() __attribute__((noreturn));
- };
-
-// CHECK-LABEL: int test1(int *x)
-// CHECK: 1: 1
-// CHECK-NEXT: 2: return
-// CHECK-NEXT: ~B() (Implicit destructor)
-// CHECK-NEXT: Preds (1)
-// CHECK-NEXT: Succs (1): B0
- int test1(int *x) {
- B b;
- if (x)
- return 1;
- }
-
-// CHECK-LABEL: int test2(int *x)
-// CHECK: 1: 1
-// CHECK-NEXT: 2: return
-// CHECK-NEXT: destructor
-// CHECK-NEXT: Preds (1)
-// CHECK-NEXT: Succs (1): B0
- int test2(int *x) {
- const A& a = B();
- if (x)
- return 1;
- }
-}
-
-// Test CFG support for "extending" an enum.
-// CHECK-LABEL: int test_enum_with_extension(enum MyEnum value)
-// CHECK: [B7 (ENTRY)]
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B1]
-// CHECK-NEXT: 1: x
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: 3: return [B1.2];
-// CHECK-NEXT: Preds (5): B3 B4 B5 B6 B2(Unreachable)
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: 0
-// CHECK-NEXT: 2: int x = 0;
-// CHECK-NEXT: 3: value
-// CHECK-NEXT: 4: [B2.3] (ImplicitCastExpr, LValueToRValue, enum MyEnum)
-// CHECK-NEXT: 5: [B2.4] (ImplicitCastExpr, IntegralCast, int)
-// CHECK-NEXT: T: switch [B2.5]
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (5): B3 B4 B5 B6 B1(Unreachable)
-// CHECK: [B3]
-// CHECK-NEXT: case D:
-// CHECK-NEXT: 1: 4
-// CHECK-NEXT: 2: x
-// CHECK-NEXT: 3: [B3.2] = [B3.1]
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B4]
-// CHECK-NEXT: case C:
-// CHECK-NEXT: 1: 3
-// CHECK-NEXT: 2: x
-// CHECK-NEXT: 3: [B4.2] = [B4.1]
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B5]
-// CHECK-NEXT: case B:
-// CHECK-NEXT: 1: 2
-// CHECK-NEXT: 2: x
-// CHECK-NEXT: 3: [B5.2] = [B5.1]
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B6]
-// CHECK-NEXT: case A:
-// CHECK-NEXT: 1: 1
-// CHECK-NEXT: 2: x
-// CHECK-NEXT: 3: [B6.2] = [B6.1]
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-enum MyEnum { A, B, C };
-static const enum MyEnum D = (enum MyEnum) 32;
-
-int test_enum_with_extension(enum MyEnum value) {
- int x = 0;
- switch (value) {
- case A: x = 1; break;
- case B: x = 2; break;
- case C: x = 3; break;
- case D: x = 4; break;
- }
- return x;
-}
-
-// CHECK-LABEL: int test_enum_with_extension_default(enum MyEnum value)
-// CHECK: [B7 (ENTRY)]
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B1]
-// CHECK-NEXT: 1: x
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: 3: return [B1.2];
-// CHECK-NEXT: Preds (4): B3 B4 B5 B6
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: 0
-// CHECK-NEXT: 2: int x = 0;
-// CHECK-NEXT: 3: value
-// CHECK-NEXT: 4: [B2.3] (ImplicitCastExpr, LValueToRValue, enum MyEnum)
-// CHECK-NEXT: 5: [B2.4] (ImplicitCastExpr, IntegralCast, int)
-// CHECK-NEXT: T: switch [B2.5]
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (4): B4 B5 B6 B3(Unreachable)
-// CHECK: [B3]
-// CHECK-NEXT: default:
-// CHECK-NEXT: 1: 4
-// CHECK-NEXT: 2: x
-// CHECK-NEXT: 3: [B3.2] = [B3.1]
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B2(Unreachable)
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B4]
-// CHECK-NEXT: case C:
-// CHECK-NEXT: 1: 3
-// CHECK-NEXT: 2: x
-// CHECK-NEXT: 3: [B4.2] = [B4.1]
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B5]
-// CHECK-NEXT: case B:
-// CHECK-NEXT: 1: 2
-// CHECK-NEXT: 2: x
-// CHECK-NEXT: 3: [B5.2] = [B5.1]
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B6]
-// CHECK-NEXT: case A:
-// CHECK-NEXT: 1: 1
-// CHECK-NEXT: 2: x
-// CHECK-NEXT: 3: [B6.2] = [B6.1]
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-int test_enum_with_extension_default(enum MyEnum value) {
- int x = 0;
- switch (value) {
- case A: x = 1; break;
- case B: x = 2; break;
- case C: x = 3; break;
- default: x = 4; break;
- }
- return x;
-}
-
-
-// CHECK-LABEL: void test_placement_new()
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: int buffer[16];
-// CHECK-NEXT: 2: buffer
-// CHECK-NEXT: 3: [B1.2] (ImplicitCastExpr, ArrayToPointerDecay, int *)
-// CHECK-NEXT: 4: [B1.3] (ImplicitCastExpr, BitCast, void *)
-// CHECK-NEXT: 5: CFGNewAllocator(MyClass *)
-// WARNINGS-NEXT: 6: (CXXConstructExpr, class MyClass)
-// ANALYZER-NEXT: 6: (CXXConstructExpr, [B1.7], class MyClass)
-// CHECK-NEXT: 7: new ([B1.4]) MyClass([B1.6])
-// CHECK-NEXT: 8: MyClass *obj = new (buffer) MyClass();
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-
-extern void* operator new (unsigned long sz, void* v);
-extern void* operator new[] (unsigned long sz, void* ptr);
-
-class MyClass {
-public:
- MyClass() {}
- ~MyClass() {}
-};
-
-void test_placement_new() {
- int buffer[16];
- MyClass* obj = new (buffer) MyClass();
-}
-
-// CHECK-LABEL: void test_placement_new_array()
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: int buffer[16];
-// CHECK-NEXT: 2: buffer
-// CHECK-NEXT: 3: [B1.2] (ImplicitCastExpr, ArrayToPointerDecay, int *)
-// CHECK-NEXT: 4: [B1.3] (ImplicitCastExpr, BitCast, void *)
-// CHECK-NEXT: 5: 5
-// CHECK-NEXT: 6: CFGNewAllocator(MyClass *)
-// WARNINGS-NEXT: 7: (CXXConstructExpr, class MyClass [5])
-// ANALYZER-NEXT: 7: (CXXConstructExpr, [B1.8], class MyClass [5])
-// CHECK-NEXT: 8: new ([B1.4]) MyClass {{\[\[}}B1.5]]
-// CHECK-NEXT: 9: MyClass *obj = new (buffer) MyClass [5];
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-
-void test_placement_new_array() {
- int buffer[16];
- MyClass* obj = new (buffer) MyClass[5];
-}
-
-
-// CHECK-LABEL: void test_lifetime_extended_temporaries()
-// CHECK: [B1]
-struct LifetimeExtend { LifetimeExtend(int); ~LifetimeExtend(); };
-struct Aggregate { const LifetimeExtend a; const LifetimeExtend b; };
-struct AggregateRef { const LifetimeExtend &a; const LifetimeExtend &b; };
-void test_lifetime_extended_temporaries() {
- // CHECK: LifetimeExtend(1);
- // CHECK-NEXT: : 1
- // CHECK-NEXT: ~LifetimeExtend()
- // CHECK-NOT: ~LifetimeExtend()
- {
- const LifetimeExtend &l = LifetimeExtend(1);
- 1;
- }
- // CHECK: LifetimeExtend(2)
- // CHECK-NEXT: ~LifetimeExtend()
- // CHECK-NEXT: : 2
- // CHECK-NOT: ~LifetimeExtend()
- {
- // No life-time extension.
- const int &l = (LifetimeExtend(2), 2);
- 2;
- }
- // CHECK: LifetimeExtend(3)
- // CHECK-NEXT: : 3
- // CHECK-NEXT: ~LifetimeExtend()
- // CHECK-NOT: ~LifetimeExtend()
- {
- // The last one is lifetime extended.
- const LifetimeExtend &l = (3, LifetimeExtend(3));
- 3;
- }
- // CHECK: LifetimeExtend(4)
- // CHECK-NEXT: ~LifetimeExtend()
- // CHECK-NEXT: ~LifetimeExtend()
- // CHECK-NEXT: : 4
- // CHECK-NOT: ~LifetimeExtend()
- {
- Aggregate a{LifetimeExtend(4), LifetimeExtend(4)};
- 4;
- }
- // CHECK: LifetimeExtend(5)
- // CHECK-NEXT: : 5
- // FIXME: We want to emit the destructors of the lifetime
- // extended variables here.
- // CHECK-NOT: ~LifetimeExtend()
- {
- AggregateRef a{LifetimeExtend(5), LifetimeExtend(5)};
- 5;
- }
- // FIXME: Add tests for lifetime extension via subobject
- // references (LifetimeExtend().some_member).
-}
-
-
-// CHECK-LABEL: template<> int *PR18472<int>()
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: 0
-// CHECK-NEXT: 2: [B1.1] (ImplicitCastExpr, NullToPointer, PR18472_t)
-// CHECK-NEXT: 3: (PR18472_t)[B1.2] (CStyleCastExpr, NoOp, PR18472_t)
-// CHECK-NEXT: 4: CFGNewAllocator(int *)
-// CHECK-NEXT: 5: new (([B1.3])) int
-// CHECK-NEXT: 6: return [B1.5];
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-
-extern "C" typedef int *PR18472_t;
-void *operator new (unsigned long, PR18472_t);
-template <class T> T *PR18472() {
- return new (((PR18472_t) 0)) T;
-}
-void PR18472_helper() {
- PR18472<int>();
-}
-
diff --git a/test/Analysis/cfref_PR2519.c b/test/Analysis/cfref_PR2519.c
deleted file mode 100644
index 5636737ffe0e..000000000000
--- a/test/Analysis/cfref_PR2519.c
+++ /dev/null
@@ -1,46 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-typedef unsigned char Boolean;
-typedef signed long CFIndex;
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-typedef struct {} CFAllocatorContext;
-extern void CFRelease(CFTypeRef cf);
-typedef struct {}
-CFDictionaryKeyCallBacks;
-extern const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks;
-typedef struct {}
-CFDictionaryValueCallBacks;
-extern const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
-typedef const struct __CFDictionary * CFDictionaryRef;
-extern CFDictionaryRef CFDictionaryCreate(CFAllocatorRef allocator, const void **keys, const void **values, CFIndex numValues, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
-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;
-typedef const struct __CFNumber * CFNumberRef;
-extern CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-typedef struct __CFNotificationCenter * CFNotificationCenterRef;
-extern CFNotificationCenterRef CFNotificationCenterGetDistributedCenter(void);
-extern void CFNotificationCenterPostNotification(CFNotificationCenterRef center, CFStringRef name, const void *object, CFDictionaryRef userInfo, Boolean deliverImmediately);
-
-// This test case was reported in PR2519 as a false positive (_value was
-// reported as being leaked).
-
-int main(int argc, char **argv) {
- CFStringRef _key = ((CFStringRef) __builtin___CFStringMakeConstantString ("" "Process identifier" ""));
- int pid = 42;
-
- CFNumberRef _value = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &pid);
- CFDictionaryRef userInfo = CFDictionaryCreate(kCFAllocatorDefault, (const void **)&_key, (const void **)&_value, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
- CFRelease(_value); // no-warning
- CFNotificationCenterPostNotification(CFNotificationCenterGetDistributedCenter(),
- ((CFStringRef) __builtin___CFStringMakeConstantString ("" "GrowlPreferencesChanged" "")),
- ((CFStringRef) __builtin___CFStringMakeConstantString ("" "GrowlUserDefaults" "")),
- userInfo, 0);
- CFRelease(userInfo); // no-warning
-
- return 0;
-}
-
diff --git a/test/Analysis/cfref_rdar6080742.c b/test/Analysis/cfref_rdar6080742.c
deleted file mode 100644
index 2f7403658e8a..000000000000
--- a/test/Analysis/cfref_rdar6080742.c
+++ /dev/null
@@ -1,56 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-// This test case was reported in <rdar:problem/6080742>.
-// It tests path-sensitivity with respect to '!(cfstring != 0)' (negation of inequality).
-
-int printf(const char *restrict,...);
-typedef unsigned long UInt32;
-typedef signed long SInt32;
-typedef SInt32 OSStatus;
-typedef unsigned char Boolean;
-enum { noErr = 0};
-typedef const void *CFTypeRef;
-typedef const struct __CFString *CFStringRef;
-typedef const struct __CFAllocator *CFAllocatorRef;
-extern void CFRelease(CFTypeRef cf);
-typedef UInt32 CFStringEncoding;
-enum { kCFStringEncodingMacRoman = 0, kCFStringEncodingWindowsLatin1 = 0x0500,
- kCFStringEncodingISOLatin1 = 0x0201, kCFStringEncodingNextStepLatin = 0x0B01,
- kCFStringEncodingASCII = 0x0600, kCFStringEncodingUnicode = 0x0100,
- kCFStringEncodingUTF8 = 0x08000100, kCFStringEncodingNonLossyASCII = 0x0BFF,
- kCFStringEncodingUTF16 = 0x0100, kCFStringEncodingUTF16BE = 0x10000100,
- kCFStringEncodingUTF16LE = 0x14000100, kCFStringEncodingUTF32 = 0x0c000100,
- kCFStringEncodingUTF32BE = 0x18000100, kCFStringEncodingUTF32LE = 0x1c000100};
-extern CFStringRef CFStringCreateWithCString(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding);
-
-enum { memROZWarn = -99, memROZError = -99, memROZErr = -99, memFullErr = -108,
- nilHandleErr = -109, memWZErr = -111, memPurErr = -112, memAdrErr = -110,
- memAZErr = -113, memPCErr = -114, memBCErr = -115, memSCErr = -116, memLockedErr = -117};
-
-#define DEBUG1
-
-void DebugStop(const char *format,...);
-void DebugTraceIf(unsigned int condition, const char *format,...);
-Boolean DebugDisplayOSStatusMsg(OSStatus status, const char *statusStr, const char *fileName, unsigned long lineNumber);
-
-#define Assert(condition)if (!(condition)) { DebugStop("Assertion failure: %s [File: %s, Line: %lu]", #condition, __FILE__, __LINE__); }
-#define AssertMsg(condition, message)if (!(condition)) { DebugStop("Assertion failure: %s (%s) [File: %s, Line: %lu]", #condition, message, __FILE__, __LINE__); }
-#define Require(condition)if (!(condition)) { DebugStop("Assertion failure: %s [File: %s, Line: %lu]", #condition, __FILE__, __LINE__); }
-#define RequireAction(condition, action)if (!(condition)) { DebugStop("Assertion failure: %s [File: %s, Line: %lu]", #condition, __FILE__, __LINE__); action }
-#define RequireActionSilent(condition, action)if (!(condition)) { action }
-#define AssertNoErr(err){ DebugDisplayOSStatusMsg((err), #err, __FILE__, __LINE__); }
-#define RequireNoErr(err, action){ if( DebugDisplayOSStatusMsg((err), #err, __FILE__, __LINE__) ) { action }}
-
-void DebugStop(const char *format,...); /* Not an abort function. */
-
-int main(int argc, char *argv[]) {
- CFStringRef cfString;
- OSStatus status = noErr;
- cfString = CFStringCreateWithCString(0, "hello", kCFStringEncodingUTF8);
- RequireAction(cfString != 0, return memFullErr;) //no - warning
- printf("cfstring %p\n", cfString);
- Exit:
- CFRelease(cfString);
- return 0;
-}
diff --git a/test/Analysis/check-deserialization.cpp b/test/Analysis/check-deserialization.cpp
deleted file mode 100644
index 9e4e47194c24..000000000000
--- a/test/Analysis/check-deserialization.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t %s
-// RUN: %clang_analyze_cc1 -error-on-deserialized-decl S1_method -include-pch %t -analyzer-checker=core %s
-// RUN: %clang_analyze_cc1 -include-pch %t -analyzer-checker=core -verify %s
-
-#ifndef HEADER
-#define HEADER
-// Header.
-
-void S1_method(); // This should not be deserialized.
-
-
-#else
-// Using the header.
-
-int test() {
- int x = 0;
- return 5/x; //expected-warning {{Division by zero}}
-}
-
-#endif
diff --git a/test/Analysis/checker-plugins.c b/test/Analysis/checker-plugins.c
deleted file mode 100644
index ee60ec6e2192..000000000000
--- a/test/Analysis/checker-plugins.c
+++ /dev/null
@@ -1,10 +0,0 @@
-// RUN: %clang_analyze_cc1 -load %llvmshlibdir/SampleAnalyzerPlugin%pluginext -analyzer-checker='example.MainCallChecker' -verify %s
-// REQUIRES: plugins, examples
-
-// Test that the MainCallChecker example analyzer plugin loads and runs.
-
-int main();
-
-void caller() {
- main(); // expected-warning {{call to main}}
-}
diff --git a/test/Analysis/chroot.c b/test/Analysis/chroot.c
deleted file mode 100644
index 7e514f744000..000000000000
--- a/test/Analysis/chroot.c
+++ /dev/null
@@ -1,24 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.unix.Chroot -analyzer-store region -verify %s
-
-extern int chroot(const char* path);
-extern int chdir(const char* path);
-
-void foo(void) {
-}
-
-void f1(void) {
- chroot("/usr/local"); // root changed.
- foo(); // expected-warning {{No call of chdir("/") immediately after chroot}}
-}
-
-void f2(void) {
- chroot("/usr/local"); // root changed.
- chdir("/"); // enter the jail.
- foo(); // no-warning
-}
-
-void f3(void) {
- chroot("/usr/local"); // root changed.
- chdir("../"); // change working directory, still out of jail.
- foo(); // expected-warning {{No call of chdir("/") immediately after chroot}}
-}
diff --git a/test/Analysis/comparison-implicit-casts.cpp b/test/Analysis/comparison-implicit-casts.cpp
deleted file mode 100644
index fe5254c0a53b..000000000000
--- a/test/Analysis/comparison-implicit-casts.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.cstring,debug.ExprInspection -triple i386-apple-darwin9 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.cstring,debug.ExprInspection -triple x86_64-apple-darwin9 -verify %s
-
-// This file runs in C++ mode so that the comparison type is 'bool', not 'int'.
-void clang_analyzer_eval(int);
-typedef typeof(sizeof(int)) size_t;
-
-// PR12206/12510 - When SimpleSValBuilder figures out that a symbol is fully
-// constrained, it should cast the value to the result type in a binary
-// operation...unless the binary operation is a comparison, in which case the
-// two arguments should be the same type, but won't match the result type.
-//
-// This is not directly related to additive folding, but we use SValBuilder's
-// additive folding to tickle the bug. ExprEngine will simplify fully-constrained
-// symbols, so SValBuilder will only see them if they are (a) part of an evaluated
-// SymExpr (e.g. with additive folding) or (b) generated by a checker (e.g.
-// unix.cstring's strlen() modelling).
-void PR12206(int x) {
- size_t comparisonSize = sizeof(1 == 1);
-
- // Sanity check. This test is useless if size_t isn't bigger than bool.
- clang_analyzer_eval(sizeof(size_t) > comparisonSize); // expected-warning{{TRUE}}
-
- // Build a SymIntExpr, dependent on x.
- int local = x - 1;
-
- // Create a value that requires more bits to store than a comparison result.
- int value = 1;
- value <<= 8 * comparisonSize;
- value += 1;
-
- // Constrain the value of x.
- if (x != value) return;
-
- // Constant-folding will turn (local+1) back into the symbol for x.
- // The point of this dance is to make SValBuilder be responsible for
- // turning the symbol into a ConcreteInt, rather than ExprEngine.
-
- // Test relational operators.
- clang_analyzer_eval((local + 1) >= 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(2 <= (local + 1)); // expected-warning{{TRUE}}
-
- // Test equality operators.
- clang_analyzer_eval((local + 1) != 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(1 != (local + 1)); // expected-warning{{TRUE}}
-}
-
-void PR12206_truncation(signed char x) {
- // Build a SymIntExpr, dependent on x.
- signed char local = x - 1;
-
- // Constrain the value of x.
- if (x != 1) return;
-
- // Constant-folding will turn (local+1) back into the symbol for x.
- // The point of this dance is to make SValBuilder be responsible for
- // turning the symbol into a ConcreteInt, rather than ExprEngine.
-
- // Construct a value that cannot be represented by 'char',
- // but that has the same lower bits as x.
- signed int value = 1 + (1 << 8);
-
- // Test relational operators.
- clang_analyzer_eval((local + 1) < value); // expected-warning{{TRUE}}
- clang_analyzer_eval(value > (local + 1)); // expected-warning{{TRUE}}
-
- // Test equality operators.
- clang_analyzer_eval((local + 1) != value); // expected-warning{{TRUE}}
- clang_analyzer_eval(value != (local + 1)); // expected-warning{{TRUE}}
-}
-
-// This test is insurance in case we significantly change how SymExprs are
-// evaluated.
-size_t strlen(const char *s);
-void PR12206_strlen(const char *x) {
- size_t comparisonSize = sizeof(1 == 1);
-
- // Sanity check. This test is useless if size_t isn't bigger than bool.
- clang_analyzer_eval(sizeof(size_t) > comparisonSize); // expected-warning{{TRUE}}
-
- // Create a value that requires more bits to store than a comparison result.
- size_t value = 1UL;
- value <<= 8 * comparisonSize;
- value += 1;
-
- // Constrain the length of x.
- if (strlen(x) != value) return;
-
- // Test relational operators.
- clang_analyzer_eval(strlen(x) >= 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(2 <= strlen(x)); // expected-warning{{TRUE}}
-
- // Test equality operators.
- clang_analyzer_eval(strlen(x) != 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(1 != strlen(x)); // expected-warning{{TRUE}}
-}
diff --git a/test/Analysis/complex-init-list.cpp b/test/Analysis/complex-init-list.cpp
deleted file mode 100644
index 299f362ffd8a..000000000000
--- a/test/Analysis/complex-init-list.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -verify %s
-// expected-no-diagnostics
-
-// Do not crash on initialization to complex numbers.
-void init_complex() {
- _Complex float valid1 = { 0.0f, 0.0f };
-}
diff --git a/test/Analysis/complex.c b/test/Analysis/complex.c
deleted file mode 100644
index 1f61b141cb31..000000000000
--- a/test/Analysis/complex.c
+++ /dev/null
@@ -1,17 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-store=region -verify -Wno-unreachable-code -ffreestanding %s
-
-#include <stdint.h>
-
-void f1(int * p) {
-
- // This branch should be infeasible
- // because __imag__ p is 0.
- if (!p && __imag__ (intptr_t) p)
- *p = 1; // no-warning
-
- // If p != 0 then this branch is feasible; otherwise it is not.
- if (__real__ (intptr_t) p)
- *p = 1; // no-warning
-
- *p = 2; // expected-warning{{Dereference of null pointer}}
-}
diff --git a/test/Analysis/compound-literals.c b/test/Analysis/compound-literals.c
deleted file mode 100644
index a2556d2a7950..000000000000
--- a/test/Analysis/compound-literals.c
+++ /dev/null
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -triple=i386-apple-darwin10 -analyze -analyzer-checker=debug.ExprInspection -verify %s
-void clang_analyzer_eval(int);
-
-// pr28449: Used to crash.
-void foo(void) {
- static const unsigned short array[] = (const unsigned short[]){0x0F00};
- // FIXME: Should be true.
- clang_analyzer_eval(array[0] == 0x0F00); // expected-warning{{UNKNOWN}}
-}
diff --git a/test/Analysis/concrete-address.c b/test/Analysis/concrete-address.c
deleted file mode 100644
index f1608f8a801c..000000000000
--- a/test/Analysis/concrete-address.c
+++ /dev/null
@@ -1,7 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-void foo() {
- int *p = (int*) 0x10000; // Should not crash here.
- *p = 3;
-}
diff --git a/test/Analysis/conditional-operator.cpp b/test/Analysis/conditional-operator.cpp
deleted file mode 100644
index 5060ec0c804f..000000000000
--- a/test/Analysis/conditional-operator.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config eagerly-assume=false %s -analyzer-output=text -verify
-
-void clang_analyzer_eval(bool);
-
-// Test that the analyzer does not crash on GNU extension operator "?:".
-void NoCrashTest(int x, int y) {
- int w = x ?: y;
-}
-
-void OperatorEvaluationTest(int y) {
- int x = 1;
- int w = x ?: y; // expected-note {{'?' condition is true}}
-
- // TODO: We are not precise when processing the "?:" operator in C++.
- clang_analyzer_eval(w == 1); // expected-warning{{UNKNOWN}}
- // expected-note@-1{{UNKNOWN}}
-}
diff --git a/test/Analysis/conditional-path-notes.c b/test/Analysis/conditional-path-notes.c
deleted file mode 100644
index fb2dd9f2ca54..000000000000
--- a/test/Analysis/conditional-path-notes.c
+++ /dev/null
@@ -1,86 +0,0 @@
-// RUN: %clang_analyze_cc1 %s -analyzer-checker=core.NullDereference -analyzer-output=text -verify
-// RUN: %clang_analyze_cc1 %s -analyzer-checker=core.NullDereference -analyzer-output=plist -o %t
-// RUN: cat %t | %diff_plist %S/Inputs/expected-plists/conditional-path-notes.c.plist -
-
-void testCondOp(int *p) {
- int *x = p ? p : p;
- // expected-note@-1 {{Assuming 'p' is null}}
- // expected-note@-2 {{'?' condition is false}}
- // expected-note@-3 {{'x' initialized to a null pointer value}}
- *x = 1; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'x')}}
-}
-
-void testCondProblem(int *p) {
- if (p) return;
- // expected-note@-1 {{Assuming 'p' is null}}
- // expected-note@-2 {{Taking false branch}}
-
- int x = *p ? 0 : 1; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'p')}}
- (void)x;
-}
-
-void testLHSProblem(int *p) {
- int x = !p ? *p : 1; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}}
- // expected-note@-1 {{Assuming 'p' is null}}
- // expected-note@-2 {{'?' condition is true}}
- // expected-note@-3 {{Dereference of null pointer (loaded from variable 'p')}}
- (void)x;
-}
-
-void testRHSProblem(int *p) {
- int x = p ? 1 : *p; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}}
- // expected-note@-1 {{Assuming 'p' is null}}
- // expected-note@-2 {{'?' condition is false}}
- // expected-note@-3 {{Dereference of null pointer (loaded from variable 'p')}}
- (void)x;
-}
-
-void testBinaryCondOp(int *p) {
- int *x = p ?: p;
- // expected-note@-1 {{'?' condition is false}}
- // expected-note@-2 {{'x' initialized to a null pointer value}}
- *x = 1; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'x')}}
-}
-
-void testBinaryLHSProblem(int *p) {
- if (p) return;
- // expected-note@-1 {{Assuming 'p' is null}}
- // expected-note@-2 {{Taking false branch}}
-
- int x = *p ?: 1; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'p')}}
- (void)x;
-}
-
-void testDiagnosableBranch(int a) {
- if (a) {
- // expected-note@-1 {{Assuming 'a' is not equal to 0}}
- // expected-note@-2 {{Taking true branch}}
- *(volatile int *)0 = 1; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1 {{Dereference of null pointer}}
- }
-}
-
-void testDiagnosableBranchLogical(int a, int b) {
- if (a && b) {
- // expected-note@-1 {{Assuming 'a' is not equal to 0}}
- // expected-note@-2 {{Left side of '&&' is true}}
- // expected-note@-3 {{Assuming 'b' is not equal to 0}}
- // expected-note@-4 {{Taking true branch}}
- *(volatile int *)0 = 1; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1 {{Dereference of null pointer}}
- }
-}
-
-void testNonDiagnosableBranchArithmetic(int a, int b) {
- if (a - b) {
- // expected-note@-1 {{Taking true branch}}
- // expected-note@-2 {{Assuming the condition is true}}
- *(volatile int *)0 = 1; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1 {{Dereference of null pointer}}
- }
-}
-
diff --git a/test/Analysis/const-method-call.cpp b/test/Analysis/const-method-call.cpp
deleted file mode 100644
index 902bdee27721..000000000000
--- a/test/Analysis/const-method-call.cpp
+++ /dev/null
@@ -1,273 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(bool);
-
-struct A {
- int x;
- void foo() const;
- void bar();
-
- void testImplicitThisSyntax() {
- x = 3;
- foo();
- clang_analyzer_eval(x == 3); // expected-warning{{TRUE}}
- bar();
- clang_analyzer_eval(x == 3); // expected-warning{{UNKNOWN}}
- }
-};
-
-struct B {
- mutable int mut;
- void foo() const;
-};
-
-struct C {
- int *p;
- void foo() const;
-};
-
-struct MutBase {
- mutable int b_mut;
-};
-
-struct MutDerived : MutBase {
- void foo() const;
-};
-
-struct PBase {
- int *p;
-};
-
-struct PDerived : PBase {
- void foo() const;
-};
-
-struct Inner {
- int x;
- int *p;
- void bar() const;
-};
-
-struct Outer {
- int x;
- Inner in;
- void foo() const;
-};
-
-void checkThatConstMethodWithoutDefinitionDoesNotInvalidateObject() {
- A t;
- t.x = 3;
- t.foo();
- clang_analyzer_eval(t.x == 3); // expected-warning{{TRUE}}
- // Test non-const does invalidate
- t.bar();
- clang_analyzer_eval(t.x); // expected-warning{{UNKNOWN}}
-}
-
-void checkThatConstMethodDoesInvalidateMutableFields() {
- B t;
- t.mut = 4;
- t.foo();
- clang_analyzer_eval(t.mut); // expected-warning{{UNKNOWN}}
-}
-
-void checkThatConstMethodDoesInvalidatePointedAtMemory() {
- int x = 1;
- C t;
- t.p = &x;
- t.foo();
- clang_analyzer_eval(x); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(t.p == &x); // expected-warning{{TRUE}}
-}
-
-void checkThatConstMethodDoesInvalidateInheritedMutableFields() {
- MutDerived t;
- t.b_mut = 4;
- t.foo();
- clang_analyzer_eval(t.b_mut); // expected-warning{{UNKNOWN}}
-}
-
-void checkThatConstMethodDoesInvalidateInheritedPointedAtMemory() {
- int x = 1;
- PDerived t;
- t.p = &x;
- t.foo();
- clang_analyzer_eval(x); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(t.p == &x); // expected-warning{{TRUE}}
-}
-
-void checkThatConstMethodDoesInvalidateContainedPointedAtMemory() {
- int x = 1;
- Outer t;
- t.x = 2;
- t.in.p = &x;
- t.foo();
- clang_analyzer_eval(x); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(t.x == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(t.in.p == &x); // expected-warning{{TRUE}}
-}
-
-void checkThatContainedConstMethodDoesNotInvalidateObjects() {
- Outer t;
- t.x = 1;
- t.in.x = 2;
- t.in.bar();
- clang_analyzer_eval(t.x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(t.in.x == 2); // expected-warning{{TRUE}}
-}
-
-void checkPointerTypedThisExpression(A *a) {
- a->x = 3;
- a->foo();
- clang_analyzer_eval(a->x == 3); // expected-warning{{TRUE}}
- a->bar();
- clang_analyzer_eval(a->x == 3); // expected-warning{{UNKNOWN}}
-}
-
-void checkReferenceTypedThisExpression(A &a) {
- a.x = 3;
- a.foo();
- clang_analyzer_eval(a.x == 3); // expected-warning{{TRUE}}
- a.bar();
- clang_analyzer_eval(a.x == 3); // expected-warning{{UNKNOWN}}
-}
-
-// --- Versions of the above tests where the const method is inherited --- //
-
-struct B1 {
- void foo() const;
-};
-
-struct D1 : public B1 {
- int x;
-};
-
-struct D2 : public B1 {
- mutable int mut;
-};
-
-struct D3 : public B1 {
- int *p;
-};
-
-struct DInner : public B1 {
- int x;
- int *p;
-};
-
-struct DOuter : public B1 {
- int x;
- DInner in;
-};
-
-void checkThatInheritedConstMethodDoesNotInvalidateObject() {
- D1 t;
- t.x = 1;
- t.foo();
- clang_analyzer_eval(t.x == 1); // expected-warning{{TRUE}}
-}
-
-void checkThatInheritedConstMethodDoesInvalidateMutableFields() {
- D2 t;
- t.mut = 1;
- t.foo();
- clang_analyzer_eval(t.mut); // expected-warning{{UNKNOWN}}
-}
-
-void checkThatInheritedConstMethodDoesInvalidatePointedAtMemory() {
- int x = 1;
- D3 t;
- t.p = &x;
- t.foo();
- clang_analyzer_eval(x); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(t.p == &x); // expected-warning{{TRUE}}
-}
-
-void checkThatInheritedConstMethodDoesInvalidateContainedPointedAtMemory() {
- int x = 1;
- DOuter t;
- t.x = 2;
- t.in.x = 3;
- t.in.p = &x;
- t.foo();
- clang_analyzer_eval(x); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(t.x == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(t.in.x == 3); // expected-warning{{TRUE}}
- clang_analyzer_eval(t.in.p == &x); // expected-warning{{TRUE}}
-}
-
-void checkThatInheritedContainedConstMethodDoesNotInvalidateObjects() {
- DOuter t;
- t.x = 1;
- t.in.x = 2;
- t.in.foo();
- clang_analyzer_eval(t.x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(t.in.x == 2); // expected-warning{{TRUE}}
-}
-
-// --- PR21606 --- //
-
-struct s1 {
- void g(const int *i) const;
-};
-
-struct s2 {
- void f(int *i) {
- m_i = i;
- m_s.g(m_i);
- if (m_i)
- *i = 42; // no-warning
- }
-
- int *m_i;
- s1 m_s;
-};
-
-void PR21606()
-{
- s2().f(0);
-}
-
-// --- PR25392 --- //
-
-struct HasConstMemberFunction {
-public:
- void constMemberFunction() const;
-};
-
-HasConstMemberFunction hasNoReturn() { } // expected-warning {{control reaches end of non-void function}}
-
-void testUnknownWithConstMemberFunction() {
- hasNoReturn().constMemberFunction();
-}
-
-void testNonRegionLocWithConstMemberFunction() {
- (*((HasConstMemberFunction *)(&&label))).constMemberFunction();
-
- label: return;
-}
-
-// FIXME
-// When there is a circular reference to an object and a const method is called
-// the object is not invalidated because TK_PreserveContents has already been
-// set.
-struct Outer2;
-
-struct InnerWithRef {
- Outer2 *ref;
-};
-
-struct Outer2 {
- int x;
- InnerWithRef in;
- void foo() const;
-};
-
-void checkThatConstMethodCallDoesInvalidateObjectForCircularReferences() {
- Outer2 t;
- t.x = 1;
- t.in.ref = &t;
- t.foo();
- // FIXME: Should be UNKNOWN.
- clang_analyzer_eval(t.x); // expected-warning{{TRUE}}
-}
diff --git a/test/Analysis/constant-folding.c b/test/Analysis/constant-folding.c
deleted file mode 100644
index fc04e608f7ef..000000000000
--- a/test/Analysis/constant-folding.c
+++ /dev/null
@@ -1,121 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(int);
-
-// There should be no warnings unless otherwise indicated.
-
-void testComparisons (int a) {
- // Sema can already catch the simple comparison a==a,
- // since that's usually a logic error (and not path-dependent).
- int b = a;
- clang_analyzer_eval(b == a); // expected-warning{{TRUE}}
- clang_analyzer_eval(b >= a); // expected-warning{{TRUE}}
- clang_analyzer_eval(b <= a); // expected-warning{{TRUE}}
- clang_analyzer_eval(b != a); // expected-warning{{FALSE}}
- clang_analyzer_eval(b > a); // expected-warning{{FALSE}}
- clang_analyzer_eval(b < a); // expected-warning{{FALSE}}
-}
-
-void testSelfOperations (int a) {
- clang_analyzer_eval((a|a) == a); // expected-warning{{TRUE}}
- clang_analyzer_eval((a&a) == a); // expected-warning{{TRUE}}
- clang_analyzer_eval((a^a) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval((a-a) == 0); // expected-warning{{TRUE}}
-}
-
-void testIdempotent (int a) {
- clang_analyzer_eval((a*1) == a); // expected-warning{{TRUE}}
- clang_analyzer_eval((a/1) == a); // expected-warning{{TRUE}}
- clang_analyzer_eval((a+0) == a); // expected-warning{{TRUE}}
- clang_analyzer_eval((a-0) == a); // expected-warning{{TRUE}}
- clang_analyzer_eval((a<<0) == a); // expected-warning{{TRUE}}
- clang_analyzer_eval((a>>0) == a); // expected-warning{{TRUE}}
- clang_analyzer_eval((a^0) == a); // expected-warning{{TRUE}}
- clang_analyzer_eval((a&(~0)) == a); // expected-warning{{TRUE}}
- clang_analyzer_eval((a|0) == a); // expected-warning{{TRUE}}
-}
-
-void testReductionToConstant (int a) {
- clang_analyzer_eval((a*0) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval((a&0) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval((a|(~0)) == (~0)); // expected-warning{{TRUE}}
-}
-
-void testSymmetricIntSymOperations (int a) {
- clang_analyzer_eval((2+a) == (a+2)); // expected-warning{{TRUE}}
- clang_analyzer_eval((2*a) == (a*2)); // expected-warning{{TRUE}}
- clang_analyzer_eval((2&a) == (a&2)); // expected-warning{{TRUE}}
- clang_analyzer_eval((2^a) == (a^2)); // expected-warning{{TRUE}}
- clang_analyzer_eval((2|a) == (a|2)); // expected-warning{{TRUE}}
-}
-
-void testAsymmetricIntSymOperations (int a) {
- clang_analyzer_eval(((~0) >> a) == (~0)); // expected-warning{{TRUE}}
- clang_analyzer_eval((0 >> a) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval((0 << a) == 0); // expected-warning{{TRUE}}
-
- // Unsigned right shift shifts in zeroes.
- clang_analyzer_eval(((~0U) >> a) != (~0U)); // expected-warning{{UNKNOWN}}
-}
-
-void testLocations (char *a) {
- char *b = a;
- clang_analyzer_eval(b == a); // expected-warning{{TRUE}}
- clang_analyzer_eval(b >= a); // expected-warning{{TRUE}}
- clang_analyzer_eval(b <= a); // expected-warning{{TRUE}}
- clang_analyzer_eval(b != a); // expected-warning{{FALSE}}
- clang_analyzer_eval(b > a); // expected-warning{{FALSE}}
- clang_analyzer_eval(b < a); // expected-warning{{FALSE}}
-}
-
-void testMixedTypeComparisons (char a, unsigned long b) {
- if (a != 0) return;
- if (b != 0x100) return;
-
- clang_analyzer_eval(a <= b); // expected-warning{{TRUE}}
- clang_analyzer_eval(b >= a); // expected-warning{{TRUE}}
- clang_analyzer_eval(a != b); // expected-warning{{TRUE}}
-}
-
-void testBitwiseRules(unsigned int a, int b) {
- clang_analyzer_eval((a | 1) >= 1); // expected-warning{{TRUE}}
- clang_analyzer_eval((a | -1) >= -1); // expected-warning{{TRUE}}
- clang_analyzer_eval((a | 2) >= 2); // expected-warning{{TRUE}}
- clang_analyzer_eval((a | 5) >= 5); // expected-warning{{TRUE}}
- clang_analyzer_eval((a | 10) >= 10); // expected-warning{{TRUE}}
-
- // Argument order should not influence this
- clang_analyzer_eval((1 | a) >= 1); // expected-warning{{TRUE}}
-
- clang_analyzer_eval((a & 1) <= 1); // expected-warning{{TRUE}}
- clang_analyzer_eval((a & 2) <= 2); // expected-warning{{TRUE}}
- clang_analyzer_eval((a & 5) <= 5); // expected-warning{{TRUE}}
- clang_analyzer_eval((a & 10) <= 10); // expected-warning{{TRUE}}
- clang_analyzer_eval((a & -10) <= 10); // expected-warning{{UNKNOWN}}
-
- // Again, check for different argument order.
- clang_analyzer_eval((1 & a) <= 1); // expected-warning{{TRUE}}
-
- unsigned int c = a;
- c |= 1;
- clang_analyzer_eval((c | 0) == 0); // expected-warning{{FALSE}}
-
- // Rules don't apply to signed typed, as the values might be negative.
- clang_analyzer_eval((b | 1) > 0); // expected-warning{{UNKNOWN}}
-
- // Even for signed values, bitwise OR with a non-zero is always non-zero.
- clang_analyzer_eval((b | 1) == 0); // expected-warning{{FALSE}}
- clang_analyzer_eval((b | -2) == 0); // expected-warning{{FALSE}}
- clang_analyzer_eval((b | 10) == 0); // expected-warning{{FALSE}}
- clang_analyzer_eval((b | 0) == 0); // expected-warning{{UNKNOWN}}
-#ifdef ANALYZER_CM_Z3
- clang_analyzer_eval((b | -2) >= 0); // expected-warning{{FALSE}}
-#else
- clang_analyzer_eval((b | -2) >= 0); // expected-warning{{UNKNOWN}}
-#endif
-
- // Check that dynamically computed constants also work.
- int constant = 1 << 3;
- unsigned int d = a | constant;
- clang_analyzer_eval(constant > 0); // expected-warning{{TRUE}}
-}
diff --git a/test/Analysis/constraint_manager_negate_difference.c b/test/Analysis/constraint_manager_negate_difference.c
deleted file mode 100644
index 2236c1693b90..000000000000
--- a/test/Analysis/constraint_manager_negate_difference.c
+++ /dev/null
@@ -1,98 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection,core.builtin -analyzer-config aggressive-binary-operation-simplification=true -verify %s
-
-void clang_analyzer_eval(int);
-
-void exit(int);
-
-#define UINT_MAX (~0U)
-#define INT_MAX (UINT_MAX & (UINT_MAX >> 1))
-#define INT_MIN (UINT_MAX & ~(UINT_MAX >> 1))
-
-extern void __assert_fail (__const char *__assertion, __const char *__file,
- unsigned int __line, __const char *__function)
- __attribute__ ((__noreturn__));
-#define assert(expr) \
- ((expr) ? (void)(0) : __assert_fail (#expr, __FILE__, __LINE__, __func__))
-
-void assert_in_range(int x) {
- assert(x <= ((int)INT_MAX / 4));
- assert(x >= -(((int)INT_MAX) / 4));
-}
-
-void assert_in_wide_range(int x) {
- assert(x <= ((int)INT_MAX / 2));
- assert(x >= -(((int)INT_MAX) / 2));
-}
-
-void assert_in_range_2(int m, int n) {
- assert_in_range(m);
- assert_in_range(n);
-}
-
-void equal(int m, int n) {
- assert_in_range_2(m, n);
- if (m != n)
- return;
- assert_in_wide_range(m - n);
- clang_analyzer_eval(n == m); // expected-warning{{TRUE}}
-}
-
-void non_equal(int m, int n) {
- assert_in_range_2(m, n);
- if (m == n)
- return;
- assert_in_wide_range(m - n);
- clang_analyzer_eval(n != m); // expected-warning{{TRUE}}
-}
-
-void less_or_equal(int m, int n) {
- assert_in_range_2(m, n);
- if (m < n)
- return;
- assert_in_wide_range(m - n);
- clang_analyzer_eval(n <= m); // expected-warning{{TRUE}}
-}
-
-void less(int m, int n) {
- assert_in_range_2(m, n);
- if (m <= n)
- return;
- assert_in_wide_range(m - n);
- clang_analyzer_eval(n < m); // expected-warning{{TRUE}}
-}
-
-void greater_or_equal(int m, int n) {
- assert_in_range_2(m, n);
- if (m > n)
- return;
- assert_in_wide_range(m - n);
- clang_analyzer_eval(n >= m); // expected-warning{{TRUE}}
-}
-
-void greater(int m, int n) {
- assert_in_range_2(m, n);
- if (m >= n)
- return;
- assert_in_wide_range(m - n);
- clang_analyzer_eval(n > m); // expected-warning{{TRUE}}
-}
-
-void negate_positive_range(int m, int n) {
- if (m - n <= 0)
- return;
- clang_analyzer_eval(n - m < 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(n - m > INT_MIN); // expected-warning{{TRUE}}
- clang_analyzer_eval(n - m == INT_MIN); // expected-warning{{FALSE}}
-}
-
-void negate_int_min(int m, int n) {
- if (m - n != INT_MIN)
- return;
- clang_analyzer_eval(n - m == INT_MIN); // expected-warning{{TRUE}}
-}
-
-void negate_mixed(int m, int n) {
- if (m -n > INT_MIN && m - n <= 0)
- return;
- clang_analyzer_eval(n - m <= 0); // expected-warning{{TRUE}}
-}
diff --git a/test/Analysis/conversion.c b/test/Analysis/conversion.c
deleted file mode 100644
index 8b77e25358ee..000000000000
--- a/test/Analysis/conversion.c
+++ /dev/null
@@ -1,210 +0,0 @@
-// RUN: %clang_analyze_cc1 -Wno-conversion -Wno-tautological-constant-compare -analyzer-checker=core,apiModeling,alpha.core.Conversion -verify %s
-
-unsigned char U8;
-signed char S8;
-
-void assign(unsigned U, signed S) {
- if (S < -10)
- U8 = S; // expected-warning {{Loss of sign in implicit conversion}}
- if (U > 300)
- S8 = U; // expected-warning {{Loss of precision in implicit conversion}}
- if (S > 10)
- U8 = S; // no-warning
- if (U < 200)
- S8 = U; // no-warning
-}
-
-void addAssign() {
- unsigned long L = 1000;
- int I = -100;
- U8 += L; // expected-warning {{Loss of precision in implicit conversion}}
- L += I; // no-warning
-}
-
-void subAssign() {
- unsigned long L = 1000;
- int I = -100;
- U8 -= L; // expected-warning {{Loss of precision in implicit conversion}}
- L -= I; // no-warning
-}
-
-void mulAssign() {
- unsigned long L = 1000;
- int I = -1;
- U8 *= L; // expected-warning {{Loss of precision in implicit conversion}}
- L *= I; // expected-warning {{Loss of sign in implicit conversion}}
- I = 10;
- L *= I; // no-warning
-}
-
-void divAssign() {
- unsigned long L = 1000;
- int I = -1;
- U8 /= L; // no-warning
- L /= I; // expected-warning {{Loss of sign in implicit conversion}}
-}
-
-void remAssign() {
- unsigned long L = 1000;
- int I = -1;
- U8 %= L; // no-warning
- L %= I; // expected-warning {{Loss of sign in implicit conversion}}
-}
-
-void andAssign() {
- unsigned long L = 1000;
- int I = -1;
- U8 &= L; // no-warning
- L &= I; // expected-warning {{Loss of sign in implicit conversion}}
-}
-
-void orAssign() {
- unsigned long L = 1000;
- int I = -1;
- U8 |= L; // expected-warning {{Loss of precision in implicit conversion}}
- L |= I; // expected-warning {{Loss of sign in implicit conversion}}
-}
-
-void xorAssign() {
- unsigned long L = 1000;
- int I = -1;
- U8 ^= L; // expected-warning {{Loss of precision in implicit conversion}}
- L ^= I; // expected-warning {{Loss of sign in implicit conversion}}
-}
-
-void init1() {
- long long A = 1LL << 60;
- short X = A; // expected-warning {{Loss of precision in implicit conversion}}
-}
-
-void relational(unsigned U, signed S) {
- if (S > 10) {
- if (U < S) { // no-warning
- }
- }
- if (S < -10) {
- if (U < S) { // expected-warning {{Loss of sign in implicit conversion}}
- }
- }
-}
-
-void multiplication(unsigned U, signed S) {
- if (S > 5)
- S = U * S; // no-warning
- if (S < -10)
- S = U * S; // expected-warning {{Loss of sign}}
-}
-
-void division(unsigned U, signed S) {
- if (S > 5)
- S = U / S; // no-warning
- if (S < -10)
- S = U / S; // expected-warning {{Loss of sign}}
-}
-
-void dontwarn1(unsigned U, signed S) {
- U8 = S; // It might be known that S is always 0x00-0xff.
- S8 = U; // It might be known that U is always 0x00-0xff.
-
- U8 = -1; // Explicit conversion.
- S8 = ~0U; // Explicit conversion.
- if (U > 300)
- U8 &= U; // No loss of precision since there is &=.
-}
-
-void dontwarn2(unsigned int U) {
- if (U <= 4294967295) {
- }
- if (U <= (2147483647 * 2U + 1U)) {
- }
-}
-
-void dontwarn3(int X) {
- S8 = X ? 'a' : 'b';
-}
-
-// don't warn for macros
-#define DOSTUFF ({ unsigned X = 1000; U8 = X; })
-void dontwarn4() {
- DOSTUFF;
-}
-
-// don't warn for calculations
-// seen some fp. For instance: c2 = (c2 >= 'A' && c2 <= 'Z') ? c2 - 'A' + 'a' : c2;
-// there is a todo in the checker to handle calculations
-void dontwarn5() {
- signed S = -32;
- U8 = S + 10;
-}
-
-char dontwarn6(long long x) {
- long long y = 42;
- y += x;
- return y == 42;
-}
-
-
-// C library functions, handled via apiModeling.StdCLibraryFunctions
-
-int isascii(int c);
-void libraryFunction1() {
- char kb2[5];
- int X = 1000;
- if (isascii(X)) {
- kb2[0] = X; // no-warning
- }
-}
-
-
-typedef struct FILE {} FILE; int getc(FILE *stream);
-# define EOF (-1)
-char reply_string[8192];
-FILE *cin;
-extern int dostuff(void);
-int libraryFunction2() {
- int c, n;
- int dig;
- char *cp = reply_string;
- int pflag = 0;
- int code;
-
- for (;;) {
- dig = n = code = 0;
- while ((c = getc(cin)) != '\n') {
- if (dig < 4 && dostuff())
- code = code * 10 + (c - '0');
- if (!pflag && code == 227)
- pflag = 1;
- if (n == 0)
- n = c;
- if (c == EOF)
- return(4);
- if (cp < &reply_string[sizeof(reply_string) - 1])
- *cp++ = c; // no-warning
- }
- }
-}
-
-double floating_point(long long a, int b) {
- if (a > 1LL << 55) {
- double r = a; // expected-warning {{Loss of precision}}
- return r;
- } else if (b > 1 << 25) {
- float f = b; // expected-warning {{Loss of precision}}
- return f;
- }
- return 137;
-}
-
-double floating_point2() {
- int a = 1 << 24;
- long long b = 1LL << 53;
- float f = a; // no-warning
- double d = b; // no-warning
- return d - f;
-}
-
-int floating_point_3(unsigned long long a) {
- double b = a; // no-warning
- return 42;
-}
diff --git a/test/Analysis/copy-elision.cpp b/test/Analysis/copy-elision.cpp
deleted file mode 100644
index 3d2055f6392c..000000000000
--- a/test/Analysis/copy-elision.cpp
+++ /dev/null
@@ -1,367 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -std=c++11 -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -std=c++17 -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -std=c++11 -analyzer-config elide-constructors=false -DNO_ELIDE_FLAG -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -std=c++17 -analyzer-config elide-constructors=false -DNO_ELIDE_FLAG -verify -analyzer-config eagerly-assume=false %s
-
-// Copy elision always occurs in C++17, otherwise it's under
-// an on-by-default flag.
-#if __cplusplus >= 201703L
- #define ELIDE 1
-#else
- #ifndef NO_ELIDE_FLAG
- #define ELIDE 1
- #endif
-#endif
-
-void clang_analyzer_eval(bool);
-
-namespace variable_functional_cast_crash {
-
-struct A {
- A(int) {}
-};
-
-void foo() {
- A a = A(0);
-}
-
-struct B {
- A a;
- B(): a(A(0)) {}
-};
-
-} // namespace variable_functional_cast_crash
-
-
-namespace ctor_initializer {
-
-struct S {
- int x, y, z;
-};
-
-struct T {
- S s;
- int w;
- T(int w): s(), w(w) {}
-};
-
-class C {
- T t;
-public:
- C() : t(T(4)) {
- S s = {1, 2, 3};
- t.s = s;
- // FIXME: Should be TRUE regardless of copy elision.
- clang_analyzer_eval(t.w == 4);
-#ifdef ELIDE
- // expected-warning@-2{{TRUE}}
-#else
- // expected-warning@-4{{UNKNOWN}}
-#endif
- }
-};
-
-
-struct A {
- int x;
- A(): x(0) {}
- ~A() {}
-};
-
-struct B {
- A a;
- B() : a(A()) {}
-};
-
-void foo() {
- B b;
- clang_analyzer_eval(b.a.x == 0); // expected-warning{{TRUE}}
-}
-
-} // namespace ctor_initializer
-
-
-namespace elision_on_ternary_op_branches {
-class C1 {
- int x;
-public:
- C1(int x): x(x) {}
- int getX() const { return x; }
- ~C1();
-};
-
-class C2 {
- int x;
- int y;
-public:
- C2(int x, int y): x(x), y(y) {}
- int getX() const { return x; }
- int getY() const { return y; }
- ~C2();
-};
-
-void foo(int coin) {
- C1 c1 = coin ? C1(1) : C1(2);
- if (coin) {
- clang_analyzer_eval(c1.getX() == 1); // expected-warning{{TRUE}}
- } else {
- clang_analyzer_eval(c1.getX() == 2); // expected-warning{{TRUE}}
- }
- C2 c2 = coin ? C2(3, 4) : C2(5, 6);
- if (coin) {
- clang_analyzer_eval(c2.getX() == 3); // expected-warning{{TRUE}}
- clang_analyzer_eval(c2.getY() == 4); // expected-warning{{TRUE}}
- } else {
- clang_analyzer_eval(c2.getX() == 5); // expected-warning{{TRUE}}
- clang_analyzer_eval(c2.getY() == 6); // expected-warning{{TRUE}}
- }
-}
-} // namespace elision_on_ternary_op_branches
-
-
-namespace address_vector_tests {
-
-template <typename T> struct AddressVector {
- T *buf[20];
- int len;
-
- AddressVector() : len(0) {}
-
- void push(T *t) {
- buf[len] = t;
- ++len;
- }
-};
-
-class ClassWithoutDestructor {
- AddressVector<ClassWithoutDestructor> &v;
-
-public:
- ClassWithoutDestructor(AddressVector<ClassWithoutDestructor> &v) : v(v) {
- push();
- }
-
- ClassWithoutDestructor(ClassWithoutDestructor &&c) : v(c.v) { push(); }
- ClassWithoutDestructor(const ClassWithoutDestructor &c) : v(c.v) { push(); }
-
- void push() { v.push(this); }
-};
-
-ClassWithoutDestructor make1(AddressVector<ClassWithoutDestructor> &v) {
- return ClassWithoutDestructor(v);
-}
-ClassWithoutDestructor make2(AddressVector<ClassWithoutDestructor> &v) {
- return make1(v);
-}
-ClassWithoutDestructor make3(AddressVector<ClassWithoutDestructor> &v) {
- return make2(v);
-}
-
-void testMultipleReturns() {
- AddressVector<ClassWithoutDestructor> v;
- ClassWithoutDestructor c = make3(v);
-
-#if ELIDE
- clang_analyzer_eval(v.len == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[0] == &c); // expected-warning{{TRUE}}
-#else
- clang_analyzer_eval(v.len == 5); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[0] != v.buf[1]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[1] != v.buf[2]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[2] != v.buf[3]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[3] != v.buf[4]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[4] == &c); // expected-warning{{TRUE}}
-#endif
-}
-
-void consume(ClassWithoutDestructor c) {
- c.push();
-}
-
-void testArgumentConstructorWithoutDestructor() {
- AddressVector<ClassWithoutDestructor> v;
-
- consume(make3(v));
-
-#if ELIDE
- clang_analyzer_eval(v.len == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[0] == v.buf[1]); // expected-warning{{TRUE}}
-#else
- clang_analyzer_eval(v.len == 6); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[0] != v.buf[1]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[1] != v.buf[2]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[2] != v.buf[3]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[3] != v.buf[4]); // expected-warning{{TRUE}}
- // We forced a push() in consume(), let's see if the address here matches
- // the address during construction.
- clang_analyzer_eval(v.buf[4] == v.buf[5]); // expected-warning{{TRUE}}
-#endif
-}
-
-class ClassWithDestructor {
- AddressVector<ClassWithDestructor> &v;
-
-public:
- ClassWithDestructor(AddressVector<ClassWithDestructor> &v) : v(v) {
- push();
- }
-
- ClassWithDestructor(ClassWithDestructor &&c) : v(c.v) { push(); }
- ClassWithDestructor(const ClassWithDestructor &c) : v(c.v) { push(); }
-
- ~ClassWithDestructor() { push(); }
-
- void push() { v.push(this); }
-};
-
-void testVariable() {
- AddressVector<ClassWithDestructor> v;
- {
- ClassWithDestructor c = ClassWithDestructor(v);
- // Check if the last destructor is an automatic destructor.
- // A temporary destructor would have fired by now.
-#if ELIDE
- clang_analyzer_eval(v.len == 1); // expected-warning{{TRUE}}
-#else
- clang_analyzer_eval(v.len == 3); // expected-warning{{TRUE}}
-#endif
- }
-#if ELIDE
- // 0. Construct the variable.
- // 1. Destroy the variable.
- clang_analyzer_eval(v.len == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[0] == v.buf[1]); // expected-warning{{TRUE}}
-#else
- // 0. Construct the temporary.
- // 1. Construct the variable.
- // 2. Destroy the temporary.
- // 3. Destroy the variable.
- clang_analyzer_eval(v.len == 4); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[0] == v.buf[2]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[1] == v.buf[3]); // expected-warning{{TRUE}}
-#endif
-}
-
-struct TestCtorInitializer {
- ClassWithDestructor c;
- TestCtorInitializer(AddressVector<ClassWithDestructor> &v)
- : c(ClassWithDestructor(v)) {}
-};
-
-void testCtorInitializer() {
- AddressVector<ClassWithDestructor> v;
- {
- TestCtorInitializer t(v);
- // Check if the last destructor is an automatic destructor.
- // A temporary destructor would have fired by now.
-#if ELIDE
- clang_analyzer_eval(v.len == 1); // expected-warning{{TRUE}}
-#else
- clang_analyzer_eval(v.len == 3); // expected-warning{{TRUE}}
-#endif
- }
-#if ELIDE
- // 0. Construct the member variable.
- // 1. Destroy the member variable.
- clang_analyzer_eval(v.len == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[0] == v.buf[1]); // expected-warning{{TRUE}}
-#else
- // 0. Construct the temporary.
- // 1. Construct the member variable.
- // 2. Destroy the temporary.
- // 3. Destroy the member variable.
- clang_analyzer_eval(v.len == 4); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[0] == v.buf[2]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[1] == v.buf[3]); // expected-warning{{TRUE}}
-#endif
-}
-
-
-ClassWithDestructor make1(AddressVector<ClassWithDestructor> &v) {
- return ClassWithDestructor(v);
-}
-ClassWithDestructor make2(AddressVector<ClassWithDestructor> &v) {
- return make1(v);
-}
-ClassWithDestructor make3(AddressVector<ClassWithDestructor> &v) {
- return make2(v);
-}
-
-void testMultipleReturnsWithDestructors() {
- AddressVector<ClassWithDestructor> v;
- {
- ClassWithDestructor c = make3(v);
- // Check if the last destructor is an automatic destructor.
- // A temporary destructor would have fired by now.
-#if ELIDE
- clang_analyzer_eval(v.len == 1); // expected-warning{{TRUE}}
-#else
- clang_analyzer_eval(v.len == 9); // expected-warning{{TRUE}}
-#endif
- }
-
-#if ELIDE
- // 0. Construct the variable. Yes, constructor in make1() constructs
- // the variable 'c'.
- // 1. Destroy the variable.
- clang_analyzer_eval(v.len == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[0] == v.buf[1]); // expected-warning{{TRUE}}
-#else
- // 0. Construct the temporary in make1().
- // 1. Construct the temporary in make2().
- // 2. Destroy the temporary in make1().
- // 3. Construct the temporary in make3().
- // 4. Destroy the temporary in make2().
- // 5. Construct the temporary here.
- // 6. Destroy the temporary in make3().
- // 7. Construct the variable.
- // 8. Destroy the temporary here.
- // 9. Destroy the variable.
- clang_analyzer_eval(v.len == 10); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[0] == v.buf[2]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[1] == v.buf[4]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[3] == v.buf[6]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[5] == v.buf[8]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[7] == v.buf[9]); // expected-warning{{TRUE}}
-#endif
-}
-
-void consume(ClassWithDestructor c) {
- c.push();
-}
-
-void testArgumentConstructorWithDestructor() {
- AddressVector<ClassWithDestructor> v;
-
- consume(make3(v));
-
-#if ELIDE
- // 0. Construct the argument.
- // 1. Forced push() in consume().
- // 2. Destroy the argument.
- clang_analyzer_eval(v.len == 3); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[0] == v.buf[1]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[1] == v.buf[2]); // expected-warning{{TRUE}}
-#else
- // 0. Construct the temporary in make1().
- // 1. Construct the temporary in make2().
- // 2. Destroy the temporary in make1().
- // 3. Construct the temporary in make3().
- // 4. Destroy the temporary in make2().
- // 5. Construct the temporary here.
- // 6. Destroy the temporary in make3().
- // 7. Construct the argument.
- // 8. Forced push() in consume().
- // 9. Destroy the argument. Notice the reverse order!
- // 10. Destroy the temporary here.
- clang_analyzer_eval(v.len == 11); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[0] == v.buf[2]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[1] == v.buf[4]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[3] == v.buf[6]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[5] == v.buf[10]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[7] == v.buf[8]); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[8] == v.buf[9]); // expected-warning{{TRUE}}
-#endif
-}
-
-} // namespace address_vector_tests
diff --git a/test/Analysis/copypaste/Inputs/expected-plists/MismatchedDeallocator-path-notes.cpp.plist b/test/Analysis/copypaste/Inputs/expected-plists/MismatchedDeallocator-path-notes.cpp.plist
deleted file mode 100644
index 94d925edaeb5..000000000000
--- a/test/Analysis/copypaste/Inputs/expected-plists/MismatchedDeallocator-path-notes.cpp.plist
+++ /dev/null
@@ -1,303 +0,0 @@
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;allocIntArray&apos;</string>
- <key>message</key>
- <string>Calling &apos;allocIntArray&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returned allocated memory</string>
- <key>message</key>
- <string>Returned allocated memory</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Memory allocated by &apos;new[]&apos; should be deallocated by &apos;delete[]&apos;, not &apos;delete&apos;</string>
- <key>message</key>
- <string>Memory allocated by &apos;new[]&apos; should be deallocated by &apos;delete[]&apos;, not &apos;delete&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Memory allocated by &apos;new[]&apos; should be deallocated by &apos;delete[]&apos;, not &apos;delete&apos;</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Bad deallocator</string>
- <key>check_name</key><string>unix.MismatchedDeallocator</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2009ca1da75217064b6052ba7465dff9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>6</integer>
- <integer>7</integer>
- <integer>9</integer>
- <integer>10</integer>
- <integer>12</integer>
- <integer>13</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/MismatchedDeallocator-path-notes.cpp</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/copypaste/Inputs/expected-plists/plist-diagnostics-notes-as-events.cpp.plist b/test/Analysis/copypaste/Inputs/expected-plists/plist-diagnostics-notes-as-events.cpp.plist
deleted file mode 100644
index ecdf3216b965..000000000000
--- a/test/Analysis/copypaste/Inputs/expected-plists/plist-diagnostics-notes-as-events.cpp.plist
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Similar code here</string>
- <key>message</key>
- <string>Similar code here</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Duplicate code detected</string>
- <key>message</key>
- <string>Duplicate code detected</string>
- </dict>
- </array>
- <key>description</key><string>Duplicate code detected</string>
- <key>category</key><string>Code clone</string>
- <key>type</key><string>Exact code clone</string>
- <key>check_name</key><string>alpha.clone.CloneChecker</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3d15184f38c5fa57e479b744fe3f5035</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>6</integer>
- <integer>13</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/copypaste/plist-diagnostics-notes-as-events.cpp</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/copypaste/Inputs/expected-plists/plist-diagnostics.cpp.plist b/test/Analysis/copypaste/Inputs/expected-plists/plist-diagnostics.cpp.plist
deleted file mode 100644
index 2813377cf00c..000000000000
--- a/test/Analysis/copypaste/Inputs/expected-plists/plist-diagnostics.cpp.plist
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>notes</key>
- <array>
- <dict>
- <key>location</key>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>extended_message</key>
- <string>Similar code here</string>
- <key>message</key>
- <string>Similar code here</string>
- </dict>
- </array>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Duplicate code detected</string>
- <key>message</key>
- <string>Duplicate code detected</string>
- </dict>
- </array>
- <key>description</key><string>Duplicate code detected</string>
- <key>category</key><string>Code clone</string>
- <key>type</key><string>Exact code clone</string>
- <key>check_name</key><string>alpha.clone.CloneChecker</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3d15184f38c5fa57e479b744fe3f5035</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>6</integer>
- <integer>13</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/copypaste/plist-diagnostics.cpp</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/copypaste/asm.cpp b/test/Analysis/copypaste/asm.cpp
deleted file mode 100644
index 1d93469aa3c2..000000000000
--- a/test/Analysis/copypaste/asm.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// expected-no-diagnostics
-
-int foo1(int src) {
- int dst = src;
- if (src < 100 && src > 0) {
-
- asm ("mov %1, %0\n\t"
- "add $1, %0"
- : "=r" (dst)
- : "r" (src));
-
- }
- return dst;
-}
-
-// Identical to foo1 except that it adds two instead of one, so it's no clone.
-int foo2(int src) {
- int dst = src;
- if (src < 100 && src > 0) {
-
- asm ("mov %1, %0\n\t"
- "add $2, %0"
- : "=r" (dst)
- : "r" (src));
-
- }
- return dst;
-}
-
-// Identical to foo1 except that its a volatile asm statement, so it's no clone.
-int foo3(int src) {
- int dst = src;
- if (src < 100 && src > 0) {
-
- asm volatile ("mov %1, %0\n\t"
- "add $1, %0"
- : "=r" (dst)
- : "r" (src));
-
- }
- return dst;
-}
diff --git a/test/Analysis/copypaste/attributes.cpp b/test/Analysis/copypaste/attributes.cpp
deleted file mode 100644
index f71545130cbb..000000000000
--- a/test/Analysis/copypaste/attributes.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++1z -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// expected-no-diagnostics
-
-int foo1(int n) {
- int result = 0;
- switch (n) {
- case 33:
- result += 33;
- [[clang::fallthrough]];
- case 44:
- result += 44;
- }
- return result;
-}
-
-// Identical to foo1 except the missing attribute.
-int foo2(int n) {
- int result = 0;
- switch (n) {
- case 33:
- result += 33;
- ;
- case 44:
- result += 44;
- }
- return result;
-}
diff --git a/test/Analysis/copypaste/autogenerated_automoc.cpp b/test/Analysis/copypaste/autogenerated_automoc.cpp
deleted file mode 100644
index 0f7f9c9e4565..000000000000
--- a/test/Analysis/copypaste/autogenerated_automoc.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -analyzer-config alpha.clone.CloneChecker:IgnoredFilesPattern="moc_|.*_automoc.cpp" -verify %s
-
-// Because files that have `_automoc.' in their names are most likely autogenerated,
-// we suppress copy-paste warnings here.
-
-// expected-no-diagnostics
-
-void f1() {
- int *p1 = new int[1];
- int *p2 = new int[1];
- if (p1) {
- delete [] p1;
- p1 = nullptr;
- }
- if (p2) {
- delete [] p1; // no-warning
- p2 = nullptr;
- }
-}
diff --git a/test/Analysis/copypaste/blocks.cpp b/test/Analysis/copypaste/blocks.cpp
deleted file mode 100644
index 23821560ea37..000000000000
--- a/test/Analysis/copypaste/blocks.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// RUN: %clang_analyze_cc1 -fblocks -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// This tests if we search for clones in blocks.
-
-void log();
-
-auto BlockA = ^(int a, int b){ // expected-warning{{Duplicate code detected}}
- log();
- if (a > b)
- return a;
- return b;
-};
-
-auto BlockB = ^(int a, int b){ // expected-note{{Similar code here}}
- log();
- if (a > b)
- return a;
- return b;
-};
diff --git a/test/Analysis/copypaste/call.cpp b/test/Analysis/copypaste/call.cpp
deleted file mode 100644
index c5ddae5a65f3..000000000000
--- a/test/Analysis/copypaste/call.cpp
+++ /dev/null
@@ -1,102 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++1z -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// expected-no-diagnostics
-
-bool a();
-bool b();
-
-// Calls method a with some extra code to pass the minimum complexity
-bool foo1(int x) {
- if (x > 0)
- return false;
- else if (x < 0)
- return a();
- return true;
-}
-
-// Calls method b with some extra code to pass the minimum complexity
-bool foo2(int x) {
- if (x > 0)
- return false;
- else if (x < 0)
- return b();
- return true;
-}
-
-// Test that we don't crash on function pointer calls
-
-bool (*funcPtr)(int);
-
-bool fooPtr1(int x) {
- if (x > 0)
- return false;
- else if (x < 0)
- return funcPtr(1);
- return true;
-}
-
-// Test that we respect the template arguments of function templates
-
-template<typename T, unsigned N>
-bool templateFunc() { unsigned i = N; return false; }
-
-bool fooTemplate1(int x) {
- if (x > 0)
- return false;
- else if (x < 0)
- return templateFunc<int, 1>();
- return true;
-}
-
-bool fooTemplate2(int x) {
- if (x > 0)
- return false;
- else if (x < 0)
- return templateFunc<long, 1>();
- return true;
-}
-
-bool fooTemplate3(int x) {
- if (x > 0)
- return false;
- else if (x < 0)
- return templateFunc<long, 2>();
- return true;
-}
-
-// Test that we don't just concatenate the template arguments into a string
-// without having any padding between them (e.g. foo<X, XX>() != foo<XX, X>()).
-
-class X {};
-class XX {};
-
-template<typename T1, typename T2>
-bool templatePaddingFunc() { return false; }
-
-bool fooTemplatePadding1(int x) {
- if (x > 0)
- return false;
- else if (x < 0)
- return templatePaddingFunc<X, XX>();
- return true;
-}
-
-bool fooTemplatePadding2(int x) {
- if (x > 0)
- return false;
- else if (x < 0)
- return templatePaddingFunc<XX, X>();
- return true;
-}
-
-// Test that we don't crash on member functions of template instantiations.
-
-template<typename T>
-struct A {
- void foo(T t) {}
-};
-
-void fooTestInstantiation() {
- A<int> a;
- a.foo(1);
-}
diff --git a/test/Analysis/copypaste/catch.cpp b/test/Analysis/copypaste/catch.cpp
deleted file mode 100644
index edcf44ae6fc0..000000000000
--- a/test/Analysis/copypaste/catch.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// RUN: %clang_analyze_cc1 -fcxx-exceptions -std=c++1z -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// expected-no-diagnostics
-
-bool foo1(int x) {
- if (x > 0)
- return false;
- else if (x < 0)
- try { x--; } catch (int i) {}
- return true;
-}
-
-// Uses parenthesis instead of type
-bool foo2(int x) {
- if (x > 0)
- return false;
- else if (x < 0)
- try { x--; } catch (...) {}
- return true;
-}
-
-// Catches a different type (long instead of int)
-bool foo3(int x) {
- if (x > 0)
- return false;
- else if (x < 0)
- try { x--; } catch (long i) {}
- return true;
-}
diff --git a/test/Analysis/copypaste/dbus_autogenerated.cpp b/test/Analysis/copypaste/dbus_autogenerated.cpp
deleted file mode 100644
index 182437565813..000000000000
--- a/test/Analysis/copypaste/dbus_autogenerated.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:IgnoredFilesPattern="moc_|dbus_|.*_automoc" -verify %s
-
-// Because files that have `dbus_' in their names are most likely autogenerated,
-// we suppress copy-paste warnings here.
-
-// expected-no-diagnostics
-
-void f1() {
- int *p1 = new int[1];
- int *p2 = new int[1];
- if (p1) {
- delete [] p1;
- p1 = nullptr;
- }
- if (p2) {
- delete [] p1; // no-warning
- p2 = nullptr;
- }
-}
diff --git a/test/Analysis/copypaste/delete.cpp b/test/Analysis/copypaste/delete.cpp
deleted file mode 100644
index 4edb46035a39..000000000000
--- a/test/Analysis/copypaste/delete.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++1z -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// expected-no-diagnostics
-
-bool foo1(int x, int* a) {
- if (x > 0)
- return false;
- else if (x < 0)
- delete a;
- return true;
-}
-
-// Explicit global delete
-bool foo2(int x, int* a) {
- if (x > 0)
- return false;
- else if (x < 0)
- ::delete a;
- return true;
-}
-
-// Array delete
-bool foo3(int x, int* a) {
- if (x > 0)
- return false;
- else if (x < 0)
- delete[] a;
- return true;
-}
diff --git a/test/Analysis/copypaste/dependent-exist.cpp b/test/Analysis/copypaste/dependent-exist.cpp
deleted file mode 100644
index 28f2ceb21ada..000000000000
--- a/test/Analysis/copypaste/dependent-exist.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-// RUN: %clang_analyze_cc1 -fms-extensions -std=c++1z -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// expected-no-diagnostics
-
-bool foo1(int x) {
- if (x < 0) {
- __if_exists(x) { return false; }
- }
- return true;
-}
-
-// Same as above, but __if_not_exists
-bool foo2(int x) {
- if (x < 0) {
- __if_not_exists(x) { return false; }
- }
- return true;
-}
diff --git a/test/Analysis/copypaste/expr-types.cpp b/test/Analysis/copypaste/expr-types.cpp
deleted file mode 100644
index 6062be306e2d..000000000000
--- a/test/Analysis/copypaste/expr-types.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// expected-no-diagnostics
-
-
-int foo1(int a, int b) {
- if (a > b)
- return a;
- return b;
-}
-
-// Different types, so not a clone
-int foo2(long a, long b) {
- if (a > b)
- return a;
- return b;
-}
diff --git a/test/Analysis/copypaste/fold.cpp b/test/Analysis/copypaste/fold.cpp
deleted file mode 100644
index fadcb49fa0b3..000000000000
--- a/test/Analysis/copypaste/fold.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++1z -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// expected-no-diagnostics
-
-int global = 0;
-
-template<typename ...Args>
-int foo1(Args&&... args) {
- if (global > 0)
- return 0;
- else if (global < 0)
- return (args + ...);
- return 1;
-}
-
-// Different opeator in fold expression.
-template<typename ...Args>
-int foo2(Args&&... args) {
- if (global > 0)
- return 0;
- else if (global < 0)
- return (args - ...);
- return 1;
-}
-
-// Parameter pack on a different side
-template<typename ...Args>
-int foo3(Args&&... args) {
- if (global > 0)
- return 0;
- else if (global < 0)
- return -1;
- return (... + args);
-return 1;
-}
diff --git a/test/Analysis/copypaste/function-try-block.cpp b/test/Analysis/copypaste/function-try-block.cpp
deleted file mode 100644
index d0fbc50f67ef..000000000000
--- a/test/Analysis/copypaste/function-try-block.cpp
+++ /dev/null
@@ -1,9 +0,0 @@
-// RUN: %clang_analyze_cc1 -fcxx-exceptions -std=c++1z -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// Tests if function try blocks are correctly handled.
-
-void nonCompoundStmt1(int& x)
- try { x += 1; } catch(...) { x -= 1; } // expected-warning{{Duplicate code detected}}
-
-void nonCompoundStmt2(int& x)
- try { x += 1; } catch(...) { x -= 1; } // expected-note{{Similar code here}}
diff --git a/test/Analysis/copypaste/functions.cpp b/test/Analysis/copypaste/functions.cpp
deleted file mode 100644
index 2bfe591a50bc..000000000000
--- a/test/Analysis/copypaste/functions.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// This tests if we search for clones in functions.
-
-void log();
-
-int max(int a, int b) { // expected-warning{{Duplicate code detected}}
- log();
- if (a > b)
- return a;
- return b;
-}
-
-int maxClone(int x, int y) { // expected-note{{Similar code here}}
- log();
- if (x > y)
- return x;
- return y;
-}
-
-// Functions below are not clones and should not be reported.
-
-// The next two functions test that statement classes are still respected when
-// checking for clones in expressions. This will show that the statement
-// specific data of all base classes is collected, and not just the data of the
-// first base class.
-int testBaseClass(int a, int b) { // no-warning
- log();
- if (a > b)
- return true ? a : b;
- return b;
-}
-int testBaseClass2(int a, int b) { // no-warning
- log();
- if (a > b)
- return __builtin_choose_expr(true, a, b);
- return b;
-}
-
-// No clone because of the different comparison operator.
-int min1(int a, int b) { // no-warning
- log();
- if (a < b)
- return a;
- return b;
-}
-
-// No clone because of the different pattern in which the variables are used.
-int min2(int a, int b) { // no-warning
- log();
- if (a > b)
- return b;
- return a;
-}
-
-int foo(int a, int b) { // no-warning
- return a + b;
-}
diff --git a/test/Analysis/copypaste/generic.c b/test/Analysis/copypaste/generic.c
deleted file mode 100644
index 2fa6c302da17..000000000000
--- a/test/Analysis/copypaste/generic.c
+++ /dev/null
@@ -1,31 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// expected-no-diagnostics
-
-int global;
-
-int foo1() {
- if (global > 0)
- return 0;
- else if (global < 0)
- return _Generic(global, double: 1, float: 2, default: 3);
- return 1;
-}
-
-// Different associated type (int instead of float)
-int foo2() {
- if (global > 0)
- return 0;
- else if (global < 0)
- return _Generic(global, double: 1, int: 2, default: 4);
- return 1;
-}
-
-// Different number of associated types.
-int foo3() {
- if (global > 0)
- return 0;
- else if (global < 0)
- return _Generic(global, double: 1, default: 4);
- return 1;
-}
diff --git a/test/Analysis/copypaste/labels.cpp b/test/Analysis/copypaste/labels.cpp
deleted file mode 100644
index 18c5b22d3b1c..000000000000
--- a/test/Analysis/copypaste/labels.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=gnu++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// expected-no-diagnostics
-
-
-bool foo1(int x) {
- start:
- if (x != 3) {
- ++x;
- void *ptr = &&start;
- goto start;
- }
- end:
- return false;
-}
-
-// Targeting a different label with the address-of-label operator.
-bool foo2(int x) {
- start:
- if (x != 3) {
- ++x;
- void *ptr = &&end;
- goto start;
- }
- end:
- return false;
-}
-
-// Different target label in goto
-bool foo3(int x) {
- start:
- if (x != 3) {
- ++x;
- void *ptr = &&start;
- goto end;
- }
- end:
- return false;
-}
-
-// FIXME: Can't detect same algorithm as in foo1 but with different label names.
-bool foo4(int x) {
- foo:
- if (x != 3) {
- ++x;
- void *ptr = &&foo;
- goto foo;
- }
- end:
- return false;
-}
diff --git a/test/Analysis/copypaste/lambda.cpp b/test/Analysis/copypaste/lambda.cpp
deleted file mode 100644
index 456d83a995b1..000000000000
--- a/test/Analysis/copypaste/lambda.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// expected-no-diagnostics
-
-void foo1(int a, long b) {
- auto l = [a, b](){};
-}
-
-void foo2(int a, long b) {
- auto l = [&a, b](){};
-}
-
-void foo3(int a, long b) {
- auto l = [a](){};
-}
-
-void foo4(int a, long b) {
- auto l = [=](){};
-}
-
-void foo5(int a, long b) {
- auto l = [&](){};
-}
-
diff --git a/test/Analysis/copypaste/macro-complexity.cpp b/test/Analysis/copypaste/macro-complexity.cpp
deleted file mode 100644
index 656f91189b4f..000000000000
--- a/test/Analysis/copypaste/macro-complexity.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// Tests that the complexity value of a macro expansion is about the same as
-// the complexity value of a normal function call and the macro body doesn't
-// influence the complexity. See the CloneSignature class in CloneDetection.h
-// for more information about complexity values of clones.
-
-#define MACRO_FOO(a, b) a > b ? -a * a : -b * b;
-
-// First, manually apply MACRO_FOO and see if the code gets detected as a clone.
-// This confirms that with the current configuration the macro body would be
-// considered large enough to pass the MinimumCloneComplexity constraint.
-
-int manualMacro(int a, int b) { // expected-warning{{Duplicate code detected}}
- return a > b ? -a * a : -b * b;
-}
-
-int manualMacroClone(int a, int b) { // expected-note{{Similar code here}}
- return a > b ? -a * a : -b * b;
-}
-
-// Now we actually use the macro to generate the same AST as above. They
-// shouldn't be reported because the macros only slightly increase the complexity
-// value and the resulting code will never pass the MinimumCloneComplexity
-// constraint.
-
-int macro(int a, int b) {
- return MACRO_FOO(a, b);
-}
-
-int macroClone(int a, int b) {
- return MACRO_FOO(a, b);
-}
-
-// So far we only tested that macros increase the complexity by a lesser amount
-// than normal code. We also need to be sure this amount is not zero because
-// we otherwise macro code would be 'invisible' for the CloneDetector.
-// This tests that it is possible to increase the reach the minimum complexity
-// by only using macros. This is only possible if the complexity value is bigger
-// than zero.
-
-#define NEG(A) -(A)
-
-int nestedMacros() { // expected-warning{{Duplicate code detected}}
- return NEG(NEG(NEG(NEG(NEG(NEG(NEG(NEG(NEG(NEG(1))))))))));
-}
-
-int nestedMacrosClone() { // expected-note{{Similar code here}}
- return NEG(NEG(NEG(NEG(NEG(NEG(NEG(NEG(NEG(NEG(1))))))))));
-}
diff --git a/test/Analysis/copypaste/macros.cpp b/test/Analysis/copypaste/macros.cpp
deleted file mode 100644
index ea05bbd4281b..000000000000
--- a/test/Analysis/copypaste/macros.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// Tests that macros and non-macro clones aren't mixed into the same hash
-// group. This is currently necessary as all clones in a hash group need
-// to have the same complexity value. Macros have smaller complexity values
-// and need to be in their own hash group.
-
-int foo(int a) { // expected-warning{{Duplicate code detected}}
- a = a + 1;
- a = a + 1 / 1;
- a = a + 1 + 1 + 1;
- a = a + 1 - 1 + 1 + 1;
- a = a + 1 * 1 + 1 + 1 + 1;
- a = a + 1 / 1 + 1 + 1 + 1;
- return a;
-}
-
-int fooClone(int a) { // expected-note{{Similar code here}}
- a = a + 1;
- a = a + 1 / 1;
- a = a + 1 + 1 + 1;
- a = a + 1 - 1 + 1 + 1;
- a = a + 1 * 1 + 1 + 1 + 1;
- a = a + 1 / 1 + 1 + 1 + 1;
- return a;
-}
-
-// Below is the same AST as above but this time generated with macros. The
-// clones below should land in their own hash group for the reasons given above.
-
-#define ASSIGN(T, V) T = T + V
-
-int macro(int a) { // expected-warning{{Duplicate code detected}}
- ASSIGN(a, 1);
- ASSIGN(a, 1 / 1);
- ASSIGN(a, 1 + 1 + 1);
- ASSIGN(a, 1 - 1 + 1 + 1);
- ASSIGN(a, 1 * 1 + 1 + 1 + 1);
- ASSIGN(a, 1 / 1 + 1 + 1 + 1);
- return a;
-}
-
-int macroClone(int a) { // expected-note{{Similar code here}}
- ASSIGN(a, 1);
- ASSIGN(a, 1 / 1);
- ASSIGN(a, 1 + 1 + 1);
- ASSIGN(a, 1 - 1 + 1 + 1);
- ASSIGN(a, 1 * 1 + 1 + 1 + 1);
- ASSIGN(a, 1 / 1 + 1 + 1 + 1);
- return a;
-}
-
-// FIXME: Macros with empty definitions in the AST are currently ignored.
-
-#define EMPTY
-
-int fooFalsePositiveClone(int a) { // expected-note{{Similar code here}}
- a = EMPTY a + 1;
- a = a + 1 / 1;
- a = a + 1 + 1 + 1;
- a = a + 1 - 1 + 1 + 1;
- a = a + 1 * 1 + 1 + 1 + 1;
- a = a + 1 / 1 + 1 + 1 + 1;
- return a;
-}
-
-
diff --git a/test/Analysis/copypaste/moc_autogenerated.cpp b/test/Analysis/copypaste/moc_autogenerated.cpp
deleted file mode 100644
index 626fe2a3dd07..000000000000
--- a/test/Analysis/copypaste/moc_autogenerated.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:IgnoredFilesPattern="moc_|.*_automoc" -verify %s
-
-// Because files that have `moc_' in their names are most likely autogenerated,
-// we suppress copy-paste warnings here.
-
-// expected-no-diagnostics
-
-void f1() {
- int *p1 = new int[1];
- int *p2 = new int[1];
- if (p1) {
- delete [] p1;
- p1 = nullptr;
- }
- if (p2) {
- delete [] p1; // no-warning
- p2 = nullptr;
- }
-}
diff --git a/test/Analysis/copypaste/not-autogenerated.cpp b/test/Analysis/copypaste/not-autogenerated.cpp
deleted file mode 100644
index d54ee176fa88..000000000000
--- a/test/Analysis/copypaste/not-autogenerated.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -analyzer-config alpha.clone.CloneChecker:IgnoredFilesPattern="moc_|ui_|dbus_|.*_automoc" -verify %s
-
-void f1() {
- int *p1 = new int[1];
- int *p2 = new int[1];
- if (p1) {
- delete [] p1; // expected-note{{Similar code using 'p1' here}}
- p1 = nullptr;
- }
- if (p2) {
- delete [] p1; // expected-warning{{Potential copy-paste error; did you really mean to use 'p1' here?}}
- p2 = nullptr;
- }
-}
diff --git a/test/Analysis/copypaste/objc-methods.m b/test/Analysis/copypaste/objc-methods.m
deleted file mode 100644
index 0a843707937a..000000000000
--- a/test/Analysis/copypaste/objc-methods.m
+++ /dev/null
@@ -1,27 +0,0 @@
-// RUN: %clang_analyze_cc1 -Wno-objc-root-class -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// This tests if we search for clones in Objective-C methods.
-
-@interface A
-- (int) setOk : (int) a : (int) b;
-@end
-
-@implementation A
-- (int) setOk : (int) a : (int) b { // expected-warning{{Duplicate code detected}}
- if (a > b)
- return a;
- return b;
-}
-@end
-
-@interface B
-- (int) setOk : (int) a : (int) b;
-@end
-
-@implementation B
-- (int) setOk : (int) a : (int) b { // expected-note{{Similar code here}}
- if (a > b)
- return a;
- return b;
-}
-@end
diff --git a/test/Analysis/copypaste/plist-diagnostics-notes-as-events.cpp b/test/Analysis/copypaste/plist-diagnostics-notes-as-events.cpp
deleted file mode 100644
index 301a30b1c151..000000000000
--- a/test/Analysis/copypaste/plist-diagnostics-notes-as-events.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-output=plist -analyzer-config notes-as-events=true -o %t.plist -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/plist-diagnostics-notes-as-events.cpp.plist -
-
-void log();
-
-int max(int a, int b) { // expected-warning{{Duplicate code detected}}
- log();
- if (a > b)
- return a;
- return b;
-}
-
-int maxClone(int a, int b) { // no-note (converted into event)
- log();
- if (a > b)
- return a;
- return b;
-}
-
diff --git a/test/Analysis/copypaste/plist-diagnostics.cpp b/test/Analysis/copypaste/plist-diagnostics.cpp
deleted file mode 100644
index c5ea2ae20e01..000000000000
--- a/test/Analysis/copypaste/plist-diagnostics.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-output=plist -o %t.plist -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/plist-diagnostics.cpp.plist -
-
-void log();
-
-int max(int a, int b) { // expected-warning{{Duplicate code detected}}
- log();
- if (a > b)
- return a;
- return b;
-}
-
-int maxClone(int a, int b) { // expected-note{{Similar code here}}
- log();
- if (a > b)
- return a;
- return b;
-}
-
diff --git a/test/Analysis/copypaste/sub-sequences.cpp b/test/Analysis/copypaste/sub-sequences.cpp
deleted file mode 100644
index d2c08350ab4c..000000000000
--- a/test/Analysis/copypaste/sub-sequences.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// This tests if sub-sequences can match with normal sequences.
-
-void log2(int a);
-void log();
-
-int max(int a, int b) {
- log2(a);
- log(); // expected-warning{{Duplicate code detected}}
- if (a > b)
- return a;
- return b;
-}
-
-int maxClone(int a, int b) {
- log(); // expected-note{{Similar code here}}
- if (a > b)
- return a;
- return b;
-}
-
-// Functions below are not clones and should not be reported.
-
-int foo(int a, int b) { // no-warning
- return a + b;
-}
diff --git a/test/Analysis/copypaste/suspicious-clones.cpp b/test/Analysis/copypaste/suspicious-clones.cpp
deleted file mode 100644
index ae29b0e16d19..000000000000
--- a/test/Analysis/copypaste/suspicious-clones.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:ReportSuspiciousClones=true -analyzer-config alpha.clone.CloneChecker:ReportNormalClones=false -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-// Tests finding a suspicious clone that references local variables.
-
-void log();
-
-int max(int a, int b) {
- log();
- if (a > b)
- return a;
- return b; // expected-note{{Similar code using 'b' here}}
-}
-
-int maxClone(int x, int y, int z) {
- log();
- if (x > y)
- return x;
- return z; // expected-warning{{Potential copy-paste error; did you really mean to use 'z' here?}}
-}
-
-// Tests finding a suspicious clone that references global variables.
-
-struct mutex {
- bool try_lock();
- void unlock();
-};
-
-mutex m1;
-mutex m2;
-int i;
-
-void busyIncrement() {
- while (true) {
- if (m1.try_lock()) {
- ++i;
- m1.unlock(); // expected-note{{Similar code using 'm1' here}}
- if (i > 1000) {
- return;
- }
- }
- }
-}
-
-void faultyBusyIncrement() {
- while (true) {
- if (m1.try_lock()) {
- ++i;
- m2.unlock(); // expected-warning{{Potential copy-paste error; did you really mean to use 'm2' here?}}
- if (i > 1000) {
- return;
- }
- }
- }
-}
-
-// Tests that we provide two suggestions in cases where two fixes are possible.
-
-int foo(int a, int b, int c) {
- a += b + c;
- b /= a + b;
- c -= b * a; // expected-warning{{Potential copy-paste error; did you really mean to use 'b' here?}}
- return c;
-}
-
-int fooClone(int a, int b, int c) {
- a += b + c;
- b /= a + b;
- c -= a * a; // expected-note{{Similar code using 'a' here}}
- return c;
-}
-
-
-// Tests that for clone groups with a many possible suspicious clone pairs, at
-// most one warning per clone group is generated and every relevant clone is
-// reported through either a warning or a note.
-
-long bar1(long a, long b, long c, long d) {
- c = a - b;
- c = c / d * a;
- d = b * b - c; // expected-warning{{Potential copy-paste error; did you really mean to use 'b' here?}}
- return d;
-}
-
-long bar2(long a, long b, long c, long d) {
- c = a - b;
- c = c / d * a;
- d = c * b - c; // expected-note{{Similar code using 'c' here}} \
- // expected-warning{{Potential copy-paste error; did you really mean to use 'c' here?}}
- return d;
-}
-
-long bar3(long a, long b, long c, long d) {
- c = a - b;
- c = c / d * a;
- d = a * b - c; // expected-note{{Similar code using 'a' here}}
- return d;
-}
diff --git a/test/Analysis/copypaste/text-diagnostics.cpp b/test/Analysis/copypaste/text-diagnostics.cpp
deleted file mode 100644
index a3132e9534c5..000000000000
--- a/test/Analysis/copypaste/text-diagnostics.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-output=text -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
-
-void log();
-
-int max(int a, int b) { // expected-warning{{Duplicate code detected}} // expected-note{{Duplicate code detected}}
- log();
- if (a > b)
- return a;
- return b;
-}
-
-int maxClone(int a, int b) { // expected-note{{Similar code here}}
- log();
- if (a > b)
- return a;
- return b;
-}
diff --git a/test/Analysis/copypaste/ui_autogenerated.cpp b/test/Analysis/copypaste/ui_autogenerated.cpp
deleted file mode 100644
index a08c33fe9e2a..000000000000
--- a/test/Analysis/copypaste/ui_autogenerated.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:IgnoredFilesPattern="moc_|ui_|.*_automoc" -verify %s
-
-// Because files that have `ui_' in their names are most likely autogenerated,
-// we suppress copy-paste warnings here.
-
-// expected-no-diagnostics
-
-void f1() {
- int *p1 = new int[1];
- int *p2 = new int[1];
- if (p1) {
- delete [] p1;
- p1 = nullptr;
- }
- if (p2) {
- delete [] p1; // no-warning
- p2 = nullptr;
- }
-}
diff --git a/test/Analysis/coverage.c b/test/Analysis/coverage.c
deleted file mode 100644
index b819f10edc13..000000000000
--- a/test/Analysis/coverage.c
+++ /dev/null
@@ -1,102 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc -analyzer-store=region -analyzer-max-loop 4 -verify %s
-#include "Inputs/system-header-simulator.h"
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-
-static int another_function(int *y) {
- if (*y > 0)
- return *y;
- return 0;
-}
-
-static void function_which_doesnt_give_up(int **x) {
- *x = 0;
-}
-
-static void function_which_gives_up(int *x) {
- for (int i = 0; i < 5; ++i)
- (*x)++;
-}
-
-static void function_which_gives_up_nested(int *x) {
- function_which_gives_up(x);
- for (int i = 0; i < 5; ++i)
- (*x)++;
-}
-
-static void function_which_doesnt_give_up_nested(int *x, int *y) {
- *y = another_function(x);
- function_which_gives_up(x);
-}
-
-void coverage1(int *x) {
- function_which_gives_up(x);
- char *m = (char*)malloc(12);
-} // expected-warning {{Potential leak of memory pointed to by 'm'}}
-
-void coverage2(int *x) {
- if (x) {
- function_which_gives_up(x);
- char *m = (char*)malloc(12);
- }
-} // expected-warning {{Potential leak of memory pointed to by 'm'}}
-
-void coverage3(int *x) {
- x++;
- function_which_gives_up(x);
- char *m = (char*)malloc(12);
-} // expected-warning {{Potential leak of memory pointed to by 'm'}}
-
-void coverage4(int *x) {
- *x += another_function(x);
- function_which_gives_up(x);
- char *m = (char*)malloc(12);
-} // expected-warning {{Potential leak of memory pointed to by 'm'}}
-
-void coverage5(int *x) {
- for (int i = 0; i<7; ++i)
- function_which_gives_up(x);
- // The root function gives up here.
- char *m = (char*)malloc(12); // no-warning
-}
-
-void coverage6(int *x) {
- for (int i = 0; i<3; ++i) {
- function_which_gives_up(x);
- }
- char *m = (char*)malloc(12);
-} // expected-warning {{Potential leak of memory pointed to by 'm'}}
-
-int coverage7_inline(int *i) {
- function_which_doesnt_give_up(&i);
- return *i; // expected-warning {{Dereference}}
-}
-
-void coverage8(int *x) {
- int y;
- function_which_doesnt_give_up_nested(x, &y);
- y = (*x)/y; // expected-warning {{Division by zero}}
- char *m = (char*)malloc(12);
-} // expected-warning {{Potential leak of memory pointed to by 'm'}}
-
-void function_which_gives_up_settonull(int **x) {
- *x = 0;
- int y = 0;
- for (int i = 0; i < 5; ++i)
- y++;
-}
-
-void coverage9(int *x) {
- int y = 5;
- function_which_gives_up_settonull(&x);
- y = (*x); // no warning
-}
-
-static void empty_function(){
-}
-int use_empty_function(int x) {
- x = 0;
- empty_function();
- return 5/x; //expected-warning {{Division by zero}}
-}
diff --git a/test/Analysis/crash-trace.c b/test/Analysis/crash-trace.c
deleted file mode 100644
index ef1763ef97a5..000000000000
--- a/test/Analysis/crash-trace.c
+++ /dev/null
@@ -1,23 +0,0 @@
-// RUN: not --crash %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection %s 2>&1 | FileCheck %s
-// REQUIRES: crash-recovery
-
-// FIXME: CHECKs might be incompatible to win32.
-// Stack traces also require back traces.
-// REQUIRES: shell, backtrace
-
-void clang_analyzer_crash(void);
-
-void inlined() {
- clang_analyzer_crash();
-}
-
-void test() {
- inlined();
-}
-
-// CHECK: 0. Program arguments: {{.*}}clang
-// CHECK-NEXT: 1. <eof> parser at end of file
-// CHECK-NEXT: 2. While analyzing stack:
-// CHECK-NEXT: #0 Calling inlined at line 15
-// CHECK-NEXT: #1 Calling test
-// CHECK-NEXT: 3. {{.*}}crash-trace.c:{{[0-9]+}}:3: Error evaluating statement
diff --git a/test/Analysis/cstring-plist.c b/test/Analysis/cstring-plist.c
deleted file mode 100644
index c527564d49e3..000000000000
--- a/test/Analysis/cstring-plist.c
+++ /dev/null
@@ -1,28 +0,0 @@
-// RUN: rm -f %t
-// RUN: %clang_analyze_cc1 -fblocks \
-// RUN: -analyzer-checker=core,unix.Malloc,unix.cstring.NullArg \
-// RUN: -analyzer-disable-checker=alpha.unix.cstring.OutOfBounds \
-// RUN: -analyzer-output=plist -o %t %s
-// RUN: FileCheck -input-file %t %s
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-char *strncpy(char *restrict s1, const char *restrict s2, size_t n);
-
-
-
-void cstringchecker_bounds_nocrash() {
- char *p = malloc(2);
- strncpy(p, "AAA", sizeof("AAA")); // we don't expect warning as the checker is disabled
- free(p);
-}
-
-// CHECK: <key>diagnostics</key>
-// CHECK-NEXT: <array>
-// CHECK-NEXT: </array>
-// CHECK-NEXT: <key>files</key>
-// CHECK-NEXT: <array>
-// CHECK-NEXT: </array>
-// CHECK-NEXT: </dict>
-// CHECK-NEXT: </plist>
diff --git a/test/Analysis/cstring-ranges.c b/test/Analysis/cstring-ranges.c
deleted file mode 100644
index 4fcd7eaa8bee..000000000000
--- a/test/Analysis/cstring-ranges.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=unix.cstring -analyzer-output=text %s 2>&1 | FileCheck %s
-
-// This test verifies argument source range highlighting.
-// Otherwise we've no idea which of the arguments is null.
-
-char *strcpy(char *, const char *);
-
-void foo() {
- char *a = 0, *b = 0;
- strcpy(a, b);
-}
-
-// CHECK: warning: Null pointer argument in call to string copy function
-// CHECK-NEXT: strcpy(a, b);
-// CHECK-NEXT: ^ ~
diff --git a/test/Analysis/cstring-syntax-cxx.cpp b/test/Analysis/cstring-syntax-cxx.cpp
deleted file mode 100644
index b2adef8e1ece..000000000000
--- a/test/Analysis/cstring-syntax-cxx.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=unix.cstring.BadSizeArg -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-// Ensure we don't crash on C++ declarations with special names.
-struct X {
- X(int i): i(i) {}
- int i;
-};
-
-X operator+(X a, X b) {
- return X(a.i + b.i);
-}
-
-void test(X a, X b) {
- X c = a + b;
-}
-
-// Ensure we don't crash on custom-defined strncat.
-char strncat ();
-int main () {
- return strncat ();
-} \ No newline at end of file
diff --git a/test/Analysis/cstring-syntax.c b/test/Analysis/cstring-syntax.c
deleted file mode 100644
index d2e12e8303b1..000000000000
--- a/test/Analysis/cstring-syntax.c
+++ /dev/null
@@ -1,54 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=unix.cstring.BadSizeArg -analyzer-store=region -Wno-strncat-size -Wno-strlcpy-strlcat-size -Wno-sizeof-array-argument -Wno-sizeof-pointer-memaccess -verify %s
-// RUN: %clang_analyze_cc1 -triple armv7-a15-linux -analyzer-checker=unix.cstring.BadSizeArg -analyzer-store=region -Wno-strncat-size -Wno-strlcpy-strlcat-size -Wno-sizeof-array-argument -Wno-sizeof-pointer-memaccess -verify %s
-// RUN: %clang_analyze_cc1 -triple aarch64_be-none-linux-gnu -analyzer-checker=unix.cstring.BadSizeArg -analyzer-store=region -Wno-strncat-size -Wno-strlcpy-strlcat-size -Wno-sizeof-array-argument -Wno-sizeof-pointer-memaccess -verify %s
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -analyzer-checker=unix.cstring.BadSizeArg -analyzer-store=region -Wno-strncat-size -Wno-strlcpy-strlcat-size -Wno-sizeof-array-argument -Wno-sizeof-pointer-memaccess -verify %s
-
-typedef __SIZE_TYPE__ size_t;
-char *strncat(char *, const char *, size_t);
-size_t strlen (const char *s);
-size_t strlcpy(char *, const char *, size_t);
-size_t strlcat(char *, const char *, size_t);
-
-void testStrncat(const char *src) {
- char dest[10];
- strncat(dest, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAA", sizeof(dest) - 1); // expected-warning {{Potential buffer overflow. Replace with 'sizeof(dest) - strlen(dest) - 1' or use a safer 'strlcat' API}}
- strncat(dest, "AAAAAAAAAAAAAAAAAAAAAAAAAAA", sizeof(dest)); // expected-warning {{Potential buffer overflow. Replace with}}
- strncat(dest, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", sizeof(dest) - strlen(dest)); // expected-warning {{Potential buffer overflow. Replace with}}
- strncat(dest, src, sizeof(src)); // expected-warning {{Potential buffer overflow. Replace with}}
- // Should not crash when sizeof has a type argument.
- strncat(dest, "AAAAAAAAAAAAAAAAAAAAAAAAAAA", sizeof(char));
-}
-
-void testStrlcpy(const char *src) {
- char dest[10];
- size_t destlen = sizeof(dest);
- size_t srclen = sizeof(src);
- size_t badlen = 20;
- size_t ulen;
- strlcpy(dest, src, sizeof(dest));
- strlcpy(dest, src, destlen);
- strlcpy(dest, src, 10);
- strlcpy(dest, src, 20); // expected-warning {{The third argument allows to potentially copy more bytes than it should. Replace with the value sizeof(dest) or lower}}
- strlcpy(dest, src, badlen); // expected-warning {{The third argument allows to potentially copy more bytes than it should. Replace with the value sizeof(dest) or lower}}
- strlcpy(dest, src, ulen);
- strlcpy(dest + 5, src, 5);
- strlcpy(dest + 5, src, 10); // expected-warning {{The third argument allows to potentially copy more bytes than it should. Replace with the value sizeof(<destination buffer>) or lower}}
-}
-
-void testStrlcat(const char *src) {
- char dest[10];
- size_t badlen = 20;
- size_t ulen;
- strlcpy(dest, "aaaaa", sizeof("aaaaa") - 1);
- strlcat(dest, "bbbb", (sizeof("bbbb") - 1) - sizeof(dest) - 1);
- strlcpy(dest, "012345678", sizeof(dest));
- strlcat(dest, "910", sizeof(dest));
- strlcpy(dest, "0123456789", sizeof(dest));
- strlcpy(dest, "0123456789", sizeof(dest));
- strlcat(dest, "0123456789", badlen / 2);
- strlcat(dest, "0123456789", badlen); // expected-warning {{The third argument allows to potentially copy more bytes than it should. Replace with the value sizeof(dest) or lower}}
- strlcat(dest, "0123456789", badlen - strlen(dest) - 1);
- strlcat(dest, src, ulen);
- strlcpy(dest, src, 5);
- strlcat(dest + 5, src, badlen); // expected-warning {{The third argument allows to potentially copy more bytes than it should. Replace with the value sizeof(<destination buffer>) or lower}}
-}
diff --git a/test/Analysis/ctor.mm b/test/Analysis/ctor.mm
deleted file mode 100644
index 08f06e75aebf..000000000000
--- a/test/Analysis/ctor.mm
+++ /dev/null
@@ -1,864 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -DI386 -analyzer-checker=core,debug.ExprInspection -fobjc-arc -analyzer-config c++-inlining=constructors -Wno-null-dereference -std=c++11 -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -DI386 -analyzer-checker=core,debug.ExprInspection -fobjc-arc -analyzer-config c++-inlining=constructors -Wno-null-dereference -std=c++11 -verify -DTEST_INLINABLE_ALLOCATORS -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin12 -analyzer-checker=core,debug.ExprInspection -fobjc-arc -analyzer-config c++-inlining=constructors -Wno-null-dereference -std=c++11 -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin12 -analyzer-checker=core,debug.ExprInspection -fobjc-arc -analyzer-config c++-inlining=constructors -Wno-null-dereference -std=c++11 -verify -DTEST_INLINABLE_ALLOCATORS -analyzer-config eagerly-assume=false %s
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_checkInlined(bool);
-
-// A simplified version of std::move.
-template <typename T>
-T &&move(T &obj) {
- return static_cast<T &&>(obj);
-}
-
-
-struct Wrapper {
- __strong id obj;
-};
-
-void test() {
- Wrapper w;
- // force a diagnostic
- *(char *)0 = 1; // expected-warning{{Dereference of null pointer}}
-}
-
-
-struct IntWrapper {
- int x;
-};
-
-void testCopyConstructor() {
- IntWrapper a;
- a.x = 42;
-
- IntWrapper b(a);
- clang_analyzer_eval(b.x == 42); // expected-warning{{TRUE}}
-}
-
-struct NonPODIntWrapper {
- int x;
-
- virtual int get();
-};
-
-void testNonPODCopyConstructor() {
- NonPODIntWrapper a;
- a.x = 42;
-
- NonPODIntWrapper b(a);
- clang_analyzer_eval(b.x == 42); // expected-warning{{TRUE}}
-}
-
-
-namespace ConstructorVirtualCalls {
- class A {
- public:
- int *out1, *out2, *out3;
-
- virtual int get() { return 1; }
-
- A(int *out1) {
- *out1 = get();
- }
- };
-
- class B : public A {
- public:
- virtual int get() { return 2; }
-
- B(int *out1, int *out2) : A(out1) {
- *out2 = get();
- }
- };
-
- class C : public B {
- public:
- virtual int get() { return 3; }
-
- C(int *out1, int *out2, int *out3) : B(out1, out2) {
- *out3 = get();
- }
- };
-
- void test() {
- int a, b, c;
-
- C obj(&a, &b, &c);
- clang_analyzer_eval(a == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(b == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(c == 3); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(obj.get() == 3); // expected-warning{{TRUE}}
-
- // Sanity check for devirtualization.
- A *base = &obj;
- clang_analyzer_eval(base->get() == 3); // expected-warning{{TRUE}}
- }
-}
-
-namespace TemporaryConstructor {
- class BoolWrapper {
- public:
- BoolWrapper() {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- value = true;
- }
- bool value;
- };
-
- void test() {
- // PR13717 - Don't crash when a CXXTemporaryObjectExpr is inlined.
- if (BoolWrapper().value)
- return;
- }
-}
-
-
-namespace ConstructorUsedAsRValue {
- using TemporaryConstructor::BoolWrapper;
-
- bool extractValue(BoolWrapper b) {
- return b.value;
- }
-
- void test() {
- bool result = extractValue(BoolWrapper());
- clang_analyzer_eval(result); // expected-warning{{TRUE}}
- }
-}
-
-namespace PODUninitialized {
- class POD {
- public:
- int x, y;
- };
-
- class PODWrapper {
- public:
- POD p;
- };
-
- class NonPOD {
- public:
- int x, y;
-
- NonPOD() {}
- NonPOD(const NonPOD &Other)
- : x(Other.x), y(Other.y) // expected-warning {{undefined}}
- {
- }
- NonPOD(NonPOD &&Other)
- : x(Other.x), y(Other.y) // expected-warning {{undefined}}
- {
- }
-
- NonPOD &operator=(const NonPOD &Other)
- {
- x = Other.x;
- y = Other.y; // expected-warning {{undefined}}
- return *this;
- }
- NonPOD &operator=(NonPOD &&Other)
- {
- x = Other.x;
- y = Other.y; // expected-warning {{undefined}}
- return *this;
- }
- };
-
- class NonPODWrapper {
- public:
- class Inner {
- public:
- int x, y;
-
- Inner() {}
- Inner(const Inner &Other)
- : x(Other.x), y(Other.y) // expected-warning {{undefined}}
- {
- }
- Inner(Inner &&Other)
- : x(Other.x), y(Other.y) // expected-warning {{undefined}}
- {
- }
-
- Inner &operator=(const Inner &Other)
- {
- x = Other.x; // expected-warning {{undefined}}
- y = Other.y;
- return *this;
- }
- Inner &operator=(Inner &&Other)
- {
- x = Other.x; // expected-warning {{undefined}}
- y = Other.y;
- return *this;
- }
- };
-
- Inner p;
- };
-
- void testPOD(const POD &pp) {
- POD p;
- p.x = 1;
- POD p2 = p; // no-warning
- clang_analyzer_eval(p2.x == 1); // expected-warning{{TRUE}}
- POD p3 = move(p); // no-warning
- clang_analyzer_eval(p3.x == 1); // expected-warning{{TRUE}}
-
- // Use rvalues as well.
- clang_analyzer_eval(POD(p3).x == 1); // expected-warning{{TRUE}}
-
- // Copy from symbolic references correctly.
- POD p4 = pp;
- // Make sure that p4.x contains a symbol after copy.
- if (p4.x > 0)
- clang_analyzer_eval(p4.x > 0); // expected-warning{{TRUE}}
- // FIXME: Element region gets in the way, so these aren't the same symbols
- // as they should be.
- clang_analyzer_eval(pp.x == p4.x); // expected-warning{{UNKNOWN}}
-
- PODWrapper w;
- w.p.y = 1;
- PODWrapper w2 = w; // no-warning
- clang_analyzer_eval(w2.p.y == 1); // expected-warning{{TRUE}}
- PODWrapper w3 = move(w); // no-warning
- clang_analyzer_eval(w3.p.y == 1); // expected-warning{{TRUE}}
-
- // Use rvalues as well.
- clang_analyzer_eval(PODWrapper(w3).p.y == 1); // expected-warning{{TRUE}}
- }
-
- void testNonPOD() {
- NonPOD p;
- p.x = 1;
- NonPOD p2 = p;
- }
-
- void testNonPODMove() {
- NonPOD p;
- p.x = 1;
- NonPOD p2 = move(p);
- }
-
- void testNonPODWrapper() {
- NonPODWrapper w;
- w.p.y = 1;
- NonPODWrapper w2 = w;
- }
-
- void testNonPODWrapperMove() {
- NonPODWrapper w;
- w.p.y = 1;
- NonPODWrapper w2 = move(w);
- }
-
- // Not strictly about constructors, but trivial assignment operators should
- // essentially work the same way.
- namespace AssignmentOperator {
- void testPOD() {
- POD p;
- p.x = 1;
- POD p2;
- p2 = p; // no-warning
- clang_analyzer_eval(p2.x == 1); // expected-warning{{TRUE}}
- POD p3;
- p3 = move(p); // no-warning
- clang_analyzer_eval(p3.x == 1); // expected-warning{{TRUE}}
-
- PODWrapper w;
- w.p.y = 1;
- PODWrapper w2;
- w2 = w; // no-warning
- clang_analyzer_eval(w2.p.y == 1); // expected-warning{{TRUE}}
- PODWrapper w3;
- w3 = move(w); // no-warning
- clang_analyzer_eval(w3.p.y == 1); // expected-warning{{TRUE}}
- }
-
- void testReturnValue() {
- POD p;
- p.x = 1;
- POD p2;
- clang_analyzer_eval(&(p2 = p) == &p2); // expected-warning{{TRUE}}
-
- PODWrapper w;
- w.p.y = 1;
- PODWrapper w2;
- clang_analyzer_eval(&(w2 = w) == &w2); // expected-warning{{TRUE}}
- }
-
- void testNonPOD() {
- NonPOD p;
- p.x = 1;
- NonPOD p2;
- p2 = p;
- }
-
- void testNonPODMove() {
- NonPOD p;
- p.x = 1;
- NonPOD p2;
- p2 = move(p);
- }
-
- void testNonPODWrapper() {
- NonPODWrapper w;
- w.p.y = 1;
- NonPODWrapper w2;
- w2 = w;
- }
-
- void testNonPODWrapperMove() {
- NonPODWrapper w;
- w.p.y = 1;
- NonPODWrapper w2;
- w2 = move(w);
- }
- }
-}
-
-namespace ArrayMembers {
- struct Primitive {
- int values[3];
- };
-
- void testPrimitive() {
- Primitive a = { { 1, 2, 3 } };
-
- clang_analyzer_eval(a.values[0] == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(a.values[1] == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(a.values[2] == 3); // expected-warning{{TRUE}}
-
- Primitive b = a;
-
- clang_analyzer_eval(b.values[0] == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(b.values[1] == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(b.values[2] == 3); // expected-warning{{TRUE}}
-
- Primitive c;
- c = b;
-
- clang_analyzer_eval(c.values[0] == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(c.values[1] == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(c.values[2] == 3); // expected-warning{{TRUE}}
- }
-
- struct NestedPrimitive {
- int values[2][3];
- };
-
- void testNestedPrimitive() {
- NestedPrimitive a = { { { 0, 0, 0 }, { 1, 2, 3 } } };
-
- clang_analyzer_eval(a.values[1][0] == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(a.values[1][1] == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(a.values[1][2] == 3); // expected-warning{{TRUE}}
-
- NestedPrimitive b = a;
-
- clang_analyzer_eval(b.values[1][0] == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(b.values[1][1] == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(b.values[1][2] == 3); // expected-warning{{TRUE}}
-
- NestedPrimitive c;
- c = b;
-
- clang_analyzer_eval(c.values[1][0] == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(c.values[1][1] == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(c.values[1][2] == 3); // expected-warning{{TRUE}}
- }
-
- struct POD {
- IntWrapper values[3];
- };
-
- void testPOD() {
- POD a = { { { 1 }, { 2 }, { 3 } } };
-
- clang_analyzer_eval(a.values[0].x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(a.values[1].x == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(a.values[2].x == 3); // expected-warning{{TRUE}}
-
- POD b = a;
-
- clang_analyzer_eval(b.values[0].x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(b.values[1].x == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(b.values[2].x == 3); // expected-warning{{TRUE}}
-
- POD c;
- c = b;
-
- clang_analyzer_eval(c.values[0].x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(c.values[1].x == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(c.values[2].x == 3); // expected-warning{{TRUE}}
- }
-
- struct NestedPOD {
- IntWrapper values[2][3];
- };
-
- void testNestedPOD() {
- NestedPOD a = { { { { 0 }, { 0 }, { 0 } }, { { 1 }, { 2 }, { 3 } } } };
-
- clang_analyzer_eval(a.values[1][0].x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(a.values[1][1].x == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(a.values[1][2].x == 3); // expected-warning{{TRUE}}
-
- NestedPOD b = a;
-
- clang_analyzer_eval(b.values[1][0].x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(b.values[1][1].x == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(b.values[1][2].x == 3); // expected-warning{{TRUE}}
-
- NestedPOD c;
- c = b;
-
- clang_analyzer_eval(c.values[1][0].x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(c.values[1][1].x == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(c.values[1][2].x == 3); // expected-warning{{TRUE}}
- }
-
- struct NonPOD {
- NonPODIntWrapper values[3];
- };
-
- void testNonPOD() {
- NonPOD a;
- a.values[0].x = 1;
- a.values[1].x = 2;
- a.values[2].x = 3;
-
- clang_analyzer_eval(a.values[0].x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(a.values[1].x == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(a.values[2].x == 3); // expected-warning{{TRUE}}
-
- NonPOD b = a;
-
- clang_analyzer_eval(b.values[0].x == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(b.values[1].x == 2); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(b.values[2].x == 3); // expected-warning{{UNKNOWN}}
-
- NonPOD c;
- c = b;
-
- clang_analyzer_eval(c.values[0].x == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(c.values[1].x == 2); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(c.values[2].x == 3); // expected-warning{{UNKNOWN}}
- }
-
- struct NestedNonPOD {
- NonPODIntWrapper values[2][3];
- };
-
- void testNestedNonPOD() {
- NestedNonPOD a;
- a.values[0][0].x = 0;
- a.values[0][1].x = 0;
- a.values[0][2].x = 0;
- a.values[1][0].x = 1;
- a.values[1][1].x = 2;
- a.values[1][2].x = 3;
-
- clang_analyzer_eval(a.values[1][0].x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(a.values[1][1].x == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(a.values[1][2].x == 3); // expected-warning{{TRUE}}
-
- NestedNonPOD b = a;
-
- clang_analyzer_eval(b.values[1][0].x == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(b.values[1][1].x == 2); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(b.values[1][2].x == 3); // expected-warning{{UNKNOWN}}
-
- NestedNonPOD c;
- c = b;
-
- clang_analyzer_eval(c.values[1][0].x == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(c.values[1][1].x == 2); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(c.values[1][2].x == 3); // expected-warning{{UNKNOWN}}
- }
-
- struct NonPODDefaulted {
- NonPODIntWrapper values[3];
-
- NonPODDefaulted() = default;
- NonPODDefaulted(const NonPODDefaulted &) = default;
- NonPODDefaulted &operator=(const NonPODDefaulted &) = default;
- };
-
- void testNonPODDefaulted() {
- NonPODDefaulted a;
- a.values[0].x = 1;
- a.values[1].x = 2;
- a.values[2].x = 3;
-
- clang_analyzer_eval(a.values[0].x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(a.values[1].x == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(a.values[2].x == 3); // expected-warning{{TRUE}}
-
- NonPODDefaulted b = a;
-
- clang_analyzer_eval(b.values[0].x == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(b.values[1].x == 2); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(b.values[2].x == 3); // expected-warning{{UNKNOWN}}
-
- NonPODDefaulted c;
- c = b;
-
- clang_analyzer_eval(c.values[0].x == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(c.values[1].x == 2); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(c.values[2].x == 3); // expected-warning{{UNKNOWN}}
- }
-};
-
-namespace VirtualInheritance {
- int counter;
-
- struct base {
- base() {
- ++counter;
- }
- };
-
- struct virtual_subclass : public virtual base {
- virtual_subclass() {}
- };
-
- struct double_subclass : public virtual_subclass {
- double_subclass() {}
- };
-
- void test() {
- counter = 0;
- double_subclass obj;
- clang_analyzer_eval(counter == 1); // expected-warning{{TRUE}}
- }
-
- struct double_virtual_subclass : public virtual virtual_subclass {
- double_virtual_subclass() {}
- };
-
- void testVirtual() {
- counter = 0;
- double_virtual_subclass obj;
- clang_analyzer_eval(counter == 1); // expected-warning{{TRUE}}
- }
-}
-
-namespace ZeroInitialization {
- struct raw_pair {
- int p1;
- int p2;
- };
-
- void testVarDecl() {
- raw_pair p{};
- clang_analyzer_eval(p.p1 == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(p.p2 == 0); // expected-warning{{TRUE}}
- }
-
- void testTemporary() {
- clang_analyzer_eval(raw_pair().p1 == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(raw_pair().p2 == 0); // expected-warning{{TRUE}}
- }
-
- void testArray() {
- raw_pair p[2] = {};
- clang_analyzer_eval(p[0].p1 == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(p[0].p2 == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(p[1].p1 == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(p[1].p2 == 0); // expected-warning{{TRUE}}
- }
-
- void testNew() {
- raw_pair *pp = new raw_pair();
- clang_analyzer_eval(pp->p1 == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(pp->p2 == 0); // expected-warning{{TRUE}}
- }
-
- void testArrayNew() {
- // FIXME: Pending proper implementation of constructors for 'new[]'.
- raw_pair *p = new raw_pair[2]();
- clang_analyzer_eval(p[0].p1 == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(p[0].p2 == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(p[1].p1 == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(p[1].p2 == 0); // expected-warning{{UNKNOWN}}
- }
-
- struct initializing_pair {
- public:
- int x;
- raw_pair y;
- initializing_pair() : x(), y() {}
- };
-
- void testFieldInitializers() {
- initializing_pair p;
- clang_analyzer_eval(p.x == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(p.y.p1 == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(p.y.p2 == 0); // expected-warning{{TRUE}}
- }
-
- struct subclass : public raw_pair {
- subclass() = default;
- };
-
- void testSubclass() {
- subclass p;
- clang_analyzer_eval(p.p1 == 0); // expected-warning{{garbage}}
- }
-
- struct initializing_subclass : public raw_pair {
- initializing_subclass() : raw_pair() {}
- };
-
- void testInitializingSubclass() {
- initializing_subclass p;
- clang_analyzer_eval(p.p1 == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(p.p2 == 0); // expected-warning{{TRUE}}
- }
-
- struct pair_wrapper {
- pair_wrapper() : p() {}
- raw_pair p;
- };
-
- struct virtual_subclass : public virtual pair_wrapper {
- virtual_subclass() {}
- };
-
- struct double_virtual_subclass : public virtual_subclass {
- double_virtual_subclass() {
- // This previously caused a crash because the pair_wrapper subobject was
- // initialized twice.
- }
- };
-
- class Empty {
- public:
- static int glob;
- Empty(); // No body.
- Empty(int x); // Body below.
- };
-
- class PairContainer : public Empty {
- public:
- raw_pair p;
- int q;
- PairContainer() : Empty(), p() {
- // This previously caused a crash because the empty base class looked
- // like an initialization of 'p'.
- }
- PairContainer(int) : Empty(), p() {
- // Test inlining something else here.
- }
- PairContainer(double): Empty(1), p() {
- clang_analyzer_eval(p.p1 == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(p.p2 == 0); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(q == 1); // expected-warning{{TRUE}}
-
- // This one's indeed UNKNOWN. Definitely not TRUE.
- clang_analyzer_eval(p.p2 == glob); // expected-warning{{UNKNOWN}}
- }
- };
-
- Empty::Empty(int x) {
- static_cast<PairContainer *>(this)->p.p1 = x;
- static_cast<PairContainer *>(this)->q = x;
- // Our static member will store the old garbage values of fields that aren't
- // yet initialized. It's not certainly garbage though (i.e. the constructor
- // could have been called on an initialized piece of memory), so no
- // uninitialized value warning here, and it should be a symbol, not
- // undefined value, for later comparison.
- glob = static_cast<PairContainer *>(this)->p.p2;
- }
-
- class Empty2 {
- public:
- static int glob_p1, glob_p2;
- Empty2(); // Body below.
- };
-
- class PairDoubleEmptyContainer: public Empty, public Empty2 {
- public:
- raw_pair p;
- PairDoubleEmptyContainer(): Empty(), Empty2(), p() {
- clang_analyzer_eval(p.p1 == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(p.p2 == 0); // expected-warning{{TRUE}}
-
- // This is indeed UNKNOWN.
- clang_analyzer_eval(p.p1 == glob_p1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(p.p2 == glob_p2); // expected-warning{{UNKNOWN}}
- }
- };
-
- Empty2::Empty2() {
- glob_p1 = static_cast<PairDoubleEmptyContainer *>(this)->p.p1;
- glob_p2 = static_cast<PairDoubleEmptyContainer *>(this)->p.p2;
- }
-
- class PairContainerContainer {
- int padding;
- PairContainer pc;
- public:
- PairContainerContainer() : pc(1) {}
- };
-}
-
-namespace InitializerList {
- struct List {
- bool usedInitializerList;
-
- List() : usedInitializerList(false) {}
- List(std::initializer_list<int>) : usedInitializerList(true) {}
- };
-
- void testStatic() {
- List defaultCtor;
- clang_analyzer_eval(!defaultCtor.usedInitializerList); // expected-warning{{TRUE}}
-
- List list{1, 2};
- clang_analyzer_eval(list.usedInitializerList); // expected-warning{{TRUE}}
- }
-
- void testDynamic() {
- List *list = new List{1, 2};
- clang_analyzer_eval(list->usedInitializerList); // expected-warning{{TRUE}}
- }
-}
-
-namespace PR19579 {
- class C {};
-
- void f() {
- C();
- int a;
-
- extern void use(int);
- use(a); // expected-warning{{uninitialized}}
- }
-
- void g() {
- struct S {
- C c;
- int i;
- };
-
- // This order triggers the initialization of the inner "a" after the
- // constructor for "C" is run, which used to confuse the analyzer
- // (is "C()" the initialization of "a"?).
- struct S s = {
- C(),
- ({
- int a, b = 0;
- 0;
- })
- };
- }
-}
-
-namespace NoCrashOnEmptyBaseOptimization {
- struct NonEmptyBase {
- int X;
- explicit NonEmptyBase(int X) : X(X) {}
- };
-
- struct EmptyBase {};
-
- struct S : NonEmptyBase, EmptyBase {
- S() : NonEmptyBase(0), EmptyBase() {}
- };
-
- void testSCtorNoCrash() {
- S s;
- }
-}
-
-namespace EmptyBaseAssign {
-struct B1 {};
-struct B2 { int x; };
-struct D: public B1, public B2 {
-const D &operator=(const D &d) {
- *((B2 *)this) = d;
- *((B1 *)this) = d;
- return *this;
-}
-};
-
-void test() {
- D d1;
- d1.x = 1;
- D d2;
- d2 = d1;
- clang_analyzer_eval(d2.x == 1); // expected-warning{{TRUE}}
-}
-}
-
-namespace vbase_zero_init {
-class A {
- virtual void foo();
-};
-
-class B {
- virtual void bar();
-public:
- static int glob_y, glob_z, glob_w;
- int x;
- B(); // Body below.
-};
-
-class C : virtual public A {
-public:
- int y;
-};
-
-class D : public B, public C {
-public:
- // 'z', unlike 'w', resides in an area that would have been within padding of
- // base class 'C' if it wasn't part of 'D', but only on 64-bit systems.
- int z, w;
- // Initialization order: A(), B(), C().
- D() : A(), C() {
- clang_analyzer_eval(x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(y == 0); // expected-warning{{TRUE}}
-#ifdef I386
- clang_analyzer_eval(z == 3); // expected-warning{{TRUE}}
-#else
- // FIXME: Should be TRUE. Initialized in B().
- clang_analyzer_eval(z == 3); // expected-warning{{UNKNOWN}}
-#endif
- clang_analyzer_eval(w == 4); // expected-warning{{TRUE}}
-
- // FIXME: Should be UNKNOWN. Changed in B() since glob_y was assigned.
- clang_analyzer_eval(y == glob_y); // expected-warning{{TRUE}}
-
-#ifdef I386
- clang_analyzer_eval(z == glob_z); // expected-warning{{UNKNOWN}}
-#else
- // FIXME: Should be UNKNOWN. Changed in B() since glob_z was assigned.
- clang_analyzer_eval(z == glob_z); // expected-warning{{TRUE}}
-#endif
-
- clang_analyzer_eval(w == glob_w); // expected-warning{{UNKNOWN}}
- } // no-crash
-};
-
-B::B() : x(1) {
- // Our static members will store the old garbage values of fields that aren't
- // yet initialized. These aren't certainly garbage though (i.e. the
- // constructor could have been called on an initialized piece of memory),
- // so no uninitialized value warning here, and these should be symbols, not
- // undefined values, for later comparison.
- glob_y = static_cast<D *>(this)->y;
- glob_z = static_cast<D *>(this)->z;
- glob_w = static_cast<D *>(this)->w;
- static_cast<D *>(this)->y = 2;
- static_cast<D *>(this)->z = 3;
- static_cast<D *>(this)->w = 4;
-}
-}
diff --git a/test/Analysis/ctu-different-triples.cpp b/test/Analysis/ctu-different-triples.cpp
deleted file mode 100644
index dbfa82fb483d..000000000000
--- a/test/Analysis/ctu-different-triples.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-// RUN: rm -rf %t && mkdir %t
-// RUN: mkdir -p %t/ctudir
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu \
-// RUN: -emit-pch -o %t/ctudir/ctu-other.cpp.ast %S/Inputs/ctu-other.cpp
-// RUN: cp %S/Inputs/ctu-other.cpp.externalDefMap.txt %t/ctudir/externalDefMap.txt
-// RUN: %clang_analyze_cc1 -triple powerpc64-montavista-linux-gnu \
-// RUN: -analyzer-checker=core,debug.ExprInspection \
-// RUN: -analyzer-config experimental-enable-naive-ctu-analysis=true \
-// RUN: -analyzer-config ctu-dir=%t/ctudir \
-// RUN: -Werror=ctu \
-// RUN: -verify %s
-
-// We expect an error in this file, but without a location.
-// expected-error-re@./ctu-different-triples.cpp:*{{imported AST from {{.*}} had been generated for a different target, current: powerpc64-montavista-linux-gnu, imported: x86_64-pc-linux-gnu}}
-
-int f(int);
-
-int main() {
- return f(5);
-}
diff --git a/test/Analysis/ctu-hdr.h b/test/Analysis/ctu-hdr.h
deleted file mode 100644
index 5a1e694d0686..000000000000
--- a/test/Analysis/ctu-hdr.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#define MACRODIAG() clang_analyzer_warnIfReached()
-
-void clang_analyzer_warnIfReached();
diff --git a/test/Analysis/ctu-main.c b/test/Analysis/ctu-main.c
deleted file mode 100644
index 114d694020a1..000000000000
--- a/test/Analysis/ctu-main.c
+++ /dev/null
@@ -1,67 +0,0 @@
-// RUN: rm -rf %t && mkdir %t
-// RUN: mkdir -p %t/ctudir2
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu \
-// RUN: -emit-pch -o %t/ctudir2/ctu-other.c.ast %S/Inputs/ctu-other.c
-// RUN: cp %S/Inputs/ctu-other.c.externalDefMap.txt %t/ctudir2/externalDefMap.txt
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -std=c89 -analyze \
-// RUN: -analyzer-checker=core,debug.ExprInspection \
-// RUN: -analyzer-config experimental-enable-naive-ctu-analysis=true \
-// RUN: -analyzer-config ctu-dir=%t/ctudir2 \
-// RUN: -verify %s
-
-void clang_analyzer_eval(int);
-
-// Test typedef and global variable in function.
-typedef struct {
- int a;
- int b;
-} FooBar;
-extern FooBar fb;
-int f(int);
-void testGlobalVariable() {
- clang_analyzer_eval(f(5) == 1); // expected-warning{{TRUE}}
-}
-
-// Test enums.
-int enumCheck(void);
-enum A { x,
- y,
- z };
-void testEnum() {
- clang_analyzer_eval(x == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(enumCheck() == 42); // expected-warning{{TRUE}}
-}
-
-// Test that asm import does not fail.
-int inlineAsm();
-int testInlineAsm() {
- return inlineAsm();
-}
-
-// Test reporting error in a macro.
-struct S;
-int g(struct S *);
-void testMacro(void) {
- g(0); // expected-warning@Inputs/ctu-other.c:29 {{Access to field 'a' results in a dereference of a null pointer (loaded from variable 'ctx')}}
-}
-
-// The external function prototype is incomplete.
-// warning:implicit functions are prohibited by c99
-void testImplicit() {
- int res = identImplicit(6); // external implicit functions are not inlined
- clang_analyzer_eval(res == 6); // expected-warning{{TRUE}}
-}
-
-// Tests the import of functions that have a struct parameter
-// defined in its prototype.
-struct DataType {
- int a;
- int b;
-};
-int structInProto(struct DataType *d);
-void testStructDefInArgument() {
- struct DataType d;
- d.a = 1;
- d.b = 0;
- clang_analyzer_eval(structInProto(&d) == 0); // expected-warning{{TRUE}} expected-warning{{FALSE}}
-}
diff --git a/test/Analysis/ctu-main.cpp b/test/Analysis/ctu-main.cpp
deleted file mode 100644
index 35d1f52ad044..000000000000
--- a/test/Analysis/ctu-main.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-// RUN: rm -rf %t && mkdir %t
-// RUN: mkdir -p %t/ctudir
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu \
-// RUN: -emit-pch -o %t/ctudir/ctu-other.cpp.ast %S/Inputs/ctu-other.cpp
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu \
-// RUN: -emit-pch -o %t/ctudir/ctu-chain.cpp.ast %S/Inputs/ctu-chain.cpp
-// RUN: cp %S/Inputs/ctu-other.cpp.externalDefMap.txt %t/ctudir/externalDefMap.txt
-// RUN: %clang_analyze_cc1 -triple x86_64-pc-linux-gnu \
-// RUN: -analyzer-checker=core,debug.ExprInspection \
-// RUN: -analyzer-config experimental-enable-naive-ctu-analysis=true \
-// RUN: -analyzer-config ctu-dir=%t/ctudir \
-// RUN: -verify %s
-// RUN: %clang_analyze_cc1 -triple x86_64-pc-linux-gnu \
-// RUN: -analyzer-checker=core,debug.ExprInspection \
-// RUN: -analyzer-config experimental-enable-naive-ctu-analysis=true \
-// RUN: -analyzer-config ctu-dir=%t/ctudir \
-// RUN: -analyzer-config display-ctu-progress=true 2>&1 %s | FileCheck %s
-
-// CHECK: CTU loaded AST file: {{.*}}ctu-other.cpp.ast
-// CHECK: CTU loaded AST file: {{.*}}ctu-chain.cpp.ast
-
-#include "ctu-hdr.h"
-
-void clang_analyzer_eval(int);
-
-int f(int);
-int g(int);
-int h(int);
-
-int callback_to_main(int x) { return x + 1; }
-
-namespace myns {
-int fns(int x);
-
-namespace embed_ns {
-int fens(int x);
-}
-
-class embed_cls {
-public:
- int fecl(int x);
-};
-}
-
-class mycls {
-public:
- int fcl(int x);
- static int fscl(int x);
-
- class embed_cls2 {
- public:
- int fecl2(int x);
- };
-};
-
-namespace chns {
-int chf1(int x);
-}
-
-int fun_using_anon_struct(int);
-int other_macro_diag(int);
-
-int main() {
- clang_analyzer_eval(f(3) == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(f(4) == 3); // expected-warning{{TRUE}}
- clang_analyzer_eval(f(5) == 3); // expected-warning{{FALSE}}
- clang_analyzer_eval(g(4) == 6); // expected-warning{{TRUE}}
- clang_analyzer_eval(h(2) == 8); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(myns::fns(2) == 9); // expected-warning{{TRUE}}
- clang_analyzer_eval(myns::embed_ns::fens(2) == -1); // expected-warning{{TRUE}}
- clang_analyzer_eval(mycls().fcl(1) == 6); // expected-warning{{TRUE}}
- clang_analyzer_eval(mycls::fscl(1) == 7); // expected-warning{{TRUE}}
- clang_analyzer_eval(myns::embed_cls().fecl(1) == -6); // expected-warning{{TRUE}}
- clang_analyzer_eval(mycls::embed_cls2().fecl2(0) == -11); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(chns::chf1(4) == 12); // expected-warning{{TRUE}}
- clang_analyzer_eval(fun_using_anon_struct(8) == 8); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(other_macro_diag(1) == 1); // expected-warning{{TRUE}}
- // expected-warning@Inputs/ctu-other.cpp:75{{REACHABLE}}
- MACRODIAG(); // expected-warning{{REACHABLE}}
-}
diff --git a/test/Analysis/ctu-unknown-parts-in-triples.cpp b/test/Analysis/ctu-unknown-parts-in-triples.cpp
deleted file mode 100644
index 5e643c164dd7..000000000000
--- a/test/Analysis/ctu-unknown-parts-in-triples.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-// We do not expect any error when one part of the triple is unknown, but other
-// known parts are equal.
-
-// RUN: rm -rf %t && mkdir %t
-// RUN: mkdir -p %t/ctudir
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu \
-// RUN: -emit-pch -o %t/ctudir/ctu-other.cpp.ast %S/Inputs/ctu-other.cpp
-// RUN: cp %S/Inputs/ctu-other.cpp.externalDefMap.txt %t/ctudir/externalDefMap.txt
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux-gnu \
-// RUN: -analyzer-checker=core,debug.ExprInspection \
-// RUN: -analyzer-config experimental-enable-naive-ctu-analysis=true \
-// RUN: -analyzer-config ctu-dir=%t/ctudir \
-// RUN: -Werror=ctu \
-// RUN: -verify %s
-
-// expected-no-diagnostics
-
-int f(int);
-
-int main() {
- return f(5);
-}
diff --git a/test/Analysis/cxx-crashes.cpp b/test/Analysis/cxx-crashes.cpp
deleted file mode 100644
index f8234c99ef5e..000000000000
--- a/test/Analysis/cxx-crashes.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,debug.ExprInspection -verify %s
-// REQUIRES: LP64
-
-void clang_analyzer_eval(bool);
-
-int f1(char *dst) {
- char *p = dst + 4;
- char *q = dst + 3;
- return !(q >= p);
-}
-
-long f2(char *c) {
- return long(c) & 1;
-}
-
-bool f3() {
- return !false;
-}
-
-void *f4(int* w) {
- return reinterpret_cast<void*&>(w);
-}
-
-namespace {
-
-struct A { };
-struct B {
- operator A() { return A(); }
-};
-
-A f(char *dst) {
- B b;
- return b;
-}
-
-}
-
-namespace {
-
-struct S {
- void *p;
-};
-
-void *f(S* w) {
- return &reinterpret_cast<void*&>(*w);
-}
-
-}
-
-namespace {
-
-struct C {
- void *p;
- static void f();
-};
-
-void C::f() { }
-
-}
-
-
-void vla(int n) {
- int nums[n];
- nums[0] = 1;
- clang_analyzer_eval(nums[0] == 1); // expected-warning{{TRUE}}
-
- // This used to fail with MallocChecker on, and /only/ in C++ mode.
- // This struct is POD, though, so it should be fine to put it in a VLA.
- struct { int x; } structs[n];
- structs[0].x = 1;
- clang_analyzer_eval(structs[0].x == 1); // expected-warning{{TRUE}}
-}
-
-void useIntArray(int []);
-void testIntArrayLiteral() {
- useIntArray((int []){ 1, 2, 3 });
-}
-
diff --git a/test/Analysis/cxx-for-range-cfg.cpp b/test/Analysis/cxx-for-range-cfg.cpp
deleted file mode 100644
index e258c7a1e208..000000000000
--- a/test/Analysis/cxx-for-range-cfg.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -Wall -fsyntax-only %s -std=c++11 -verify
-
-// The rdar11671507_vector<int *>[]> would previously crash CFG construction
-// because of the temporary array of vectors.
-template <typename T>
-class rdar11671507_vector {
-public:
- rdar11671507_vector();
- ~rdar11671507_vector();
- T *Base;
- T *End;
-};
-
-void rdar11671507(rdar11671507_vector<int*> v, rdar11671507_vector<int*> w) {
- for (auto &vec : (rdar11671507_vector<int *>[]){ v, w }) {} // expected-warning {{unused}}
-}
diff --git a/test/Analysis/cxx-for-range.cpp b/test/Analysis/cxx-for-range.cpp
deleted file mode 100644
index 4e5fb0ea7ff5..000000000000
--- a/test/Analysis/cxx-for-range.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core -analyzer-output=plist-multi-file -o %t.plist -verify -analyzer-config eagerly-assume=false %s
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/cxx-for-range.cpp.plist -
-
-extern void work();
-
-void testLoop() {
- int z[] = {1,2};
- for (int y : z) {
- work();
- work();
- if (y == 2)
- *(volatile int *)0 = 1; // expected-warning {{Dereference of null pointer}}
- work();
- work();
- (void)y;
- }
-
- *(volatile int *)0 = 1; // no-warning
-}
-
-class MagicVector {
-public:
- MagicVector();
-
- using iterator = int *;
-
- iterator begin() const;
- iterator end() const;
-};
-
-MagicVector get(bool fail = false) {
- if (fail)
- *(volatile int *)0 = 1; // expected-warning {{Dereference of null pointer}}
- return MagicVector{};
-}
-
-void testLoopOpaqueCollection() {
- for (int y : get()) {
- work();
- work();
- if (y == 2)
- *(volatile int *)0 = 1; // expected-warning {{Dereference of null pointer}}
- work();
- work();
- (void)y;
- }
-
- *(volatile int *)0 = 1; // expected-warning {{Dereference of null pointer}}
-}
-
-
-class MagicVector2 {
-public:
- MagicVector2();
-
- class iterator {
- public:
- int operator*() const;
- iterator &operator++();
- bool operator==(const iterator &);
- bool operator!=(const iterator &);
- };
-
- iterator begin() const;
- iterator end() const;
-};
-
-MagicVector2 get2() {
- return MagicVector2{};
-}
-
-void testLoopOpaqueIterator() {
- for (int y : get2()) {
- work();
- work();
- if (y == 2)
- *(volatile int *)0 = 1; // expected-warning {{Dereference of null pointer}}
- work();
- work();
- (void)y;
- }
-
- *(volatile int *)0 = 1; // expected-warning {{Dereference of null pointer}}
-}
-
-
-void testLoopErrorInRange() {
- for (int y : get(true)) { // error inside get()
- work();
- work();
- if (y == 2)
- *(volatile int *)0 = 1; // no-warning
- work();
- work();
- (void)y;
- }
-
- *(volatile int *)0 = 1; // no-warning
-}
-
-void testForRangeInit() {
- for (int *arr[3] = {nullptr, nullptr, nullptr}; int *p : arr) // expected-warning {{extension}}
- *p = 1; // expected-warning {{Dereference of null pointer}}
-}
diff --git a/test/Analysis/cxx-method-names.cpp b/test/Analysis/cxx-method-names.cpp
deleted file mode 100644
index e57e72df840e..000000000000
--- a/test/Analysis/cxx-method-names.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix,osx,alpha.unix,alpha.security.taint -analyzer-store region -verify %s
-// expected-no-diagnostics
-
-class Evil {
-public:
- void system(int); // taint checker
- void malloc(void *); // taint checker, malloc checker
- void free(); // malloc checker, keychain checker
- void fopen(); // stream checker
- void feof(int, int); // stream checker
- void open(); // unix api checker
-};
-
-void test(Evil &E) {
- // no warnings, no crashes
- E.system(0);
- E.malloc(0);
- E.free();
- E.fopen();
- E.feof(0,1);
- E.open();
-}
diff --git a/test/Analysis/cxx-uninitialized-object-inheritance.cpp b/test/Analysis/cxx-uninitialized-object-inheritance.cpp
deleted file mode 100644
index b24783af05fd..000000000000
--- a/test/Analysis/cxx-uninitialized-object-inheritance.cpp
+++ /dev/null
@@ -1,833 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.cplusplus.UninitializedObject \
-// RUN: -analyzer-config alpha.cplusplus.UninitializedObject:Pedantic=true -DPEDANTIC \
-// RUN: -analyzer-config alpha.cplusplus.UninitializedObject:CheckPointeeInitialization=true \
-// RUN: -std=c++11 -verify %s
-
-//===----------------------------------------------------------------------===//
-// Non-polymorphic inheritance tests
-//===----------------------------------------------------------------------===//
-
-class NonPolymorphicLeft1 {
- int x;
-
-protected:
- int y;
-
-public:
- NonPolymorphicLeft1() = default;
- NonPolymorphicLeft1(int) : x(1) {}
-};
-
-class NonPolymorphicInheritanceTest1 : public NonPolymorphicLeft1 {
- int z;
-
-public:
- NonPolymorphicInheritanceTest1()
- : NonPolymorphicLeft1(int{}) {
- y = 2;
- z = 3;
- // All good!
- }
-};
-
-void fNonPolymorphicInheritanceTest1() {
- NonPolymorphicInheritanceTest1();
-}
-
-class NonPolymorphicBaseClass2 {
- int x; // expected-note{{uninitialized field 'this->NonPolymorphicBaseClass2::x'}}
-protected:
- int y;
-
-public:
- NonPolymorphicBaseClass2() = default;
- NonPolymorphicBaseClass2(int) : x(4) {}
-};
-
-class NonPolymorphicInheritanceTest2 : public NonPolymorphicBaseClass2 {
- int z;
-
-public:
- NonPolymorphicInheritanceTest2() {
- y = 5;
- z = 6; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fNonPolymorphicInheritanceTest2() {
- NonPolymorphicInheritanceTest2();
-}
-
-class NonPolymorphicBaseClass3 {
- int x;
-
-protected:
- int y; // expected-note{{uninitialized field 'this->NonPolymorphicBaseClass3::y'}}
-public:
- NonPolymorphicBaseClass3() = default;
- NonPolymorphicBaseClass3(int) : x(7) {}
-};
-
-class NonPolymorphicInheritanceTest3 : public NonPolymorphicBaseClass3 {
- int z;
-
-public:
- NonPolymorphicInheritanceTest3()
- : NonPolymorphicBaseClass3(int{}) {
- z = 8; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fNonPolymorphicInheritanceTest3() {
- NonPolymorphicInheritanceTest3();
-}
-
-class NonPolymorphicBaseClass4 {
- int x;
-
-protected:
- int y;
-
-public:
- NonPolymorphicBaseClass4() = default;
- NonPolymorphicBaseClass4(int) : x(9) {}
-};
-
-class NonPolymorphicInheritanceTest4 : public NonPolymorphicBaseClass4 {
- int z; // expected-note{{uninitialized field 'this->z'}}
-
-public:
- NonPolymorphicInheritanceTest4()
- : NonPolymorphicBaseClass4(int{}) {
- y = 10; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fNonPolymorphicInheritanceTest4() {
- NonPolymorphicInheritanceTest4();
-}
-
-//===----------------------------------------------------------------------===//
-// Polymorphic inheritance tests
-//===----------------------------------------------------------------------===//
-
-class PolymorphicLeft1 {
- int x;
-
-protected:
- int y;
-
-public:
- virtual ~PolymorphicLeft1() = default;
- PolymorphicLeft1() = default;
- PolymorphicLeft1(int) : x(11) {}
-};
-
-class PolymorphicInheritanceTest1 : public PolymorphicLeft1 {
- int z;
-
-public:
- PolymorphicInheritanceTest1()
- : PolymorphicLeft1(int{}) {
- y = 12;
- z = 13;
- // All good!
- }
-};
-
-void fPolymorphicInheritanceTest1() {
- PolymorphicInheritanceTest1();
-}
-
-class PolymorphicRight1 {
- int x; // expected-note{{uninitialized field 'this->PolymorphicRight1::x'}}
-protected:
- int y;
-
-public:
- virtual ~PolymorphicRight1() = default;
- PolymorphicRight1() = default;
- PolymorphicRight1(int) : x(14) {}
-};
-
-class PolymorphicInheritanceTest2 : public PolymorphicRight1 {
- int z;
-
-public:
- PolymorphicInheritanceTest2() {
- y = 15;
- z = 16; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fPolymorphicInheritanceTest2() {
- PolymorphicInheritanceTest2();
-}
-
-class PolymorphicBaseClass3 {
- int x;
-
-protected:
- int y; // expected-note{{uninitialized field 'this->PolymorphicBaseClass3::y'}}
-public:
- virtual ~PolymorphicBaseClass3() = default;
- PolymorphicBaseClass3() = default;
- PolymorphicBaseClass3(int) : x(17) {}
-};
-
-class PolymorphicInheritanceTest3 : public PolymorphicBaseClass3 {
- int z;
-
-public:
- PolymorphicInheritanceTest3()
- : PolymorphicBaseClass3(int{}) {
- z = 18; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fPolymorphicInheritanceTest3() {
- PolymorphicInheritanceTest3();
-}
-
-class PolymorphicBaseClass4 {
- int x;
-
-protected:
- int y;
-
-public:
- virtual ~PolymorphicBaseClass4() = default;
- PolymorphicBaseClass4() = default;
- PolymorphicBaseClass4(int) : x(19) {}
-};
-
-class PolymorphicInheritanceTest4 : public PolymorphicBaseClass4 {
- int z; // expected-note{{uninitialized field 'this->z'}}
-
-public:
- PolymorphicInheritanceTest4()
- : PolymorphicBaseClass4(int{}) {
- y = 20; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fPolymorphicInheritanceTest4() {
- PolymorphicInheritanceTest4();
-}
-
-//===----------------------------------------------------------------------===//
-// Virtual inheritance tests
-//===----------------------------------------------------------------------===//
-
-class VirtualPolymorphicLeft1 {
- int x;
-
-protected:
- int y;
-
-public:
- virtual ~VirtualPolymorphicLeft1() = default;
- VirtualPolymorphicLeft1() = default;
- VirtualPolymorphicLeft1(int) : x(21) {}
-};
-
-class VirtualInheritanceTest1 : virtual public VirtualPolymorphicLeft1 {
- int z;
-
-public:
- VirtualInheritanceTest1()
- : VirtualPolymorphicLeft1(int()) {
- y = 22;
- z = 23;
- // All good!
- }
-};
-
-void fVirtualInheritanceTest1() {
- VirtualInheritanceTest1();
-}
-
-class VirtualPolymorphicRight1 {
- int x; // expected-note{{uninitialized field 'this->VirtualPolymorphicRight1::x'}}
-protected:
- int y;
-
-public:
- virtual ~VirtualPolymorphicRight1() = default;
- VirtualPolymorphicRight1() = default;
- VirtualPolymorphicRight1(int) : x(24) {}
-};
-
-class VirtualInheritanceTest2 : virtual public VirtualPolymorphicRight1 {
- int z;
-
-public:
- VirtualInheritanceTest2() {
- y = 25;
- z = 26; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fVirtualInheritanceTest2() {
- VirtualInheritanceTest2();
-}
-
-class VirtualPolymorphicBaseClass3 {
- int x;
-
-protected:
- int y; // expected-note{{uninitialized field 'this->VirtualPolymorphicBaseClass3::y'}}
-public:
- virtual ~VirtualPolymorphicBaseClass3() = default;
- VirtualPolymorphicBaseClass3() = default;
- VirtualPolymorphicBaseClass3(int) : x(27) {}
-};
-
-class VirtualInheritanceTest3 : virtual public VirtualPolymorphicBaseClass3 {
- int z;
-
-public:
- VirtualInheritanceTest3()
- : VirtualPolymorphicBaseClass3(int{}) {
- z = 28; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fVirtualInheritanceTest3() {
- VirtualInheritanceTest3();
-}
-
-//===----------------------------------------------------------------------===//
-// Multiple inheritance tests
-//===----------------------------------------------------------------------===//
-
-/*
- Left Right
- \ /
- \ /
- \ /
- MultipleInheritanceTest
-*/
-
-struct Left1 {
- int x;
- Left1() = default;
- Left1(int) : x(29) {}
-};
-struct Right1 {
- int y;
- Right1() = default;
- Right1(int) : y(30) {}
-};
-
-class MultipleInheritanceTest1 : public Left1, public Right1 {
- int z;
-
-public:
- MultipleInheritanceTest1()
- : Left1(int{}),
- Right1(char{}) {
- z = 31;
- // All good!
- }
-
- MultipleInheritanceTest1(int)
- : Left1(int{}) {
- y = 32;
- z = 33;
- // All good!
- }
-
- MultipleInheritanceTest1(int, int)
- : Right1(char{}) {
- x = 34;
- z = 35;
- // All good!
- }
-};
-
-void fMultipleInheritanceTest1() {
- MultipleInheritanceTest1();
- MultipleInheritanceTest1(int());
- MultipleInheritanceTest1(int(), int());
-}
-
-struct Left2 {
- int x;
- Left2() = default;
- Left2(int) : x(36) {}
-};
-struct Right2 {
- int y; // expected-note{{uninitialized field 'this->Right2::y'}}
- Right2() = default;
- Right2(int) : y(37) {}
-};
-
-class MultipleInheritanceTest2 : public Left2, public Right2 {
- int z;
-
-public:
- MultipleInheritanceTest2()
- : Left2(int{}) {
- z = 38; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fMultipleInheritanceTest2() {
- MultipleInheritanceTest2();
-}
-
-struct Left3 {
- int x; // expected-note{{uninitialized field 'this->Left3::x'}}
- Left3() = default;
- Left3(int) : x(39) {}
-};
-struct Right3 {
- int y;
- Right3() = default;
- Right3(int) : y(40) {}
-};
-
-class MultipleInheritanceTest3 : public Left3, public Right3 {
- int z;
-
-public:
- MultipleInheritanceTest3()
- : Right3(char{}) {
- z = 41; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fMultipleInheritanceTest3() {
- MultipleInheritanceTest3();
-}
-
-struct Left4 {
- int x;
- Left4() = default;
- Left4(int) : x(42) {}
-};
-struct Right4 {
- int y;
- Right4() = default;
- Right4(int) : y(43) {}
-};
-
-class MultipleInheritanceTest4 : public Left4, public Right4 {
- int z; // expected-note{{uninitialized field 'this->z'}}
-
-public:
- MultipleInheritanceTest4()
- : Left4(int{}),
- Right4(char{}) { // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fMultipleInheritanceTest4() {
- MultipleInheritanceTest4();
-}
-
-struct Left5 {
- int x;
- Left5() = default;
- Left5(int) : x(44) {}
-};
-struct Right5 {
- int y; // expected-note{{uninitialized field 'this->Right5::y'}}
- Right5() = default;
- Right5(int) : y(45) {}
-};
-
-class MultipleInheritanceTest5 : public Left5, public Right5 {
- int z; // expected-note{{uninitialized field 'this->z'}}
-
-public:
- MultipleInheritanceTest5() // expected-warning{{2 uninitialized fields}}
- : Left5(int{}) {
- }
-};
-
-void fMultipleInheritanceTest5() {
- MultipleInheritanceTest5();
-}
-
-//===----------------------------------------------------------------------===//
-// Non-virtual diamond inheritance tests
-//===----------------------------------------------------------------------===//
-
-/*
- NonVirtualBase NonVirtualBase
- | |
- | |
- | |
- First Second
- \ /
- \ /
- \ /
- NonVirtualDiamondInheritanceTest
-*/
-
-struct NonVirtualBase1 {
- int x;
- NonVirtualBase1() = default;
- NonVirtualBase1(int) : x(46) {}
-};
-struct First1 : public NonVirtualBase1 {
- First1() = default;
- First1(int) : NonVirtualBase1(int{}) {}
-};
-struct Second1 : public NonVirtualBase1 {
- Second1() = default;
- Second1(int) : NonVirtualBase1(int{}) {}
-};
-
-class NonVirtualDiamondInheritanceTest1 : public First1, public Second1 {
- int z;
-
-public:
- NonVirtualDiamondInheritanceTest1()
- : First1(int{}),
- Second1(int{}) {
- z = 47;
- // All good!
- }
-
- NonVirtualDiamondInheritanceTest1(int)
- : First1(int{}) {
- Second1::x = 48;
- z = 49;
- // All good!
- }
-
- NonVirtualDiamondInheritanceTest1(int, int)
- : Second1(int{}) {
- First1::x = 50;
- z = 51;
- // All good!
- }
-};
-
-void fNonVirtualDiamondInheritanceTest1() {
- NonVirtualDiamondInheritanceTest1();
- NonVirtualDiamondInheritanceTest1(int());
- NonVirtualDiamondInheritanceTest1(int(), int());
-}
-
-struct NonVirtualBase2 {
- int x; // expected-note{{uninitialized field 'this->NonVirtualBase2::x'}}
- NonVirtualBase2() = default;
- NonVirtualBase2(int) : x(52) {}
-};
-struct First2 : public NonVirtualBase2 {
- First2() = default;
- First2(int) : NonVirtualBase2(int{}) {}
-};
-struct Second2 : public NonVirtualBase2 {
- Second2() = default;
- Second2(int) : NonVirtualBase2(int{}) {}
-};
-
-class NonVirtualDiamondInheritanceTest2 : public First2, public Second2 {
- int z;
-
-public:
- NonVirtualDiamondInheritanceTest2()
- : First2(int{}) {
- z = 53; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fNonVirtualDiamondInheritanceTest2() {
- NonVirtualDiamondInheritanceTest2();
-}
-
-struct NonVirtualBase3 {
- int x; // expected-note{{uninitialized field 'this->NonVirtualBase3::x'}}
- NonVirtualBase3() = default;
- NonVirtualBase3(int) : x(54) {}
-};
-struct First3 : public NonVirtualBase3 {
- First3() = default;
- First3(int) : NonVirtualBase3(int{}) {}
-};
-struct Second3 : public NonVirtualBase3 {
- Second3() = default;
- Second3(int) : NonVirtualBase3(int{}) {}
-};
-
-class NonVirtualDiamondInheritanceTest3 : public First3, public Second3 {
- int z;
-
-public:
- NonVirtualDiamondInheritanceTest3()
- : Second3(int{}) {
- z = 55; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fNonVirtualDiamondInheritanceTest3() {
- NonVirtualDiamondInheritanceTest3();
-}
-
-struct NonVirtualBase4 {
- int x; // expected-note{{uninitialized field 'this->NonVirtualBase4::x'}}
- // expected-note@-1{{uninitialized field 'this->NonVirtualBase4::x'}}
- NonVirtualBase4() = default;
- NonVirtualBase4(int) : x(56) {}
-};
-struct First4 : public NonVirtualBase4 {
- First4() = default;
- First4(int) : NonVirtualBase4(int{}) {}
-};
-struct Second4 : public NonVirtualBase4 {
- Second4() = default;
- Second4(int) : NonVirtualBase4(int{}) {}
-};
-
-class NonVirtualDiamondInheritanceTest4 : public First4, public Second4 {
- int z;
-
-public:
- NonVirtualDiamondInheritanceTest4() {
- z = 57; // expected-warning{{2 uninitialized fields}}
- }
-};
-
-void fNonVirtualDiamondInheritanceTest4() {
- NonVirtualDiamondInheritanceTest4();
-}
-
-struct NonVirtualBase5 {
- int x;
- NonVirtualBase5() = default;
- NonVirtualBase5(int) : x(58) {}
-};
-struct First5 : public NonVirtualBase5 {
- First5() = default;
- First5(int) : NonVirtualBase5(int{}) {}
-};
-struct Second5 : public NonVirtualBase5 {
- Second5() = default;
- Second5(int) : NonVirtualBase5(int{}) {}
-};
-
-class NonVirtualDiamondInheritanceTest5 : public First5, public Second5 {
- int z; // expected-note{{uninitialized field 'this->z'}}
-
-public:
- NonVirtualDiamondInheritanceTest5()
- : First5(int{}),
- Second5(int{}) { // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fNonVirtualDiamondInheritanceTest5() {
- NonVirtualDiamondInheritanceTest5();
-}
-
-struct NonVirtualBase6 {
- int x; // expected-note{{uninitialized field 'this->NonVirtualBase6::x'}}
- NonVirtualBase6() = default;
- NonVirtualBase6(int) : x(59) {}
-};
-struct First6 : public NonVirtualBase6 {
- First6() = default;
- First6(int) : NonVirtualBase6(int{}) {}
-};
-struct Second6 : public NonVirtualBase6 {
- Second6() = default;
- Second6(int) : NonVirtualBase6(int{}) {}
-};
-
-class NonVirtualDiamondInheritanceTest6 : public First6, public Second6 {
- int z; // expected-note{{uninitialized field 'this->z'}}
-
-public:
- NonVirtualDiamondInheritanceTest6() // expected-warning{{2 uninitialized fields}}
- : First6(int{}) {
- // 'z' and 'Second::x' unintialized
- }
-};
-
-void fNonVirtualDiamondInheritanceTest6() {
- NonVirtualDiamondInheritanceTest6();
-}
-
-//===----------------------------------------------------------------------===//
-// Virtual diamond inheritance tests
-//===----------------------------------------------------------------------===//
-
-/*
- VirtualBase
- / \
- / \
- / \
- VirtualFirst VirtualSecond
- \ /
- \ /
- \ /
- VirtualDiamondInheritanceTest
-*/
-
-struct VirtualBase1 {
- int x;
- VirtualBase1() = default;
- VirtualBase1(int) : x(60) {}
-};
-struct VirtualFirst1 : virtual public VirtualBase1 {
- VirtualFirst1() = default;
- VirtualFirst1(int) : VirtualBase1(int{}) {}
- VirtualFirst1(int, int) { x = 61; }
-};
-struct VirtualSecond1 : virtual public VirtualBase1 {
- VirtualSecond1() = default;
- VirtualSecond1(int) : VirtualBase1(int{}) {}
- VirtualSecond1(int, int) { x = 62; }
-};
-
-class VirtualDiamondInheritanceTest1 : public VirtualFirst1, public VirtualSecond1 {
-
-public:
- VirtualDiamondInheritanceTest1() {
- x = 0;
- // All good!
- }
-
- VirtualDiamondInheritanceTest1(int)
- : VirtualFirst1(int{}, int{}),
- VirtualSecond1(int{}, int{}) {
- // All good!
- }
-
- VirtualDiamondInheritanceTest1(int, int)
- : VirtualFirst1(int{}, int{}) {
- // All good!
- }
-};
-
-void fVirtualDiamondInheritanceTest1() {
- VirtualDiamondInheritanceTest1();
- VirtualDiamondInheritanceTest1(int());
- VirtualDiamondInheritanceTest1(int(), int());
-}
-
-struct VirtualBase2 {
- int x; // expected-note{{uninitialized field 'this->VirtualBase2::x'}}
- VirtualBase2() = default;
- VirtualBase2(int) : x(63) {}
-};
-struct VirtualFirst2 : virtual public VirtualBase2 {
- VirtualFirst2() = default;
- VirtualFirst2(int) : VirtualBase2(int{}) {}
- VirtualFirst2(int, int) { x = 64; }
-};
-struct VirtualSecond2 : virtual public VirtualBase2 {
- VirtualSecond2() = default;
- VirtualSecond2(int) : VirtualBase2(int{}) {}
- VirtualSecond2(int, int) { x = 65; }
-};
-
-class VirtualDiamondInheritanceTest2 : public VirtualFirst2, public VirtualSecond2 {
-
-public:
- VirtualDiamondInheritanceTest2() // expected-warning{{1 uninitialized field}}
- : VirtualFirst2(int{}) {
- // From the N4659 C++ Standard Working Draft:
- //
- // (15.6.2.7)
- // [...] A 'mem-initializer' where the 'mem-initializer-id' denotes a
- // virtual base class is ignored during execution of a constructor of any
- // class that is not the most derived class.
- //
- // This means that Left1::x will not be initialized, because in both
- // VirtualFirst::VirtualFirst(int) and VirtualSecond::VirtualSecond(int)
- // the constructor delegation to Left1::Left1(int) will be
- // ignored.
- }
-};
-
-void fVirtualDiamondInheritanceTest2() {
- VirtualDiamondInheritanceTest2();
-}
-
-struct VirtualBase3 {
- int x; // expected-note{{uninitialized field 'this->VirtualBase3::x'}}
- VirtualBase3() = default;
- VirtualBase3(int) : x(66) {}
-};
-struct VirtualFirst3 : virtual public VirtualBase3 {
- VirtualFirst3() = default;
- VirtualFirst3(int) : VirtualBase3(int{}) {}
- VirtualFirst3(int, int) { x = 67; }
-};
-struct VirtualSecond3 : virtual public VirtualBase3 {
- VirtualSecond3() = default;
- VirtualSecond3(int) : VirtualBase3(int{}) {}
- VirtualSecond3(int, int) { x = 68; }
-};
-
-class VirtualDiamondInheritanceTest3 : public VirtualFirst3, public VirtualSecond3 {
-
-public:
- VirtualDiamondInheritanceTest3() // expected-warning{{1 uninitialized field}}
- : VirtualFirst3(int{}) {}
-};
-
-void fVirtualDiamondInheritanceTest3() {
- VirtualDiamondInheritanceTest3();
-}
-
-//===----------------------------------------------------------------------===//
-// Dynamic type test.
-//===----------------------------------------------------------------------===//
-
-struct DynTBase1 {};
-struct DynTDerived1 : DynTBase1 {
- int y; // expected-note{{uninitialized field 'static_cast<struct DynTDerived1 *>(this->bptr)->y'}}
-};
-
-struct DynamicTypeTest1 {
- DynTBase1 *bptr;
- int i = 0;
-
- DynamicTypeTest1(DynTBase1 *bptr) : bptr(bptr) {} // expected-warning{{1 uninitialized field}}
-};
-
-void fDynamicTypeTest1() {
- DynTDerived1 d;
- DynamicTypeTest1 t(&d);
-};
-
-struct DynTBase2 {
- int x; // expected-note{{uninitialized field 'static_cast<struct DynTDerived2 *>(this->bptr)->DynTBase2::x'}}
-};
-struct DynTDerived2 : DynTBase2 {
- int y; // expected-note{{uninitialized field 'static_cast<struct DynTDerived2 *>(this->bptr)->y'}}
-};
-
-struct DynamicTypeTest2 {
- DynTBase2 *bptr;
- int i = 0;
-
- DynamicTypeTest2(DynTBase2 *bptr) : bptr(bptr) {} // expected-warning{{2 uninitialized fields}}
-};
-
-void fDynamicTypeTest2() {
- DynTDerived2 d;
- DynamicTypeTest2 t(&d);
-}
-
-struct SymbolicSuperRegionBase {
- SymbolicSuperRegionBase() {}
-};
-
-struct SymbolicSuperRegionDerived : SymbolicSuperRegionBase {
- SymbolicSuperRegionBase *bptr; // no-crash
- SymbolicSuperRegionDerived(SymbolicSuperRegionBase *bptr) : bptr(bptr) {}
-};
-
-SymbolicSuperRegionDerived *getSymbolicRegion();
-
-void fSymbolicSuperRegionTest() {
- SymbolicSuperRegionDerived test(getSymbolicRegion());
-}
diff --git a/test/Analysis/cxx-uninitialized-object-no-dereference.cpp b/test/Analysis/cxx-uninitialized-object-no-dereference.cpp
deleted file mode 100644
index 0309c28b3e13..000000000000
--- a/test/Analysis/cxx-uninitialized-object-no-dereference.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.cplusplus.UninitializedObject \
-// RUN: -std=c++11 -DPEDANTIC -verify %s
-
-class UninitPointerTest {
- int *ptr; // expected-note{{uninitialized pointer 'this->ptr'}}
- int dontGetFilteredByNonPedanticMode = 0;
-
-public:
- UninitPointerTest() {} // expected-warning{{1 uninitialized field}}
-};
-
-void fUninitPointerTest() {
- UninitPointerTest();
-}
-
-class UninitPointeeTest {
- int *ptr; // no-note
- int dontGetFilteredByNonPedanticMode = 0;
-
-public:
- UninitPointeeTest(int *ptr) : ptr(ptr) {} // no-warning
-};
-
-void fUninitPointeeTest() {
- int a;
- UninitPointeeTest t(&a);
-}
diff --git a/test/Analysis/cxx-uninitialized-object-notes-as-warnings.cpp b/test/Analysis/cxx-uninitialized-object-notes-as-warnings.cpp
deleted file mode 100644
index 2a5fcbc92390..000000000000
--- a/test/Analysis/cxx-uninitialized-object-notes-as-warnings.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.cplusplus.UninitializedObject \
-// RUN: -analyzer-config alpha.cplusplus.UninitializedObject:NotesAsWarnings=true \
-// RUN: -analyzer-config alpha.cplusplus.UninitializedObject:CheckPointeeInitialization=true \
-// RUN: -std=c++11 -verify %s
-
-class NotesAsWarningsTest {
- int a;
- int b;
- int dontGetFilteredByNonPedanticMode = 0;
-
-public:
- NotesAsWarningsTest() {} // expected-warning{{uninitialized field 'this->a'}}
- // expected-warning@-1{{uninitialized field 'this->b'}}
-};
-
-void fNotesAsWarningsTest() {
- NotesAsWarningsTest();
-}
diff --git a/test/Analysis/cxx-uninitialized-object-ptr-ref.cpp b/test/Analysis/cxx-uninitialized-object-ptr-ref.cpp
deleted file mode 100644
index edc594a0bf1b..000000000000
--- a/test/Analysis/cxx-uninitialized-object-ptr-ref.cpp
+++ /dev/null
@@ -1,908 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.cplusplus.UninitializedObject \
-// RUN: -analyzer-config alpha.cplusplus.UninitializedObject:Pedantic=true -DPEDANTIC \
-// RUN: -analyzer-config alpha.cplusplus.UninitializedObject:CheckPointeeInitialization=true \
-// RUN: -std=c++11 -verify %s
-
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.cplusplus.UninitializedObject \
-// RUN: -analyzer-config alpha.cplusplus.UninitializedObject:CheckPointeeInitialization=true \
-// RUN: -std=c++11 -verify %s
-
-//===----------------------------------------------------------------------===//
-// Concrete location tests.
-//===----------------------------------------------------------------------===//
-
-struct ConcreteIntLocTest {
- int *ptr;
-
- ConcreteIntLocTest() : ptr(reinterpret_cast<int *>(0xDEADBEEF)) {}
-};
-
-void fConcreteIntLocTest() {
- ConcreteIntLocTest();
-}
-
-//===----------------------------------------------------------------------===//
-// nonloc::LocAsInteger tests.
-//===----------------------------------------------------------------------===//
-
-using intptr_t = unsigned long long;
-
-struct LocAsIntegerTest {
- intptr_t ptr; // expected-note{{uninitialized pointee 'reinterpret_cast<char *>(this->ptr)'}}
- int dontGetFilteredByNonPedanticMode = 0;
-
- LocAsIntegerTest(void *ptr) : ptr(reinterpret_cast<intptr_t>(ptr)) {} // expected-warning{{1 uninitialized field}}
-};
-
-void fLocAsIntegerTest() {
- char c;
- LocAsIntegerTest t(&c);
-}
-
-//===----------------------------------------------------------------------===//
-// Null pointer tests.
-//===----------------------------------------------------------------------===//
-
-class NullPtrTest {
- struct RecordType {
- int x;
- int y;
- };
-
- float *fptr = nullptr;
- int *ptr;
- RecordType *recPtr;
-
-public:
- NullPtrTest() : ptr(nullptr), recPtr(nullptr) {
- // All good!
- }
-};
-
-void fNullPtrTest() {
- NullPtrTest();
-}
-
-//===----------------------------------------------------------------------===//
-// Alloca tests.
-//===----------------------------------------------------------------------===//
-
-struct UntypedAllocaTest {
- void *allocaPtr;
- int dontGetFilteredByNonPedanticMode = 0;
-
- UntypedAllocaTest() : allocaPtr(__builtin_alloca(sizeof(int))) {
- // All good!
- }
-};
-
-void fUntypedAllocaTest() {
- UntypedAllocaTest();
-}
-
-struct TypedAllocaTest1 {
- int *allocaPtr; // expected-note{{uninitialized pointee 'this->allocaPtr'}}
- int dontGetFilteredByNonPedanticMode = 0;
-
- TypedAllocaTest1() // expected-warning{{1 uninitialized field}}
- : allocaPtr(static_cast<int *>(__builtin_alloca(sizeof(int)))) {}
-};
-
-void fTypedAllocaTest1() {
- TypedAllocaTest1();
-}
-
-struct TypedAllocaTest2 {
- int *allocaPtr;
- int dontGetFilteredByNonPedanticMode = 0;
-
- TypedAllocaTest2()
- : allocaPtr(static_cast<int *>(__builtin_alloca(sizeof(int)))) {
- *allocaPtr = 55555;
- // All good!
- }
-};
-
-void fTypedAllocaTest2() {
- TypedAllocaTest2();
-}
-
-//===----------------------------------------------------------------------===//
-// Heap pointer tests.
-//===----------------------------------------------------------------------===//
-
-class HeapPointerTest1 {
- struct RecordType {
- // TODO: we'd expect the note: {{uninitialized field 'this->recPtr->y'}}
- int x; // no-note
- // TODO: we'd expect the note: {{uninitialized field 'this->recPtr->y'}}
- int y; // no-note
- };
- // TODO: we'd expect the note: {{uninitialized pointee 'this->fptr'}}
- float *fptr = new float; // no-note
- // TODO: we'd expect the note: {{uninitialized pointee 'this->ptr'}}
- int *ptr; // no-note
- RecordType *recPtr;
-
-public:
- // TODO: we'd expect the warning: {{4 uninitialized fields}}
- HeapPointerTest1() : ptr(new int), recPtr(new RecordType) { // no-note
- }
-};
-
-void fHeapPointerTest1() {
- HeapPointerTest1();
-}
-
-class HeapPointerTest2 {
- struct RecordType {
- int x;
- int y;
- };
-
- float *fptr = new float(); // initializes to 0
- int *ptr;
- RecordType *recPtr;
-
-public:
- HeapPointerTest2() : ptr(new int{25}), recPtr(new RecordType{26, 27}) {
- // All good!
- }
-};
-
-void fHeapPointerTest2() {
- HeapPointerTest2();
-}
-
-//===----------------------------------------------------------------------===//
-// Stack pointer tests.
-//===----------------------------------------------------------------------===//
-
-class StackPointerTest1 {
-public:
- struct RecordType {
- int x;
- int y;
- };
-
-private:
- int *ptr;
- RecordType *recPtr;
-
-public:
- StackPointerTest1(int *_ptr, StackPointerTest1::RecordType *_recPtr) : ptr(_ptr), recPtr(_recPtr) {
- // All good!
- }
-};
-
-void fStackPointerTest1() {
- int ok_a = 28;
- StackPointerTest1::RecordType ok_rec{29, 30};
- StackPointerTest1(&ok_a, &ok_rec); // 'a', 'rec.x', 'rec.y' uninitialized
-}
-
-#ifdef PEDANTIC
-class StackPointerTest2 {
-public:
- struct RecordType {
- int x; // expected-note{{uninitialized field 'this->recPtr->x'}}
- int y; // expected-note{{uninitialized field 'this->recPtr->y'}}
- };
-
-private:
- int *ptr; // expected-note{{uninitialized pointee 'this->ptr'}}
- RecordType *recPtr;
-
-public:
- StackPointerTest2(int *_ptr, RecordType *_recPtr) : ptr(_ptr), recPtr(_recPtr) { // expected-warning{{3 uninitialized fields}}
- }
-};
-
-void fStackPointerTest2() {
- int a;
- StackPointerTest2::RecordType rec;
- StackPointerTest2(&a, &rec); // 'a', 'rec.x', 'rec.y' uninitialized
-}
-#else
-class StackPointerTest2 {
-public:
- struct RecordType {
- int x;
- int y;
- };
-
-private:
- int *ptr;
- RecordType *recPtr;
-
-public:
- StackPointerTest2(int *_ptr, RecordType *_recPtr) : ptr(_ptr), recPtr(_recPtr) {
- }
-};
-
-void fStackPointerTest2() {
- int a;
- StackPointerTest2::RecordType rec;
- StackPointerTest2(&a, &rec); // 'a', 'rec.x', 'rec.y' uninitialized
-}
-#endif // PEDANTIC
-
-class UninitPointerTest {
- struct RecordType {
- int x;
- int y;
- };
-
- int *ptr; // expected-note{{uninitialized pointer 'this->ptr'}}
- RecordType *recPtr;
-
-public:
- UninitPointerTest() : recPtr(new RecordType{13, 13}) { // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fUninitPointerTest() {
- UninitPointerTest();
-}
-
-struct CharPointerTest {
- const char *str;
- int dontGetFilteredByNonPedanticMode = 0;
-
- CharPointerTest() : str("") {}
-};
-
-void fCharPointerTest() {
- CharPointerTest();
-}
-
-struct CyclicPointerTest1 {
- int *ptr; // expected-note{{object references itself 'this->ptr'}}
- int dontGetFilteredByNonPedanticMode = 0;
-
- CyclicPointerTest1() : ptr(reinterpret_cast<int *>(&ptr)) {} // expected-warning{{1 uninitialized field}}
-};
-
-void fCyclicPointerTest1() {
- CyclicPointerTest1();
-}
-
-struct CyclicPointerTest2 {
- int **pptr; // expected-note{{object references itself 'this->pptr'}}
- int dontGetFilteredByNonPedanticMode = 0;
-
- CyclicPointerTest2() : pptr(reinterpret_cast<int **>(&pptr)) {} // expected-warning{{1 uninitialized field}}
-};
-
-void fCyclicPointerTest2() {
- CyclicPointerTest2();
-}
-
-//===----------------------------------------------------------------------===//
-// Void pointer tests.
-//===----------------------------------------------------------------------===//
-
-// Void pointer tests are mainly no-crash tests.
-
-void *malloc(int size);
-
-class VoidPointerTest1 {
- void *vptr;
-
-public:
- VoidPointerTest1(void *vptr, char) : vptr(vptr) {
- // All good!
- }
-};
-
-void fVoidPointerTest1() {
- void *vptr = malloc(sizeof(int));
- VoidPointerTest1(vptr, char());
-}
-
-class VoidPointerTest2 {
- void **vpptr;
-
-public:
- VoidPointerTest2(void **vpptr, char) : vpptr(vpptr) {
- // All good!
- }
-};
-
-void fVoidPointerTest2() {
- void *vptr = malloc(sizeof(int));
- VoidPointerTest2(&vptr, char());
-}
-
-class VoidPointerRRefTest1 {
- void *&&vptrrref; // expected-note {{here}}
-
-public:
- VoidPointerRRefTest1(void *vptr, char) : vptrrref(static_cast<void *&&>(vptr)) { // expected-warning {{binding reference member 'vptrrref' to stack allocated parameter 'vptr'}}
- // All good!
- }
-};
-
-void fVoidPointerRRefTest1() {
- void *vptr = malloc(sizeof(int));
- VoidPointerRRefTest1(vptr, char());
-}
-
-class VoidPointerRRefTest2 {
- void **&&vpptrrref; // expected-note {{here}}
-
-public:
- VoidPointerRRefTest2(void **vptr, char) : vpptrrref(static_cast<void **&&>(vptr)) { // expected-warning {{binding reference member 'vpptrrref' to stack allocated parameter 'vptr'}}
- // All good!
- }
-};
-
-void fVoidPointerRRefTest2() {
- void *vptr = malloc(sizeof(int));
- VoidPointerRRefTest2(&vptr, char());
-}
-
-class VoidPointerLRefTest {
- void *&vptrrref; // expected-note {{here}}
-
-public:
- VoidPointerLRefTest(void *vptr, char) : vptrrref(static_cast<void *&>(vptr)) { // expected-warning {{binding reference member 'vptrrref' to stack allocated parameter 'vptr'}}
- // All good!
- }
-};
-
-void fVoidPointerLRefTest() {
- void *vptr = malloc(sizeof(int));
- VoidPointerLRefTest(vptr, char());
-}
-
-struct CyclicVoidPointerTest {
- void *vptr; // expected-note{{object references itself 'this->vptr'}}
- int dontGetFilteredByNonPedanticMode = 0;
-
- CyclicVoidPointerTest() : vptr(&vptr) {} // expected-warning{{1 uninitialized field}}
-};
-
-void fCyclicVoidPointerTest() {
- CyclicVoidPointerTest();
-}
-
-struct IntDynTypedVoidPointerTest1 {
- void *vptr; // expected-note{{uninitialized pointee 'static_cast<int *>(this->vptr)'}}
- int dontGetFilteredByNonPedanticMode = 0;
-
- IntDynTypedVoidPointerTest1(void *vptr) : vptr(vptr) {} // expected-warning{{1 uninitialized field}}
-};
-
-void fIntDynTypedVoidPointerTest1() {
- int a;
- IntDynTypedVoidPointerTest1 tmp(&a);
-}
-
-struct RecordDynTypedVoidPointerTest {
- struct RecordType {
- int x; // expected-note{{uninitialized field 'static_cast<struct RecordDynTypedVoidPointerTest::RecordType *>(this->vptr)->x'}}
- int y; // expected-note{{uninitialized field 'static_cast<struct RecordDynTypedVoidPointerTest::RecordType *>(this->vptr)->y'}}
- };
-
- void *vptr;
- int dontGetFilteredByNonPedanticMode = 0;
-
- RecordDynTypedVoidPointerTest(void *vptr) : vptr(vptr) {} // expected-warning{{2 uninitialized fields}}
-};
-
-void fRecordDynTypedVoidPointerTest() {
- RecordDynTypedVoidPointerTest::RecordType a;
- RecordDynTypedVoidPointerTest tmp(&a);
-}
-
-struct NestedNonVoidDynTypedVoidPointerTest {
- struct RecordType {
- int x; // expected-note{{uninitialized field 'static_cast<struct NestedNonVoidDynTypedVoidPointerTest::RecordType *>(this->vptr)->x'}}
- int y; // expected-note{{uninitialized field 'static_cast<struct NestedNonVoidDynTypedVoidPointerTest::RecordType *>(this->vptr)->y'}}
- void *vptr; // expected-note{{uninitialized pointee 'static_cast<char *>(static_cast<struct NestedNonVoidDynTypedVoidPointerTest::RecordType *>(this->vptr)->vptr)'}}
- };
-
- void *vptr;
- int dontGetFilteredByNonPedanticMode = 0;
-
- NestedNonVoidDynTypedVoidPointerTest(void *vptr, void *c) : vptr(vptr) {
- static_cast<RecordType *>(vptr)->vptr = c; // expected-warning{{3 uninitialized fields}}
- }
-};
-
-void fNestedNonVoidDynTypedVoidPointerTest() {
- NestedNonVoidDynTypedVoidPointerTest::RecordType a;
- char c;
- NestedNonVoidDynTypedVoidPointerTest tmp(&a, &c);
-}
-
-//===----------------------------------------------------------------------===//
-// Multipointer tests.
-//===----------------------------------------------------------------------===//
-
-#ifdef PEDANTIC
-class MultiPointerTest1 {
-public:
- struct RecordType {
- int x;
- int y;
- };
-
-private:
- RecordType **mptr; // expected-note{{uninitialized pointee 'this->mptr'}}
-
-public:
- MultiPointerTest1(RecordType **p, int) : mptr(p) { // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fMultiPointerTest1() {
- MultiPointerTest1::RecordType *p1;
- MultiPointerTest1::RecordType **mptr = &p1;
- MultiPointerTest1(mptr, int()); // '*mptr' uninitialized
-}
-#else
-class MultiPointerTest1 {
-public:
- struct RecordType {
- int x;
- int y;
- };
-
-private:
- RecordType **mptr;
-
-public:
- MultiPointerTest1(RecordType **p, int) : mptr(p) {}
-};
-
-void fMultiPointerTest1() {
- MultiPointerTest1::RecordType *p1;
- MultiPointerTest1::RecordType **mptr = &p1;
- MultiPointerTest1(mptr, int()); // '*mptr' uninitialized
-}
-#endif // PEDANTIC
-
-#ifdef PEDANTIC
-class MultiPointerTest2 {
-public:
- struct RecordType {
- int x; // expected-note{{uninitialized field 'this->mptr->x'}}
- int y; // expected-note{{uninitialized field 'this->mptr->y'}}
- };
-
-private:
- RecordType **mptr;
-
-public:
- MultiPointerTest2(RecordType **p, int) : mptr(p) { // expected-warning{{2 uninitialized fields}}
- }
-};
-
-void fMultiPointerTest2() {
- MultiPointerTest2::RecordType i;
- MultiPointerTest2::RecordType *p1 = &i;
- MultiPointerTest2::RecordType **mptr = &p1;
- MultiPointerTest2(mptr, int()); // '**mptr' uninitialized
-}
-#else
-class MultiPointerTest2 {
-public:
- struct RecordType {
- int x;
- int y;
- };
-
-private:
- RecordType **mptr;
-
-public:
- MultiPointerTest2(RecordType **p, int) : mptr(p) {
- }
-};
-
-void fMultiPointerTest2() {
- MultiPointerTest2::RecordType i;
- MultiPointerTest2::RecordType *p1 = &i;
- MultiPointerTest2::RecordType **mptr = &p1;
- MultiPointerTest2(mptr, int()); // '**mptr' uninitialized
-}
-#endif // PEDANTIC
-
-class MultiPointerTest3 {
-public:
- struct RecordType {
- int x;
- int y;
- };
-
-private:
- RecordType **mptr;
-
-public:
- MultiPointerTest3(RecordType **p, int) : mptr(p) {
- // All good!
- }
-};
-
-void fMultiPointerTest3() {
- MultiPointerTest3::RecordType i{31, 32};
- MultiPointerTest3::RecordType *p1 = &i;
- MultiPointerTest3::RecordType **mptr = &p1;
- MultiPointerTest3(mptr, int()); // '**mptr' uninitialized
-}
-
-//===----------------------------------------------------------------------===//
-// Incomplete pointee tests.
-//===----------------------------------------------------------------------===//
-
-class IncompleteType;
-
-struct IncompletePointeeTypeTest {
- IncompleteType *pImpl; //no-crash
- int dontGetFilteredByNonPedanticMode = 0;
-
- IncompletePointeeTypeTest(IncompleteType *A) : pImpl(A) {}
-};
-
-void fIncompletePointeeTypeTest(void *ptr) {
- IncompletePointeeTypeTest(reinterpret_cast<IncompleteType *>(ptr));
-}
-
-//===----------------------------------------------------------------------===//
-// Function pointer tests.
-//===----------------------------------------------------------------------===//
-
-struct FunctionPointerWithDifferentDynTypeTest {
- using Func1 = void *(*)();
- using Func2 = int *(*)();
-
- Func1 f; // no-crash
- FunctionPointerWithDifferentDynTypeTest(Func2 f) : f((Func1)f) {}
-};
-
-// Note that there isn't a function calling the constructor of
-// FunctionPointerWithDifferentDynTypeTest, because a crash could only be
-// reproduced without it.
-
-//===----------------------------------------------------------------------===//
-// Member pointer tests.
-//===----------------------------------------------------------------------===//
-
-struct UsefulFunctions {
- int a, b;
-
- void print() {}
- void dump() {}
-};
-
-#ifdef PEDANTIC
-struct PointerToMemberFunctionTest1 {
- void (UsefulFunctions::*f)(void); // expected-note{{uninitialized field 'this->f'}}
- PointerToMemberFunctionTest1() {}
-};
-
-void fPointerToMemberFunctionTest1() {
- PointerToMemberFunctionTest1(); // expected-warning{{1 uninitialized field}}
-}
-
-struct PointerToMemberFunctionTest2 {
- void (UsefulFunctions::*f)(void);
- PointerToMemberFunctionTest2(void (UsefulFunctions::*f)(void)) : f(f) {
- // All good!
- }
-};
-
-void fPointerToMemberFunctionTest2() {
- void (UsefulFunctions::*f)(void) = &UsefulFunctions::print;
- PointerToMemberFunctionTest2 a(f);
-}
-
-struct MultiPointerToMemberFunctionTest1 {
- void (UsefulFunctions::**f)(void); // expected-note{{uninitialized pointer 'this->f'}}
- MultiPointerToMemberFunctionTest1() {}
-};
-
-void fMultiPointerToMemberFunctionTest1() {
- MultiPointerToMemberFunctionTest1(); // expected-warning{{1 uninitialized field}}
-}
-
-struct MultiPointerToMemberFunctionTest2 {
- void (UsefulFunctions::**f)(void);
- MultiPointerToMemberFunctionTest2(void (UsefulFunctions::**f)(void)) : f(f) {
- // All good!
- }
-};
-
-void fMultiPointerToMemberFunctionTest2() {
- void (UsefulFunctions::*f)(void) = &UsefulFunctions::print;
- MultiPointerToMemberFunctionTest2 a(&f);
-}
-
-struct PointerToMemberDataTest1 {
- int UsefulFunctions::*d; // expected-note{{uninitialized field 'this->d'}}
- PointerToMemberDataTest1() {}
-};
-
-void fPointerToMemberDataTest1() {
- PointerToMemberDataTest1(); // expected-warning{{1 uninitialized field}}
-}
-
-struct PointerToMemberDataTest2 {
- int UsefulFunctions::*d;
- PointerToMemberDataTest2(int UsefulFunctions::*d) : d(d) {
- // All good!
- }
-};
-
-void fPointerToMemberDataTest2() {
- int UsefulFunctions::*d = &UsefulFunctions::a;
- PointerToMemberDataTest2 a(d);
-}
-
-struct MultiPointerToMemberDataTest1 {
- int UsefulFunctions::**d; // expected-note{{uninitialized pointer 'this->d'}}
- MultiPointerToMemberDataTest1() {}
-};
-
-void fMultiPointerToMemberDataTest1() {
- MultiPointerToMemberDataTest1(); // expected-warning{{1 uninitialized field}}
-}
-
-struct MultiPointerToMemberDataTest2 {
- int UsefulFunctions::**d;
- MultiPointerToMemberDataTest2(int UsefulFunctions::**d) : d(d) {
- // All good!
- }
-};
-
-void fMultiPointerToMemberDataTest2() {
- int UsefulFunctions::*d = &UsefulFunctions::a;
- MultiPointerToMemberDataTest2 a(&d);
-}
-#endif // PEDANTIC
-
-//===----------------------------------------------------------------------===//
-// Tests for list-like records.
-//===----------------------------------------------------------------------===//
-
-class ListTest1 {
-public:
- struct Node {
- Node *next = nullptr; // no crash
- int i;
- };
-
-private:
- Node *head = nullptr;
-
-public:
- ListTest1() {
- // All good!
- }
-};
-
-void fListTest1() {
- ListTest1();
-}
-
-class ListTest2 {
-public:
- struct Node {
- Node *next = nullptr;
- int i; // expected-note{{uninitialized field 'this->head->i'}}
- };
-
-private:
- Node *head = nullptr;
-
-public:
- ListTest2(Node *node, int) : head(node) { // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fListTest2() {
- ListTest2::Node n;
- ListTest2(&n, int());
-}
-
-class CyclicList {
-public:
- struct Node {
- Node *next = nullptr;
- int i; // expected-note{{uninitialized field 'this->head->i'}}
- };
-
-private:
- Node *head = nullptr;
-
-public:
- CyclicList(Node *node, int) : head(node) { // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fCyclicList() {
- /*
- n3
- / \
- this -- n1 -- n2
- */
-
- CyclicList::Node n1;
- CyclicList::Node n2;
- n2.next = &n1;
- n2.i = 50;
- CyclicList::Node n3;
- n3.next = &n2;
- n3.i = 50;
- n1.next = &n3;
- // note that n1.i is uninitialized
- CyclicList(&n1, int());
-}
-
-struct RingListTest {
- RingListTest *next; // no-crash
- RingListTest() : next(this) {}
-};
-
-void fRingListTest() {
- RingListTest();
-}
-
-//===----------------------------------------------------------------------===//
-// Tests for classes containing references.
-//===----------------------------------------------------------------------===//
-
-class ReferenceTest1 {
-public:
- struct RecordType {
- int x;
- int y;
- };
-
-private:
- RecordType &lref;
- RecordType &&rref;
-
-public:
- ReferenceTest1(RecordType &lref, RecordType &rref) : lref(lref), rref(static_cast<RecordType &&>(rref)) {
- // All good!
- }
-};
-
-void fReferenceTest1() {
- ReferenceTest1::RecordType d{33, 34};
- ReferenceTest1(d, d);
-}
-
-#ifdef PEDANTIC
-class ReferenceTest2 {
-public:
- struct RecordType {
- int x; // expected-note{{uninitialized field 'this->lref.x'}}
- int y; // expected-note{{uninitialized field 'this->lref.y'}}
- };
-
-private:
- RecordType &lref;
- RecordType &&rref;
-
-public:
- ReferenceTest2(RecordType &lref, RecordType &rref)
- : lref(lref), rref(static_cast<RecordType &&>(rref)) { // expected-warning{{2 uninitialized fields}}
- }
-};
-
-void fReferenceTest2() {
- ReferenceTest2::RecordType c;
- ReferenceTest2(c, c);
-}
-#else
-class ReferenceTest2 {
-public:
- struct RecordType {
- int x;
- int y;
- };
-
-private:
- RecordType &lref;
- RecordType &&rref;
-
-public:
- ReferenceTest2(RecordType &lref, RecordType &rref)
- : lref(lref), rref(static_cast<RecordType &&>(rref)) {
- }
-};
-
-void fReferenceTest2() {
- ReferenceTest2::RecordType c;
- ReferenceTest2(c, c);
-}
-#endif // PEDANTIC
-
-class ReferenceTest3 {
-public:
- struct RecordType {
- int x; // expected-note{{uninitialized field 'this->lref.x'}}
- int y; // expected-note{{uninitialized field 'this->lref.y'}}
- };
-
-private:
- RecordType &lref;
- RecordType &&rref;
-
-public:
- ReferenceTest3(RecordType &lref, RecordType &rref)
- : lref(lref), rref(static_cast<RecordType &&>(rref)) { // expected-warning{{2 uninitialized fields}}
- }
-};
-
-void fReferenceTest3() {
- ReferenceTest3::RecordType c, d{35, 36};
- ReferenceTest3(c, d);
-}
-
-class ReferenceTest4 {
-public:
- struct RecordType {
- int x; // expected-note{{uninitialized field 'this->rref.x'}}
- int y; // expected-note{{uninitialized field 'this->rref.y'}}
- };
-
-private:
- RecordType &lref;
- RecordType &&rref;
-
-public:
- ReferenceTest4(RecordType &lref, RecordType &rref)
- : lref(lref), rref(static_cast<RecordType &&>(rref)) { // expected-warning{{2 uninitialized fields}}
- }
-};
-
-void fReferenceTest5() {
- ReferenceTest4::RecordType c, d{37, 38};
- ReferenceTest4(d, c);
-}
-
-//===----------------------------------------------------------------------===//
-// Tests for objects containing multiple references to the same object.
-//===----------------------------------------------------------------------===//
-
-struct IntMultipleReferenceToSameObjectTest {
- int *iptr; // expected-note{{uninitialized pointee 'this->iptr'}}
- int &iref; // no-note, pointee of this->iref was already reported
-
- int dontGetFilteredByNonPedanticMode = 0;
-
- IntMultipleReferenceToSameObjectTest(int *i) : iptr(i), iref(*i) {} // expected-warning{{1 uninitialized field}}
-};
-
-void fIntMultipleReferenceToSameObjectTest() {
- int a;
- IntMultipleReferenceToSameObjectTest Test(&a);
-}
-
-struct IntReferenceWrapper1 {
- int &a; // expected-note{{uninitialized pointee 'this->a'}}
-
- int dontGetFilteredByNonPedanticMode = 0;
-
- IntReferenceWrapper1(int &a) : a(a) {} // expected-warning{{1 uninitialized field}}
-};
-
-struct IntReferenceWrapper2 {
- int &a; // no-note, pointee of this->a was already reported
-
- int dontGetFilteredByNonPedanticMode = 0;
-
- IntReferenceWrapper2(int &a) : a(a) {} // no-warning
-};
-
-void fMultipleObjectsReferencingTheSameObjectTest() {
- int a;
-
- IntReferenceWrapper1 T1(a);
- IntReferenceWrapper2 T2(a);
-}
diff --git a/test/Analysis/cxx-uninitialized-object-unionlike-constructs.cpp b/test/Analysis/cxx-uninitialized-object-unionlike-constructs.cpp
deleted file mode 100644
index dc52afd90195..000000000000
--- a/test/Analysis/cxx-uninitialized-object-unionlike-constructs.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.cplusplus.UninitializedObject \
-// RUN: -analyzer-config alpha.cplusplus.UninitializedObject:Pedantic=true -DPEDANTIC \
-// RUN: -analyzer-config alpha.cplusplus.UninitializedObject:IgnoreRecordsWithField="[Tt]ag|[Kk]ind" \
-// RUN: -std=c++11 -verify %s
-
-// expected-no-diagnostics
-
-// Both type and name contains "kind".
-struct UnionLikeStruct1 {
- enum Kind {
- volume,
- area
- } kind;
-
- int Volume;
- int Area;
-
- UnionLikeStruct1(Kind kind, int Val) : kind(kind) {
- switch (kind) {
- case volume:
- Volume = Val;
- break;
- case area:
- Area = Val;
- break;
- }
- }
-};
-
-void fUnionLikeStruct1() {
- UnionLikeStruct1 t(UnionLikeStruct1::volume, 10);
-}
-
-// Only name contains "kind".
-struct UnionLikeStruct2 {
- enum Type {
- volume,
- area
- } kind;
-
- int Volume;
- int Area;
-
- UnionLikeStruct2(Type kind, int Val) : kind(kind) {
- switch (kind) {
- case volume:
- Volume = Val;
- break;
- case area:
- Area = Val;
- break;
- }
- }
-};
-
-void fUnionLikeStruct2() {
- UnionLikeStruct2 t(UnionLikeStruct2::volume, 10);
-}
-
-// Only type contains "kind".
-struct UnionLikeStruct3 {
- enum Kind {
- volume,
- area
- } type;
-
- int Volume;
- int Area;
-
- UnionLikeStruct3(Kind type, int Val) : type(type) {
- switch (type) {
- case volume:
- Volume = Val;
- break;
- case area:
- Area = Val;
- break;
- }
- }
-};
-
-void fUnionLikeStruct3() {
- UnionLikeStruct3 t(UnionLikeStruct3::volume, 10);
-}
-
-// Only type contains "tag".
-struct UnionLikeStruct4 {
- enum Tag {
- volume,
- area
- } type;
-
- int Volume;
- int Area;
-
- UnionLikeStruct4(Tag type, int Val) : type(type) {
- switch (type) {
- case volume:
- Volume = Val;
- break;
- case area:
- Area = Val;
- break;
- }
- }
-};
-
-void fUnionLikeStruct4() {
- UnionLikeStruct4 t(UnionLikeStruct4::volume, 10);
-}
-
-// Both name and type name contains but does not equal to tag/kind.
-struct UnionLikeStruct5 {
- enum WhateverTagBlahBlah {
- volume,
- area
- } FunnyKindName;
-
- int Volume;
- int Area;
-
- UnionLikeStruct5(WhateverTagBlahBlah type, int Val) : FunnyKindName(type) {
- switch (FunnyKindName) {
- case volume:
- Volume = Val;
- break;
- case area:
- Area = Val;
- break;
- }
- }
-};
-
-void fUnionLikeStruct5() {
- UnionLikeStruct5 t(UnionLikeStruct5::volume, 10);
-}
diff --git a/test/Analysis/cxx-uninitialized-object.cpp b/test/Analysis/cxx-uninitialized-object.cpp
deleted file mode 100644
index 07006bea4781..000000000000
--- a/test/Analysis/cxx-uninitialized-object.cpp
+++ /dev/null
@@ -1,1132 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.cplusplus.UninitializedObject \
-// RUN: -analyzer-config alpha.cplusplus.UninitializedObject:Pedantic=true -DPEDANTIC \
-// RUN: -analyzer-config alpha.cplusplus.UninitializedObject:CheckPointeeInitialization=true \
-// RUN: -std=c++14 -verify %s
-
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.cplusplus.UninitializedObject \
-// RUN: -analyzer-config alpha.cplusplus.UninitializedObject:CheckPointeeInitialization=true \
-// RUN: -std=c++14 -verify %s
-
-//===----------------------------------------------------------------------===//
-// Default constructor test.
-//===----------------------------------------------------------------------===//
-
-class CompilerGeneratedConstructorTest {
- int a, b, c, d, e, f, g, h, i, j;
-
-public:
- CompilerGeneratedConstructorTest() = default;
-};
-
-void fCompilerGeneratedConstructorTest() {
- CompilerGeneratedConstructorTest();
-}
-
-#ifdef PEDANTIC
-class DefaultConstructorTest {
- int a; // expected-note{{uninitialized field 'this->a'}}
-
-public:
- DefaultConstructorTest();
-};
-
-DefaultConstructorTest::DefaultConstructorTest() = default;
-
-void fDefaultConstructorTest() {
- DefaultConstructorTest(); // expected-warning{{1 uninitialized field}}
-}
-#else
-class DefaultConstructorTest {
- int a;
-
-public:
- DefaultConstructorTest();
-};
-
-DefaultConstructorTest::DefaultConstructorTest() = default;
-
-void fDefaultConstructorTest() {
- DefaultConstructorTest();
-}
-#endif // PEDANTIC
-
-//===----------------------------------------------------------------------===//
-// Initializer list test.
-//===----------------------------------------------------------------------===//
-
-class InitListTest1 {
- int a;
- int b;
-
-public:
- InitListTest1()
- : a(1),
- b(2) {
- // All good!
- }
-};
-
-void fInitListTest1() {
- InitListTest1();
-}
-
-class InitListTest2 {
- int a;
- int b; // expected-note{{uninitialized field 'this->b'}}
-
-public:
- InitListTest2()
- : a(3) {} // expected-warning{{1 uninitialized field}}
-};
-
-void fInitListTest2() {
- InitListTest2();
-}
-
-class InitListTest3 {
- int a; // expected-note{{uninitialized field 'this->a'}}
- int b;
-
-public:
- InitListTest3()
- : b(4) {} // expected-warning{{1 uninitialized field}}
-};
-
-void fInitListTest3() {
- InitListTest3();
-}
-
-//===----------------------------------------------------------------------===//
-// Constructor body test.
-//===----------------------------------------------------------------------===//
-
-class CtorBodyTest1 {
- int a, b;
-
-public:
- CtorBodyTest1() {
- a = 5;
- b = 6;
- // All good!
- }
-};
-
-void fCtorBodyTest1() {
- CtorBodyTest1();
-}
-
-class CtorBodyTest2 {
- int a;
- int b; // expected-note{{uninitialized field 'this->b'}}
-
-public:
- CtorBodyTest2() {
- a = 7; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fCtorBodyTest2() {
- CtorBodyTest2();
-}
-
-class CtorBodyTest3 {
- int a; // expected-note{{uninitialized field 'this->a'}}
- int b;
-
-public:
- CtorBodyTest3() {
- b = 8; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fCtorBodyTest3() {
- CtorBodyTest3();
-}
-
-#ifdef PEDANTIC
-class CtorBodyTest4 {
- int a; // expected-note{{uninitialized field 'this->a'}}
- int b; // expected-note{{uninitialized field 'this->b'}}
-
-public:
- CtorBodyTest4() {}
-};
-
-void fCtorBodyTest4() {
- CtorBodyTest4(); // expected-warning{{2 uninitialized fields}}
-}
-#else
-class CtorBodyTest4 {
- int a;
- int b;
-
-public:
- CtorBodyTest4() {}
-};
-
-void fCtorBodyTest4() {
- CtorBodyTest4();
-}
-#endif
-
-//===----------------------------------------------------------------------===//
-// Constructor delegation test.
-//===----------------------------------------------------------------------===//
-
-class CtorDelegationTest1 {
- int a;
- int b;
-
-public:
- CtorDelegationTest1(int)
- : a(9) {
- // leaves 'b' unintialized, but we'll never check this function
- }
-
- CtorDelegationTest1()
- : CtorDelegationTest1(int{}) { // Initializing 'a'
- b = 10;
- // All good!
- }
-};
-
-void fCtorDelegationTest1() {
- CtorDelegationTest1();
-}
-
-class CtorDelegationTest2 {
- int a; // expected-note{{uninitialized field 'this->a'}}
- int b;
-
-public:
- CtorDelegationTest2(int)
- : b(11) {
- // leaves 'a' unintialized, but we'll never check this function
- }
-
- CtorDelegationTest2()
- : CtorDelegationTest2(int{}) { // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fCtorDelegationTest2() {
- CtorDelegationTest2();
-}
-
-//===----------------------------------------------------------------------===//
-// Tests for classes containing records.
-//===----------------------------------------------------------------------===//
-
-class ContainsRecordTest1 {
- struct RecordType {
- int x;
- int y;
- } rec;
- int c, d;
-
-public:
- ContainsRecordTest1()
- : rec({12, 13}),
- c(14),
- d(15) {
- // All good!
- }
-};
-
-void fContainsRecordTest1() {
- ContainsRecordTest1();
-}
-
-class ContainsRecordTest2 {
- struct RecordType {
- int x;
- int y; // expected-note{{uninitialized field 'this->rec.y'}}
- } rec;
- int c, d;
-
-public:
- ContainsRecordTest2()
- : c(16),
- d(17) {
- rec.x = 18; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fContainsRecordTest2() {
- ContainsRecordTest2();
-}
-
-class ContainsRecordTest3 {
- struct RecordType {
- int x; // expected-note{{uninitialized field 'this->rec.x'}}
- int y; // expected-note{{uninitialized field 'this->rec.y'}}
- } rec;
- int c, d;
-
-public:
- ContainsRecordTest3()
- : c(19),
- d(20) { // expected-warning{{2 uninitialized fields}}
- }
-};
-
-void fContainsRecordTest3() {
- ContainsRecordTest3();
-}
-
-class ContainsRecordTest4 {
- struct RecordType {
- int x; // expected-note{{uninitialized field 'this->rec.x'}}
- int y; // expected-note{{uninitialized field 'this->rec.y'}}
- } rec;
- int c, d; // expected-note{{uninitialized field 'this->d'}}
-
-public:
- ContainsRecordTest4()
- : c(19) { // expected-warning{{3 uninitialized fields}}
- }
-};
-
-void fContainsRecordTest4() {
- ContainsRecordTest4();
-}
-
-//===----------------------------------------------------------------------===//
-// Tests for template classes.
-//===----------------------------------------------------------------------===//
-
-template <class T>
-class IntTemplateClassTest1 {
- T t;
- int b;
-
-public:
- IntTemplateClassTest1(T i) {
- b = 21;
- t = i;
- // All good!
- }
-};
-
-void fIntTemplateClassTest1() {
- IntTemplateClassTest1<int>(22);
-}
-
-template <class T>
-class IntTemplateClassTest2 {
- T t; // expected-note{{uninitialized field 'this->t'}}
- int b;
-
-public:
- IntTemplateClassTest2() {
- b = 23; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fIntTemplateClassTest2() {
- IntTemplateClassTest2<int>();
-}
-
-struct Record {
- int x; // expected-note{{uninitialized field 'this->t.x'}}
- int y; // expected-note{{uninitialized field 'this->t.y'}}
-};
-
-template <class T>
-class RecordTemplateClassTest {
- T t;
- int b;
-
-public:
- RecordTemplateClassTest() {
- b = 24; // expected-warning{{2 uninitialized fields}}
- }
-};
-
-void fRecordTemplateClassTest() {
- RecordTemplateClassTest<Record>();
-}
-
-//===----------------------------------------------------------------------===//
-// Tests involving functions with unknown implementations.
-//===----------------------------------------------------------------------===//
-
-template <class T>
-void mayInitialize(T &);
-
-template <class T>
-void wontInitialize(const T &);
-
-class PassingToUnknownFunctionTest1 {
- int a, b;
-
-public:
- PassingToUnknownFunctionTest1() {
- mayInitialize(a);
- mayInitialize(b);
- // All good!
- }
-
- PassingToUnknownFunctionTest1(int) {
- mayInitialize(a);
- // All good!
- }
-
- PassingToUnknownFunctionTest1(int, int) {
- mayInitialize(*this);
- // All good!
- }
-};
-
-void fPassingToUnknownFunctionTest1() {
- PassingToUnknownFunctionTest1();
- PassingToUnknownFunctionTest1(int());
- PassingToUnknownFunctionTest1(int(), int());
-}
-
-class PassingToUnknownFunctionTest2 {
- int a; // expected-note{{uninitialized field 'this->a'}}
- int b;
-
-public:
- PassingToUnknownFunctionTest2() {
- wontInitialize(a);
- b = 4; // expected-warning{{1 uninitialized field}}
- }
-};
-
-void fPassingToUnknownFunctionTest2() {
- PassingToUnknownFunctionTest2();
-}
-
-//===----------------------------------------------------------------------===//
-// Tests for classes containing unions.
-//===----------------------------------------------------------------------===//
-
-// FIXME: As of writing this checker, there is no good support for union types
-// in the Static Analyzer. Here is non-exhaustive list of cases.
-// Note that the rules for unions are different in C and C++.
-// http://lists.llvm.org/pipermail/cfe-dev/2017-March/052910.html
-
-class ContainsSimpleUnionTest1 {
- union SimpleUnion {
- float uf;
- int ui;
- char uc;
- } u;
-
-public:
- ContainsSimpleUnionTest1() {
- u.uf = 3.14;
- // All good!
- }
-};
-
-void fContainsSimpleUnionTest1() {
- ContainsSimpleUnionTest1();
-}
-
-class ContainsSimpleUnionTest2 {
- union SimpleUnion {
- float uf;
- int ui;
- char uc;
- // TODO: we'd expect the note: {{uninitialized field 'this->u'}}
- } u; // no-note
-
-public:
- ContainsSimpleUnionTest2() {}
-};
-
-void fContainsSimpleUnionTest2() {
- // TODO: we'd expect the warning: {{1 uninitialized field}}
- ContainsSimpleUnionTest2(); // no-warning
-}
-
-class UnionPointerTest1 {
-public:
- union SimpleUnion {
- float uf;
- int ui;
- char uc;
- };
-
-private:
- SimpleUnion *uptr;
-
-public:
- UnionPointerTest1(SimpleUnion *uptr, int) : uptr(uptr) {
- // All good!
- }
-};
-
-void fUnionPointerTest1() {
- UnionPointerTest1::SimpleUnion u;
- u.uf = 41;
- UnionPointerTest1(&u, int());
-}
-
-class UnionPointerTest2 {
-public:
- union SimpleUnion {
- float uf;
- int ui;
- char uc;
- };
-
-private:
- // TODO: we'd expect the note: {{uninitialized field 'this->uptr'}}
- SimpleUnion *uptr; // no-note
-
-public:
- UnionPointerTest2(SimpleUnion *uptr, char) : uptr(uptr) {}
-};
-
-void fUnionPointerTest2() {
- UnionPointerTest2::SimpleUnion u;
- // TODO: we'd expect the warning: {{1 uninitialized field}}
- UnionPointerTest2(&u, int()); // no-warning
-}
-
-class ContainsUnionWithRecordTest1 {
- union UnionWithRecord {
- struct RecordType {
- int x;
- int y;
- } us;
- double ud;
- long ul;
-
- UnionWithRecord(){};
- } u;
-
-public:
- ContainsUnionWithRecordTest1() {
- u.ud = 3.14;
- // All good!
- }
-};
-
-void fContainsUnionWithRecordTest1() {
- ContainsUnionWithRecordTest1();
-}
-
-class ContainsUnionWithRecordTest2 {
- union UnionWithRecord {
- struct RecordType {
- int x;
- int y;
- } us;
- double ud;
- long ul;
-
- UnionWithRecord(){};
- } u;
-
-public:
- ContainsUnionWithRecordTest2() {
- u.us = UnionWithRecord::RecordType{42, 43};
- // All good!
- }
-};
-
-void fContainsUnionWithRecordTest2() {
- ContainsUnionWithRecordTest1();
-}
-
-class ContainsUnionWithRecordTest3 {
- union UnionWithRecord {
- struct RecordType {
- int x;
- int y;
- } us;
- double ud;
- long ul;
-
- UnionWithRecord(){};
- // TODO: we'd expect the note: {{uninitialized field 'this->u'}}
- } u; // no-note
-
-public:
- ContainsUnionWithRecordTest3() {
- UnionWithRecord::RecordType rec;
- rec.x = 44;
- // TODO: we'd expect the warning: {{1 uninitialized field}}
- u.us = rec; // no-warning
- }
-};
-
-void fContainsUnionWithRecordTest3() {
- ContainsUnionWithRecordTest3();
-}
-
-class ContainsUnionWithSimpleUnionTest1 {
- union UnionWithSimpleUnion {
- union SimpleUnion {
- float uf;
- int ui;
- char uc;
- } usu;
- long ul;
- unsigned uu;
- } u;
-
-public:
- ContainsUnionWithSimpleUnionTest1() {
- u.usu.ui = 5;
- // All good!
- }
-};
-
-void fContainsUnionWithSimpleUnionTest1() {
- ContainsUnionWithSimpleUnionTest1();
-}
-
-class ContainsUnionWithSimpleUnionTest2 {
- union UnionWithSimpleUnion {
- union SimpleUnion {
- float uf;
- int ui;
- char uc;
- } usu;
- long ul;
- unsigned uu;
- // TODO: we'd expect the note: {{uninitialized field 'this->u'}}
- } u; // no-note
-
-public:
- ContainsUnionWithSimpleUnionTest2() {}
-};
-
-void fContainsUnionWithSimpleUnionTest2() {
- // TODO: we'd expect the warning: {{1 uninitialized field}}
- ContainsUnionWithSimpleUnionTest2(); // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// Zero initialization tests.
-//===----------------------------------------------------------------------===//
-
-struct GlobalVariableTest {
- int i;
-
- GlobalVariableTest() {}
-};
-
-GlobalVariableTest gvt; // no-warning
-
-//===----------------------------------------------------------------------===//
-// Copy and move constructor tests.
-//===----------------------------------------------------------------------===//
-
-template <class T>
-void funcToSquelchCompilerWarnings(const T &t);
-
-#ifdef PEDANTIC
-struct CopyConstructorTest {
- int i; // expected-note{{uninitialized field 'this->i'}}
-
- CopyConstructorTest() : i(1337) {}
- CopyConstructorTest(const CopyConstructorTest &other) {}
-};
-
-void fCopyConstructorTest() {
- CopyConstructorTest cct;
- CopyConstructorTest copy = cct; // expected-warning{{1 uninitialized field}}
- funcToSquelchCompilerWarnings(copy);
-}
-#else
-struct CopyConstructorTest {
- int i;
-
- CopyConstructorTest() : i(1337) {}
- CopyConstructorTest(const CopyConstructorTest &other) {}
-};
-
-void fCopyConstructorTest() {
- CopyConstructorTest cct;
- CopyConstructorTest copy = cct;
- funcToSquelchCompilerWarnings(copy);
-}
-#endif // PEDANTIC
-
-struct MoveConstructorTest {
- // TODO: we'd expect the note: {{uninitialized field 'this->i'}}
- int i; // no-note
-
- MoveConstructorTest() : i(1337) {}
- MoveConstructorTest(const CopyConstructorTest &other) = delete;
- MoveConstructorTest(const CopyConstructorTest &&other) {}
-};
-
-void fMoveConstructorTest() {
- MoveConstructorTest cct;
- // TODO: we'd expect the warning: {{1 uninitialized field}}
- MoveConstructorTest copy(static_cast<MoveConstructorTest &&>(cct)); // no-warning
- funcToSquelchCompilerWarnings(copy);
-}
-
-//===----------------------------------------------------------------------===//
-// Array tests.
-//===----------------------------------------------------------------------===//
-
-struct IntArrayTest {
- int arr[256];
-
- IntArrayTest() {
- // All good!
- }
-};
-
-void fIntArrayTest() {
- IntArrayTest();
-}
-
-struct RecordTypeArrayTest {
- struct RecordType {
- int x, y;
- } arr[256];
-
- RecordTypeArrayTest() {
- // All good!
- }
-};
-
-void fRecordTypeArrayTest() {
- RecordTypeArrayTest();
-}
-
-template <class T>
-class CharArrayPointerTest {
- T *t; // no-crash
-
-public:
- CharArrayPointerTest(T *t, int) : t(t) {}
-};
-
-void fCharArrayPointerTest() {
- char str[16] = "012345678912345";
- CharArrayPointerTest<char[16]>(&str, int());
-}
-
-//===----------------------------------------------------------------------===//
-// Memset tests.
-//===----------------------------------------------------------------------===//
-
-struct MemsetTest1 {
- int a, b, c;
-
- MemsetTest1() {
- __builtin_memset(this, 0, sizeof(decltype(*this)));
- }
-};
-
-void fMemsetTest1() {
- MemsetTest1();
-}
-
-struct MemsetTest2 {
- int a;
-
- MemsetTest2() {
- __builtin_memset(&a, 0, sizeof(int));
- }
-};
-
-void fMemsetTest2() {
- MemsetTest2();
-}
-
-//===----------------------------------------------------------------------===//
-// Lambda tests.
-//===----------------------------------------------------------------------===//
-
-template <class Callable>
-struct LambdaThisTest {
- Callable functor;
-
- LambdaThisTest(const Callable &functor, int) : functor(functor) {
- // All good!
- }
-};
-
-struct HasCapturableThis {
- void fLambdaThisTest() {
- auto isEven = [this](int a) { return a % 2 == 0; }; // no-crash
- LambdaThisTest<decltype(isEven)>(isEven, int());
- }
-};
-
-template <class Callable>
-struct LambdaTest1 {
- Callable functor;
-
- LambdaTest1(const Callable &functor, int) : functor(functor) {
- // All good!
- }
-};
-
-void fLambdaTest1() {
- auto isEven = [](int a) { return a % 2 == 0; };
- LambdaTest1<decltype(isEven)>(isEven, int());
-}
-
-#ifdef PEDANTIC
-template <class Callable>
-struct LambdaTest2 {
- Callable functor;
-
- LambdaTest2(const Callable &functor, int) : functor(functor) {} // expected-warning{{1 uninitialized field}}
-};
-
-void fLambdaTest2() {
- int b;
- auto equals = [&b](int a) { return a == b; }; // expected-note{{uninitialized pointee 'this->functor./*captured variable*/b'}}
- LambdaTest2<decltype(equals)>(equals, int());
-}
-#else
-template <class Callable>
-struct LambdaTest2 {
- Callable functor;
-
- LambdaTest2(const Callable &functor, int) : functor(functor) {}
-};
-
-void fLambdaTest2() {
- int b;
- auto equals = [&b](int a) { return a == b; };
- LambdaTest2<decltype(equals)>(equals, int());
-}
-#endif //PEDANTIC
-
-#ifdef PEDANTIC
-namespace LT3Detail {
-
-struct RecordType {
- int x; // expected-note{{uninitialized field 'this->functor./*captured variable*/rec1.x'}}
- int y; // expected-note{{uninitialized field 'this->functor./*captured variable*/rec1.y'}}
-};
-
-} // namespace LT3Detail
-template <class Callable>
-struct LambdaTest3 {
- Callable functor;
-
- LambdaTest3(const Callable &functor, int) : functor(functor) {} // expected-warning{{2 uninitialized fields}}
-};
-
-void fLambdaTest3() {
- LT3Detail::RecordType rec1;
- auto equals = [&rec1](LT3Detail::RecordType rec2) {
- return rec1.x == rec2.x;
- };
- LambdaTest3<decltype(equals)>(equals, int());
-}
-#else
-namespace LT3Detail {
-
-struct RecordType {
- int x;
- int y;
-};
-
-} // namespace LT3Detail
-template <class Callable>
-struct LambdaTest3 {
- Callable functor;
-
- LambdaTest3(const Callable &functor, int) : functor(functor) {}
-};
-
-void fLambdaTest3() {
- LT3Detail::RecordType rec1;
- auto equals = [&rec1](LT3Detail::RecordType rec2) {
- return rec1.x == rec2.x;
- };
- LambdaTest3<decltype(equals)>(equals, int());
-}
-#endif //PEDANTIC
-
-template <class Callable>
-struct MultipleLambdaCapturesTest1 {
- Callable functor;
- int dontGetFilteredByNonPedanticMode = 0;
-
- MultipleLambdaCapturesTest1(const Callable &functor, int) : functor(functor) {} // expected-warning{{2 uninitialized field}}
-};
-
-void fMultipleLambdaCapturesTest1() {
- int b1, b2 = 3, b3;
- auto equals = [&b1, &b2, &b3](int a) { return a == b1 == b2 == b3; }; // expected-note{{uninitialized pointee 'this->functor./*captured variable*/b1'}}
- // expected-note@-1{{uninitialized pointee 'this->functor./*captured variable*/b3'}}
- MultipleLambdaCapturesTest1<decltype(equals)>(equals, int());
-}
-
-template <class Callable>
-struct MultipleLambdaCapturesTest2 {
- Callable functor;
- int dontGetFilteredByNonPedanticMode = 0;
-
- MultipleLambdaCapturesTest2(const Callable &functor, int) : functor(functor) {} // expected-warning{{1 uninitialized field}}
-};
-
-void fMultipleLambdaCapturesTest2() {
- int b1, b2 = 3, b3;
- auto equals = [b1, &b2, &b3](int a) { return a == b1 == b2 == b3; }; // expected-note{{uninitialized pointee 'this->functor./*captured variable*/b3'}}
- MultipleLambdaCapturesTest2<decltype(equals)>(equals, int());
-}
-
-struct LambdaWrapper {
- void *func; // no-crash
- int dontGetFilteredByNonPedanticMode = 0;
-
- LambdaWrapper(void *ptr) : func(ptr) {} // expected-warning{{1 uninitialized field}}
-};
-
-struct ThisCapturingLambdaFactory {
- int a; // expected-note{{uninitialized field 'static_cast<decltype(a.ret()) *>(this->func)->/*'this' capture*/->a'}}
-
- auto ret() {
- return [this] { (void)this; };
- }
-};
-
-void fLambdaFieldWithInvalidThisCapture() {
- void *ptr;
- {
- ThisCapturingLambdaFactory a;
- decltype(a.ret()) lambda = a.ret();
- ptr = &lambda;
- }
- LambdaWrapper t(ptr);
-}
-
-//===----------------------------------------------------------------------===//
-// System header tests.
-//===----------------------------------------------------------------------===//
-
-#include "Inputs/system-header-simulator-for-cxx-uninitialized-object.h"
-
-struct SystemHeaderTest1 {
- RecordInSystemHeader rec; // defined in the system header simulator
-
- SystemHeaderTest1() {
- // All good!
- }
-};
-
-void fSystemHeaderTest1() {
- SystemHeaderTest1();
-}
-
-#ifdef PEDANTIC
-struct SystemHeaderTest2 {
- struct RecordType {
- int x; // expected-note{{uninitialized field 'this->container.t.x}}
- int y; // expected-note{{uninitialized field 'this->container.t.y}}
- };
- ContainerInSystemHeader<RecordType> container;
-
- SystemHeaderTest2(RecordType &rec, int) : container(rec) {} // expected-warning{{2 uninitialized fields}}
-};
-
-void fSystemHeaderTest2() {
- SystemHeaderTest2::RecordType rec;
- SystemHeaderTest2(rec, int());
-}
-#else
-struct SystemHeaderTest2 {
- struct RecordType {
- int x;
- int y;
- };
- ContainerInSystemHeader<RecordType> container;
-
- SystemHeaderTest2(RecordType &rec, int) : container(rec) {}
-};
-
-void fSystemHeaderTest2() {
- SystemHeaderTest2::RecordType rec;
- SystemHeaderTest2(rec, int());
-}
-#endif //PEDANTIC
-
-//===----------------------------------------------------------------------===//
-// Incomplete type tests.
-//===----------------------------------------------------------------------===//
-
-struct IncompleteTypeTest1 {
- struct RecordType;
- // no-crash
- RecordType *recptr; // expected-note{{uninitialized pointer 'this->recptr}}
- int dontGetFilteredByNonPedanticMode = 0;
-
- IncompleteTypeTest1() {} // expected-warning{{1 uninitialized field}}
-};
-
-void fIncompleteTypeTest1() {
- IncompleteTypeTest1();
-}
-
-struct IncompleteTypeTest2 {
- struct RecordType;
- RecordType *recptr; // no-crash
- int dontGetFilteredByNonPedanticMode = 0;
-
- RecordType *recordTypeFactory();
-
- IncompleteTypeTest2() : recptr(recordTypeFactory()) {}
-};
-
-void fIncompleteTypeTest2() {
- IncompleteTypeTest2();
-}
-
-struct IncompleteTypeTest3 {
- struct RecordType;
- RecordType &recref; // no-crash
- int dontGetFilteredByNonPedanticMode = 0;
-
- RecordType &recordTypeFactory();
-
- IncompleteTypeTest3() : recref(recordTypeFactory()) {}
-};
-
-void fIncompleteTypeTest3() {
- IncompleteTypeTest3();
-}
-
-//===----------------------------------------------------------------------===//
-// Builtin type or enumeration type related tests.
-//===----------------------------------------------------------------------===//
-
-struct IntegralTypeTest {
- int a; // expected-note{{uninitialized field 'this->a'}}
- int dontGetFilteredByNonPedanticMode = 0;
-
- IntegralTypeTest() {} // expected-warning{{1 uninitialized field}}
-};
-
-void fIntegralTypeTest() {
- IntegralTypeTest();
-}
-
-struct FloatingTypeTest {
- float a; // expected-note{{uninitialized field 'this->a'}}
- int dontGetFilteredByNonPedanticMode = 0;
-
- FloatingTypeTest() {} // expected-warning{{1 uninitialized field}}
-};
-
-void fFloatingTypeTest() {
- FloatingTypeTest();
-}
-
-struct NullptrTypeTypeTest {
- decltype(nullptr) a; // expected-note{{uninitialized field 'this->a'}}
- int dontGetFilteredByNonPedanticMode = 0;
-
- NullptrTypeTypeTest() {} // expected-warning{{1 uninitialized field}}
-};
-
-void fNullptrTypeTypeTest() {
- NullptrTypeTypeTest();
-}
-
-struct EnumTest {
- enum Enum {
- A,
- B
- } enum1; // expected-note{{uninitialized field 'this->enum1'}}
- enum class Enum2 {
- A,
- B
- } enum2; // expected-note{{uninitialized field 'this->enum2'}}
- int dontGetFilteredByNonPedanticMode = 0;
-
- EnumTest() {} // expected-warning{{2 uninitialized fields}}
-};
-
-void fEnumTest() {
- EnumTest();
-}
-
-//===----------------------------------------------------------------------===//
-// Tests for constructor calls within another cunstructor, without the two
-// records being in any relation.
-//===----------------------------------------------------------------------===//
-
-void halt() __attribute__((__noreturn__));
-void assert(int b) {
- if (!b)
- halt();
-}
-
-// While a singleton would make more sense as a static variable, that would zero
-// initialize all of its fields, hence the not too practical implementation.
-struct Singleton {
- int i; // expected-note{{uninitialized field 'this->i'}}
- int dontGetFilteredByNonPedanticMode = 0;
-
- Singleton() {
- assert(!isInstantiated);
- isInstantiated = true; // expected-warning{{1 uninitialized field}}
- }
-
- ~Singleton() {
- isInstantiated = false;
- }
-
- static bool isInstantiated;
-};
-
-bool Singleton::isInstantiated = false;
-
-struct SingletonTest {
- int dontGetFilteredByNonPedanticMode = 0;
-
- SingletonTest() {
- Singleton();
- }
-};
-
-void fSingletonTest() {
- SingletonTest();
-}
-
-//===----------------------------------------------------------------------===//
-// C++11 member initializer tests.
-//===----------------------------------------------------------------------===//
-
-struct CXX11MemberInitTest1 {
- int a = 3;
- int b;
- CXX11MemberInitTest1() : b(2) {
- // All good!
- }
-};
-
-void fCXX11MemberInitTest1() {
- CXX11MemberInitTest1();
-}
-
-struct CXX11MemberInitTest2 {
- struct RecordType {
- // TODO: we'd expect the note: {{uninitialized field 'this->rec.a'}}
- int a; // no-note
- // TODO: we'd expect the note: {{uninitialized field 'this->rec.b'}}
- int b; // no-note
-
- RecordType(int) {}
- };
-
- RecordType rec = RecordType(int());
- int dontGetFilteredByNonPedanticMode = 0;
-
- CXX11MemberInitTest2() {}
-};
-
-void fCXX11MemberInitTest2() {
- // TODO: we'd expect the warning: {{2 uninitializeds field}}
- CXX11MemberInitTest2(); // no-warning
-}
diff --git a/test/Analysis/cxx11-crashes.cpp b/test/Analysis/cxx11-crashes.cpp
deleted file mode 100644
index 8905d1c87b82..000000000000
--- a/test/Analysis/cxx11-crashes.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -std=c++11 -verify %s
-
-// radar://11485149, PR12871
-class PlotPoint {
- bool valid;
-};
-
-PlotPoint limitedFit () {
- PlotPoint fit0;
- fit0 = limitedFit ();
- return fit0;
-}
-
-// radar://11487541, NamespaceAlias
-namespace boost {namespace filesystem3 {
-class path {
-public:
- path(){}
-};
-
-}}
-namespace boost
-{
- namespace filesystem
- {
- using filesystem3::path;
- }
-}
-
-void radar11487541() {
- namespace fs = boost::filesystem;
- fs::path p;
-}
-
-// PR12873 radar://11499139
-void testFloatInitializer() {
- const float ysize={0.015}, xsize={0.01};
-}
-
-
-// PR12874, radar://11487525
-template<class T> struct addr_impl_ref {
- T & v_;
- inline addr_impl_ref( T & v ): v_( v ) {
- }
- inline operator T& () const {return v_;}
-};
-template<class T> struct addressof_impl {
- static inline T * f( T & v, long ) {
- return reinterpret_cast<T*>(&const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
- }
-};
-template<class T> T * addressof( T & v ) {
- return addressof_impl<T>::f( addr_impl_ref<T>( v ), 0 );
-}
-void testRadar11487525_1(){
- bool s[25];
- addressof(s);
-}
-
-// radar://11487525 Don't crash on CK_LValueBitCast.
-bool begin(double *it) {
- typedef bool type[25];
- bool *a = reinterpret_cast<type &>(*( reinterpret_cast<char *>( it )));
- return *a;
-}
-
-// radar://14164698 Don't crash on "assuming" a ComoundVal.
-class JSONWireProtocolInputStream {
-public:
- virtual ~JSONWireProtocolInputStream();
-};
-class JSONWireProtocolReader {
-public:
- JSONWireProtocolReader(JSONWireProtocolInputStream& istream)
- : _istream{istream} {} // On evaluating a bind here,
- // the dereference checker issues an assume on a CompoundVal.
-~JSONWireProtocolReader();
-private:
-JSONWireProtocolInputStream& _istream;
-};
-class SocketWireProtocolStream : public JSONWireProtocolInputStream {
-};
-void test() {
- SocketWireProtocolStream stream{};
- JSONWireProtocolReader reader{stream};
-}
-
-// This crashed because the analyzer did not understand AttributedStmts.
-void fallthrough() {
- switch (1) {
- case 1:
- [[clang::fallthrough]]; // expected-error {{does not directly precede}}
- }
-}
diff --git a/test/Analysis/cxxnewexpr-callback-inline.cpp b/test/Analysis/cxxnewexpr-callback-inline.cpp
deleted file mode 100644
index c823de85821d..000000000000
--- a/test/Analysis/cxxnewexpr-callback-inline.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.AnalysisOrder -analyzer-config c++-allocator-inlining=true,debug.AnalysisOrder:PreStmtCXXNewExpr=true,debug.AnalysisOrder:PostStmtCXXNewExpr=true,debug.AnalysisOrder:PreCall=true,debug.AnalysisOrder:PostCall=true,debug.AnalysisOrder:NewAllocator=true %s 2>&1 | FileCheck %s
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-namespace std {
- void *malloc(size_t);
-}
-
-void *operator new(size_t size) { return std::malloc(size); }
-
-struct S {
- S() {}
-};
-
-void foo();
-
-void test() {
- S *s = new S();
- foo();
-}
-
-// CHECK: PreCall (operator new)
-// CHECK-NEXT: PreCall (std::malloc)
-// CHECK-NEXT: PostCall (std::malloc)
-// CHECK-NEXT: PostCall (operator new)
-// CHECK-NEXT: NewAllocator
-// CHECK-NEXT: PreCall (S::S)
-// CHECK-NEXT: PostCall (S::S)
-// CHECK-NEXT: PreStmt<CXXNewExpr>
-// CHECK-NEXT: PostStmt<CXXNewExpr>
-// CHECK-NEXT: PreCall (foo)
-// CHECK-NEXT: PostCall (foo)
diff --git a/test/Analysis/cxxnewexpr-callback-noinline.cpp b/test/Analysis/cxxnewexpr-callback-noinline.cpp
deleted file mode 100644
index 87edeac3fd58..000000000000
--- a/test/Analysis/cxxnewexpr-callback-noinline.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.AnalysisOrder -analyzer-config c++-allocator-inlining=false,debug.AnalysisOrder:PreStmtCXXNewExpr=true,debug.AnalysisOrder:PostStmtCXXNewExpr=true,debug.AnalysisOrder:PreCall=true,debug.AnalysisOrder:PostCall=true,debug.AnalysisOrder:NewAllocator=true %s 2>&1 | FileCheck %s
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-namespace std {
- void *malloc(size_t);
-}
-
-void *operator new(size_t size) { return std::malloc(size); }
-
-struct S {
- S() {}
-};
-
-void foo();
-
-void test() {
- S *s = new S();
- foo();
-}
-
-// CHECK: PreCall (S::S)
-// CHECK-NEXT: PostCall (S::S)
-// CHECK-NEXT: PreStmt<CXXNewExpr>
-// CHECK-NEXT: PostStmt<CXXNewExpr>
-// CHECK-NEXT: PreCall (foo)
-// CHECK-NEXT: PostCall (foo)
-// CHECK-NEXT: PreCall (std::malloc)
-// CHECK-NEXT: PostCall (std::malloc)
diff --git a/test/Analysis/dead-stores.c b/test/Analysis/dead-stores.c
deleted file mode 100644
index 84217a286a55..000000000000
--- a/test/Analysis/dead-stores.c
+++ /dev/null
@@ -1,575 +0,0 @@
-// RUN: %clang_analyze_cc1 -Wunused-variable -analyzer-checker=core,deadcode.DeadStores -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s
-// RUN: %clang_analyze_cc1 -Wunused-variable -analyzer-checker=core,deadcode.DeadStores -analyzer-store=region -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s
-
-void f1() {
- int k, y; // expected-warning{{unused variable 'k'}} expected-warning{{unused variable 'y'}}
- int abc=1;
- long idx=abc+3*5; // expected-warning {{never read}} expected-warning{{unused variable 'idx'}}
-}
-
-void f2(void *b) {
- char *c = (char*)b; // no-warning
- char *d = b+1; // expected-warning {{never read}} expected-warning{{unused variable 'd'}}
- printf("%s", c); // expected-warning{{implicitly declaring library function 'printf' with type 'int (const char *, ...)'}} \
- // expected-note{{include the header <stdio.h> or explicitly provide a declaration for 'printf'}}
-}
-
-int f();
-
-void f3() {
- int r;
- if ((r = f()) != 0) { // no-warning
- int y = r; // no-warning
- printf("the error is: %d\n", y);
- }
-}
-
-void f4(int k) {
-
- k = 1;
-
- if (k)
- f1();
-
- k = 2; // expected-warning {{never read}}
-}
-
-void f5() {
-
- int x = 4; // no-warning
- int *p = &x; // expected-warning{{never read}} expected-warning{{unused variable 'p'}}
-
-}
-
-//
-int f6() {
-
- int x = 4;
- ++x; // no-warning
- return 1;
-}
-
-int f7(int *p) {
- // This is allowed for defensive programming.
- p = 0; // no-warning
- return 1;
-}
-
-int f7b(int *p) {
- // This is allowed for defensive programming.
- p = (0); // no-warning
- return 1;
-}
-
-int f7c(int *p) {
- // This is allowed for defensive programming.
- p = (void*) 0; // no-warning
- return 1;
-}
-
-int f7d(int *p) {
- // This is allowed for defensive programming.
- p = (void*) (0); // no-warning
- return 1;
-}
-
-// Don't warn for dead stores in nested expressions. We have yet
-// to see a real bug in this scenario.
-int f8(int *p) {
- extern int *baz();
- if ((p = baz())) // no-warning
- return 1;
- return 0;
-}
-
-int f9() {
- int x = 4;
- x = x + 10; // expected-warning{{never read}}
- return 1;
-}
-
-int f10() {
- int x = 4;
- x = 10 + x; // expected-warning{{never read}}
- return 1;
-}
-
-int f11() {
- int x = 4;
- return x++; // expected-warning{{never read}}
-}
-
-int f11b() {
- int x = 4;
- return ((((++x)))); // no-warning
-}
-
-int f12a(int y) {
- int x = y; // expected-warning{{unused variable 'x'}}
- return 1;
-}
-int f12b(int y) {
- int x __attribute__((unused)) = y; // no-warning
- return 1;
-}
-int f12c(int y) {
- // Allow initialiation of scalar variables by parameters as a form of
- // defensive programming.
- int x = y; // no-warning
- x = 1;
- return x;
-}
-
-// Filed with PR 2630. This code should produce no warnings.
-int f13(void)
-{
- int a = 1;
- int b, c = b = a + a;
-
- if (b > 0)
- return (0);
-
- return (a + b + c);
-}
-
-// Filed with PR 2763.
-int f14(int count) {
- int index, nextLineIndex;
- for (index = 0; index < count; index = nextLineIndex+1) {
- nextLineIndex = index+1; // no-warning
- continue;
- }
- return index;
-}
-
-// Test case for <rdar://problem/6248086>
-void f15(unsigned x, unsigned y) {
- int count = x * y; // no-warning
- int z[count]; // expected-warning{{unused variable 'z'}}
-}
-
-// Don't warn for dead stores in nested expressions. We have yet
-// to see a real bug in this scenario.
-int f16(int x) {
- x = x * 2;
- x = sizeof(int [x = (x || x + 1) * 2])
- ? 5 : 8;
- return x;
-}
-
-// Self-assignments should not be flagged as dead stores.
-void f17() {
- int x = 1;
- x = x;
-}
-
-// <rdar://problem/6506065>
-// The values of dead stores are only "consumed" in an enclosing expression
-// what that value is actually used. In other words, don't say "Although the
-// value stored to 'x' is used...".
-int f18() {
- int x = 0; // no-warning
- if (1)
- x = 10; // expected-warning{{Value stored to 'x' is never read}}
- while (1)
- x = 10; // expected-warning{{Value stored to 'x' is never read}}
- // unreachable.
- do
- x = 10; // no-warning
- while (1);
- return (x = 10); // no-warning
-}
-
-int f18_a() {
- int x = 0; // no-warning
- return (x = 10); // no-warning
-}
-
-void f18_b() {
- int x = 0; // no-warning
- if (1)
- x = 10; // expected-warning{{Value stored to 'x' is never read}}
-}
-
-void f18_c() {
- int x = 0;
- while (1)
- x = 10; // expected-warning{{Value stored to 'x' is never read}}
-}
-
-void f18_d() {
- int x = 0; // no-warning
- do
- x = 10; // expected-warning{{Value stored to 'x' is never read}}
- while (1);
-}
-
-// PR 3514: false positive `dead initialization` warning for init to global
-// http://llvm.org/bugs/show_bug.cgi?id=3514
-extern const int MyConstant;
-int f19(void) {
- int x = MyConstant; // no-warning
- x = 1;
- return x;
-}
-
-int f19b(void) { // This case is the same as f19.
- const int MyConstant = 0;
- int x = MyConstant; // no-warning
- x = 1;
- return x;
-}
-
-void f20(void) {
- int x = 1; // no-warning
-#pragma unused(x)
-}
-
-void halt() __attribute__((noreturn));
-int f21() {
- int x = 4;
-
- x = x + 1; // expected-warning{{never read}}
- if (1) {
- halt();
- (void)x;
- }
- return 1;
-}
-
-int j;
-void f22() {
- int x = 4;
- int y1 = 4;
- int y2 = 4;
- int y3 = 4;
- int y4 = 4;
- int y5 = 4;
- int y6 = 4;
- int y7 = 4;
- int y8 = 4;
- int y9 = 4;
- int y10 = 4;
- int y11 = 4;
- int y12 = 4;
- int y13 = 4;
- int y14 = 4;
- int y15 = 4;
- int y16 = 4;
- int y17 = 4;
- int y18 = 4;
- int y19 = 4;
- int y20 = 4;
-
- x = x + 1; // expected-warning{{never read}}
- ++y1;
- ++y2;
- ++y3;
- ++y4;
- ++y5;
- ++y6;
- ++y7;
- ++y8;
- ++y9;
- ++y10;
- ++y11;
- ++y12;
- ++y13;
- ++y14;
- ++y15;
- ++y16;
- ++y17;
- ++y18;
- ++y19;
- ++y20;
-
- switch (j) {
- case 1:
- if (0)
- (void)x;
- if (1) {
- (void)y1;
- return;
- }
- (void)x;
- break;
- case 2:
- if (0)
- (void)x;
- else {
- (void)y2;
- return;
- }
- (void)x;
- break;
- case 3:
- if (1) {
- (void)y3;
- return;
- } else
- (void)x;
- (void)x;
- break;
- case 4:
- 0 ? : ((void)y4, ({ return; }));
- (void)x;
- break;
- case 5:
- 1 ? : (void)x;
- 0 ? (void)x : ((void)y5, ({ return; }));
- (void)x;
- break;
- case 6:
- 1 ? ((void)y6, ({ return; })) : (void)x;
- (void)x;
- break;
- case 7:
- (void)(0 && x);
- (void)y7;
- (void)(0 || (y8, ({ return; }), 1)); // expected-warning {{expression result unused}}
- (void)x;
- break;
- case 8:
- (void)(1 && (y9, ({ return; }), 1)); // expected-warning {{expression result unused}}
- (void)x;
- break;
- case 9:
- (void)(1 || x);
- (void)y10;
- break;
- case 10:
- while (0) {
- (void)x;
- }
- (void)y11;
- break;
- case 11:
- while (1) {
- (void)y12;
- }
- (void)x;
- break;
- case 12:
- do {
- (void)y13;
- } while (0);
- (void)y14;
- break;
- case 13:
- do {
- (void)y15;
- } while (1);
- (void)x;
- break;
- case 14:
- for (;;) {
- (void)y16;
- }
- (void)x;
- break;
- case 15:
- for (;1;) {
- (void)y17;
- }
- (void)x;
- break;
- case 16:
- for (;0;) {
- (void)x;
- }
- (void)y18;
- break;
- case 17:
- __builtin_choose_expr(0, (void)x, ((void)y19, ({ return; })));
- (void)x;
- break;
- case 19:
- __builtin_choose_expr(1, ((void)y20, ({ return; })), (void)x);
- (void)x;
- break;
- }
-}
-
-void f23_aux(const char* s);
-void f23(int argc, char **argv) {
- int shouldLog = (argc > 1); // no-warning
- ^{
- if (shouldLog) f23_aux("I did too use it!\n");
- else f23_aux("I shouldn't log. Wait.. d'oh!\n");
- }();
-}
-
-void f23_pos(int argc, char **argv) {
- int shouldLog = (argc > 1); // expected-warning{{Value stored to 'shouldLog' during its initialization is never read}} expected-warning{{unused variable 'shouldLog'}}
- ^{
- f23_aux("I did too use it!\n");
- }();
-}
-
-void f24_A(int y) {
- // FIXME: One day this should be reported as dead since 'z = x + y' is dead.
- int x = (y > 2); // no-warning
- ^ {
- int z = x + y; // expected-warning{{Value stored to 'z' during its initialization is never read}} expected-warning{{unused variable 'z'}}
- }();
-}
-
-void f24_B(int y) {
- // FIXME: One day this should be reported as dead since 'x' is just overwritten.
- __block int x = (y > 2); // no-warning
- ^{
- // FIXME: This should eventually be a dead store since it is never read either.
- x = 5; // no-warning
- }();
-}
-
-int f24_C(int y) {
- // FIXME: One day this should be reported as dead since 'x' is just overwritten.
- __block int x = (y > 2); // no-warning
- ^{
- x = 5; // no-warning
- }();
- return x;
-}
-
-int f24_D(int y) {
- __block int x = (y > 2); // no-warning
- ^{
- if (y > 4)
- x = 5; // no-warning
- }();
- return x;
-}
-
-// This example shows that writing to a variable captured by a block means that it might
-// not be dead.
-int f25(int y) {
- __block int x = (y > 2);
- __block int z = 0;
- void (^foo)() = ^{ z = x + y; };
- x = 4; // no-warning
- foo();
- return z;
-}
-
-// This test is mostly the same as 'f25', but shows that the heuristic of pruning out dead
-// stores for variables that are just marked '__block' is overly conservative.
-int f25_b(int y) {
- // FIXME: we should eventually report a dead store here.
- __block int x = (y > 2);
- __block int z = 0;
- x = 4; // no-warning
- return z;
-}
-
-int f26_nestedblocks() {
- int z;
- z = 1;
- __block int y = 0;
- ^{
- int k;
- k = 1; // expected-warning{{Value stored to 'k' is never read}}
- ^{
- y = z + 1;
- }();
- }();
- return y;
-}
-
-// The FOREACH macro in QT uses 'break' statements within statement expressions
-// placed within the increment code of for loops.
-void rdar8014335() {
- for (int i = 0 ; i != 10 ; ({ break; })) {
- for ( ; ; ({ ++i; break; })) ; // expected-warning {{'break' is bound to current loop, GCC binds it to the enclosing loop}}
- // Note that the next value stored to 'i' is never executed
- // because the next statement to be executed is the 'break'
- // in the increment code of the first loop.
- i = i * 3; // expected-warning{{Value stored to 'i' is never read}}
- }
-}
-
-// <rdar://problem/8320674> NullStmts followed by do...while() can lead to disconnected CFG
-//
-// This previously caused bogus dead-stores warnings because the body of the first do...while was
-// disconnected from the entry of the function.
-typedef struct { float r; float i; } s_rdar8320674;
-typedef struct { s_rdar8320674 x[1]; } s2_rdar8320674;
-
-void rdar8320674(s_rdar8320674 *z, unsigned y, s2_rdar8320674 *st, int m)
-{
- s_rdar8320674 * z2;
- s_rdar8320674 * tw1 = st->x;
- s_rdar8320674 t;
- z2 = z + m;
- do{
- ; ;
- do{ (t).r = (*z2).r*(*tw1).r - (*z2).i*(*tw1).i; (t).i = (*z2).r*(*tw1).i + (*z2).i*(*tw1).r; }while(0);
- tw1 += y;
- do { (*z2).r=(*z).r-(t).r; (*z2).i=(*z).i-(t).i; }while(0);
- do { (*z).r += (t).r; (*z).i += (t).i; }while(0);
- ++z2;
- ++z;
- }while (--m);
-}
-
-// Avoid dead stores resulting from an assignment (and use) being unreachable.
-void rdar8405222_aux(int i);
-void rdar8405222() {
- const int show = 0;
- int i = 0;
-
- if (show)
- i = 5; // no-warning
-
- if (show)
- rdar8405222_aux(i);
-}
-
-// Look through chains of assignments, e.g.: int x = y = 0, when employing
-// silencing heuristics.
-int radar11185138_foo() {
- int x, y;
- x = y = 0; // expected-warning {{never read}}
- return y;
-}
-
-int rdar11185138_bar() {
- int y;
- int x = y = 0; // no-warning
- x = 2;
- y = 2;
- return x + y;
-}
-
-int *radar11185138_baz() {
- int *x, *y;
- x = y = 0; // no-warning
- return y;
-}
-
-int getInt();
-int *getPtr();
-void testBOComma() {
- int x0 = (getInt(), 0); // expected-warning{{unused variable 'x0'}}
- int x1 = (getInt(), getInt()); // expected-warning {{Value stored to 'x1' during its initialization is never read}} // expected-warning{{unused variable 'x1'}}
- int x2 = (getInt(), getInt(), getInt()); //expected-warning{{Value stored to 'x2' during its initialization is never read}} // expected-warning{{unused variable 'x2'}}
- int x3;
- x3 = (getInt(), getInt(), 0); // expected-warning{{Value stored to 'x3' is never read}}
- int x4 = (getInt(), (getInt(), 0)); // expected-warning{{unused variable 'x4'}}
- int y;
- int x5 = (getInt(), (y = 0)); // expected-warning{{unused variable 'x5'}}
- int x6 = (getInt(), (y = getInt())); //expected-warning {{Value stored to 'x6' during its initialization is never read}} // expected-warning{{unused variable 'x6'}}
- int x7 = 0, x8 = getInt(); //expected-warning {{Value stored to 'x8' during its initialization is never read}} // expected-warning{{unused variable 'x8'}} // expected-warning{{unused variable 'x7'}}
- int x9 = getInt(), x10 = 0; //expected-warning {{Value stored to 'x9' during its initialization is never read}} // expected-warning{{unused variable 'x9'}} // expected-warning{{unused variable 'x10'}}
- int m = getInt(), mm, mmm; //expected-warning {{Value stored to 'm' during its initialization is never read}} // expected-warning{{unused variable 'm'}} // expected-warning{{unused variable 'mm'}} // expected-warning{{unused variable 'mmm'}}
- int n, nn = getInt(); //expected-warning {{Value stored to 'nn' during its initialization is never read}} // expected-warning{{unused variable 'n'}} // expected-warning{{unused variable 'nn'}}
-
- int *p;
- p = (getPtr(), (int *)0); // no warning
-
-}
-
-void testVolatile() {
- volatile int v;
- v = 0; // no warning
-}
diff --git a/test/Analysis/dead-stores.cpp b/test/Analysis/dead-stores.cpp
deleted file mode 100644
index d926ccf5ecf6..000000000000
--- a/test/Analysis/dead-stores.cpp
+++ /dev/null
@@ -1,204 +0,0 @@
-// RUN: %clang_analyze_cc1 -fcxx-exceptions -fexceptions -fblocks -std=c++11 -analyzer-checker=deadcode.DeadStores -verify -Wno-unreachable-code %s
-// RUN: %clang_analyze_cc1 -fcxx-exceptions -fexceptions -fblocks -std=c++11 -analyzer-store=region -analyzer-checker=deadcode.DeadStores -verify -Wno-unreachable-code %s
-
-//===----------------------------------------------------------------------===//
-// Basic dead store checking (but in C++ mode).
-//===----------------------------------------------------------------------===//
-
-int j;
-void test1() {
- int x = 4;
-
- x = x + 1; // expected-warning{{never read}}
-
- switch (j) {
- case 1:
- throw 1;
- (void)x;
- break;
- }
-}
-
-//===----------------------------------------------------------------------===//
-// Dead store checking involving constructors.
-//===----------------------------------------------------------------------===//
-
-class Test2 {
- int &x;
-public:
- Test2(int &y) : x(y) {}
- ~Test2() { ++x; }
-};
-
-int test2(int x) {
- { Test2 a(x); } // no-warning
- return x;
-}
-
-//===----------------------------------------------------------------------===//
-// Dead store checking involving CXXTemporaryExprs
-//===----------------------------------------------------------------------===//
-
-namespace TestTemp {
- template<typename _Tp>
- class pencil {
- public:
- ~pencil() throw() {}
- };
- template<typename _Tp, typename _Number2> struct _Row_base {
- _Row_base(const pencil<_Tp>& x) {}
- };
- template<typename _Tp, typename _Number2 = TestTemp::pencil<_Tp> >
- class row : protected _Row_base<_Tp, _Number2> {
- typedef _Row_base<_Tp, _Number2> _Base;
- typedef _Number2 pencil_type;
- public:
- explicit row(const pencil_type& __a = pencil_type()) : _Base(__a) {}
- };
-}
-
-void test2_b() {
- TestTemp::row<const char*> x; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// Test references.
-//===----------------------------------------------------------------------===//
-
-void test3_a(int x) {
- x = x + 1; // expected-warning{{never read}}
-}
-
-void test3_b(int &x) {
- x = x + 1; // no-warninge
-}
-
-void test3_c(int x) {
- int &y = x;
- // Shows the limitation of dead stores tracking. The write is really
- // dead since the value cannot escape the function.
- ++y; // no-warning
-}
-
-void test3_d(int &x) {
- int &y = x;
- ++y; // no-warning
-}
-
-void test3_e(int &x) {
- int &y = x;
-}
-
-//===----------------------------------------------------------------------===//
-// Dead stores involving 'new'
-//===----------------------------------------------------------------------===//
-
-static void test_new(unsigned n) {
- char **p = new char* [n]; // expected-warning{{never read}}
-}
-
-//===----------------------------------------------------------------------===//
-// Dead stores in namespaces.
-//===----------------------------------------------------------------------===//
-
-namespace foo {
- int test_4(int x) {
- x = 2; // expected-warning{{Value stored to 'x' is never read}}
- x = 2;
- return x;
- }
-}
-
-//===----------------------------------------------------------------------===//
-// Dead stores in with EH code.
-//===----------------------------------------------------------------------===//
-
-void test_5_Aux();
-int test_5() {
- int x = 0;
- try {
- x = 2; // no-warning
- test_5_Aux();
- }
- catch (int z) {
- return x + z;
- }
- return 1;
-}
-
-
-int test_6_aux(unsigned x);
-
-void test_6() {
- unsigned currDestLen = 0; // no-warning
- try {
- while (test_6_aux(currDestLen)) {
- currDestLen += 2; // no-warning
- }
- }
- catch (void *) {}
-}
-
-void test_6b() {
- unsigned currDestLen = 0; // no-warning
- try {
- while (test_6_aux(currDestLen)) {
- currDestLen += 2; // expected-warning {{Value stored to 'currDestLen' is never read}}
- break;
- }
- }
- catch (void *) {}
-}
-
-
-void testCXX11Using() {
- using Int = int;
- Int value;
- value = 1; // expected-warning {{never read}}
-}
-
-//===----------------------------------------------------------------------===//
-// Dead stores in template instantiations (do not warn).
-//===----------------------------------------------------------------------===//
-
-template <bool f> int radar13213575_testit(int i) {
- int x = 5+i; // warning: Value stored to 'x' during its initialization is never read
- int y = 7;
- if (f)
- return x;
- else
- return y;
-}
-
-int radar_13213575() {
- return radar13213575_testit<true>(5) + radar13213575_testit<false>(3);
-}
-
-template <class T>
-void test_block_in_dependent_context(typename T::some_t someArray) {
- ^{
- int i = someArray[0]; // no-warning
- }();
-}
-
-void test_block_in_non_dependent_context(int *someArray) {
- ^{
- int i = someArray[0]; // expected-warning {{Value stored to 'i' during its initialization is never read}}
- }();
-}
-
-
-//===----------------------------------------------------------------------===//
-// Dead store checking involving lambdas.
-//===----------------------------------------------------------------------===//
-
-int basicLambda(int i, int j) {
- i = 5; // no warning
- j = 6; // no warning
- [i] { (void)i; }();
- [&j] { (void)j; }();
- i = 2;
- j = 3;
- return i + j;
-}
-
diff --git a/test/Analysis/dead-stores.m b/test/Analysis/dead-stores.m
deleted file mode 100644
index 9f91f393a116..000000000000
--- a/test/Analysis/dead-stores.m
+++ /dev/null
@@ -1,119 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-checker=deadcode.DeadStores,osx.cocoa.RetainCount -fblocks -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@protocol NSCopying - (id)copyWithZone:(NSZone *)zone; @end
-@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; @end
-@interface NSObject <NSObject> {} @end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-@interface NSValue : NSObject <NSCopying, NSCoding> - (void)getValue:(void *)value; @end
-typedef float CGFloat;
-typedef struct _NSPoint {} NSRange;
-@interface NSValue (NSValueRangeExtensions) + (NSValue *)valueWithRange:(NSRange)range;
-- (BOOL)containsObject:(id)anObject;
-@end
-@class NSURLAuthenticationChallenge;
-@interface NSResponder : NSObject <NSCoding> {} @end
-@class NSArray, NSDictionary, NSString;
-@interface NSObject (NSKeyValueBindingCreation)
-+ (void)exposeBinding:(NSString *)binding;
-- (NSArray *)exposedBindings;
-@end
-extern NSString *NSAlignmentBinding;
-
-// This test case was reported as a false positive due to a bug in the
-// LiveVariables <-> deadcode.DeadStores interplay. We should not flag a warning
-// here. The test case was reported in:
-// http://lists.llvm.org/pipermail/cfe-dev/2008-July/002157.html
-void DeadStoreTest(NSObject *anObject) {
- NSArray *keys;
- if ((keys = [anObject exposedBindings]) && // no-warning
- ([keys containsObject:@"name"] && [keys containsObject:@"icon"])) {}
-}
-
-// This test case was a false positive due to how clang models
-// pointer types and ObjC object pointer types differently. Here
-// we don't warn about a dead store because 'nil' is assigned to
-// an object pointer for the sake of defensive programming.
-void rdar_7631278(NSObject *x) {
- x = ((void*)0);
-}
-
-// This test case issuing a bogus warning for the declaration of 'isExec'
-// because the compound statement for the @synchronized was being visited
-// twice by the LiveVariables analysis.
-BOOL baz_rdar8527823();
-void foo_rdar8527823();
-@interface RDar8527823
-- (void) bar_rbar8527823;
-@end
-@implementation RDar8527823
-- (void) bar_rbar8527823
-{
- @synchronized(self) {
- BOOL isExec = baz_rdar8527823(); // no-warning
- if (isExec) foo_rdar8527823();
- }
-}
-@end
-
-// Don't flag dead stores to assignments to self within a nested assignment.
-@interface Rdar7947686
-- (id) init;
-@end
-
-@interface Rdar7947686_B : Rdar7947686
-- (id) init;
-@end
-
-@implementation Rdar7947686_B
-- (id) init {
- id x = (self = [super init]); // no-warning
- return x;
-}
-@end
-
-// Don't flag dead stores when a variable is captured in a block used
-// by a property access.
-@interface RDar10591355
-@property (assign) int x;
-@end
-
-RDar10591355 *rdar10591355_aux();
-
-void rdar10591355() {
- RDar10591355 *p = rdar10591355_aux();
- ^{ (void) p.x; }();
-}
-
-@interface Radar11059352_1 {
-@private
- int *_pathString;
-}
-@property int *pathString;
-@end
-@interface Radar11059352 {
-@private
-Radar11059352_1 *_Path;
-}
-@end
-@implementation Radar11059352
-
-- (int*)usePath {
- Radar11059352_1 *xxxxx = _Path; // no warning
- int *wp = xxxxx.pathString;
- return wp;
-}
-@end
-
-id test_objc_precise_lifetime_foo();
-void test_objc_precise_lifetime() {
- __attribute__((objc_precise_lifetime)) id dead = test_objc_precise_lifetime_foo(); // no-warning
- dead = 0;
- dead = test_objc_precise_lifetime_foo(); // no-warning
- dead = 0;
-}
diff --git a/test/Analysis/debug-CallGraph.cpp b/test/Analysis/debug-CallGraph.cpp
deleted file mode 100644
index 1d6844fad94f..000000000000
--- a/test/Analysis/debug-CallGraph.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCallGraph %s -fblocks 2>&1 | FileCheck %s
-
-int get5() {
- return 5;
-}
-
-int add(int val1, int val2) {
- return val1 + val2;
-}
-
-int test_add() {
- return add(10, get5());
-}
-
-static void mmm(int y) {
- if (y != 0)
- y++;
- y = y/y;
-}
-
-static int foo(int x, int y) {
- mmm(y);
- if (x != 0)
- x++;
- return 5/x;
-}
-
-void aaa() {
- foo(1,2);
-}
-
-void bbb(int y) {
- int x = (y > 2);
- ^ {
- foo(x, y);
- }();
-}
-void ccc();
-void ddd() { ccc(); }
-void ccc() {}
-
-void eee();
-void eee() {}
-void fff() { eee(); }
-
-// This test case tests that forward declaration for the top-level function
-// does not affect call graph construction.
-void do_nothing() {}
-void test_single_call();
-void test_single_call() {
- do_nothing();
-}
-
-namespace SomeNS {
-template<typename T>
-void templ(T t) {
- ccc();
-}
-
-template<>
-void templ<double>(double t) {
- eee();
-}
-
-void templUser() {
- templ(5);
- templ(5.5);
-}
-}
-
-// CHECK:--- Call graph Dump ---
-// CHECK-NEXT: {{Function: < root > calls: get5 add test_add mmm foo aaa < > bbb ddd ccc eee fff do_nothing test_single_call SomeNS::templ SomeNS::templ SomeNS::templUser $}}
-// CHECK-NEXT: {{Function: SomeNS::templUser calls: SomeNS::templ SomeNS::templ $}}
-// CHECK-NEXT: {{Function: SomeNS::templ calls: eee $}}
-// CHECK-NEXT: {{Function: SomeNS::templ calls: ccc $}}
-// CHECK-NEXT: {{Function: test_single_call calls: do_nothing $}}
-// CHECK-NEXT: {{Function: do_nothing calls: $}}
-// CHECK-NEXT: {{Function: fff calls: eee $}}
-// CHECK-NEXT: {{Function: eee calls: $}}
-// CHECK-NEXT: {{Function: ddd calls: ccc $}}
-// CHECK-NEXT: {{Function: ccc calls: $}}
-// CHECK-NEXT: {{Function: bbb calls: < > $}}
-// CHECK-NEXT: {{Function: < > calls: foo $}}
-// CHECK-NEXT: {{Function: aaa calls: foo $}}
-// CHECK-NEXT: {{Function: foo calls: mmm $}}
-// CHECK-NEXT: {{Function: mmm calls: $}}
-// CHECK-NEXT: {{Function: test_add calls: add get5 $}}
-// CHECK-NEXT: {{Function: add calls: $}}
-// CHECK-NEXT: {{Function: get5 calls: $}}
diff --git a/test/Analysis/default-analyze.m b/test/Analysis/default-analyze.m
deleted file mode 100644
index e2f7297884d7..000000000000
--- a/test/Analysis/default-analyze.m
+++ /dev/null
@@ -1,63 +0,0 @@
-// RUN: %clang_analyze_cc1 %s -o %t
-
-// Tests that some specific checkers are enabled by default.
-
-id foo(int x) {
- id title;
- switch (x) {
- case 1:
- title = @"foo"; // expected-warning {{never read}}
- case 2:
- title = @"bar";
- break;
- default:
- title = @"baz";
- break;
- }
- return title;
-}
-
-// <rdar://problem/8808566> Static analyzer is wrong: NSWidth(imgRect) not understood as unconditional assignment
-//
-// Note: this requires inlining support. This previously issued a false positive use of
-// uninitialized value when calling NSWidth.
-typedef double CGFloat;
-
-struct CGPoint {
- CGFloat x;
- CGFloat y;
-};
-typedef struct CGPoint CGPoint;
-
-struct CGSize {
- CGFloat width;
- CGFloat height;
-};
-typedef struct CGSize CGSize;
-
-struct CGRect {
- CGPoint origin;
- CGSize size;
-};
-typedef struct CGRect CGRect;
-
-typedef CGRect NSRect;
-typedef CGSize NSSize;
-
-static __inline__ __attribute__((always_inline)) CGFloat NSWidth(NSRect aRect) {
- return (aRect.size.width);
-}
-
-static __inline__ __attribute__((always_inline)) CGFloat NSHeight(NSRect aRect) {
- return (aRect.size.height);
-}
-
-NSSize rdar880566_size();
-
-double rdar8808566() {
- NSRect myRect;
- myRect.size = rdar880566_size();
- double x = NSWidth(myRect) + NSHeight(myRect); // no-warning
- return x;
-}
-
diff --git a/test/Analysis/default-diagnostic-visitors.c b/test/Analysis/default-diagnostic-visitors.c
deleted file mode 100644
index c8f64bc6d7f4..000000000000
--- a/test/Analysis/default-diagnostic-visitors.c
+++ /dev/null
@@ -1,13 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core -analyzer-store=region -analyzer-output=text -verify %s
-
-// This file is for testing enhanced diagnostics produced by the default BugReporterVisitors.
-
-int getPasswordAndItem()
-{
- int err = 0;
- int *password; // expected-note {{'password' declared without an initial value}}
- if (password == 0) { // expected-warning {{The left operand of '==' is a garbage value}} // expected-note {{The left operand of '==' is a garbage value}}
- err = *password;
- }
- return err;
-}
diff --git a/test/Analysis/delayed-template-parsing-crash.cpp b/test/Analysis/delayed-template-parsing-crash.cpp
deleted file mode 100644
index 6d189afb455a..000000000000
--- a/test/Analysis/delayed-template-parsing-crash.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -std=c++11 -fdelayed-template-parsing -verify %s
-// expected-no-diagnostics
-
-template <class T> struct remove_reference {typedef T type;};
-template <class T> struct remove_reference<T&> {typedef T type;};
-template <class T> struct remove_reference<T&&> {typedef T type;};
-
-template <typename T>
-typename remove_reference<T>::type&& move(T&& arg) { // this used to crash
- return static_cast<typename remove_reference<T>::type&&>(arg);
-}
diff --git a/test/Analysis/delegates.m b/test/Analysis/delegates.m
deleted file mode 100644
index 23028054517e..000000000000
--- a/test/Analysis/delegates.m
+++ /dev/null
@@ -1,131 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -Wno-objc-root-class -verify %s
-// expected-no-diagnostics
-
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from
-// Foundation.h (Mac OS X).
-//
-// It includes the basic definitions for the test cases below.
-// Not directly including Foundation.h directly makes this test case
-// both svelte and portable to non-Mac platforms.
-//===----------------------------------------------------------------------===//
-
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-void CFRelease(CFTypeRef cf);
-typedef const struct __CFDictionary * CFDictionaryRef;
-const void *CFDictionaryGetValue(CFDictionaryRef theDict, const void *key);
-extern CFStringRef CFStringCreateWithFormat(CFAllocatorRef alloc, CFDictionaryRef formatOptions, CFStringRef format, ...);
-typedef signed char BOOL;
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
-typedef struct objc_selector *SEL;
-@class NSString, Protocol;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-typedef NSInteger NSComparisonResult;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (oneway void)release;
-- (Class)class;
-- (id)retain;
-@end
-@protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
-@end
-@protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
-@end
-@protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
-+ (Class)class;
-- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;
-@end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-typedef struct {} NSFastEnumerationState;
-@protocol NSFastEnumeration
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
-@end
-@class NSString;
-typedef struct _NSRange {} NSRange;
-@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
-@end
-@interface NSMutableArray : NSArray
-- (void)addObject:(id)anObject;
-- (id)initWithCapacity:(NSUInteger)numItems;
-@end
-typedef unsigned short unichar;
-@class NSData, NSArray, NSDictionary, NSCharacterSet, NSData, NSURL, NSError, NSLocale;
-typedef NSUInteger NSStringCompareOptions;
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding> - (NSUInteger)length;
-- (NSComparisonResult)compare:(NSString *)string;
-- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;
-- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange;
-- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange locale:(id)locale;
-- (NSComparisonResult)caseInsensitiveCompare:(NSString *)string;
-- (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator;
-@end
-@interface NSSimpleCString : NSString {} @end
-@interface NSConstantString : NSSimpleCString @end
-extern void *_NSConstantStringClassReference;
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-// <rdar://problem/6062730>
-// The analyzer doesn't perform any inter-procedural analysis, so delegates
-// involving [NSObject performSelector...] tend to lead to false positives.
-// For now the analyzer just stops tracking the reference count of the
-// receiver until we have better support for delegates.
-
-@interface test_6062730 : NSObject
-+ (void)postNotification:(NSString *)str;
-- (void)foo;
-- (void)bar;
-@end
-
-@implementation test_6062730
-- (void) foo {
- NSString *str = [[NSString alloc] init]; // no-warning
- [test_6062730 performSelectorOnMainThread:@selector(postNotification:) withObject:str waitUntilDone:1];
-}
-
-- (void) bar {
- NSString *str = [[NSString alloc] init]; // no-warning
- [[self class] performSelectorOnMainThread:@selector(postNotification:) withObject:str waitUntilDone:1];
-}
-
-+ (void) postNotification:(NSString *)str {
- [str release]; // no-warning
-}
-@end
-
-
-@interface ObjectThatRequiresDelegate : NSObject
-- (id)initWithDelegate:(id)delegate;
-- (id)initWithNumber:(int)num delegate:(id)delegate;
-@end
-
-
-@interface DelegateRequirerTest
-@end
-@implementation DelegateRequirerTest
-
-- (void)test {
- (void)[[ObjectThatRequiresDelegate alloc] initWithDelegate:self];
- (void)[[ObjectThatRequiresDelegate alloc] initWithNumber:0 delegate:self];
- // no leak warnings -- these objects could be released in callback methods
-}
-
-@end
diff --git a/test/Analysis/derived-to-base.cpp b/test/Analysis/derived-to-base.cpp
deleted file mode 100644
index b9851fd3e404..000000000000
--- a/test/Analysis/derived-to-base.cpp
+++ /dev/null
@@ -1,477 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -DCONSTRUCTORS=1 -analyzer-config c++-inlining=constructors -verify %s
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_checkInlined(bool);
-
-class A {
-protected:
- int x;
-};
-
-class B : public A {
-public:
- void f();
-};
-
-void B::f() {
- x = 3;
-}
-
-
-class C : public B {
-public:
- void g() {
- // This used to crash because we are upcasting through two bases.
- x = 5;
- }
-};
-
-
-namespace VirtualBaseClasses {
- class A {
- protected:
- int x;
- };
-
- class B : public virtual A {
- public:
- int getX() { return x; }
- };
-
- class C : public virtual A {
- public:
- void setX() { x = 42; }
- };
-
- class D : public B, public C {};
- class DV : virtual public B, public C {};
- class DV2 : public B, virtual public C {};
-
- void test() {
- D d;
- d.setX();
- clang_analyzer_eval(d.getX() == 42); // expected-warning{{TRUE}}
-
- DV dv;
- dv.setX();
- clang_analyzer_eval(dv.getX() == 42); // expected-warning{{TRUE}}
-
- DV2 dv2;
- dv2.setX();
- clang_analyzer_eval(dv2.getX() == 42); // expected-warning{{TRUE}}
- }
-
-
- // Make sure we're consistent about the offset of the A subobject within an
- // Intermediate virtual base class.
- class Padding1 { int unused; };
- class Padding2 { int unused; };
- class Intermediate : public Padding1, public A, public Padding2 {};
-
- class BI : public virtual Intermediate {
- public:
- int getX() { return x; }
- };
-
- class CI : public virtual Intermediate {
- public:
- void setX() { x = 42; }
- };
-
- class DI : public BI, public CI {};
-
- void testIntermediate() {
- DI d;
- d.setX();
- clang_analyzer_eval(d.getX() == 42); // expected-warning{{TRUE}}
- }
-}
-
-
-namespace DynamicVirtualUpcast {
- class A {
- public:
- virtual ~A();
- };
-
- class B : virtual public A {};
- class C : virtual public B {};
- class D : virtual public C {};
-
- bool testCast(A *a) {
- return dynamic_cast<B*>(a) && dynamic_cast<C*>(a);
- }
-
- void test() {
- D d;
- clang_analyzer_eval(testCast(&d)); // expected-warning{{TRUE}}
- }
-}
-
-namespace DynamicMultipleInheritanceUpcast {
- class B {
- public:
- virtual ~B();
- };
- class C {
- public:
- virtual ~C();
- };
- class D : public B, public C {};
-
- bool testCast(B *a) {
- return dynamic_cast<C*>(a);
- }
-
- void test() {
- D d;
- clang_analyzer_eval(testCast(&d)); // expected-warning{{TRUE}}
- }
-
-
- class DV : virtual public B, virtual public C {};
-
- void testVirtual() {
- DV d;
- clang_analyzer_eval(testCast(&d)); // expected-warning{{TRUE}}
- }
-}
-
-namespace LazyBindings {
- struct Base {
- int x;
- };
-
- struct Derived : public Base {
- int y;
- };
-
- struct DoubleDerived : public Derived {
- int z;
- };
-
- int getX(const Base &obj) {
- return obj.x;
- }
-
- int getY(const Derived &obj) {
- return obj.y;
- }
-
- void testDerived() {
- Derived d;
- d.x = 1;
- d.y = 2;
- clang_analyzer_eval(getX(d) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(getY(d) == 2); // expected-warning{{TRUE}}
-
- Base b(d);
- clang_analyzer_eval(getX(b) == 1); // expected-warning{{TRUE}}
-
- Derived d2(d);
- clang_analyzer_eval(getX(d2) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(getY(d2) == 2); // expected-warning{{TRUE}}
- }
-
- void testDoubleDerived() {
- DoubleDerived d;
- d.x = 1;
- d.y = 2;
- clang_analyzer_eval(getX(d) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(getY(d) == 2); // expected-warning{{TRUE}}
-
- Base b(d);
- clang_analyzer_eval(getX(b) == 1); // expected-warning{{TRUE}}
-
- Derived d2(d);
- clang_analyzer_eval(getX(d2) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(getY(d2) == 2); // expected-warning{{TRUE}}
-
- DoubleDerived d3(d);
- clang_analyzer_eval(getX(d3) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(getY(d3) == 2); // expected-warning{{TRUE}}
- }
-
- namespace WithOffset {
- struct Offset {
- int padding;
- };
-
- struct OffsetDerived : private Offset, public Base {
- int y;
- };
-
- struct DoubleOffsetDerived : public OffsetDerived {
- int z;
- };
-
- int getY(const OffsetDerived &obj) {
- return obj.y;
- }
-
- void testDerived() {
- OffsetDerived d;
- d.x = 1;
- d.y = 2;
- clang_analyzer_eval(getX(d) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(getY(d) == 2); // expected-warning{{TRUE}}
-
- Base b(d);
- clang_analyzer_eval(getX(b) == 1); // expected-warning{{TRUE}}
-
- OffsetDerived d2(d);
- clang_analyzer_eval(getX(d2) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(getY(d2) == 2); // expected-warning{{TRUE}}
- }
-
- void testDoubleDerived() {
- DoubleOffsetDerived d;
- d.x = 1;
- d.y = 2;
- clang_analyzer_eval(getX(d) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(getY(d) == 2); // expected-warning{{TRUE}}
-
- Base b(d);
- clang_analyzer_eval(getX(b) == 1); // expected-warning{{TRUE}}
-
- OffsetDerived d2(d);
- clang_analyzer_eval(getX(d2) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(getY(d2) == 2); // expected-warning{{TRUE}}
-
- DoubleOffsetDerived d3(d);
- clang_analyzer_eval(getX(d3) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(getY(d3) == 2); // expected-warning{{TRUE}}
- }
- }
-
- namespace WithVTable {
- struct DerivedVTBL : public Base {
- int y;
- virtual void method();
- };
-
- struct DoubleDerivedVTBL : public DerivedVTBL {
- int z;
- };
-
- int getY(const DerivedVTBL &obj) {
- return obj.y;
- }
-
- int getZ(const DoubleDerivedVTBL &obj) {
- return obj.z;
- }
-
- void testDerived() {
- DerivedVTBL d;
- d.x = 1;
- d.y = 2;
- clang_analyzer_eval(getX(d) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(getY(d) == 2); // expected-warning{{TRUE}}
-
- Base b(d);
- clang_analyzer_eval(getX(b) == 1); // expected-warning{{TRUE}}
-
-#if CONSTRUCTORS
- DerivedVTBL d2(d);
- clang_analyzer_eval(getX(d2) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(getY(d2) == 2); // expected-warning{{TRUE}}
-#endif
- }
-
-#if CONSTRUCTORS
- void testDoubleDerived() {
- DoubleDerivedVTBL d;
- d.x = 1;
- d.y = 2;
- d.z = 3;
- clang_analyzer_eval(getX(d) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(getY(d) == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(getZ(d) == 3); // expected-warning{{TRUE}}
-
- Base b(d);
- clang_analyzer_eval(getX(b) == 1); // expected-warning{{TRUE}}
-
- DerivedVTBL d2(d);
- clang_analyzer_eval(getX(d2) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(getY(d2) == 2); // expected-warning{{TRUE}}
-
- DoubleDerivedVTBL d3(d);
- clang_analyzer_eval(getX(d3) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(getY(d3) == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(getZ(d3) == 3); // expected-warning{{TRUE}}
- }
-#endif
- }
-
-#if CONSTRUCTORS
- namespace Nested {
- struct NonTrivialCopy {
- int padding;
- NonTrivialCopy() {}
- NonTrivialCopy(const NonTrivialCopy &) {}
- };
-
- struct FullyDerived : private NonTrivialCopy, public Derived {
- int z;
- };
-
- struct Wrapper {
- FullyDerived d;
- int zz;
-
- Wrapper(const FullyDerived &d) : d(d), zz(0) {}
- };
-
- void test5() {
- Wrapper w((FullyDerived()));
- w.d.x = 1;
-
- Wrapper w2(w);
- clang_analyzer_eval(getX(w2.d) == 1); // expected-warning{{TRUE}}
- }
- }
-#endif
-}
-
-namespace Redeclaration {
- class Base;
-
- class Base {
- public:
- virtual int foo();
- int get() { return value; }
-
- int value;
- };
-
- class Derived : public Base {
- public:
- virtual int bar();
- };
-
- void test(Derived d) {
- d.foo(); // don't crash
- d.bar(); // sanity check
-
- Base &b = d;
- b.foo(); // don't crash
-
- d.value = 42; // don't crash
- clang_analyzer_eval(d.get() == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(b.get() == 42); // expected-warning{{TRUE}}
- }
-};
-
-namespace PR15394 {
- namespace Original {
- class Base {
- public:
- virtual int f() = 0;
- int i;
- };
-
- class Derived1 : public Base {
- public:
- int j;
- };
-
- class Derived2 : public Derived1 {
- public:
- virtual int f() {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- return i + j;
- }
- };
-
- void testXXX() {
- Derived1 *d1p = reinterpret_cast<Derived1*>(new Derived2);
- d1p->i = 1;
- d1p->j = 2;
- clang_analyzer_eval(d1p->f() == 3); // expected-warning{{TRUE}}
- }
- }
-
- namespace VirtualInDerived {
- class Base {
- public:
- int i;
- };
-
- class Derived1 : public Base {
- public:
- virtual int f() = 0;
- int j;
- };
-
- class Derived2 : public Derived1 {
- public:
- virtual int f() {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- return i + j;
- }
- };
-
- void test() {
- Derived1 *d1p = reinterpret_cast<Derived1*>(new Derived2);
- d1p->i = 1;
- d1p->j = 2;
- clang_analyzer_eval(d1p->f() == 3); // expected-warning{{TRUE}}
- }
- }
-
- namespace NoCast {
- class Base {
- public:
- int i;
- };
-
- class Derived1 : public Base {
- public:
- virtual int f() = 0;
- int j;
- };
-
- class Derived2 : public Derived1 {
- public:
- virtual int f() {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- return i + j;
- }
- };
-
- void test() {
- Derived1 *d1p = new Derived2;
- d1p->i = 1;
- d1p->j = 2;
- clang_analyzer_eval(d1p->f() == 3); // expected-warning{{TRUE}}
- }
- }
-};
-
-namespace Bug16309 {
- struct Incomplete;
-
- struct Base { virtual ~Base(); };
-
- struct Derived : public Base { int x; };
-
- void* f(Incomplete *i) {
- Base *b = reinterpret_cast<Base *>(i);
- // This used to crash because of the reinterpret_cast above.
- Derived *d = dynamic_cast<Derived *>(b);
- return d;
- }
-
- // And check that reinterpret+dynamic casts work correctly after the fix.
- void g() {
- Derived d;
- d.x = 47;
- Base *b = &d;
- Incomplete *i = reinterpret_cast<Incomplete *>(b);
- Base *b2 = reinterpret_cast<Base *>(i);
- Derived *d2 = dynamic_cast<Derived *>(b2);
- clang_analyzer_eval(d2->x == 47); // expected-warning{{TRUE}}
- }
-}
diff --git a/test/Analysis/designated-initializer.c b/test/Analysis/designated-initializer.c
deleted file mode 100644
index 920b2f08d7e7..000000000000
--- a/test/Analysis/designated-initializer.c
+++ /dev/null
@@ -1,41 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG %s 2>&1 \
-// RUN: | FileCheck %s
-
-struct Q { int a, b, c; };
-union UQ { struct Q q; };
-union UQ getUQ() {
- union UQ u = { { 1, 2, 3 } };
- return u;
-}
-
-void test() {
- struct LUQ { union UQ uq; } var = { getUQ(), .uq.q.a = 100 };
- struct Q s[] = {
- [0] = (struct Q){1, 2},
- [0].c = 3
- };
-}
-
-// CHECK: void test()
-// CHECK: [B1]
-// CHECK: 1: getUQ
-// CHECK: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, union UQ (*)())
-// CHECK: 3: [B1.2]()
-// CHECK: 4: 100
-// CHECK: 5: /*no init*/
-// CHECK: 6: /*no init*/
-// CHECK: 7: {[B1.4], [B1.5], [B1.6]}
-// CHECK: 8: {[B1.7]}
-// CHECK: 9: {/*base*/[B1.3], /*updater*/[B1.8]}
-// CHECK: 10: {[B1.3], .uq.q.a = [B1.4]}
-// CHECK: 11: struct LUQ var = {getUQ(), .uq.q.a = 100};
-// CHECK: 12: 1
-// CHECK: 13: 2
-// CHECK: 14: /*implicit*/(int)0
-// CHECK: 15: {[B1.12], [B1.13]}
-// CHECK: 18: /*no init*/
-// CHECK: 19: /*no init*/
-// CHECK: 20: 3
-// CHECK: 21: {[B1.18], [B1.19], [B1.20]}
-// CHECK: 22: {/*base*/[B1.17], /*updater*/[B1.21]}
-// CHECK: 24: struct Q s[] = {[0] = (struct Q){1, 2}, [0].c = 3};
diff --git a/test/Analysis/diagnostics/Inputs/expected-plists/deref-track-symbolic-region.c.plist b/test/Analysis/diagnostics/Inputs/expected-plists/deref-track-symbolic-region.c.plist
deleted file mode 100644
index 35b14fba4c89..000000000000
--- a/test/Analysis/diagnostics/Inputs/expected-plists/deref-track-symbolic-region.c.plist
+++ /dev/null
@@ -1,657 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value assigned to &apos;syz.x&apos;</string>
- <key>message</key>
- <string>Value assigned to &apos;syz.x&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming pointer value is null</string>
- <key>message</key>
- <string>Assuming pointer value is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>17</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from field &apos;x&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from field &apos;x&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from field &apos;x&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5cafa075eb4d5b0bf1f228608a3ec87e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test</string>
- <key>issue_hash_function_offset</key><string>11</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>12</integer>
- <integer>13</integer>
- <integer>14</integer>
- <integer>16</integer>
- <integer>17</integer>
- <integer>23</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value assigned to &apos;syz.x&apos;</string>
- <key>message</key>
- <string>Value assigned to &apos;syz.x&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming pointer value is null</string>
- <key>message</key>
- <string>Assuming pointer value is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a213f858dacf7993492e6b32080aaa64</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testTrackConstraintBRVisitorIsTrackingTurnedOn</string>
- <key>issue_hash_function_offset</key><string>11</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>27</integer>
- <integer>28</integer>
- <integer>29</integer>
- <integer>31</integer>
- <integer>32</integer>
- <integer>37</integer>
- <integer>38</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/diagnostics/deref-track-symbolic-region.c</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/diagnostics/Inputs/expected-plists/plist-diagnostics-include-check.cpp.plist b/test/Analysis/diagnostics/Inputs/expected-plists/plist-diagnostics-include-check.cpp.plist
deleted file mode 100644
index 802534d0c165..000000000000
--- a/test/Analysis/diagnostics/Inputs/expected-plists/plist-diagnostics-include-check.cpp.plist
+++ /dev/null
@@ -1,147 +0,0 @@
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>1</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>2</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;PlistCheckMacro::run&apos;</string>
- <key>message</key>
- <string>Calling &apos;PlistCheckMacro::run&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;foo&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;foo&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>REACHABLE</string>
- <key>message</key>
- <string>REACHABLE</string>
- </dict>
- </array>
- <key>description</key><string>REACHABLE</string>
- <key>category</key><string>debug</string>
- <key>type</key><string>Checking analyzer assumptions</string>
- <key>check_name</key><string>debug.ExprInspection</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>93b4eab05b21c892c8e31723e5af3f59</string>
- <key>issue_context_kind</key><string>C++ method</string>
- <key>issue_context</key><string>run</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>6</integer>
- <integer>7</integer>
- </array>
- <key>1</key>
- <array>
- <integer>5</integer>
- <integer>6</integer>
- <integer>7</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/diagnostics/plist-diagnostics-include-check.cpp</string>
- <string>/clang/test/Analysis/diagnostics/Inputs/include/plist-diagnostics-include-check-macro.h</string>
- <string>/clang/test/Analysis/diagnostics/Inputs/include/plist-diagnostics-include-check-macro.def</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/diagnostics/Inputs/expected-plists/plist-multi-file.c.plist b/test/Analysis/diagnostics/Inputs/expected-plists/plist-multi-file.c.plist
deleted file mode 100644
index 86c203245d4e..000000000000
--- a/test/Analysis/diagnostics/Inputs/expected-plists/plist-multi-file.c.plist
+++ /dev/null
@@ -1,212 +0,0 @@
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Passing null pointer value via 1st parameter &apos;ptr&apos;</string>
- <key>message</key>
- <string>Passing null pointer value via 1st parameter &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;foo&apos;</string>
- <key>message</key>
- <string>Calling &apos;foo&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>1</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;bar&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;bar&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>1</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>1</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>2</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>2</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>2</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>2</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>2</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>2</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>2</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2058c95994cab381890af28e7bf354bf</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>foo</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>2</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>HTMLDiagnostics_files</key>
- <array>
- <string>report-288847.html</string>
- </array>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>6</integer>
- <integer>7</integer>
- </array>
- <key>1</key>
- <array>
- <integer>1</integer>
- <integer>2</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/diagnostics/plist-multi-file.c</string>
- <string>/clang/test/Analysis/diagnostics/plist-multi-file.h</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/diagnostics/Inputs/expected-plists/report-issues-within-main-file.cpp.plist b/test/Analysis/diagnostics/Inputs/expected-plists/report-issues-within-main-file.cpp.plist
deleted file mode 100644
index e0959e719a74..000000000000
--- a/test/Analysis/diagnostics/Inputs/expected-plists/report-issues-within-main-file.cpp.plist
+++ /dev/null
@@ -1,1835 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;cause_div_by_zero_in_header2&apos;</string>
- <key>message</key>
- <string>Calling &apos;cause_div_by_zero_in_header2&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;callInMacro&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;callInMacro&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>&apos;h2&apos; initialized to 0</string>
- <key>message</key>
- <string>&apos;h2&apos; initialized to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>81ef0773d42c0309a03a9a11048f497e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>cause_div_by_zero_in_header2</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>48</integer>
- <integer>49</integer>
- <integer>50</integer>
- <integer>51</integer>
- </array>
- <key>1</key>
- <array>
- <integer>21</integer>
- <integer>22</integer>
- <integer>23</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;callInMacro3&apos;</string>
- <key>message</key>
- <string>Calling &apos;callInMacro3&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;callCallInMacro3&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;callCallInMacro3&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>55</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling &apos;cause_div_by_zero_in_header3&apos;</string>
- <key>message</key>
- <string>Calling &apos;cause_div_by_zero_in_header3&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;callInMacro3&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;callInMacro3&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>&apos;h3&apos; initialized to 0</string>
- <key>message</key>
- <string>&apos;h3&apos; initialized to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a4f425d2b2715e682b08a754fc88d2c8</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>cause_div_by_zero_in_header3</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>55</integer>
- <integer>56</integer>
- <integer>57</integer>
- <integer>58</integer>
- <integer>62</integer>
- <integer>63</integer>
- </array>
- <key>1</key>
- <array>
- <integer>29</integer>
- <integer>30</integer>
- <integer>31</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>69</integer>
- <key>col</key><integer>51</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;cause_div_by_zero_in_header4&apos;</string>
- <key>message</key>
- <string>Calling &apos;cause_div_by_zero_in_header4&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;callInMacroArg&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;callInMacroArg&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>37</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>&apos;h4&apos; initialized to 0</string>
- <key>message</key>
- <string>&apos;h4&apos; initialized to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>38</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>35f2ebe7ff6b3b34233a5465a6eaf661</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>cause_div_by_zero_in_header4</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>66</integer>
- <integer>67</integer>
- <integer>68</integer>
- <integer>69</integer>
- </array>
- <key>1</key>
- <array>
- <integer>37</integer>
- <integer>38</integer>
- <integer>39</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Memory is allocated</string>
- <key>message</key>
- <string>Memory is allocated</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>key_event</key><true/>
- <key>location</key>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;~auto_ptr&apos;</string>
- <key>message</key>
- <string>Calling &apos;~auto_ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;mainPlusHeader&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;mainPlusHeader&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Memory allocated by &apos;new[]&apos; should be deallocated by &apos;delete[]&apos;, not &apos;delete&apos;</string>
- <key>message</key>
- <string>Memory allocated by &apos;new[]&apos; should be deallocated by &apos;delete[]&apos;, not &apos;delete&apos;</string>
- </dict>
- </array>
- <key>description</key><string>Memory allocated by &apos;new[]&apos; should be deallocated by &apos;delete[]&apos;, not &apos;delete&apos; (within a call to &apos;~auto_ptr&apos;)</string>
- <key>category</key><string>Memory error</string>
- <key>type</key><string>Bad deallocator</string>
- <key>check_name</key><string>unix.MismatchedDeallocator</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f689fbd54138491e228f0f89bb02bfb2</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>mainPlusHeader</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>5</integer>
- <integer>6</integer>
- <integer>7</integer>
- </array>
- <key>1</key>
- <array>
- <integer>6</integer>
- <integer>7</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>16</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>18</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;auxInMain&apos;</string>
- <key>message</key>
- <string>Calling &apos;auxInMain&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;mainPlusMainPlusHeader&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;mainPlusMainPlusHeader&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>key_event</key><true/>
- <key>location</key>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling &apos;cause_div_by_zero_in_header&apos;</string>
- <key>message</key>
- <string>Calling &apos;cause_div_by_zero_in_header&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;auxInMain&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;auxInMain&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>&apos;h&apos; initialized to 0</string>
- <key>message</key>
- <string>&apos;h&apos; initialized to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>1</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>1</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero (within a call to &apos;cause_div_by_zero_in_header&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>dceba279187ce4f6514f4a4c43a51063</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>auxInMain</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>9</integer>
- <integer>10</integer>
- <integer>11</integer>
- <integer>12</integer>
- <integer>15</integer>
- <integer>16</integer>
- <integer>17</integer>
- <integer>18</integer>
- </array>
- <key>1</key>
- <array>
- <integer>10</integer>
- <integer>11</integer>
- <integer>12</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;causeDivByZeroInMain&apos;</string>
- <key>message</key>
- <string>Calling &apos;causeDivByZeroInMain&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;mainPlusMain&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;mainPlusMain&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>&apos;m&apos; initialized to 0</string>
- <key>message</key>
- <string>&apos;m&apos; initialized to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d0d513aa4710781c2b56c44226354403</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>causeDivByZeroInMain</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>22</integer>
- <integer>23</integer>
- <integer>24</integer>
- <integer>27</integer>
- <integer>28</integer>
- <integer>29</integer>
- <integer>30</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;causeDivByZeroInMain2&apos;</string>
- <key>message</key>
- <string>Calling &apos;causeDivByZeroInMain2&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;mainPlustHeaderCallAndReturnPlusMain&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;mainPlustHeaderCallAndReturnPlusMain&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>&apos;m2&apos; initialized to 0</string>
- <key>message</key>
- <string>&apos;m2&apos; initialized to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>577ddcf4482f18dec120e21890ed234a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>causeDivByZeroInMain2</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>34</integer>
- <integer>35</integer>
- <integer>36</integer>
- <integer>40</integer>
- <integer>41</integer>
- <integer>42</integer>
- <integer>43</integer>
- <integer>44</integer>
- </array>
- <key>1</key>
- <array>
- <integer>16</integer>
- <integer>17</integer>
- <integer>18</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/diagnostics/report-issues-within-main-file.cpp</string>
- <string>/clang/test/Analysis/diagnostics/Inputs/include/report-issues-within-main-file.h</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/diagnostics/Inputs/expected-plists/undef-value-caller.c.plist b/test/Analysis/diagnostics/Inputs/expected-plists/undef-value-caller.c.plist
deleted file mode 100644
index 867807be846a..000000000000
--- a/test/Analysis/diagnostics/Inputs/expected-plists/undef-value-caller.c.plist
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;x&apos; declared without an initial value</string>
- <key>message</key>
- <string>&apos;x&apos; declared without an initial value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Undefined or garbage value returned to caller</string>
- <key>message</key>
- <string>Undefined or garbage value returned to caller</string>
- </dict>
- </array>
- <key>description</key><string>Undefined or garbage value returned to caller</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Garbage return value</string>
- <key>check_name</key><string>core.uninitialized.UndefReturn</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1ef750c5562c09a467ea54ea4b4de771</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test_calling_unimportant_callee</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>8</integer>
- <integer>9</integer>
- <integer>10</integer>
- <integer>11</integer>
- </array>
- <key>1</key>
- <array>
- <integer>2</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/diagnostics/undef-value-caller.c</string>
- <string>/clang/test/Analysis/diagnostics/undef-value-callee.h</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/diagnostics/Inputs/expected-plists/undef-value-param.c.plist b/test/Analysis/diagnostics/Inputs/expected-plists/undef-value-param.c.plist
deleted file mode 100644
index 5d351624f183..000000000000
--- a/test/Analysis/diagnostics/Inputs/expected-plists/undef-value-param.c.plist
+++ /dev/null
@@ -1,1344 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;xx&apos; declared without an initial value</string>
- <key>message</key>
- <string>&apos;xx&apos; declared without an initial value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>20</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;foo&apos;</string>
- <key>message</key>
- <string>Calling &apos;foo&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;use&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;use&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Assuming &apos;c&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;c&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning without writing to &apos;*x&apos;</string>
- <key>message</key>
- <string>Returning without writing to &apos;*x&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>15</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;foo&apos;</string>
- <key>message</key>
- <string>Returning from &apos;foo&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>22</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>25</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>The left operand of &apos;+&apos; is a garbage value</string>
- <key>message</key>
- <string>The left operand of &apos;+&apos; is a garbage value</string>
- </dict>
- </array>
- <key>description</key><string>The left operand of &apos;+&apos; is a garbage value</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Result of operation is garbage or undefined</string>
- <key>check_name</key><string>core.UndefinedBinaryOperatorResult</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ae5e3bd03d6d97614947942dae18e1da</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>use</string>
- <key>issue_hash_function_offset</key><string>7</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>26</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>5</integer>
- <integer>6</integer>
- <integer>7</integer>
- <integer>11</integer>
- <integer>12</integer>
- <integer>15</integer>
- <integer>19</integer>
- <integer>20</integer>
- <integer>21</integer>
- <integer>22</integer>
- <integer>25</integer>
- <integer>26</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;initArray&apos;</string>
- <key>message</key>
- <string>Calling &apos;initArray&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testPassingParentRegionArray&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testPassingParentRegionArray&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>30</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Assuming &apos;x&apos; is &lt;= 0</string>
- <key>message</key>
- <string>Assuming &apos;x&apos; is &lt;= 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;initArray&apos;</string>
- <key>message</key>
- <string>Returning from &apos;initArray&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>The right operand of &apos;*&apos; is a garbage value</string>
- <key>message</key>
- <string>The right operand of &apos;*&apos; is a garbage value</string>
- </dict>
- </array>
- <key>description</key><string>The right operand of &apos;*&apos; is a garbage value</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Result of operation is garbage or undefined</string>
- <key>check_name</key><string>core.UndefinedBinaryOperatorResult</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>96cf3258da3df14d13cd5c2236c9cb27</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testPassingParentRegionArray</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>42</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>30</integer>
- <integer>31</integer>
- <integer>33</integer>
- <integer>38</integer>
- <integer>39</integer>
- <integer>40</integer>
- <integer>42</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>58</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;st.f1&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;st.f1&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;initStruct&apos;</string>
- <key>message</key>
- <string>Calling &apos;initStruct&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testPassingParentRegionStruct&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testPassingParentRegionStruct&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>50</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Assuming &apos;x&apos; is &lt;= 0</string>
- <key>message</key>
- <string>Assuming &apos;x&apos; is &lt;= 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning without writing to &apos;X-&gt;f1&apos;</string>
- <key>message</key>
- <string>Returning without writing to &apos;X-&gt;f1&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;initStruct&apos;</string>
- <key>message</key>
- <string>Returning from &apos;initStruct&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from field &apos;f1&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from field &apos;f1&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from field &apos;f1&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>299055864402de225b0ab4f2ecd8e76c</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testPassingParentRegionStruct</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>50</integer>
- <integer>51</integer>
- <integer>54</integer>
- <integer>57</integer>
- <integer>58</integer>
- <integer>59</integer>
- <integer>60</integer>
- <integer>62</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/diagnostics/undef-value-param.c</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/diagnostics/Inputs/expected-plists/undef-value-param.m.plist b/test/Analysis/diagnostics/Inputs/expected-plists/undef-value-param.m.plist
deleted file mode 100644
index bc88cf7c546f..000000000000
--- a/test/Analysis/diagnostics/Inputs/expected-plists/undef-value-param.m.plist
+++ /dev/null
@@ -1,1027 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>35</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;CreateRef&apos;</string>
- <key>message</key>
- <string>Calling &apos;CreateRef&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>53</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>54</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Assuming &apos;err&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;err&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>59</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>nil object reference stored to &apos;ref&apos;</string>
- <key>message</key>
- <string>nil object reference stored to &apos;ref&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>nil object reference stored to &apos;storeRef&apos;</string>
- <key>message</key>
- <string>nil object reference stored to &apos;storeRef&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;CreateRef&apos;</string>
- <key>message</key>
- <string>Returning from &apos;CreateRef&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>36</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer argument in call to CFRelease</string>
- <key>message</key>
- <string>Null pointer argument in call to CFRelease</string>
- </dict>
- </array>
- <key>description</key><string>Null pointer argument in call to CFRelease</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>null passed to CF memory management function</string>
- <key>check_name</key><string>osx.coreFoundation.CFRetainRelease</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>102c9a15c089fdc618a4c209bd5560bc</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>test</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>34</integer>
- <integer>35</integer>
- <integer>36</integer>
- <integer>39</integer>
- <integer>53</integer>
- <integer>54</integer>
- <integer>55</integer>
- <integer>56</integer>
- <integer>59</integer>
- <integer>60</integer>
- <integer>62</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;storeRef&apos; declared without an initial value</string>
- <key>message</key>
- <string>&apos;storeRef&apos; declared without an initial value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;CreateRefUndef&apos;</string>
- <key>message</key>
- <string>Calling &apos;CreateRefUndef&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test2&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test2&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>66</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Assuming &apos;err&apos; is not equal to 0</string>
- <key>message</key>
- <string>Assuming &apos;err&apos; is not equal to 0</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>71</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning without writing to &apos;*storeRef&apos;</string>
- <key>message</key>
- <string>Returning without writing to &apos;*storeRef&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>32</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;CreateRefUndef&apos;</string>
- <key>message</key>
- <string>Returning from &apos;CreateRefUndef&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>45</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>1st function call argument is an uninitialized value</string>
- <key>message</key>
- <string>1st function call argument is an uninitialized value</string>
- </dict>
- </array>
- <key>description</key><string>1st function call argument is an uninitialized value</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Uninitialized argument value</string>
- <key>check_name</key><string>core.CallAndMessage</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>fe2bb14813e15196c0180196fc1cce4c</string>
- <key>issue_context_kind</key><string>Objective-C method</string>
- <key>issue_context</key><string>test2</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>48</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>43</integer>
- <integer>44</integer>
- <integer>45</integer>
- <integer>48</integer>
- <integer>65</integer>
- <integer>66</integer>
- <integer>67</integer>
- <integer>68</integer>
- <integer>71</integer>
- <integer>72</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/diagnostics/undef-value-param.m</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-diagnostics-taint-test.c.sarif b/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-diagnostics-taint-test.c.sarif
deleted file mode 100644
index 70efae4574d6..000000000000
--- a/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-diagnostics-taint-test.c.sarif
+++ /dev/null
@@ -1,114 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/sarif-2.0.0-csd.2.beta.2018-11-28",
- "runs": [
- {
- "files": [
- {
- "fileLocation": {
- "uri": "file:sarif-diagnostics-taint-test.c"
- },
- "length": 415,
- "mimeType": "text/plain",
- "roles": [
- "resultFile"
- ]
- }
- ],
- "resources": {
- "rules": [
- {
- "fullDescription": {
- "text": "Mark tainted symbols as such."
- },
- "id": "debug.TaintTest",
- "name": {
- "text": "debug.TaintTest"
- }
- }
- ]
- },
- "results": [
- {
- "codeFlows": [
- {
- "threadFlows": [
- {
- "locations": [
- {
- "importance": "essential",
- "location": {
- "message": {
- "text": "Calling 'f'"
- },
- "physicalLocation": {
- "fileLocation": {
- "fileIndex": 0,
- "uri": "file:sarif-diagnostics-taint-test.c"
- },
- "region": {
- "endColumn": 5,
- "endLine": 13,
- "startColumn": 3,
- "startLine": 13
- }
- }
- }
- },
- {
- "importance": "essential",
- "location": {
- "message": {
- "text": "tainted"
- },
- "physicalLocation": {
- "fileLocation": {
- "fileIndex": 0,
- "uri": "file:sarif-diagnostics-taint-test.c"
- },
- "region": {
- "endColumn": 17,
- "endLine": 9,
- "startColumn": 11,
- "startLine": 9
- }
- }
- }
- }
- ]
- }
- ]
- }
- ],
- "locations": [
- {
- "physicalLocation": {
- "fileLocation": {
- "fileIndex": 0,
- "uri": "file:sarif-diagnostics-taint-test.c"
- },
- "region": {
- "endColumn": 17,
- "endLine": 9,
- "startColumn": 11,
- "startLine": 9
- }
- }
- }
- ],
- "message": {
- "text": "tainted"
- },
- "ruleId": "debug.TaintTest",
- "ruleIndex": 0
- }
- ],
- "tool": {
- "fullName": "clang static analyzer",
- "language": "en-US",
- "name": "clang",
- "version": "clang version 8.0.0"
- }
- }
- ],
- "version": "2.0.0-csd.2.beta.2018-11-28"
-}
diff --git a/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-multi-diagnostic-test.c.sarif b/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-multi-diagnostic-test.c.sarif
deleted file mode 100644
index 8bd8c0adf248..000000000000
--- a/test/Analysis/diagnostics/Inputs/expected-sarif/sarif-multi-diagnostic-test.c.sarif
+++ /dev/null
@@ -1,320 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/sarif-2.0.0-csd.2.beta.2018-11-28",
- "runs": [
- {
- "files": [
- {
- "fileLocation": {
- "uri": "file:sarif-multi-diagnostic-test.c"
- },
- "length": 667,
- "mimeType": "text/plain",
- "roles": [
- "resultFile"
- ]
- }
- ],
- "resources": {
- "rules": [
- {
- "fullDescription": {
- "text": "Mark tainted symbols as such."
- },
- "id": "debug.TaintTest",
- "name": {
- "text": "debug.TaintTest"
- }
- },
- {
- "fullDescription": {
- "text": "Check for logical errors for function calls and Objective-C message expressions (e.g., uninitialized arguments, null function pointers)"
- },
- "helpUri": "https://clang-analyzer.llvm.org/available_checks.html#core.CallAndMessage",
- "id": "core.CallAndMessage",
- "name": {
- "text": "core.CallAndMessage"
- }
- },
- {
- "fullDescription": {
- "text": "Check for division by zero"
- },
- "helpUri": "https://clang-analyzer.llvm.org/available_checks.html#core.DivideZero",
- "id": "core.DivideZero",
- "name": {
- "text": "core.DivideZero"
- }
- }
- ]
- },
- "results": [
- {
- "codeFlows": [
- {
- "threadFlows": [
- {
- "locations": [
- {
- "importance": "essential",
- "location": {
- "message": {
- "text": "Calling 'f'"
- },
- "physicalLocation": {
- "fileLocation": {
- "fileIndex": 0,
- "uri": "file:sarif-multi-diagnostic-test.c"
- },
- "region": {
- "endColumn": 5,
- "endLine": 24,
- "startColumn": 3,
- "startLine": 24
- }
- }
- }
- },
- {
- "importance": "essential",
- "location": {
- "message": {
- "text": "tainted"
- },
- "physicalLocation": {
- "fileLocation": {
- "fileIndex": 0,
- "uri": "file:sarif-multi-diagnostic-test.c"
- },
- "region": {
- "endColumn": 17,
- "endLine": 9,
- "startColumn": 11,
- "startLine": 9
- }
- }
- }
- }
- ]
- }
- ]
- }
- ],
- "locations": [
- {
- "physicalLocation": {
- "fileLocation": {
- "fileIndex": 0,
- "uri": "file:sarif-multi-diagnostic-test.c"
- },
- "region": {
- "endColumn": 17,
- "endLine": 9,
- "startColumn": 11,
- "startLine": 9
- }
- }
- }
- ],
- "message": {
- "text": "tainted"
- },
- "ruleId": "debug.TaintTest",
- "ruleIndex": 0
- },
- {
- "codeFlows": [
- {
- "threadFlows": [
- {
- "locations": [
- {
- "importance": "essential",
- "location": {
- "message": {
- "text": "Calling 'g'"
- },
- "physicalLocation": {
- "fileLocation": {
- "fileIndex": 0,
- "uri": "file:sarif-multi-diagnostic-test.c"
- },
- "region": {
- "endColumn": 5,
- "endLine": 25,
- "startColumn": 3,
- "startLine": 25
- }
- }
- }
- },
- {
- "importance": "essential",
- "location": {
- "message": {
- "text": "'fp' declared without an initial value"
- },
- "physicalLocation": {
- "fileLocation": {
- "fileIndex": 0,
- "uri": "file:sarif-multi-diagnostic-test.c"
- },
- "region": {
- "endColumn": 10,
- "endLine": 13,
- "startColumn": 3,
- "startLine": 13
- }
- }
- }
- },
- {
- "importance": "essential",
- "location": {
- "message": {
- "text": "Called function pointer is an uninitialized pointer value"
- },
- "physicalLocation": {
- "fileLocation": {
- "fileIndex": 0,
- "uri": "file:sarif-multi-diagnostic-test.c"
- },
- "region": {
- "endColumn": 8,
- "endLine": 14,
- "startColumn": 3,
- "startLine": 14
- }
- }
- }
- }
- ]
- }
- ]
- }
- ],
- "locations": [
- {
- "physicalLocation": {
- "fileLocation": {
- "fileIndex": 0,
- "uri": "file:sarif-multi-diagnostic-test.c"
- },
- "region": {
- "endColumn": 8,
- "endLine": 14,
- "startColumn": 3,
- "startLine": 14
- }
- }
- }
- ],
- "message": {
- "text": "Called function pointer is an uninitialized pointer value"
- },
- "ruleId": "core.CallAndMessage",
- "ruleIndex": 1
- },
- {
- "codeFlows": [
- {
- "threadFlows": [
- {
- "locations": [
- {
- "importance": "important",
- "location": {
- "message": {
- "text": "Assuming 'i' is equal to 0"
- },
- "physicalLocation": {
- "fileLocation": {
- "fileIndex": 0,
- "uri": "file:sarif-multi-diagnostic-test.c"
- },
- "region": {
- "endColumn": 12,
- "endLine": 18,
- "startColumn": 7,
- "startLine": 18
- }
- }
- }
- },
- {
- "importance": "unimportant",
- "location": {
- "message": {
- "text": "Taking true branch"
- },
- "physicalLocation": {
- "fileLocation": {
- "fileIndex": 0,
- "uri": "file:sarif-multi-diagnostic-test.c"
- },
- "region": {
- "endColumn": 3,
- "endLine": 18,
- "startColumn": 3,
- "startLine": 18
- }
- }
- }
- },
- {
- "importance": "essential",
- "location": {
- "message": {
- "text": "Division by zero"
- },
- "physicalLocation": {
- "fileLocation": {
- "fileIndex": 0,
- "uri": "file:sarif-multi-diagnostic-test.c"
- },
- "region": {
- "endColumn": 14,
- "endLine": 19,
- "startColumn": 14,
- "startLine": 19
- }
- }
- }
- }
- ]
- }
- ]
- }
- ],
- "locations": [
- {
- "physicalLocation": {
- "fileLocation": {
- "fileIndex": 0,
- "uri": "file:sarif-multi-diagnostic-test.c"
- },
- "region": {
- "endColumn": 14,
- "endLine": 19,
- "startColumn": 14,
- "startLine": 19
- }
- }
- }
- ],
- "message": {
- "text": "Division by zero"
- },
- "ruleId": "core.DivideZero",
- "ruleIndex": 2
- }
- ],
- "tool": {
- "fullName": "clang static analyzer",
- "language": "en-US",
- "name": "clang",
- "version": "clang version 8.0.0 (trunk 345822) (llvm/trunk 345824)"
- }
- }
- ],
- "version": "2.0.0-csd.2.beta.2018-11-28"
-}
diff --git a/test/Analysis/diagnostics/Inputs/include/plist-diagnostics-include-check-macro.def b/test/Analysis/diagnostics/Inputs/include/plist-diagnostics-include-check-macro.def
deleted file mode 100644
index 9bbd9366906e..000000000000
--- a/test/Analysis/diagnostics/Inputs/include/plist-diagnostics-include-check-macro.def
+++ /dev/null
@@ -1 +0,0 @@
-PLIST_DEF_MACRO
diff --git a/test/Analysis/diagnostics/Inputs/include/plist-diagnostics-include-check-macro.h b/test/Analysis/diagnostics/Inputs/include/plist-diagnostics-include-check-macro.h
deleted file mode 100644
index 9ce68ed08d1a..000000000000
--- a/test/Analysis/diagnostics/Inputs/include/plist-diagnostics-include-check-macro.h
+++ /dev/null
@@ -1,9 +0,0 @@
-void clang_analyzer_warnIfReached();
-
-class PlistCheckMacro {
-public:
- PlistCheckMacro () { }
- void run() {
- clang_analyzer_warnIfReached();
- }
-};
diff --git a/test/Analysis/diagnostics/Inputs/include/report-issues-within-main-file.h b/test/Analysis/diagnostics/Inputs/include/report-issues-within-main-file.h
deleted file mode 100644
index 9ecef343f5ee..000000000000
--- a/test/Analysis/diagnostics/Inputs/include/report-issues-within-main-file.h
+++ /dev/null
@@ -1,43 +0,0 @@
-template<typename _Tp>
-class auto_ptr {
-private:
- _Tp* _M_ptr;
-public:
- auto_ptr(_Tp* __p = 0) throw() : _M_ptr(__p) { }
- ~auto_ptr() { delete _M_ptr; }
-};
-
-void cause_div_by_zero_in_header(int in) {
- int h = 0;
- h = in/h;
- h++;
-}
-
-void do_something (int in) {
- in++;
- in++;
-}
-
-void cause_div_by_zero_in_header2(int in) {
- int h2 = 0;
- h2 = in/h2;
- h2++;
-}
-
-# define CALLS_BUGGY_FUNCTION2 cause_div_by_zero_in_header2(5);
-
-void cause_div_by_zero_in_header3(int in) {
- int h3 = 0;
- h3 = in/h3;
- h3++;
-}
-
-# define CALLS_BUGGY_FUNCTION3 cause_div_by_zero_in_header3(5);
-
-void cause_div_by_zero_in_header4(int in) {
- int h4 = 0;
- h4 = in/h4;
- h4++;
-}
-
-# define TAKE_CALL_AS_ARG(c) c;
diff --git a/test/Analysis/diagnostics/Inputs/include/sys/queue.h b/test/Analysis/diagnostics/Inputs/include/sys/queue.h
deleted file mode 100644
index 2740e174f257..000000000000
--- a/test/Analysis/diagnostics/Inputs/include/sys/queue.h
+++ /dev/null
@@ -1,4 +0,0 @@
-
-void free(void *);
-#define FREE_POINTER(x) free(x)
-
diff --git a/test/Analysis/diagnostics/deref-track-symbolic-region.c b/test/Analysis/diagnostics/deref-track-symbolic-region.c
deleted file mode 100644
index 63d0971b85d6..000000000000
--- a/test/Analysis/diagnostics/deref-track-symbolic-region.c
+++ /dev/null
@@ -1,41 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=plist-multi-file %s -o %t.plist
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/deref-track-symbolic-region.c.plist -
-
-struct S {
- int *x;
- int y;
-};
-
-int *foo();
-
-void test(struct S syz, int *pp) {
- int m = 0;
- syz.x = foo(); // expected-note{{Value assigned to 'syz.x'}}
-
- struct S *ps = &syz;
- if (ps->x)
- //expected-note@-1{{Taking false branch}}
- //expected-note@-2{{Assuming pointer value is null}}
-
- m++;
-
- m += *syz.x; // expected-warning{{Dereference of null pointer (loaded from field 'x')}}
- // expected-note@-1{{Dereference of null pointer (loaded from field 'x')}}
-}
-
-void testTrackConstraintBRVisitorIsTrackingTurnedOn(struct S syz, int *pp) {
- int m = 0;
- syz.x = foo(); // expected-note{{Value assigned to 'syz.x'}}
-
- struct S *ps = &syz;
- if (ps->x)
- //expected-note@-1{{Taking false branch}}
- //expected-note@-2{{Assuming pointer value is null}}
-
- m++;
- int *p = syz.x; //expected-note {{'p' initialized to a null pointer value}}
- m = *p; // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'p')}}
-}
-
diff --git a/test/Analysis/diagnostics/deref-track-symbolic-region.cpp b/test/Analysis/diagnostics/deref-track-symbolic-region.cpp
deleted file mode 100644
index 61993f0872f4..000000000000
--- a/test/Analysis/diagnostics/deref-track-symbolic-region.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -verify %s
-
-struct S {
- int *x;
- int y;
-};
-
-S &getSomeReference();
-void test(S *p) {
- S &r = *p; //expected-note {{'r' initialized here}}
- if (p) return;
- //expected-note@-1{{Taking false branch}}
- //expected-note@-2{{Assuming 'p' is null}}
- r.y = 5; // expected-warning {{Access to field 'y' results in a dereference of a null pointer (loaded from variable 'r')}}
- // expected-note@-1{{Access to field 'y' results in a dereference of a null pointer (loaded from variable 'r')}}
-}
-
-void testRefParam(int *ptr) {
- int &ref = *ptr; // expected-note {{'ref' initialized here}}
- if (ptr)
- // expected-note@-1{{Assuming 'ptr' is null}}
- // expected-note@-2{{Taking false branch}}
- return;
-
- extern void use(int &ref);
- use(ref); // expected-warning{{Forming reference to null pointer}}
- // expected-note@-1{{Forming reference to null pointer}}
-}
-
-int testRefToNullPtr() {
- int *p = 0; // expected-note {{'p' initialized to a null pointer value}}
- int *const &p2 = p; // expected-note{{'p2' initialized here}}
- int *p3 = p2; // expected-note {{'p3' initialized to a null pointer value}}
- return *p3; // expected-warning {{Dereference of null pointer}}
- // expected-note@-1{{Dereference of null pointer}}
-}
-
-int testRefToNullPtr2() {
- int *p = 0; // expected-note {{'p' initialized to a null pointer value}}
- int *const &p2 = p;// expected-note{{'p2' initialized here}}
- return *p2; //expected-warning {{Dereference of null pointer}}
- // expected-note@-1{{Dereference of null pointer}}
-} \ No newline at end of file
diff --git a/test/Analysis/diagnostics/dtors.cpp b/test/Analysis/diagnostics/dtors.cpp
deleted file mode 100644
index 094917e432f0..000000000000
--- a/test/Analysis/diagnostics/dtors.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core,cplusplus -verify %s
-
-// expected-no-diagnostics
-
-namespace no_crash_on_delete_dtor {
-// We were crashing when producing diagnostics for this code.
-struct S {
- void foo();
- ~S();
-};
-
-struct smart_ptr {
- int x;
- S *s;
- smart_ptr(S *);
- S *get() {
- return (x || 0) ? nullptr : s;
- }
-};
-
-void bar(smart_ptr p) {
- delete p.get();
- p.get()->foo();
-}
-} // namespace no_crash_on_delete_dtor
diff --git a/test/Analysis/diagnostics/explicit-suppression.cpp b/test/Analysis/diagnostics/explicit-suppression.cpp
deleted file mode 100644
index 2bb969059ffb..000000000000
--- a/test/Analysis/diagnostics/explicit-suppression.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config suppress-c++-stdlib=false -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config suppress-c++-stdlib=true -DSUPPRESSED=1 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -DSUPPRESSED=1 -verify %s
-
-#ifdef SUPPRESSED
-// expected-no-diagnostics
-#endif
-
-#include "../Inputs/system-header-simulator-cxx.h"
-
-void clang_analyzer_eval(bool);
-
-class C {
- // The virtual function is to make C not trivially copy assignable so that we call the
- // variant of std::copy() that does not defer to memmove().
- virtual int f();
-};
-
-void testCopyNull(C *I, C *E) {
- std::copy(I, E, (C *)0);
-#ifndef SUPPRESSED
- // expected-warning@../Inputs/system-header-simulator-cxx.h:677 {{Called C++ object pointer is null}}
-#endif
-}
diff --git a/test/Analysis/diagnostics/false-positive-suppression.c b/test/Analysis/diagnostics/false-positive-suppression.c
deleted file mode 100644
index 87c04cbcdc07..000000000000
--- a/test/Analysis/diagnostics/false-positive-suppression.c
+++ /dev/null
@@ -1,23 +0,0 @@
-// RUN: %clang_analyze_cc1 -I %S/Inputs -analyzer-checker=core,unix -verify %s
-// expected-no-diagnostics
-
-#include "include/sys/queue.h"
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-
-int radar12491259() {
- int *p = malloc(12);
- FREE_POINTER(p);
- FREE_POINTER(p); // no-warning: we are suppressing errors coming from sys/queue macros.
- return 0;
-}
-
-#define MYMACRO(p) FREE_POINTER(p)
-
-int radar12491259_inside_macro() {
- int *p = malloc(12);
- MYMACRO(p);
- MYMACRO(p); // no-warning: we are suppressing errors coming from sys/queue macros.
- return 0;
-}
diff --git a/test/Analysis/diagnostics/find_last_store.c b/test/Analysis/diagnostics/find_last_store.c
deleted file mode 100644
index 9bf601ea30e2..000000000000
--- a/test/Analysis/diagnostics/find_last_store.c
+++ /dev/null
@@ -1,17 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -verify %s
-typedef struct { float b; } c;
-void *a();
-void *d() {
- return a(); // expected-note{{Returning pointer}}
-}
-
-void no_find_last_store() {
- c *e = d(); // expected-note{{Calling 'd'}}
- // expected-note@-1{{Returning from 'd'}}
- // expected-note@-2{{'e' initialized here}}
-
- (void)(e || e->b); // expected-note{{Assuming 'e' is null}}
- // expected-note@-1{{Left side of '||' is false}}
- // expected-note@-2{{Access to field 'b' results in a dereference of a null pointer (loaded from variable 'e')}}
- // expected-warning@-3{{Access to field 'b' results in a dereference of a null pointer (loaded from variable 'e')}}
-}
diff --git a/test/Analysis/diagnostics/implicit-cxx-std-suppression.cpp b/test/Analysis/diagnostics/implicit-cxx-std-suppression.cpp
deleted file mode 100644
index 35f8798c81ae..000000000000
--- a/test/Analysis/diagnostics/implicit-cxx-std-suppression.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,cplusplus.NewDelete,debug.ExprInspection -analyzer-config c++-container-inlining=true -analyzer-config c++-stdlib-inlining=false -std=c++11 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,cplusplus.NewDelete,debug.ExprInspection -analyzer-config c++-container-inlining=true -analyzer-config c++-stdlib-inlining=true -std=c++11 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,cplusplus.NewDelete,debug.ExprInspection -analyzer-config c++-container-inlining=true -analyzer-config c++-stdlib-inlining=false -std=c++11 -DTEST_INLINABLE_ALLOCATORS -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,cplusplus.NewDelete,debug.ExprInspection -analyzer-config c++-container-inlining=true -analyzer-config c++-stdlib-inlining=true -std=c++11 -DTEST_INLINABLE_ALLOCATORS -verify %s
-
-// expected-no-diagnostics
-
-#include "../Inputs/system-header-simulator-cxx-std-suppression.h"
-
-void testList_pop_front(std::list<int> list) {
- while(!list.empty())
- list.pop_front(); // no-warning
-}
-
-void testBasicStringSuppression() {
- std::basic_string<uint8_t> v;
- v.push_back(1); // no-warning
-}
-
-void testBasicStringSuppression_append() {
- std::basic_string<char32_t> v;
- v += 'c'; // no-warning
-}
-
-void testBasicStringSuppression_assign(std::basic_string<char32_t> &v,
- const std::basic_string<char32_t> &v2) {
- v = v2; // no-warning
-}
-
-class MyEngine;
-void testSuppression_independent_bits_engine(MyEngine& e) {
- std::__independent_bits_engine<MyEngine, unsigned int> x(e, 64); // no-warning
-}
-
-void testSuppression_std_shared_pointer() {
- std::shared_ptr<int> p(new int(1));
-
- p = nullptr; // no-warning
-}
diff --git a/test/Analysis/diagnostics/macro-null-return-suppression.cpp b/test/Analysis/diagnostics/macro-null-return-suppression.cpp
deleted file mode 100644
index a2928f15c1e3..000000000000
--- a/test/Analysis/diagnostics/macro-null-return-suppression.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-// RUN: %clang_analyze_cc1 -x c -analyzer-checker=core -analyzer-output=text -verify %s
-
-#define NULL 0
-
-int test_noparammacro() {
- int *x = NULL; // expected-note{{'x' initialized to a null pointer value}}
- return *x; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}}
- // expected-note@-1{{Dereference of null pointer (loaded from variable 'x')}}
-}
-
-#define DYN_CAST(X) (X ? (char*)X : 0)
-#define GENERATE_NUMBER(X) (0)
-
-char test_assignment(int *param) {
- char *param2;
- param2 = DYN_CAST(param);
- return *param2;
-}
-
-char test_declaration(int *param) {
- char *param2 = DYN_CAST(param);
- return *param2;
-}
-
-int coin();
-
-int test_multi_decl(int *paramA, int *paramB) {
- char *param1 = DYN_CAST(paramA), *param2 = DYN_CAST(paramB);
- if (coin())
- return *param1;
- return *param2;
-}
-
-int testDivision(int a) {
- int divider = GENERATE_NUMBER(2); // expected-note{{'divider' initialized to 0}}
- return 1/divider; // expected-warning{{Division by zero}}
- // expected-note@-1{{Division by zero}}
-}
-
-// Warning should not be suppressed if it happens in the same macro.
-#define DEREF_IN_MACRO(X) int fn() {int *p = 0; return *p; }
-
-DEREF_IN_MACRO(0) // expected-warning{{Dereference of null pointer}}
- // expected-note@-1{{'p' initialized to a null}}
- // expected-note@-2{{Dereference of null pointer}}
-
-// Warning should not be suppressed if the null returned by the macro
-// is not related to the warning.
-#define RETURN_NULL() (0)
-extern int* returnFreshPointer();
-int noSuppressMacroUnrelated() {
- int *x = RETURN_NULL();
- x = returnFreshPointer(); // expected-note{{Value assigned to 'x'}}
- if (x) {} // expected-note{{Taking false branch}}
- // expected-note@-1{{Assuming 'x' is null}}
- return *x; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1{{Dereference}}
-}
-
-// Value haven't changed by the assignment, but the null pointer
-// did not come from the macro.
-int noSuppressMacroUnrelatedOtherReason() {
- int *x = RETURN_NULL();
- x = returnFreshPointer();
- x = 0; // expected-note{{Null pointer value stored to 'x'}}
- return *x; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1{{Dereference}}
-}
diff --git a/test/Analysis/diagnostics/macros.cpp b/test/Analysis/diagnostics/macros.cpp
deleted file mode 100644
index 5aa2c03ab0ed..000000000000
--- a/test/Analysis/diagnostics/macros.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,osx -analyzer-output=text -verify %s
-
-#include "../Inputs/system-header-simulator.h"
-#include "../Inputs/system-header-simulator-cxx.h"
-
-void testIntMacro(unsigned int i) {
- if (i == UINT32_MAX) { // expected-note {{Assuming 'i' is equal to UINT32_MAX}}
- // expected-note@-1 {{Taking true branch}}
- char *p = NULL; // expected-note {{'p' initialized to a null pointer value}}
- *p = 7; // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'p')}}
- }
-}
-
-void testNULLMacro(int *p) {
- if (p == NULL) { // expected-note {{Assuming 'p' is equal to NULL}}
- // expected-note@-1 {{Taking true branch}}
- *p = 7; // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'p')}}
- }
-}
-
-void testnullptrMacro(int *p) {
- if (p == nullptr) { // expected-note {{Assuming pointer value is null}}
- // expected-note@-1 {{Taking true branch}}
- *p = 7; // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'p')}}
- }
-}
-
-// There are no path notes on the comparison to float types.
-void testDoubleMacro(double d) {
- if (d == DBL_MAX) { // expected-note {{Taking true branch}}
-
- char *p = NULL; // expected-note {{'p' initialized to a null pointer value}}
- *p = 7; // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'p')}}
- }
-}
-
-void testboolMacro(bool b, int *p) {
- p = nullptr; // expected-note {{Null pointer value stored to 'p'}}
- if (b == false) { // expected-note {{Assuming the condition is true}}
- // expected-note@-1 {{Taking true branch}}
- *p = 7; // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'p')}}
- }
-}
diff --git a/test/Analysis/diagnostics/macros.m b/test/Analysis/diagnostics/macros.m
deleted file mode 100644
index b45997486214..000000000000
--- a/test/Analysis/diagnostics/macros.m
+++ /dev/null
@@ -1,31 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx -fblocks -analyzer-output=text -verify %s
-
-#include "../Inputs/system-header-simulator-objc.h"
-
-@interface NSDictionary : NSObject
-- (NSUInteger)count;
-- (id)objectForKey:(id)aKey;
-- (NSEnumerator *)keyEnumerator;
-@end
-@interface NSMutableDictionary : NSDictionary
-- (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey;
-@end
-
-void testBOOLMacro(BOOL b) {
- if (b == YES) { // expected-note {{Assuming 'b' is equal to YES}}
- // expected-note@-1 {{Taking true branch}}
- char *p = NULL;// expected-note {{'p' initialized to a null pointer value}}
- *p = 7; // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'p')}}
- }
-}
-
-void testNilMacro(NSMutableDictionary *d, NSObject *o) {
- if (o == nil) // expected-note {{Assuming 'o' is equal to nil}}
- // expected-note@-1 {{Taking true branch}}
- [d setObject:o forKey:[o description]]; // expected-warning {{Key argument to 'setObject:forKey:' cannot be nil}}
- // expected-note@-1 {{'description' not called because the receiver is nil}}
- // expected-note@-2 {{Key argument to 'setObject:forKey:' cannot be nil}}
-
- return;
-}
diff --git a/test/Analysis/diagnostics/no-prune-paths.c b/test/Analysis/diagnostics/no-prune-paths.c
deleted file mode 100644
index 6e9e45766bf5..000000000000
--- a/test/Analysis/diagnostics/no-prune-paths.c
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -analyzer-config prune-paths=false -DNPRUNE=1 -verify %s
-
-// "prune-paths" is a debug option only; this is just a simple test to see that
-// it's being honored.
-
-void helper() {
- extern void foo();
- foo();
-}
-
-void test() {
- helper();
-#if NPRUNE
- // expected-note@-2 {{Calling 'helper'}}
- // expected-note@-3 {{Returning from 'helper'}}
-#endif
-
- *(volatile int *)0 = 1; // expected-warning {{Dereference of null pointer}}
- // expected-note@-1 {{Dereference of null pointer}}
-}
diff --git a/test/Analysis/diagnostics/no-store-func-path-notes.c b/test/Analysis/diagnostics/no-store-func-path-notes.c
deleted file mode 100644
index 2050f6217ca1..000000000000
--- a/test/Analysis/diagnostics/no-store-func-path-notes.c
+++ /dev/null
@@ -1,246 +0,0 @@
-// RUN: %clang_analyze_cc1 -x c -analyzer-checker=core -analyzer-output=text -verify %s
-
-typedef __typeof(sizeof(int)) size_t;
-void *memset(void *__s, int __c, size_t __n);
-
-int initializer1(int *p, int x) {
- if (x) { // expected-note{{Taking false branch}}
- *p = 1;
- return 0;
- } else {
- return 1; // expected-note {{Returning without writing to '*p'}}
- }
-}
-
-int param_not_initialized_by_func() {
- int p; // expected-note {{'p' declared without an initial value}}
- int out = initializer1(&p, 0); // expected-note{{Calling 'initializer1'}}
- // expected-note@-1{{Returning from 'initializer1'}}
- return p; // expected-note{{Undefined or garbage value returned to caller}}
- // expected-warning@-1{{Undefined or garbage value returned to caller}}
-}
-
-int param_initialized_properly() {
- int p;
- int out = initializer1(&p, 1);
- return p; //no-warning
-}
-
-static int global;
-
-int initializer2(int **p, int x) {
- if (x) { // expected-note{{Taking false branch}}
- *p = &global;
- return 0;
- } else {
- return 1; // expected-note {{Returning without writing to '*p'}}
- }
-}
-
-int param_not_written_into_by_func() {
- int *p = 0; // expected-note{{'p' initialized to a null pointer value}}
- int out = initializer2(&p, 0); // expected-note{{Calling 'initializer2'}}
- // expected-note@-1{{Returning from 'initializer2'}}
- return *p; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}}
- // expected-note@-1{{Dereference of null pointer (loaded from variable 'p')}}
-}
-
-void initializer3(int *p, int param) {
- if (param) // expected-note{{Taking false branch}}
- *p = 0;
-} // expected-note{{Returning without writing to '*p'}}
-
-int param_written_into_by_void_func() {
- int p; // expected-note{{'p' declared without an initial value}}
- initializer3(&p, 0); // expected-note{{Calling 'initializer3'}}
- // expected-note@-1{{Returning from 'initializer3'}}
- return p; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-void initializer4(int *p, int param) {
- if (param) // expected-note{{Taking false branch}}
- *p = 0;
-} // expected-note{{Returning without writing to '*p'}}
-
-void initializer5(int *p, int param) {
- if (!param) // expected-note{{Taking false branch}}
- *p = 0;
-} // expected-note{{Returning without writing to '*p'}}
-
-int multi_init_tries_func() {
- int p; // expected-note{{'p' declared without an initial value}}
- initializer4(&p, 0); // expected-note{{Calling 'initializer4'}}
- // expected-note@-1{{Returning from 'initializer4'}}
- initializer5(&p, 1); // expected-note{{Calling 'initializer5'}}
- // expected-note@-1{{Returning from 'initializer5'}}
- return p; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-int initializer6(const int *p) {
- return 0;
-}
-
-int no_msg_on_const() {
- int p; // expected-note{{'p' declared without an initial value}}
- initializer6(&p);
- return p; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-typedef struct {
- int x;
-} S;
-
-int initializer7(S *s, int param) {
- if (param) { // expected-note{{Taking false branch}}
- s->x = 0;
- return 0;
- }
- return 1; // expected-note{{Returning without writing to 's->x'}}
-}
-
-int initialize_struct_field() {
- S local;
- initializer7(&local, 0); // expected-note{{Calling 'initializer7'}}
- // expected-note@-1{{Returning from 'initializer7'}}
- return local.x; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-void nullwriter(int **p) {
- *p = 0; // expected-note{{Null pointer value stored to 'p'}}
-} // no extra note
-
-int usage() {
- int x = 0;
- int *p = &x;
- nullwriter(&p); // expected-note{{Calling 'nullwriter'}}
- // expected-note@-1{{Returning from 'nullwriter'}}
- return *p; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}}
- // expected-note@-1{{Dereference of null pointer (loaded from variable 'p')}}
-}
-
-typedef struct {
- int x;
- int y;
-} A;
-
-void partial_initializer(A *a) {
- a->x = 0;
-} // expected-note{{Returning without writing to 'a->y'}}
-
-int use_partial_initializer() {
- A a;
- partial_initializer(&a); // expected-note{{Calling 'partial_initializer'}}
- // expected-note@-1{{Returning from 'partial_initializer'}}
- return a.y; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-typedef struct {
- int x;
- int y;
-} B;
-
-typedef struct {
- B b;
-} C;
-
-void partial_nested_initializer(C *c) {
- c->b.x = 0;
-} // expected-note{{Returning without writing to 'c->b.y'}}
-
-int use_partial_nested_initializer() {
- B localB;
- C localC;
- localC.b = localB;
- partial_nested_initializer(&localC); // expected-note{{Calling 'partial_nested_initializer'}}
- // expected-note@-1{{Returning from 'partial_nested_initializer'}}
- return localC.b.y; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-void test_subregion_assignment(C* c) {
- B b;
- c->b = b;
-}
-
-int use_subregion_assignment() {
- C c;
- test_subregion_assignment(&c); // expected-note{{Calling 'test_subregion_assignment'}}
- // expected-note@-1{{Returning from 'test_subregion_assignment'}}
- return c.b.x; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-int confusing_signature(int *);
-int confusing_signature(int *p) {
- return 0; // expected-note{{Returning without writing to '*p'}}
-}
-
-int use_confusing_signature() {
- int a; // expected-note {{'a' declared without an initial value}}
- confusing_signature(&a); // expected-note{{Calling 'confusing_signature'}}
- // expected-note@-1{{Returning from 'confusing_signature'}}
- return a; // expected-note{{Undefined or garbage value returned to caller}}
- // expected-warning@-1{{Undefined or garbage value returned to caller}}
-}
-
-int coin();
-
-int multiindirection(int **p) {
- if (coin()) // expected-note{{Assuming the condition is true}}
- // expected-note@-1{{Taking true branch}}
- return 1; // expected-note{{Returning without writing to '**p'}}
- *(*p) = 0;
- return 0;
-}
-
-int usemultiindirection() {
- int a; // expected-note {{'a' declared without an initial value}}
- int *b = &a;
- multiindirection(&b); // expected-note{{Calling 'multiindirection'}}
- // expected-note@-1{{Returning from 'multiindirection'}}
- return a; // expected-note{{Undefined or garbage value returned to caller}}
- // expected-warning@-1{{Undefined or garbage value returned to caller}}
-}
-
-int indirectingstruct(S** s) {
- if (coin()) // expected-note{{Assuming the condition is true}}
- // expected-note@-1{{Taking true branch}}
- return 1; // expected-note{{Returning without writing to '(*s)->x'}}
-
- (*s)->x = 0;
- return 0;
-}
-
-int useindirectingstruct() {
- S s;
- S* p = &s;
- indirectingstruct(&p); //expected-note{{Calling 'indirectingstruct'}}
- //expected-note@-1{{Returning from 'indirectingstruct'}}
- return s.x; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-typedef struct {
- int *x;
-} D;
-
-void initializeMaybeInStruct(D* pD) {
- if (coin()) // expected-note{{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- *pD->x = 120;
-} // expected-note{{Returning without writing to 'pD->x'}}
-
-int useInitializeMaybeInStruct() {
- int z; // expected-note{{'z' declared without an initial value}}
- D d;
- d.x = &z;
- initializeMaybeInStruct(&d); // expected-note{{Calling 'initializeMaybeInStruct'}}
- // expected-note@-1{{Returning from 'initializeMaybeInStruct'}}
- return z; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
diff --git a/test/Analysis/diagnostics/no-store-func-path-notes.cpp b/test/Analysis/diagnostics/no-store-func-path-notes.cpp
deleted file mode 100644
index 587c08fae13d..000000000000
--- a/test/Analysis/diagnostics/no-store-func-path-notes.cpp
+++ /dev/null
@@ -1,374 +0,0 @@
-// RUN: %clang_analyze_cc1 -x c++ -std=c++14 -analyzer-checker=core -analyzer-output=text -verify %s
-
-int initializer1(int &p, int x) {
- if (x) { // expected-note{{Taking false branch}}
- p = 1;
- return 0;
- } else {
- return 1; // expected-note {{Returning without writing to 'p'}}
- }
-}
-
-int param_not_initialized_by_func() {
- int outP; // expected-note {{'outP' declared without an initial value}}
- int out = initializer1(outP, 0); // expected-note{{Calling 'initializer1'}}
- // expected-note@-1{{Returning from 'initializer1'}}
- return outP; // expected-note{{Undefined or garbage value returned to caller}}
- // expected-warning@-1{{Undefined or garbage value returned to caller}}
-}
-
-struct S {
- int initialize(int *p, int param) {
- if (param) { //expected-note{{Taking false branch}}
- *p = 1;
- return 1;
- }
- return 0; // expected-note{{Returning without writing to '*p'}}
- }
-};
-
-int use(S *s) {
- int p; //expected-note{{'p' declared without an initial value}}
- s->initialize(&p, 0); //expected-note{{Calling 'S::initialize'}}
- //expected-note@-1{{Returning from 'S::initialize'}}
- return p; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-int initializer2(const int &p) {
- return 0;
-}
-
-int no_msg_const_ref() {
- int p; //expected-note{{'p' declared without an initial value}}
- initializer2(p);
- return p; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-void nested() {}
-void init_in_nested_func(int **x) {
- *x = 0; // expected-note{{Null pointer value stored to 'y'}}
- nested();
-} // no-note
-
-int call_init_nested() {
- int x = 0;
- int *y = &x;
- init_in_nested_func(&y); // expected-note{{Calling 'init_in_nested_func'}}
- // expected-note@-1{{Returning from 'init_in_nested_func'}}
- return *y; //expected-warning{{Dereference of null pointer (loaded from variable 'y')}}
- //expected-note@-1{{Dereference of null pointer (loaded from variable 'y')}}
-}
-
-struct A {
- int x;
- int y;
-};
-
-void partial_init_by_reference(A &a) {
- a.x = 0;
-} // expected-note {{Returning without writing to 'a.y'}}
-
-int use_partial_init_by_reference() {
- A a;
- partial_init_by_reference(a); // expected-note{{Calling 'partial_init_by_reference'}}
- // expected-note@-1{{Returning from 'partial_init_by_reference'}}
- return a.y; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-struct B : A {
-};
-
-void partially_init_inherited_struct(B *b) {
- b->x = 0;
-} // expected-note{{Returning without writing to 'b->y'}}
-
-int use_partially_init_inherited_struct() {
- B b;
- partially_init_inherited_struct(&b); // expected-note{{Calling 'partially_init_inherited_struct'}}
- // expected-note@-1{{Returning from 'partially_init_inherited_struct'}}
- return b.y; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-struct C {
- int x;
- int y;
- C(int pX, int pY) : x(pX) {} // expected-note{{Returning without writing to 'this->y'}}
-
- C(int pX, int pY, bool Flag) {
- x = pX;
- if (Flag) // expected-note{{Assuming 'Flag' is not equal to 0}}
- // expected-note@-1{{Taking true branch}}
- return; // expected-note{{Returning without writing to 'this->y'}}
- y = pY;
- }
-};
-
-int use_constructor() {
- C c(0, 0); // expected-note{{Calling constructor for 'C'}}
- // expected-note@-1{{Returning from constructor for 'C'}}
- return c.y; // expected-note{{Undefined or garbage value returned to caller}}
- // expected-warning@-1{{Undefined or garbage value returned to caller}}
-}
-
-int coin();
-
-int use_other_constructor() {
- C c(0, 0, coin()); // expected-note{{Calling constructor for 'C'}}
- // expected-note@-1{{Returning from constructor for 'C'}}
- return c.y; // expected-note{{Undefined or garbage value returned to caller}}
- // expected-warning@-1{{Undefined or garbage value returned to caller}}
-}
-
-struct D {
- void initialize(int *);
-};
-
-void D::initialize(int *p) {
-
-} // expected-note{{Returning without writing to '*p'}}
-
-int use_d_initializer(D* d) {
- int p; // expected-note {{'p' declared without an initial value}}
- d->initialize(&p); // expected-note{{Calling 'D::initialize'}}
- // expected-note@-1{{Returning from 'D::initialize'}}
- return p; // expected-note{{Undefined or garbage value returned to caller}}
- // expected-warning@-1{{Undefined or garbage value returned to caller}}
-}
-
-struct S2 {
- int x;
-};
-
-int pointerreference(S2* &s) {
- if (coin()) // expected-note{{Assuming the condition is true}}
- // expected-note@-1{{Taking true branch}}
- return 1; // expected-note{{Returning without writing to 's->x'}}
-
- s->x = 0;
- return 0;
-}
-
-int usepointerreference() {
- S2 s;
- S2* p = &s;
- pointerreference(p); //expected-note{{Calling 'pointerreference'}}
- //expected-note@-1{{Returning from 'pointerreference'}}
- return s.x; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-void *has_no_argument_and_returns_null(void) {
- return 0;
-}
-
-void rdar40335545() {
- int local; // expected-note{{}}
- void (*takes_int_ptr_argument)(int *) = (void (*)(int*))has_no_argument_and_returns_null;
-
- takes_int_ptr_argument(&local); // no-crash
-
- int useLocal = local; //expected-warning{{}}
- //expected-note@-1{{}}
- (void)useLocal;
-}
-
-////////
-
-struct HasRef {
- int &a;
- HasRef(int &a) : a(a) {}
-};
-
-
-void maybeInitialize(const HasRef &&pA) {
- if (coin()) // expected-note{{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- pA.a = 120;
-} // expected-note{{Returning without writing to 'pA.a'}}
-
-int useMaybeInitializerWritingIntoField() {
- int z; // expected-note{{'z' declared without an initial value}}
- maybeInitialize(HasRef(z)); // expected-note{{Calling constructor for 'HasRef'}}
- // expected-note@-1{{Returning from constructor for 'HasRef'}}
- // expected-note@-2{{Calling 'maybeInitialize'}}
- // expected-note@-3{{Returning from 'maybeInitialize'}}
- return z; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-////////
-
-struct HasRefToItself {
- HasRefToItself &Ref; // no infinite loop
- int &z;
- HasRefToItself(int &z) : Ref(*this), z(z) {}
-};
-
-void maybeInitialize(const HasRefToItself &&pA) {
- if (coin()) // expected-note{{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- pA.z = 120;
-} // expected-note{{Returning without writing to 'pA.Ref.z'}}
-
-int useMaybeInitializerWritingIntoFieldWithRefToItself() {
- int z; // expected-note{{'z' declared without an initial value}}
- maybeInitialize(HasRefToItself(z)); // expected-note{{Calling constructor for 'HasRefToItself'}}
- // expected-note@-1{{Returning from constructor for 'HasRefToItself'}}
- // expected-note@-2{{Calling 'maybeInitialize'}}
- // expected-note@-3{{Returning from 'maybeInitialize'}}
- return z; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-////
-
-void maybeInitialize(const HasRef *pA) {
- if (coin()) // expected-note{{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- pA->a = 120;
-} // expected-note{{Returning without writing to 'pA->a'}}
-
-int useMaybeInitializerStructByPointer() {
- int z; // expected-note{{'z' declared without an initial value}}
- HasRef wrapper(z); // expected-note{{Calling constructor for 'HasRef'}}
- // expected-note@-1{{Returning from constructor for 'HasRef'}}
- maybeInitialize(&wrapper); // expected-note{{Calling 'maybeInitialize'}}
- // expected-note@-1{{Returning from 'maybeInitialize'}}
- return z; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-////////
-
-struct HasParentWithRef : public HasRef {
- HasParentWithRef(int &a) : HasRef(a) {} // expected-note{{Calling constructor for 'HasRef'}}
- // expected-note@-1{{Returning from constructor for 'HasRef'}}
-};
-
-void maybeInitializeWithParent(const HasParentWithRef &pA) {
- if (coin()) // expected-note{{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- pA.a = 120;
-} // expected-note{{Returning without writing to 'pA.a'}}
-
-int useMaybeInitializerWritingIntoParentField() {
- int z; // expected-note{{'z' declared without an initial value}}
- maybeInitializeWithParent(HasParentWithRef(z)); // expected-note{{Calling constructor for 'HasParentWithRef'}}
- // expected-note@-1{{Returning from constructor for 'HasParentWithRef'}}
- // expected-note@-2{{Calling 'maybeInitializeWithParent'}}
- // expected-note@-3{{Returning from 'maybeInitializeWithParent'}}
- return z; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-////////
-
-struct HasIndirectRef {
- HasRef &Ref;
- HasIndirectRef(HasRef &Ref) : Ref(Ref) {}
-};
-
-void maybeInitializeIndirectly(const HasIndirectRef &pA) {
- if (coin()) // expected-note{{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- pA.Ref.a = 120;
-} // expected-note{{Returning without writing to 'pA.Ref.a'}}
-
-int useMaybeInitializeIndirectly() {
- int z; // expected-note{{'z' declared without an initial value}}
- HasRef r(z); // expected-note{{Calling constructor for 'HasRef'}}
- // expected-note@-1{{Returning from constructor for 'HasRef'}}
- maybeInitializeIndirectly(HasIndirectRef(r)); // expected-note{{Calling 'maybeInitializeIndirectly'}}
- // expected-note@-1{{Returning from 'maybeInitializeIndirectly'}}
- return z; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-////////
-
-struct HasIndirectRefByValue {
- HasRef Ref;
- HasIndirectRefByValue(HasRef Ref) : Ref(Ref) {}
-};
-
-void maybeInitializeIndirectly(const HasIndirectRefByValue &pA) {
- if (coin()) // expected-note{{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- pA.Ref.a = 120;
-} // expected-note{{Returning without writing to 'pA.Ref.a'}}
-
-int useMaybeInitializeIndirectlyIndirectRefByValue() {
- int z; // expected-note{{'z' declared without an initial value}}
- HasRef r(z); // expected-note{{Calling constructor for 'HasRef'}}
- // expected-note@-1{{Returning from constructor for 'HasRef'}}
- maybeInitializeIndirectly(HasIndirectRefByValue(r)); // expected-note{{Calling 'maybeInitializeIndirectly'}}
- // expected-note@-1{{Returning from 'maybeInitializeIndirectly'}}
- return z; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-////////
-
-struct HasIndirectPointerRef {
- HasRef *Ref;
- HasIndirectPointerRef(HasRef *Ref) : Ref(Ref) {}
-};
-
-void maybeInitializeIndirectly(const HasIndirectPointerRef &pA) {
- if (coin()) // expected-note{{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- pA.Ref->a = 120;
-} // expected-note{{Returning without writing to 'pA.Ref->a'}}
-
-int useMaybeInitializeIndirectlyWithPointer() {
- int z; // expected-note{{'z' declared without an initial value}}
- HasRef r(z); // expected-note{{Calling constructor for 'HasRef'}}
- // expected-note@-1{{Returning from constructor for 'HasRef'}}
- maybeInitializeIndirectly(HasIndirectPointerRef(&r)); // expected-note{{Calling 'maybeInitializeIndirectly'}}
- // expected-note@-1{{Returning from 'maybeInitializeIndirectly'}}
- return z; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-////////
-
-struct HasFieldA {
- int x;
-};
-
-struct HasFieldB {
- int x;
-};
-
-void maybeInitializeHasField(HasFieldA *b) {
- if (coin()) // expected-note{{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- ((HasFieldB*)b)->x = 120;
-}
-
-int forceElementRegionApperence() {
- HasFieldA a;
- maybeInitializeHasField(&a); // expected-note{{Calling 'maybeInitializeHasField'}}
- // expected-note@-1{{Returning from 'maybeInitializeHasField'}}
- return ((HasFieldB*)&a)->x; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-////////
-
-struct HasForgottenField {
- int x;
- HasForgottenField() {} // expected-note{{Returning without writing to 'this->x'}}
-};
-
-// Test that tracking across exclamation mark works.
-bool tracksThroughExclamationMark() {
- HasForgottenField a; // expected-note{{Calling default constructor for 'HasForgottenField'}}
- // expected-note@-1{{Returning from default constructor for 'HasForgottenField'}}
- return !a.x; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
diff --git a/test/Analysis/diagnostics/no-store-func-path-notes.m b/test/Analysis/diagnostics/no-store-func-path-notes.m
deleted file mode 100644
index c0aa5144e763..000000000000
--- a/test/Analysis/diagnostics/no-store-func-path-notes.m
+++ /dev/null
@@ -1,105 +0,0 @@
-// RUN: %clang_analyze_cc1 -x objective-c -analyzer-checker=core,nullability -analyzer-output=text -Wno-objc-root-class -fblocks -verify %s
-
-#include "../Inputs/system-header-simulator-for-nullability.h"
-
-extern int coin();
-
-@interface I : NSObject
-- (int)initVar:(int *)var param:(int)param;
-@end
-
-@implementation I
-- (int)initVar:(int *)var param:(int)param {
- if (param) { // expected-note{{Taking false branch}}
- *var = 1;
- return 0;
- }
- return 1; // expected-note{{Returning without writing to '*var'}}
-}
-@end
-
-int foo(I *i) {
- int x; //expected-note{{'x' declared without an initial value}}
- int out = [i initVar:&x param:0]; //expected-note{{Calling 'initVar:param:'}}
- //expected-note@-1{{Returning from 'initVar:param:'}}
- if (out) // expected-note{{Taking true branch}}
- return x; //expected-warning{{Undefined or garbage value returned to caller}}
- //expected-note@-1{{Undefined or garbage value returned to caller}}
- return 0;
-}
-
-int initializer1(int *p, int x) {
- if (x) { // expected-note{{Taking false branch}}
- *p = 1;
- return 0;
- } else {
- return 1; // expected-note {{Returning without writing to '*p'}}
- }
-}
-
-int initFromBlock() {
- __block int z;
- ^{ // expected-note {{Calling anonymous block}}
- int p; // expected-note{{'p' declared without an initial value}}
- initializer1(&p, 0); // expected-note{{Calling 'initializer1'}}
- // expected-note@-1{{Returning from 'initializer1'}}
- z = p; // expected-warning{{Assigned value is garbage or undefined}}
- // expected-note@-1{{Assigned value is garbage or undefined}}
- }();
- return z;
-}
-
-extern void expectNonNull(NSString * _Nonnull a);
-
-@interface A : NSObject
-- (void) initAMaybe;
-@end
-
-@implementation A {
- NSString * a;
-}
-
-- (void) initAMaybe {
- if (coin()) // expected-note{{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- a = @"string";
-} // expected-note{{Returning without writing to 'self->a'}}
-
-- (void) passNullToNonnull {
- a = nil; // expected-note{{nil object reference stored to 'a'}}
- [self initAMaybe]; // expected-note{{Calling 'initAMaybe'}}
- // expected-note@-1{{Returning from 'initAMaybe'}}
- expectNonNull(a); // expected-warning{{nil passed to a callee that requires a non-null 1st parameter}}
- // expected-note@-1{{nil passed to a callee that requires a non-null 1st parameter}}
-}
-
-- (void) initAMaybeWithExplicitSelf {
- if (coin()) // expected-note{{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- self->a = @"string";
-} // expected-note{{Returning without writing to 'self->a'}}
-
-- (void) passNullToNonnullWithExplicitSelf {
- self->a = nil; // expected-note{{nil object reference stored to 'a'}}
- [self initAMaybeWithExplicitSelf]; // expected-note{{Calling 'initAMaybeWithExplicitSelf'}}
- // expected-note@-1{{Returning from 'initAMaybeWithExplicitSelf'}}
- expectNonNull(a); // expected-warning{{nil passed to a callee that requires a non-null 1st parameter}}
- // expected-note@-1{{nil passed to a callee that requires a non-null 1st parameter}}
-}
-
-- (void) initPassedAMaybe:(A *) param {
- if (coin()) // expected-note{{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- param->a = @"string";
-} // expected-note{{Returning without writing to 'param->a'}}
-
-- (void) useInitPassedAMaybe:(A *) paramA {
- paramA->a = nil; // expected-note{{nil object reference stored to 'a'}}
- [self initPassedAMaybe:paramA]; // expected-note{{Calling 'initPassedAMaybe:'}}
- // expected-note@-1{{Returning from 'initPassedAMaybe:'}}
- expectNonNull(paramA->a); // expected-warning{{nil passed to a callee that requires a non-null 1st parameter}}
- // expected-note@-1{{nil passed to a callee that requires a non-null 1st parameter}}
-
-}
-
-@end
diff --git a/test/Analysis/diagnostics/plist-diagnostics-include-check.cpp b/test/Analysis/diagnostics/plist-diagnostics-include-check.cpp
deleted file mode 100644
index dd86129e2fd2..000000000000
--- a/test/Analysis/diagnostics/plist-diagnostics-include-check.cpp
+++ /dev/null
@@ -1,10 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -analyzer-output=plist-multi-file %s -o %t.plist
-// RUN: tail -n +11 %t.plist | diff -u -w -I "<string>/" -I "<string>.:" -I "version" - %S/Inputs/expected-plists/plist-diagnostics-include-check.cpp.plist
-
-#include "Inputs/include/plist-diagnostics-include-check-macro.h"
-
-void foo() {
- PlistCheckMacro()
-#define PLIST_DEF_MACRO .run();
-#include "Inputs/include/plist-diagnostics-include-check-macro.def"
-}
diff --git a/test/Analysis/diagnostics/plist-multi-file.c b/test/Analysis/diagnostics/plist-multi-file.c
deleted file mode 100644
index 878f373aaccf..000000000000
--- a/test/Analysis/diagnostics/plist-multi-file.c
+++ /dev/null
@@ -1,8 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=plist-html -o %t.plist -verify %s
-// RUN: tail -n +11 %t.plist | diff -u -w -I "<string>/" -I "<string>.:" -I "version" --ignore-matching-lines=report - %S/Inputs/expected-plists/plist-multi-file.c.plist
-
-#include "plist-multi-file.h"
-
-void bar() {
- foo(0);
-}
diff --git a/test/Analysis/diagnostics/plist-multi-file.h b/test/Analysis/diagnostics/plist-multi-file.h
deleted file mode 100644
index c0674f9dfcf0..000000000000
--- a/test/Analysis/diagnostics/plist-multi-file.h
+++ /dev/null
@@ -1,3 +0,0 @@
-void foo(int *ptr) {
- *ptr = 1; // expected-warning{{Dereference of null pointer (loaded from variable 'ptr')}}
-}
diff --git a/test/Analysis/diagnostics/report-issues-within-main-file.cpp b/test/Analysis/diagnostics/report-issues-within-main-file.cpp
deleted file mode 100644
index f166e311c538..000000000000
--- a/test/Analysis/diagnostics/report-issues-within-main-file.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix -analyzer-output=plist-multi-file -analyzer-config report-in-main-source-file=true %s -o %t.plist
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/report-issues-within-main-file.cpp.plist -
-#include "Inputs/include/report-issues-within-main-file.h"
-
-void mainPlusHeader() {
- auto_ptr<int> B (new int[5]);
-}
-
-void auxInMain() {
- int j = 0;
- j++;
- cause_div_by_zero_in_header(j);
- j--;
-}
-void mainPlusMainPlusHeader() {
- int i = 0;
- i++;
- auxInMain();
- i++;
-}
-
-void causeDivByZeroInMain(int in) {
- int m = 0;
- m = in/m;
- m++;
-}
-void mainPlusMain() {
- int i = 0;
- i++;
- causeDivByZeroInMain(i);
- i++;
-}
-
-void causeDivByZeroInMain2(int in) {
- int m2 = 0;
- m2 = in/m2;
- m2++;
-}
-
-void mainPlustHeaderCallAndReturnPlusMain() {
- int i = 0;
- i++;
- do_something(i);
- causeDivByZeroInMain2(i);
- i++;
-}
-
-void callInMacro() {
- int j = 0;
- j++;
- CALLS_BUGGY_FUNCTION2;
- j--;
-}
-
-void callInMacro3() {
- int j = 0;
- j++;
- CALLS_BUGGY_FUNCTION3;
- j--;
-}
-
-void callCallInMacro3() {
- callInMacro3();
-}
-
-void callInMacroArg() {
- int j = 0;
- j++;
- TAKE_CALL_AS_ARG(cause_div_by_zero_in_header4(5));
- j--;
-}
diff --git a/test/Analysis/diagnostics/sarif-diagnostics-taint-test.c b/test/Analysis/diagnostics/sarif-diagnostics-taint-test.c
deleted file mode 100644
index 37ddc9df6a24..000000000000
--- a/test/Analysis/diagnostics/sarif-diagnostics-taint-test.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.security.taint,debug.TaintTest %s -verify -analyzer-output=sarif -o - | %diff_sarif %S/Inputs/expected-sarif/sarif-diagnostics-taint-test.c.sarif -
-#include "../Inputs/system-header-simulator.h"
-
-int atoi(const char *nptr);
-
-void f(void) {
- char s[80];
- scanf("%s", s);
- int d = atoi(s); // expected-warning {{tainted}}
-}
-
-int main(void) {
- f();
- return 0;
-}
diff --git a/test/Analysis/diagnostics/sarif-multi-diagnostic-test.c b/test/Analysis/diagnostics/sarif-multi-diagnostic-test.c
deleted file mode 100644
index 459128a05fa0..000000000000
--- a/test/Analysis/diagnostics/sarif-multi-diagnostic-test.c
+++ /dev/null
@@ -1,29 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.security.taint,debug.TaintTest %s -verify -analyzer-output=sarif -o - | %diff_sarif %S/Inputs/expected-sarif/sarif-multi-diagnostic-test.c.sarif -
-#include "../Inputs/system-header-simulator.h"
-
-int atoi(const char *nptr);
-
-void f(void) {
- char s[80];
- scanf("%s", s);
- int d = atoi(s); // expected-warning {{tainted}}
-}
-
-void g(void) {
- void (*fp)(int);
- fp(12); // expected-warning {{Called function pointer is an uninitialized pointer value}}
-}
-
-int h(int i) {
- if (i == 0)
- return 1 / i; // expected-warning {{Division by zero}}
- return 0;
-}
-
-int main(void) {
- f();
- g();
- h(0);
- return 0;
-}
-
diff --git a/test/Analysis/diagnostics/shortest-path-suppression.c b/test/Analysis/diagnostics/shortest-path-suppression.c
deleted file mode 100644
index d0fa4b51ef44..000000000000
--- a/test/Analysis/diagnostics/shortest-path-suppression.c
+++ /dev/null
@@ -1,19 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-config suppress-null-return-paths=true -analyzer-output=text -verify %s
-// expected-no-diagnostics
-
-int *returnNull() { return 0; }
-int coin();
-
-// Use a float parameter to ensure that the value is unknown. This will create
-// a cycle in the generated ExplodedGraph.
-void testCycle(float i) {
- int *x = returnNull();
- int y;
- while (i > 0) {
- x = returnNull();
- y = 2;
- i -= 1;
- }
- *x = 1; // no-warning
- y += 1;
-}
diff --git a/test/Analysis/diagnostics/text-diagnostics.c b/test/Analysis/diagnostics/text-diagnostics.c
deleted file mode 100644
index 01946476e099..000000000000
--- a/test/Analysis/diagnostics/text-diagnostics.c
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core.NullDereference -analyzer-output=text -fno-caret-diagnostics %s 2>&1 | FileCheck %s
-
-void testA() {
- int *p = 0;
- *p = 1;
-
- // CHECK-LABEL: text-diagnostics.c:{{.*}}:6: warning: Dereference of null pointer (loaded from variable 'p')
- // CHECK-NEXT: text-diagnostics.c:[[@LINE-4]]:3: note: 'p' initialized to a null pointer value
- // CHECK-NEXT: text-diagnostics.c:[[@LINE-4]]:6: note: Dereference of null pointer (loaded from variable 'p')
-}
-
-void testB(int *q) {
- if (q)
- return;
- *q = 1;
-
- // CHECK-LABEL: text-diagnostics.c:{{.*}}:6: warning: Dereference of null pointer (loaded from variable 'q')
- // CHECK-NEXT: text-diagnostics.c:[[@LINE-5]]:7: note: Assuming 'q' is null
- // CHECK-NEXT: text-diagnostics.c:[[@LINE-6]]:3: note: Taking false branch
- // CHECK-NEXT: text-diagnostics.c:[[@LINE-5]]:6: note: Dereference of null pointer (loaded from variable 'q')
-}
diff --git a/test/Analysis/diagnostics/track_subexpressions.cpp b/test/Analysis/diagnostics/track_subexpressions.cpp
deleted file mode 100644
index e5a6b8ff1156..000000000000
--- a/test/Analysis/diagnostics/track_subexpressions.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// RUN: %clang_analyze_cc1 -x c++ -analyzer-checker=core -analyzer-output=text -verify %s
-
-typedef unsigned char uint8_t;
-
-#define UINT8_MAX 255
-#define TCP_MAXWIN 65535
-
-uint8_t get_uint8_max() {
- uint8_t rcvscale = UINT8_MAX; // expected-note{{'rcvscale' initialized to 255}}
- return rcvscale; // expected-note{{Returning the value 255 (loaded from 'rcvscale')}}
-}
-
-void shift_by_undefined_value() {
- uint8_t shift_amount = get_uint8_max(); // expected-note{{'shift_amount' initialized to 255}}
- // expected-note@-1{{Calling 'get_uint8_max'}}
- // expected-note@-2{{Returning from 'get_uint8_max'}}
- (void)(TCP_MAXWIN << shift_amount); // expected-warning{{The result of the left shift is undefined due to shifting by '255', which is greater or equal to the width of type 'int'}}
- // expected-note@-1{{The result of the left shift is undefined due to shifting by '255', which is greater or equal to the width of type 'int'}}
-}
diff --git a/test/Analysis/diagnostics/undef-value-callee.h b/test/Analysis/diagnostics/undef-value-callee.h
deleted file mode 100644
index ea48c46a62c1..000000000000
--- a/test/Analysis/diagnostics/undef-value-callee.h
+++ /dev/null
@@ -1,4 +0,0 @@
-
-void callee() {
- ;
-}
diff --git a/test/Analysis/diagnostics/undef-value-caller.c b/test/Analysis/diagnostics/undef-value-caller.c
deleted file mode 100644
index d537f726f865..000000000000
--- a/test/Analysis/diagnostics/undef-value-caller.c
+++ /dev/null
@@ -1,13 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=plist -o %t %s
-// RUN: cat %t | %diff_plist %S/Inputs/expected-plists/undef-value-caller.c.plist -
-
-#include "undef-value-callee.h"
-
-// This code used to cause a crash since we were not adding fileID of the header to the plist diagnostic.
-
-int test_calling_unimportant_callee(int argc, char *argv[]) {
- int x;
- callee();
- return x; // expected-warning {{Undefined or garbage value returned to caller}}
-}
-
diff --git a/test/Analysis/diagnostics/undef-value-param.c b/test/Analysis/diagnostics/undef-value-param.c
deleted file mode 100644
index de128dafc427..000000000000
--- a/test/Analysis/diagnostics/undef-value-param.c
+++ /dev/null
@@ -1,65 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=plist-multi-file %s -o %t.plist
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/undef-value-param.c.plist -
-
-void foo_irrelevant(int c) {
- if (c)
- return;
- c++;
- return;
-}
-void foo(int c, int *x) {
- if (c)
- //expected-note@-1{{Assuming 'c' is not equal to 0}}
- //expected-note@-2{{Taking true branch}}
- return; // expected-note{{Returning without writing to '*x'}}
- *x = 5;
-}
-
-int use(int c) {
- int xx; //expected-note {{'xx' declared without an initial value}}
- int *y = &xx;
- foo (c, y);
- //expected-note@-1{{Calling 'foo'}}
- //expected-note@-2{{Returning from 'foo'}}
- foo_irrelevant(c);
- return xx+3; //expected-warning{{The left operand of '+' is a garbage value}}
- //expected-note@-1{{The left operand of '+' is a garbage value}}
-}
-
-void initArray(int x, double XYZ[3]) {
- if (x <= 0) //expected-note {{Taking true branch}}
- //expected-note@-1 {{Assuming 'x' is <= 0}}
- return;
- XYZ[0] = 1;
- XYZ[1] = 1;
- XYZ[2] = 1;
-}
-int testPassingParentRegionArray(int x) {
- double XYZ[3];
- initArray(x, XYZ); //expected-note {{Calling 'initArray'}}
- //expected-note@-1 {{Returning from 'initArray'}}
- return 1 * XYZ[1]; //expected-warning {{The right operand of '*' is a garbage value}}
- //expected-note@-1 {{The right operand of '*' is a garbage value}}
-}
-
-double *getValidPtr();
-struct WithFields {
- double *f1;
-};
-void initStruct(int x, struct WithFields *X) {
- if (x <= 0) //expected-note {{Taking true branch}}
- //expected-note@-1 {{Assuming 'x' is <= 0}}
-
- return; //expected-note{{Returning without writing to 'X->f1'}}
- X->f1 = getValidPtr();
-}
-double testPassingParentRegionStruct(int x) {
- struct WithFields st;
- st.f1 = 0; // expected-note {{Null pointer value stored to 'st.f1'}}
- initStruct(x, &st); //expected-note {{Calling 'initStruct'}}
- //expected-note@-1 {{Returning from 'initStruct'}}
- return (*st.f1); //expected-warning {{Dereference of null pointer}}
- //expected-note@-1{{Dereference of null pointer (loaded from field 'f1')}}
-}
-
diff --git a/test/Analysis/diagnostics/undef-value-param.m b/test/Analysis/diagnostics/undef-value-param.m
deleted file mode 100644
index 5dfd9f8216b6..000000000000
--- a/test/Analysis/diagnostics/undef-value-param.m
+++ /dev/null
@@ -1,76 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx -analyzer-output=text -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx -analyzer-output=plist-multi-file %s -o %t.plist
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/undef-value-param.m.plist -
-
-typedef signed char BOOL;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
-@end
-typedef const void * CFTypeRef;
-extern void CFRelease(CFTypeRef cf);
-
-@interface Cell : NSObject
-- (void)test;
-@end
-
-@interface SpecialString
-+ (id)alloc;
-- (oneway void)release;
-@end
-
-typedef SpecialString* SCDynamicStoreRef;
-static void CreateRef(SCDynamicStoreRef *storeRef, unsigned x);
-static void CreateRefUndef(SCDynamicStoreRef *storeRef, unsigned x);
-SCDynamicStoreRef anotherCreateRef(unsigned *err, unsigned x);
-
-@implementation Cell
-- (void) test {
- SCDynamicStoreRef storeRef = 0;
- CreateRef(&storeRef, 4);
- //expected-note@-1{{Calling 'CreateRef'}}
- //expected-note@-2{{Returning from 'CreateRef'}}
- CFRelease(storeRef); //expected-warning {{Null pointer argument in call to CFRelease}}
- //expected-note@-1{{Null pointer argument in call to CFRelease}}
-}
-
-- (void)test2 {
- SCDynamicStoreRef storeRef; // expected-note {{'storeRef' declared without an initial value}}
- CreateRefUndef(&storeRef, 4);
- //expected-note@-1{{Calling 'CreateRefUndef'}}
- //expected-note@-2{{Returning from 'CreateRefUndef'}}
- CFRelease(storeRef); //expected-warning {{1st function call argument is an uninitialized value}}
- //expected-note@-1{{1st function call argument is an uninitialized value}}
-}
-@end
-
-static void CreateRef(SCDynamicStoreRef *storeRef, unsigned x) {
- unsigned err = 0;
- SCDynamicStoreRef ref = anotherCreateRef(&err, x);
- if (err) {
- //expected-note@-1{{Assuming 'err' is not equal to 0}}
- //expected-note@-2{{Taking true branch}}
- CFRelease(ref);
- ref = 0; // expected-note{{nil object reference stored to 'ref'}}
- }
- *storeRef = ref; // expected-note{{nil object reference stored to 'storeRef'}}
-}
-
-static void CreateRefUndef(SCDynamicStoreRef *storeRef, unsigned x) {
- unsigned err = 0;
- SCDynamicStoreRef ref = anotherCreateRef(&err, x);
- if (err) {
- //expected-note@-1{{Assuming 'err' is not equal to 0}}
- //expected-note@-2{{Taking true branch}}
- CFRelease(ref);
- return; // expected-note{{Returning without writing to '*storeRef'}}
- }
- *storeRef = ref;
-}
-
diff --git a/test/Analysis/disable-all-checks.c b/test/Analysis/disable-all-checks.c
deleted file mode 100644
index fba53429ab5e..000000000000
--- a/test/Analysis/disable-all-checks.c
+++ /dev/null
@@ -1,20 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-store=region \
-// RUN: -analyzer-disable-all-checks -verify %s
-//
-// RUN: %clang_analyze_cc1 -analyzer-disable-all-checks -analyzer-checker=core \
-// RUN: -analyzer-store=region -verify %s
-//
-// RUN: %clang_analyze_cc1 -analyzer-disable-all-checks -verify %s
-//
-// RUN: not %clang_analyze_cc1 -analyzer-checker=core -analyzer-store=region \
-// RUN: -analyzer-disable-checker non.existant.Checker -verify %s 2>&1 \
-// RUN: | FileCheck %s
-//
-// expected-no-diagnostics
-
-// CHECK: no analyzer checkers are associated with 'non.existant.Checker'
-// CHECK: use -analyzer-disable-all-checks to disable all static analyzer checkers
-int buggy() {
- int x = 0;
- return 5/x; // no warning
-}
diff --git a/test/Analysis/dispatch-once.m b/test/Analysis/dispatch-once.m
deleted file mode 100644
index 7314dc96d541..000000000000
--- a/test/Analysis/dispatch-once.m
+++ /dev/null
@@ -1,116 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -fblocks -analyzer-checker=core,osx.API,unix.Malloc -verify %s
-// RUN: %clang_analyze_cc1 -w -fblocks -fobjc-arc -analyzer-checker=core,osx.API,unix.Malloc -verify %s
-
-#include "Inputs/system-header-simulator-objc.h"
-
-typedef unsigned long size_t;
-void *calloc(size_t nmemb, size_t size);
-
-typedef void (^dispatch_block_t)(void);
-typedef long dispatch_once_t;
-void dispatch_once(dispatch_once_t *predicate, dispatch_block_t block);
-
-void test_stack() {
- dispatch_once_t once;
- dispatch_once(&once, ^{}); // expected-warning{{Call to 'dispatch_once' uses the local variable 'once' for the predicate value. Using such transient memory for the predicate is potentially dangerous. Perhaps you intended to declare the variable as 'static'?}}
-}
-
-void test_static_local() {
- static dispatch_once_t once;
- dispatch_once(&once, ^{}); // no-warning
-}
-
-void test_heap_var() {
- dispatch_once_t *once = calloc(1, sizeof(dispatch_once_t));
- // Use regexps to check that we're NOT suggesting to make this static.
- dispatch_once(once, ^{}); // expected-warning-re{{{{^Call to 'dispatch_once' uses heap-allocated memory for the predicate value. Using such transient memory for the predicate is potentially dangerous$}}}}
-}
-
-void test_external_pointer(dispatch_once_t *once) {
- // External pointer does not necessarily point to the heap.
- dispatch_once(once, ^{}); // no-warning
-}
-
-typedef struct {
- dispatch_once_t once;
-} Struct;
-
-void test_local_struct() {
- Struct s;
- dispatch_once(&s.once, ^{}); // expected-warning{{Call to 'dispatch_once' uses memory within the local variable 's' for the predicate value.}}
-}
-
-void test_heap_struct() {
- Struct *s = calloc(1, sizeof(Struct));
- dispatch_once(&s->once, ^{}); // expected-warning{{Call to 'dispatch_once' uses heap-allocated memory for the predicate value.}}
-}
-
-@interface Object : NSObject {
-@public
- dispatch_once_t once;
- Struct s;
- dispatch_once_t once_array[2];
-}
-- (void)test_ivar_from_inside;
-- (void)test_ivar_struct_from_inside;
-@end
-
-@implementation Object
-- (void)test_ivar_from_inside {
- dispatch_once(&once, ^{}); // expected-warning{{Call to 'dispatch_once' uses the instance variable 'once' for the predicate value.}}
-}
-- (void)test_ivar_struct_from_inside {
- dispatch_once(&s.once, ^{}); // expected-warning{{Call to 'dispatch_once' uses memory within the instance variable 's' for the predicate value.}}
-}
-- (void)test_ivar_array_from_inside {
- dispatch_once(&once_array[1], ^{}); // expected-warning{{Call to 'dispatch_once' uses memory within the instance variable 'once_array' for the predicate value.}}
-}
-@end
-
-void test_ivar_from_alloc_init() {
- Object *o = [[Object alloc] init];
- dispatch_once(&o->once, ^{}); // expected-warning{{Call to 'dispatch_once' uses the instance variable 'once' for the predicate value.}}
-}
-void test_ivar_struct_from_alloc_init() {
- Object *o = [[Object alloc] init];
- dispatch_once(&o->s.once, ^{}); // expected-warning{{Call to 'dispatch_once' uses memory within the instance variable 's' for the predicate value.}}
-}
-void test_ivar_array_from_alloc_init() {
- Object *o = [[Object alloc] init];
- dispatch_once(&o->once_array[1], ^{}); // expected-warning{{Call to 'dispatch_once' uses memory within the instance variable 'once_array' for the predicate value.}}
-}
-
-void test_ivar_from_external_obj(Object *o) {
- // ObjC object pointer always points to the heap.
- dispatch_once(&o->once, ^{}); // expected-warning{{Call to 'dispatch_once' uses the instance variable 'once' for the predicate value.}}
-}
-void test_ivar_struct_from_external_obj(Object *o) {
- dispatch_once(&o->s.once, ^{}); // expected-warning{{Call to 'dispatch_once' uses memory within the instance variable 's' for the predicate value.}}
-}
-void test_ivar_array_from_external_obj(Object *o) {
- dispatch_once(&o->once_array[1], ^{}); // expected-warning{{Call to 'dispatch_once' uses memory within the instance variable 'once_array' for the predicate value.}}
-}
-
-void test_block_var_from_block() {
- __block dispatch_once_t once;
- ^{
- dispatch_once(&once, ^{}); // expected-warning{{Call to 'dispatch_once' uses the block variable 'once' for the predicate value.}}
- };
-}
-
-void use_block_var(dispatch_once_t *once);
-
-void test_block_var_from_outside_block() {
- __block dispatch_once_t once;
- ^{
- use_block_var(&once);
- };
- dispatch_once(&once, ^{}); // expected-warning{{Call to 'dispatch_once' uses the block variable 'once' for the predicate value.}}
-}
-
-void test_static_var_from_outside_block() {
- static dispatch_once_t once;
- ^{
- dispatch_once(&once, ^{}); // no-warning
- };
-}
diff --git a/test/Analysis/div-zero.cpp b/test/Analysis/div-zero.cpp
deleted file mode 100644
index 063450d8883b..000000000000
--- a/test/Analysis/div-zero.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core.DivideZero -verify %s
-
-int fooPR10616 (int qX ) {
- int a, c, d;
-
- d = (qX-1);
- while ( d != 0 ) {
- d = c - (c/d) * d;
- }
-
- return (a % (qX-1)); // expected-warning {{Division by zero}}
-
-}
diff --git a/test/Analysis/division-by-zero.c b/test/Analysis/division-by-zero.c
deleted file mode 100644
index 33bb6fa3a6f5..000000000000
--- a/test/Analysis/division-by-zero.c
+++ /dev/null
@@ -1,7 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=unix.Malloc %s
-// Do not crash due to division by zero
-
-int f(unsigned int a) {
- if (a <= 0) return 1 / a;
- return a;
-}
diff --git a/test/Analysis/domtest.c b/test/Analysis/domtest.c
deleted file mode 100644
index e957c8d70e02..000000000000
--- a/test/Analysis/domtest.c
+++ /dev/null
@@ -1,168 +0,0 @@
-// RUN: rm -f %t
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpDominators %s > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-
-// Test the DominatorsTree implementation with various control flows
-int test1()
-{
- int x = 6;
- int y = x/2;
- int z;
-
- while(y > 0) {
- if(y < x) {
- x = x/y;
- y = y-1;
- }else{
- z = x - y;
- }
- x = x - 1;
- x = x - 1;
- }
- z = x+y;
- z = 3;
- return 0;
-}
-
-// CHECK: Immediate dominance tree (Node#,IDom#):
-// CHECK: (0,1)
-// CHECK: (1,7)
-// CHECK: (2,3)
-// CHECK: (3,6)
-// CHECK: (4,6)
-// CHECK: (5,6)
-// CHECK: (6,7)
-// CHECK: (7,8)
-// CHECK: (8,9)
-// CHECK: (9,9)
-
-int test2()
-{
- int x,y,z;
-
- x = 10; y = 100;
- if(x > 0){
- y = 1;
- }else{
- while(x<=0){
- x++;
- y++;
- }
- }
- z = y;
-
- return 0;
-}
-
-// CHECK: Immediate dominance tree (Node#,IDom#):
-// CHECK: (0,1)
-// CHECK: (1,6)
-// CHECK: (2,3)
-// CHECK: (3,4)
-// CHECK: (4,6)
-// CHECK: (5,6)
-// CHECK: (6,7)
-// CHECK: (7,7)
-
-int test3()
-{
- int x,y,z;
-
- x = y = z = 1;
- if(x>0) {
- while(x>=0){
- while(y>=x) {
- x = x-1;
- y = y/2;
- }
- }
- }
- z = y;
-
- return 0;
-}
-
-// CHECK: Immediate dominance tree (Node#,IDom#):
-// CHECK: (0,1)
-// CHECK: (1,7)
-// CHECK: (2,5)
-// CHECK: (3,4)
-// CHECK: (4,5)
-// CHECK: (5,6)
-// CHECK: (6,7)
-// CHECK: (7,8)
-// CHECK: (8,8)
-
-int test4()
-{
- int y = 3;
- while(y > 0) {
- if(y < 3) {
- while(y>0)
- y ++;
- }else{
- while(y<10)
- y ++;
- }
- }
- return 0;
-}
-
-// CHECK: Immediate dominance tree (Node#,IDom#):
-// CHECK: (0,1)
-// CHECK: (1,10)
-// CHECK: (2,9)
-// CHECK: (3,4)
-// CHECK: (4,5)
-// CHECK: (5,9)
-// CHECK: (6,7)
-// CHECK: (7,8)
-// CHECK: (8,9)
-// CHECK: (9,10)
-// CHECK: (10,11)
-// CHECK: (11,12)
-// CHECK: (12,12)
-
-int test5()
-{
- int x,y,z,a,b,c;
- x = 1;
- y = 2;
- z = 3;
- a = 4;
- b = 5;
- c = 6;
- if ( x < 10 ) {
- if ( y < 10 ) {
- if ( z < 10 ) {
- x = 4;
- } else {
- x = 5;
- }
- a = 10;
- } else {
- x = 6;
- }
- b = 10;
- } else {
- x = 7;
- }
- c = 11;
- return 0;
-}
-
-// CHECK: Immediate dominance tree (Node#,IDom#):
-// CHECK: (0,1)
-// CHECK: (1,10)
-// CHECK: (2,10)
-// CHECK: (3,9)
-// CHECK: (4,9)
-// CHECK: (5,8)
-// CHECK: (6,8)
-// CHECK: (7,8)
-// CHECK: (8,9)
-// CHECK: (9,10)
-// CHECK: (10,11)
-// CHECK: (11,11)
-
-
diff --git a/test/Analysis/dtor-cxx11.cpp b/test/Analysis/dtor-cxx11.cpp
deleted file mode 100644
index 33e13e99bd3b..000000000000
--- a/test/Analysis/dtor-cxx11.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,unix.Malloc,debug.ExprInspection -Wno-null-dereference -verify %s
-// expected-no-diagnostics
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-namespace Cxx11BraceInit {
- struct Foo {
- ~Foo() {}
- };
-
- void testInitializerList() {
- for (Foo foo : {Foo(), Foo()}) {}
- }
-}
-
diff --git a/test/Analysis/dtor.cpp b/test/Analysis/dtor.cpp
deleted file mode 100644
index d843f03aada7..000000000000
--- a/test/Analysis/dtor.cpp
+++ /dev/null
@@ -1,542 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,debug.ExprInspection,cplusplus -analyzer-config c++-inlining=destructors -Wno-null-dereference -Wno-inaccessible-base -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_checkInlined(bool);
-
-class A {
-public:
- ~A() {
- int *x = 0;
- *x = 3; // expected-warning{{Dereference of null pointer}}
- }
-};
-
-int main() {
- A a;
-}
-
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-class SmartPointer {
- void *X;
-public:
- SmartPointer(void *x) : X(x) {}
- ~SmartPointer() {
- free(X);
- }
-};
-
-void testSmartPointer() {
- char *mem = (char*)malloc(4);
- {
- SmartPointer Deleter(mem);
- // destructor called here
- }
- *mem = 0; // expected-warning{{Use of memory after it is freed}}
-}
-
-
-void doSomething();
-void testSmartPointer2() {
- char *mem = (char*)malloc(4);
- {
- SmartPointer Deleter(mem);
- // Remove dead bindings...
- doSomething();
- // destructor called here
- }
- *mem = 0; // expected-warning{{Use of memory after it is freed}}
-}
-
-
-class Subclass : public SmartPointer {
-public:
- Subclass(void *x) : SmartPointer(x) {}
-};
-
-void testSubclassSmartPointer() {
- char *mem = (char*)malloc(4);
- {
- Subclass Deleter(mem);
- // Remove dead bindings...
- doSomething();
- // destructor called here
- }
- *mem = 0; // expected-warning{{Use of memory after it is freed}}
-}
-
-
-class MultipleInheritance : public Subclass, public SmartPointer {
-public:
- MultipleInheritance(void *a, void *b) : Subclass(a), SmartPointer(b) {}
-};
-
-void testMultipleInheritance1() {
- char *mem = (char*)malloc(4);
- {
- MultipleInheritance Deleter(mem, 0);
- // Remove dead bindings...
- doSomething();
- // destructor called here
- }
- *mem = 0; // expected-warning{{Use of memory after it is freed}}
-}
-
-void testMultipleInheritance2() {
- char *mem = (char*)malloc(4);
- {
- MultipleInheritance Deleter(0, mem);
- // Remove dead bindings...
- doSomething();
- // destructor called here
- }
- *mem = 0; // expected-warning{{Use of memory after it is freed}}
-}
-
-void testMultipleInheritance3() {
- char *mem = (char*)malloc(4);
- {
- MultipleInheritance Deleter(mem, mem);
- // Remove dead bindings...
- doSomething();
- // destructor called here
- // expected-warning@28 {{Attempt to free released memory}}
- }
-}
-
-
-class SmartPointerMember {
- SmartPointer P;
-public:
- SmartPointerMember(void *x) : P(x) {}
-};
-
-void testSmartPointerMember() {
- char *mem = (char*)malloc(4);
- {
- SmartPointerMember Deleter(mem);
- // Remove dead bindings...
- doSomething();
- // destructor called here
- }
- *mem = 0; // expected-warning{{Use of memory after it is freed}}
-}
-
-
-struct IntWrapper {
- IntWrapper() : x(0) {}
- ~IntWrapper();
- int *x;
-};
-
-void testArrayInvalidation() {
- int i = 42;
- int j = 42;
-
- {
- IntWrapper arr[2];
-
- // There should be no undefined value warnings here.
- // Eventually these should be TRUE as well, but right now
- // we can't handle array constructors.
- clang_analyzer_eval(arr[0].x == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(arr[1].x == 0); // expected-warning{{UNKNOWN}}
-
- arr[0].x = &i;
- arr[1].x = &j;
- clang_analyzer_eval(*arr[0].x == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(*arr[1].x == 42); // expected-warning{{TRUE}}
- }
-
- // The destructors should have invalidated i and j.
- clang_analyzer_eval(i == 42); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(j == 42); // expected-warning{{UNKNOWN}}
-}
-
-
-
-// Don't crash on a default argument inside an initializer.
-struct DefaultArg {
- DefaultArg(int x = 0) {}
- ~DefaultArg();
-};
-
-struct InheritsDefaultArg : DefaultArg {
- InheritsDefaultArg() {}
- virtual ~InheritsDefaultArg();
-};
-
-void testDefaultArg() {
- InheritsDefaultArg a;
- // Force a bug to be emitted.
- *(char *)0 = 1; // expected-warning{{Dereference of null pointer}}
-}
-
-
-namespace DestructorVirtualCalls {
- class A {
- public:
- int *out1, *out2, *out3;
-
- virtual int get() { return 1; }
-
- ~A() {
- *out1 = get();
- }
- };
-
- class B : public A {
- public:
- virtual int get() { return 2; }
-
- ~B() {
- *out2 = get();
- }
- };
-
- class C : public B {
- public:
- virtual int get() { return 3; }
-
- ~C() {
- *out3 = get();
- }
- };
-
- void test() {
- int a, b, c;
-
- // New scope for the C object.
- {
- C obj;
- clang_analyzer_eval(obj.get() == 3); // expected-warning{{TRUE}}
-
- // Sanity check for devirtualization.
- A *base = &obj;
- clang_analyzer_eval(base->get() == 3); // expected-warning{{TRUE}}
-
- obj.out1 = &a;
- obj.out2 = &b;
- obj.out3 = &c;
- }
-
- clang_analyzer_eval(a == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(b == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(c == 3); // expected-warning{{TRUE}}
- }
-}
-
-
-namespace DestructorsShouldNotAffectReturnValues {
- class Dtor {
- public:
- ~Dtor() {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- }
- };
-
- void *allocate() {
- Dtor d;
- return malloc(4); // no-warning
- }
-
- void test() {
- // At one point we had an issue where the statements inside an
- // inlined destructor kept us from finding the return statement,
- // leading the analyzer to believe that the malloc'd memory had leaked.
- void *p = allocate();
- free(p); // no-warning
- }
-}
-
-namespace MultipleInheritanceVirtualDtors {
- class VirtualDtor {
- protected:
- virtual ~VirtualDtor() {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- }
- };
-
- class NonVirtualDtor {
- protected:
- ~NonVirtualDtor() {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- }
- };
-
- class SubclassA : public VirtualDtor, public NonVirtualDtor {
- public:
- virtual ~SubclassA() {}
- };
- class SubclassB : public NonVirtualDtor, public VirtualDtor {
- public:
- virtual ~SubclassB() {}
- };
-
- void test() {
- SubclassA a;
- SubclassB b;
- }
-}
-
-namespace ExplicitDestructorCall {
- class VirtualDtor {
- public:
- virtual ~VirtualDtor() {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- }
- };
-
- class Subclass : public VirtualDtor {
- public:
- virtual ~Subclass() {
- clang_analyzer_checkInlined(false); // no-warning
- }
- };
-
- void destroy(Subclass *obj) {
- obj->VirtualDtor::~VirtualDtor();
- }
-}
-
-
-namespace MultidimensionalArrays {
- void testArrayInvalidation() {
- int i = 42;
- int j = 42;
-
- {
- IntWrapper arr[2][2];
-
- // There should be no undefined value warnings here.
- // Eventually these should be TRUE as well, but right now
- // we can't handle array constructors.
- clang_analyzer_eval(arr[0][0].x == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(arr[1][1].x == 0); // expected-warning{{UNKNOWN}}
-
- arr[0][0].x = &i;
- arr[1][1].x = &j;
- clang_analyzer_eval(*arr[0][0].x == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(*arr[1][1].x == 42); // expected-warning{{TRUE}}
- }
-
- // The destructors should have invalidated i and j.
- clang_analyzer_eval(i == 42); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(j == 42); // expected-warning{{UNKNOWN}}
- }
-}
-
-namespace LifetimeExtension {
- struct IntWrapper {
- int x;
- IntWrapper(int y) : x(y) {}
- IntWrapper() {
- extern void use(int);
- use(x); // no-warning
- }
- };
-
- struct DerivedWrapper : public IntWrapper {
- DerivedWrapper(int y) : IntWrapper(y) {}
- };
-
- DerivedWrapper get() {
- return DerivedWrapper(1);
- }
-
- void test() {
- const DerivedWrapper &d = get(); // lifetime extended here
- }
-
-
- class SaveOnDestruct {
- public:
- static int lastOutput;
- int value;
-
- SaveOnDestruct();
- ~SaveOnDestruct() {
- lastOutput = value;
- }
- };
-
- void testSimple() {
- {
- const SaveOnDestruct &obj = SaveOnDestruct();
- if (obj.value != 42)
- return;
- // destructor called here
- }
-
- clang_analyzer_eval(SaveOnDestruct::lastOutput == 42); // expected-warning{{TRUE}}
- }
-
- struct NRCheck {
- bool bool_;
- NRCheck():bool_(true) {}
- ~NRCheck() __attribute__((noreturn));
- operator bool() const { return bool_; }
- };
-
- struct CheckAutoDestructor {
- bool bool_;
- CheckAutoDestructor():bool_(true) {}
- operator bool() const { return bool_; }
- };
-
- struct CheckCustomDestructor {
- bool bool_;
- CheckCustomDestructor():bool_(true) {}
- ~CheckCustomDestructor();
- operator bool() const { return bool_; }
- };
-
- bool testUnnamedNR() {
- if (NRCheck())
- return true;
- return false;
- }
-
- bool testNamedNR() {
- if (NRCheck c = NRCheck())
- return true;
- return false;
- }
-
- bool testUnnamedAutoDestructor() {
- if (CheckAutoDestructor())
- return true;
- return false;
- }
-
- bool testNamedAutoDestructor() {
- if (CheckAutoDestructor c = CheckAutoDestructor())
- return true;
- return false;
- }
-
- bool testUnnamedCustomDestructor() {
- if (CheckCustomDestructor())
- return true;
- return false;
- }
-
- // This case used to cause an unexpected "Undefined or garbage value returned
- // to caller" warning
- bool testNamedCustomDestructor() {
- if (CheckCustomDestructor c = CheckCustomDestructor())
- return true;
- return false;
- }
-
- bool testMultipleTemporariesCustomDestructor() {
- if (CheckCustomDestructor c = (CheckCustomDestructor(), CheckCustomDestructor()))
- return true;
- return false;
- }
-
- class VirtualDtorBase {
- public:
- int value;
- virtual ~VirtualDtorBase() {}
- };
-
- class SaveOnVirtualDestruct : public VirtualDtorBase {
- public:
- static int lastOutput;
-
- SaveOnVirtualDestruct();
- virtual ~SaveOnVirtualDestruct() {
- lastOutput = value;
- }
- };
-
- void testVirtual() {
- {
- const VirtualDtorBase &obj = SaveOnVirtualDestruct();
- if (obj.value != 42)
- return;
- // destructor called here
- }
-
- clang_analyzer_eval(SaveOnVirtualDestruct::lastOutput == 42); // expected-warning{{TRUE}}
- }
-}
-
-namespace NoReturn {
- struct NR {
- ~NR() __attribute__((noreturn));
- };
-
- void f(int **x) {
- NR nr;
- }
-
- void g() {
- int *x;
- f(&x);
- *x = 47; // no warning
- }
-
- void g2(int *x) {
- if (! x) NR();
- *x = 47; // no warning
- }
-}
-
-namespace PseudoDtor {
- template <typename T>
- void destroy(T &obj) {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- obj.~T();
- }
-
- void test() {
- int i;
- destroy(i);
- clang_analyzer_eval(true); // expected-warning{{TRUE}}
- }
-}
-
-namespace Incomplete {
- class Foo; // expected-note{{forward declaration}}
- void f(Foo *foo) { delete foo; } // expected-warning{{deleting pointer to incomplete type}}
-}
-
-namespace TypeTraitExpr {
-template <bool IsSimple, typename T>
-struct copier {
- static void do_copy(T *dest, const T *src, unsigned count);
-};
-template <typename T, typename U>
-void do_copy(T *dest, const U *src, unsigned count) {
- const bool IsSimple = __is_trivial(T) && __is_same(T, U);
- copier<IsSimple, T>::do_copy(dest, src, count);
-}
-struct NonTrivial {
- int *p;
- NonTrivial() : p(new int[1]) { p[0] = 0; }
- NonTrivial(const NonTrivial &other) {
- p = new int[1];
- do_copy(p, other.p, 1);
- }
- NonTrivial &operator=(const NonTrivial &other) {
- p = other.p;
- return *this;
- }
- ~NonTrivial() {
- delete[] p; // expected-warning {{free released memory}}
- }
-};
-
-void f() {
- NonTrivial nt1;
- NonTrivial nt2(nt1);
- nt1 = nt2;
- clang_analyzer_eval(__is_trivial(NonTrivial)); // expected-warning{{FALSE}}
- clang_analyzer_eval(__alignof(NonTrivial) > 0); // expected-warning{{TRUE}}
-}
-}
diff --git a/test/Analysis/dtors-in-dtor-cfg-output.cpp b/test/Analysis/dtors-in-dtor-cfg-output.cpp
deleted file mode 100644
index 4c1c8dd91da7..000000000000
--- a/test/Analysis/dtors-in-dtor-cfg-output.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG %s 2>&1 | FileCheck %s
-
-class A {
-public:
- ~A() {}
-};
-
-class B : public virtual A {
-public:
- ~B() {}
-};
-
-class C : public virtual A {
-public:
- ~C() {}
-};
-
-class TestOrder : public C, public B, public virtual A {
- A a;
- int i;
- A *p;
-public:
- ~TestOrder();
-};
-
-TestOrder::~TestOrder() {}
-
-class TestArray {
- A a[2];
- A b[0];
-public:
- ~TestArray();
-};
-
-TestArray::~TestArray() {}
-
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: this->a.~A() (Member object destructor)
-// CHECK: 2: ~B() (Base object destructor)
-// CHECK: 3: ~C() (Base object destructor)
-// CHECK: 4: ~A() (Base object destructor)
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: this->a.~A() (Member object destructor)
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
diff --git a/test/Analysis/dump_egraph.c b/test/Analysis/dump_egraph.c
deleted file mode 100644
index 6e8793b202be..000000000000
--- a/test/Analysis/dump_egraph.c
+++ /dev/null
@@ -1,16 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-dump-egraph=%t.dot %s
-// RUN: cat %t.dot | FileCheck %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-dump-egraph=%t.dot -trim-egraph %s
-// REQUIRES: asserts
-
-int getJ();
-
-int foo() {
- int *x = 0, *y = 0;
- return *x + *y;
-}
-
-// CHECK: digraph "Exploded Graph" {
-// CHECK: Edge: (B2, B1)
-// CHECK: Block Entrance: B1
-// CHECK: Bug report attached
diff --git a/test/Analysis/dump_egraph.cpp b/test/Analysis/dump_egraph.cpp
deleted file mode 100644
index 10e33a7523f5..000000000000
--- a/test/Analysis/dump_egraph.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-dump-egraph=%t.dot %s
-// RUN: cat %t.dot | FileCheck %s
-// REQUIRES: asserts
-
-struct S {
- ~S();
-};
-
-struct T {
- S s;
- T() : s() {}
-};
-
-void foo() {
- // Test that dumping symbols conjured on null statements doesn't crash.
- T t;
-}
-
-// CHECK: (LC1,S{{[0-9]*}},construct into local variable) T t;\n : &t
-// CHECK: (LC2,I{{[0-9]*}},construct into member variable) s : &t-\>s
-// CHECK: conj_$5\{int, LC3, no stmt, #1\}
-
diff --git a/test/Analysis/dynamic-cast.cpp b/test/Analysis/dynamic-cast.cpp
deleted file mode 100644
index 0c86f81cb819..000000000000
--- a/test/Analysis/dynamic-cast.cpp
+++ /dev/null
@@ -1,253 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=none -verify %s
-
-void clang_analyzer_eval(bool);
-
-class A {
-public:
- virtual void f(){};
-
-};
-class B : public A{
-public:
- int m;
-};
-class C : public A{};
-
-class BB: public B{};
-
-// A lot of the tests below have the if statement in them, which forces the
-// analyzer to explore both path - when the result is 0 and not. This makes
-// sure that we definitely know that the result is non-0 (as the result of
-// the cast).
-int testDynCastFromRadar() {
- B aa;
- A *a = &aa;
- const int* res = 0;
- B *b = dynamic_cast<B*>(a);
- static const int i = 5;
- if(b) {
- res = &i;
- } else {
- res = 0;
- }
- return *res; // no warning
-}
-
-int testBaseToBase1() {
- B b;
- B *pb = &b;
- B *pbb = dynamic_cast<B*>(pb);
- const int* res = 0;
- static const int i = 5;
- if (pbb) {
- res = &i;
- } else {
- res = 0;
- }
- return *res; // no warning
-}
-
-int testMultipleLevelsOfSubclassing1() {
- BB bb;
- B *pb = &bb;
- A *pa = pb;
- B *b = dynamic_cast<B*>(pa);
- const int* res = 0;
- static const int i = 5;
- if (b) {
- res = &i;
- } else {
- res = 0;
- }
- return *res; // no warning
-}
-
-int testMultipleLevelsOfSubclassing2() {
- BB bb;
- A *pbb = &bb;
- B *b = dynamic_cast<B*>(pbb);
- BB *s = dynamic_cast<BB*>(b);
- const int* res = 0;
- static const int i = 5;
- if (s) {
- res = &i;
- } else {
- res = 0;
- }
- return *res; // no warning
-}
-
-int testMultipleLevelsOfSubclassing3() {
- BB bb;
- A *pbb = &bb;
- B *b = dynamic_cast<B*>(pbb);
- return b->m; // no warning
-}
-
-int testLHS() {
- B aa;
- A *a = &aa;
- return (dynamic_cast<B*>(a))->m;
-}
-
-int testLHS2() {
- B aa;
- A *a = &aa;
- return (*dynamic_cast<B*>(a)).m;
-}
-
-int testDynCastUnknown2(class A *a) {
- B *b = dynamic_cast<B*>(a);
- return b->m; // no warning
-}
-
-int testDynCastUnknown(class A *a) {
- B *b = dynamic_cast<B*>(a);
- const int* res = 0;
- static const int i = 5;
- if (b) {
- res = &i;
- } else {
- res = 0;
- }
- return *res; // expected-warning {{Dereference of null pointer}}
-}
-
-int testDynCastFail2() {
- C c;
- A *pa = &c;
- B *b = dynamic_cast<B*>(pa);
- return b->m; // expected-warning {{dereference of a null pointer}}
-}
-
-int testLHSFail() {
- C c;
- A *a = &c;
- return (*dynamic_cast<B*>(a)).m; // expected-warning {{Dereference of null pointer}}
-}
-
-int testBaseToDerivedFail() {
- A a;
- B *b = dynamic_cast<B*>(&a);
- return b->m; // expected-warning {{dereference of a null pointer}}
-}
-
-int testConstZeroFail() {
- B *b = dynamic_cast<B*>((A *)0);
- return b->m; // expected-warning {{dereference of a null pointer}}
-}
-
-int testConstZeroFail2() {
- A *a = 0;
- B *b = dynamic_cast<B*>(a);
- return b->m; // expected-warning {{dereference of a null pointer}}
-}
-
-int testUpcast() {
- B b;
- A *a = dynamic_cast<A*>(&b);
- const int* res = 0;
- static const int i = 5;
- if (a) {
- res = &i;
- } else {
- res = 0;
- }
- return *res; // no warning
-}
-
-int testCastToVoidStar() {
- A a;
- void *b = dynamic_cast<void*>(&a);
- const int* res = 0;
- static const int i = 5;
- if (b) {
- res = &i;
- } else {
- res = 0;
- }
- return *res; // no warning
-}
-
-int testReferenceSuccessfulCast() {
- B rb;
- B &b = dynamic_cast<B&>(rb);
- int *x = 0;
- return *x; // expected-warning {{Dereference of null pointer}}
-}
-
-int testReferenceFailedCast() {
- A a;
- B &b = dynamic_cast<B&>(a);
- int *x = 0;
- return *x; // no warning (An exception is thrown by the cast.)
-}
-
-// Here we allow any outcome of the cast and this is good because there is a
-// situation where this will fail. So if the user has written the code in this
-// way, we assume they expect the cast to succeed.
-// Note, this might need special handling if we track types of symbolic casts
-// and use them for dynamic_cast handling.
-int testDynCastMostLikelyWillFail(C *c) {
- B *b = 0;
- b = dynamic_cast<B*>(c);
- const int* res = 0;
- static const int i = 5;
- if (b) {
- res = &i;
- } else {
- res = 0;
- }
-
- // Note: IPA is turned off for this test because the code below shows how the
- // dynamic_cast could succeed.
- return *res; // expected-warning{{Dereference of null pointer}}
-}
-
-class M : public B, public C {};
-void callTestDynCastMostLikelyWillFail() {
- M m;
- testDynCastMostLikelyWillFail(&m);
-}
-
-
-void testDynCastToMiddleClass () {
- class BBB : public BB {};
- BBB obj;
- A &ref = obj;
-
- // These didn't always correctly layer base regions.
- B *ptr = dynamic_cast<B*>(&ref);
- clang_analyzer_eval(ptr != 0); // expected-warning{{TRUE}}
-
- // This is actually statically resolved to be a DerivedToBase cast.
- ptr = dynamic_cast<B*>(&obj);
- clang_analyzer_eval(ptr != 0); // expected-warning{{TRUE}}
-}
-
-
-// -----------------------------
-// False positives/negatives.
-// -----------------------------
-
-// Due to symbolic regions not being typed.
-int testDynCastFalsePositive(BB *c) {
- B *b = 0;
- b = dynamic_cast<B*>(c);
- const int* res = 0;
- static const int i = 5;
- if (b) {
- res = &i;
- } else {
- res = 0;
- }
- return *res; // expected-warning{{Dereference of null pointer}}
-}
-
-// Does not work when we new an object.
-int testDynCastFail3() {
- A *a = new A();
- B *b = dynamic_cast<B*>(a);
- return b->m;
-}
-
diff --git a/test/Analysis/dynamic_type_check.m b/test/Analysis/dynamic_type_check.m
deleted file mode 100644
index 6753892e1d52..000000000000
--- a/test/Analysis/dynamic_type_check.m
+++ /dev/null
@@ -1,43 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core.DynamicTypeChecker -verify %s
-
-
-#define nil 0
-typedef unsigned long NSUInteger;
-typedef int BOOL;
-
-@protocol NSObject
-+ (id)alloc;
-- (id)init;
-@end
-
-@protocol NSCopying
-@end
-
-__attribute__((objc_root_class))
-@interface NSObject <NSObject>
-@end
-
-@interface NSString : NSObject <NSCopying>
-@end
-
-@interface NSMutableString : NSString
-@end
-
-@interface NSNumber : NSObject <NSCopying>
-@end
-
-@class MyType;
-
-void testTypeCheck(NSString* str) {
- id obj = str;
- NSNumber *num = obj; // expected-warning {{}}
- (void)num;
-}
-
-void testForwardDeclarations(NSString* str) {
- id obj = str;
- // Do not warn, since no information is available whether MyType is a sub or
- // super class of any other type.
- MyType *num = obj; // no warning
- (void)num;
-}
diff --git a/test/Analysis/edges-new.mm b/test/Analysis/edges-new.mm
deleted file mode 100644
index 5a58850d0684..000000000000
--- a/test/Analysis/edges-new.mm
+++ /dev/null
@@ -1,592 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,deadcode.DeadStores,osx.cocoa.RetainCount,unix.Malloc,unix.MismatchedDeallocator -analyzer-output=plist -o %t -w %s
-// RUN: cat %t | %diff_plist %S/Inputs/expected-plists/edges-new.mm.plist -
-
-//===----------------------------------------------------------------------===//
-// 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;
- }
- };
-}
-
diff --git a/test/Analysis/elementtype.c b/test/Analysis/elementtype.c
deleted file mode 100644
index 7eba8e14b3a7..000000000000
--- a/test/Analysis/elementtype.c
+++ /dev/null
@@ -1,13 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-store=region %s
-
-typedef struct added_obj_st {
- int type;
-} ADDED_OBJ;
-
-// Test if we are using the canonical type for ElementRegion.
-void f() {
- ADDED_OBJ *ao[4]={((void*)0),((void*)0),((void*)0),((void*)0)};
- if (ao[0] != ((void*)0)) {
- ao[0]->type=0;
- }
-}
diff --git a/test/Analysis/end-function-return-stmt.cpp b/test/Analysis/end-function-return-stmt.cpp
deleted file mode 100644
index 036ccba3aa93..000000000000
--- a/test/Analysis/end-function-return-stmt.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-//RUN: %clang_analyze_cc1 -analyzer-checker=debug.AnalysisOrder -analyzer-config debug.AnalysisOrder:EndFunction=true %s 2>&1 | FileCheck %s
-
-// At the end of a function, we can only obtain a ReturnStmt if the last
-// CFGElement in the CFGBlock is either a CFGStmt or a CFGAutomaticObjDtor.
-
-void noReturnStmt() {}
-
-struct S {
- S();
- ~S();
-};
-
-int dtorAfterReturnStmt() {
- S s;
- return 0;
-}
-
-S endsWithReturnStmt() {
- return S();
-}
-
-// endsWithReturnStmt()
-// CHECK: EndFunction
-// CHECK-NEXT: ReturnStmt: yes
-// CHECK-NEXT: CFGElement: CFGStmt
-
-// dtorAfterReturnStmt()
-// CHECK: EndFunction
-// CHECK-NEXT: ReturnStmt: yes
-// CHECK-NEXT: CFGElement: CFGAutomaticObjDtor
-
-// noReturnStmt()
-// CHECK: EndFunction
-// CHECK-NEXT: ReturnStmt: no
diff --git a/test/Analysis/engine/replay-without-inlining.c b/test/Analysis/engine/replay-without-inlining.c
deleted file mode 100644
index 0b9820eba698..000000000000
--- a/test/Analysis/engine/replay-without-inlining.c
+++ /dev/null
@@ -1,58 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc -verify %s
-// expected-no-diagnostics
-
-typedef struct {
- char I[4];
- int S;
-} Hdr;
-typedef struct {
- short w;
-} Hdr2;
-typedef struct {
- Hdr2 usedtobeundef;
-} Info;
-typedef struct {
- const unsigned char *ib;
- int cur;
- int end;
-} IB;
-unsigned long gl(IB *input);
-inline void gbs(IB *input, unsigned char *buf, int count);
-void getB(IB *st, Hdr2 *usedtobeundef);
-inline unsigned char gb(IB *input) {
- if (input->cur + 1 > input->end)
- ;
- return input->ib[(input->cur)++];
-}
-static void getID(IB *st, char str[4]) {
- str[0] = gb(st);
- str[1] = gb(st);
- str[2] = gb(st);
- str[3] = gb(st);
-}
-static void getH(IB *st, Hdr *header) {
- getID (st, header->I);
- header->S = gl(st);
-}
-static void readILBM(IB *st, Info *pic) {
- // Initialize field;
- pic->usedtobeundef.w = 5;
-
- // Time out in the function so that we will be forced to retry with no inlining.
- Hdr header;
- getH (st, &header);
- getID(st, header.I);
- int i = 0;
- while (st->cur < st->end && i < 4) {
- i++;
- getH (st, &header);
- }
-}
-int bitmapImageRepFromIFF(IB st, const unsigned char *ib, int il) {
- Info pic;
- st.ib = ib;
- st.cur = 0;
- st.end = il;
- readILBM(&st,&pic);
- return pic.usedtobeundef.w; // No undefined value warning here.
-}
diff --git a/test/Analysis/enum-cast-out-of-range.cpp b/test/Analysis/enum-cast-out-of-range.cpp
deleted file mode 100644
index e77339b551e0..000000000000
--- a/test/Analysis/enum-cast-out-of-range.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-// RUN: %clang_analyze_cc1 \
-// RUN: -analyzer-checker=core,alpha.cplusplus.EnumCastOutOfRange \
-// RUN: -std=c++11 -verify %s
-
-enum unscoped_unspecified_t {
- unscoped_unspecified_0 = -4,
- unscoped_unspecified_1,
- unscoped_unspecified_2 = 1,
- unscoped_unspecified_3,
- unscoped_unspecified_4 = 4
-};
-
-enum unscoped_specified_t : int {
- unscoped_specified_0 = -4,
- unscoped_specified_1,
- unscoped_specified_2 = 1,
- unscoped_specified_3,
- unscoped_specified_4 = 4
-};
-
-enum class scoped_unspecified_t {
- scoped_unspecified_0 = -4,
- scoped_unspecified_1,
- scoped_unspecified_2 = 1,
- scoped_unspecified_3,
- scoped_unspecified_4 = 4
-};
-
-enum class scoped_specified_t : int {
- scoped_specified_0 = -4,
- scoped_specified_1,
- scoped_specified_2 = 1,
- scoped_specified_3,
- scoped_specified_4 = 4
-};
-
-struct S {
- unscoped_unspecified_t E : 5;
-};
-
-void unscopedUnspecified() {
- unscoped_unspecified_t InvalidBeforeRangeBegin = static_cast<unscoped_unspecified_t>(-5); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_unspecified_t ValidNegativeValue1 = static_cast<unscoped_unspecified_t>(-4); // OK.
- unscoped_unspecified_t ValidNegativeValue2 = static_cast<unscoped_unspecified_t>(-3); // OK.
- unscoped_unspecified_t InvalidInsideRange1 = static_cast<unscoped_unspecified_t>(-2); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_unspecified_t InvalidInsideRange2 = static_cast<unscoped_unspecified_t>(-1); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_unspecified_t InvalidInsideRange3 = static_cast<unscoped_unspecified_t>(0); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_unspecified_t ValidPositiveValue1 = static_cast<unscoped_unspecified_t>(1); // OK.
- unscoped_unspecified_t ValidPositiveValue2 = static_cast<unscoped_unspecified_t>(2); // OK.
- unscoped_unspecified_t InvalidInsideRange4 = static_cast<unscoped_unspecified_t>(3); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_unspecified_t ValidPositiveValue3 = static_cast<unscoped_unspecified_t>(4); // OK.
- unscoped_unspecified_t InvalidAfterRangeEnd = static_cast<unscoped_unspecified_t>(5); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
-}
-
-void unscopedSpecified() {
- unscoped_specified_t InvalidBeforeRangeBegin = static_cast<unscoped_specified_t>(-5); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_specified_t ValidNegativeValue1 = static_cast<unscoped_specified_t>(-4); // OK.
- unscoped_specified_t ValidNegativeValue2 = static_cast<unscoped_specified_t>(-3); // OK.
- unscoped_specified_t InvalidInsideRange1 = static_cast<unscoped_specified_t>(-2); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_specified_t InvalidInsideRange2 = static_cast<unscoped_specified_t>(-1); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_specified_t InvalidInsideRange3 = static_cast<unscoped_specified_t>(0); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_specified_t ValidPositiveValue1 = static_cast<unscoped_specified_t>(1); // OK.
- unscoped_specified_t ValidPositiveValue2 = static_cast<unscoped_specified_t>(2); // OK.
- unscoped_specified_t InvalidInsideRange4 = static_cast<unscoped_specified_t>(3); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_specified_t ValidPositiveValue3 = static_cast<unscoped_specified_t>(4); // OK.
- unscoped_specified_t InvalidAfterRangeEnd = static_cast<unscoped_specified_t>(5); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
-}
-
-void scopedUnspecified() {
- scoped_unspecified_t InvalidBeforeRangeBegin = static_cast<scoped_unspecified_t>(-5); // expected-warning{{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_unspecified_t ValidNegativeValue1 = static_cast<scoped_unspecified_t>(-4); // OK.
- scoped_unspecified_t ValidNegativeValue2 = static_cast<scoped_unspecified_t>(-3); // OK.
- scoped_unspecified_t InvalidInsideRange1 = static_cast<scoped_unspecified_t>(-2); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_unspecified_t InvalidInsideRange2 = static_cast<scoped_unspecified_t>(-1); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_unspecified_t InvalidInsideRange3 = static_cast<scoped_unspecified_t>(0); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_unspecified_t ValidPositiveValue1 = static_cast<scoped_unspecified_t>(1); // OK.
- scoped_unspecified_t ValidPositiveValue2 = static_cast<scoped_unspecified_t>(2); // OK.
- scoped_unspecified_t InvalidInsideRange4 = static_cast<scoped_unspecified_t>(3); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_unspecified_t ValidPositiveValue3 = static_cast<scoped_unspecified_t>(4); // OK.
- scoped_unspecified_t InvalidAfterRangeEnd = static_cast<scoped_unspecified_t>(5); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
-}
-
-void scopedSpecified() {
- scoped_specified_t InvalidBeforeRangeBegin = static_cast<scoped_specified_t>(-5); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_specified_t ValidNegativeValue1 = static_cast<scoped_specified_t>(-4); // OK.
- scoped_specified_t ValidNegativeValue2 = static_cast<scoped_specified_t>(-3); // OK.
- scoped_specified_t InvalidInsideRange1 = static_cast<scoped_specified_t>(-2); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_specified_t InvalidInsideRange2 = static_cast<scoped_specified_t>(-1); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_specified_t InvalidInsideRange3 = static_cast<scoped_specified_t>(0); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_specified_t ValidPositiveValue1 = static_cast<scoped_specified_t>(1); // OK.
- scoped_specified_t ValidPositiveValue2 = static_cast<scoped_specified_t>(2); // OK.
- scoped_specified_t InvalidInsideRange4 = static_cast<scoped_specified_t>(3); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_specified_t ValidPositiveValue3 = static_cast<scoped_specified_t>(4); // OK.
- scoped_specified_t InvalidAfterRangeEnd = static_cast<scoped_specified_t>(5); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
-}
-
-void unscopedUnspecifiedCStyle() {
- unscoped_unspecified_t InvalidBeforeRangeBegin = (unscoped_unspecified_t)(-5); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_unspecified_t ValidNegativeValue1 = (unscoped_unspecified_t)(-4); // OK.
- unscoped_unspecified_t ValidNegativeValue2 = (unscoped_unspecified_t)(-3); // OK.
- unscoped_unspecified_t InvalidInsideRange1 = (unscoped_unspecified_t)(-2); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_unspecified_t InvalidInsideRange2 = (unscoped_unspecified_t)(-1); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_unspecified_t InvalidInsideRange3 = (unscoped_unspecified_t)(0); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_unspecified_t ValidPositiveValue1 = (unscoped_unspecified_t)(1); // OK.
- unscoped_unspecified_t ValidPositiveValue2 = (unscoped_unspecified_t)(2); // OK.
- unscoped_unspecified_t InvalidInsideRange4 = (unscoped_unspecified_t)(3); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_unspecified_t ValidPositiveValue3 = (unscoped_unspecified_t)(4); // OK.
- unscoped_unspecified_t InvalidAfterRangeEnd = (unscoped_unspecified_t)(5); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
-}
-
-void unscopedSpecifiedCStyle() {
- unscoped_specified_t InvalidBeforeRangeBegin = (unscoped_specified_t)(-5); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_specified_t ValidNegativeValue1 = (unscoped_specified_t)(-4); // OK.
- unscoped_specified_t ValidNegativeValue2 = (unscoped_specified_t)(-3); // OK.
- unscoped_specified_t InvalidInsideRange1 = (unscoped_specified_t)(-2); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_specified_t InvalidInsideRange2 = (unscoped_specified_t)(-1); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_specified_t InvalidInsideRange3 = (unscoped_specified_t)(0); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_specified_t ValidPositiveValue1 = (unscoped_specified_t)(1); // OK.
- unscoped_specified_t ValidPositiveValue2 = (unscoped_specified_t)(2); // OK.
- unscoped_specified_t InvalidInsideRange4 = (unscoped_specified_t)(3); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- unscoped_specified_t ValidPositiveValue3 = (unscoped_specified_t)(4); // OK.
- unscoped_specified_t InvalidAfterRangeEnd = (unscoped_specified_t)(5); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
-}
-
-void scopedUnspecifiedCStyle() {
- scoped_unspecified_t InvalidBeforeRangeBegin = (scoped_unspecified_t)(-5); // expected-warning{{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_unspecified_t ValidNegativeValue1 = (scoped_unspecified_t)(-4); // OK.
- scoped_unspecified_t ValidNegativeValue2 = (scoped_unspecified_t)(-3); // OK.
- scoped_unspecified_t InvalidInsideRange1 = (scoped_unspecified_t)(-2); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_unspecified_t InvalidInsideRange2 = (scoped_unspecified_t)(-1); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_unspecified_t InvalidInsideRange3 = (scoped_unspecified_t)(0); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_unspecified_t ValidPositiveValue1 = (scoped_unspecified_t)(1); // OK.
- scoped_unspecified_t ValidPositiveValue2 = (scoped_unspecified_t)(2); // OK.
- scoped_unspecified_t InvalidInsideRange4 = (scoped_unspecified_t)(3); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_unspecified_t ValidPositiveValue3 = (scoped_unspecified_t)(4); // OK.
- scoped_unspecified_t InvalidAfterRangeEnd = (scoped_unspecified_t)(5); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
-}
-
-void scopedSpecifiedCStyle() {
- scoped_specified_t InvalidBeforeRangeBegin = (scoped_specified_t)(-5); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_specified_t ValidNegativeValue1 = (scoped_specified_t)(-4); // OK.
- scoped_specified_t ValidNegativeValue2 = (scoped_specified_t)(-3); // OK.
- scoped_specified_t InvalidInsideRange1 = (scoped_specified_t)(-2); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_specified_t InvalidInsideRange2 = (scoped_specified_t)(-1); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_specified_t InvalidInsideRange3 = (scoped_specified_t)(0); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_specified_t ValidPositiveValue1 = (scoped_specified_t)(1); // OK.
- scoped_specified_t ValidPositiveValue2 = (scoped_specified_t)(2); // OK.
- scoped_specified_t InvalidInsideRange4 = (scoped_specified_t)(3); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
- scoped_specified_t ValidPositiveValue3 = (scoped_specified_t)(4); // OK.
- scoped_specified_t InvalidAfterRangeEnd = (scoped_specified_t)(5); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
-}
-
-void rangeContstrained1(int input) {
- if (input > -5 && input < 5)
- auto value = static_cast<scoped_specified_t>(input); // OK. Being conservative, this is a possibly good value.
-}
-
-void rangeConstrained2(int input) {
- if (input < -5)
- auto value = static_cast<scoped_specified_t>(input); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
-}
-
-void rangeConstrained3(int input) {
- if (input >= -2 && input <= -1)
- auto value = static_cast<scoped_specified_t>(input); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
-}
-
-void rangeConstrained4(int input) {
- if (input >= -2 && input <= 1)
- auto value = static_cast<scoped_specified_t>(input); // OK. Possibly 1.
-}
-
-void rangeConstrained5(int input) {
- if (input >= 1 && input <= 2)
- auto value = static_cast<scoped_specified_t>(input); // OK. Strict inner matching.
-}
-
-void rangeConstrained6(int input) {
- if (input >= 2 && input <= 4)
- auto value = static_cast<scoped_specified_t>(input); // OK. The value is possibly 2 or 4, dont warn.
-}
-
-void rangeConstrained7(int input) {
- if (input >= 3 && input <= 3)
- auto value = static_cast<scoped_specified_t>(input); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
-}
-
-void enumBitFieldAssignment() {
- S s;
- s.E = static_cast<unscoped_unspecified_t>(4); // OK.
- s.E = static_cast<unscoped_unspecified_t>(5); // expected-warning {{The value provided to the cast expression is not in the valid range of values for the enum}}
-}
diff --git a/test/Analysis/enum.cpp b/test/Analysis/enum.cpp
deleted file mode 100644
index 96408473cede..000000000000
--- a/test/Analysis/enum.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=debug.ExprInspection %s
-
-void clang_analyzer_eval(bool);
-
-enum class Foo {
- Zero
-};
-
-bool pr15703(int x) {
- return Foo::Zero == (Foo)x; // don't crash
-}
-
-void testCasting(int i) {
- Foo f = static_cast<Foo>(i);
- int j = static_cast<int>(f);
- if (i == 0)
- {
- clang_analyzer_eval(f == Foo::Zero); // expected-warning{{TRUE}}
- clang_analyzer_eval(j == 0); // expected-warning{{TRUE}}
- }
- else
- {
- clang_analyzer_eval(f == Foo::Zero); // expected-warning{{FALSE}}
- clang_analyzer_eval(j == 0); // expected-warning{{FALSE}}
- }
-}
-
-enum class EnumBool : bool {
- F = false,
- T = true
-};
-
-bool testNoCrashOnSwitchEnumBool(EnumBool E) {
- switch (E) {
- case EnumBool::F:
- return false;
- }
- return true;
-}
-
-bool testNoCrashOnSwitchEnumBoolConstant() {
- EnumBool E = EnumBool::F;
- switch (E) {
- case EnumBool::F:
- return false;
- }
- return true;
-}
-
-typedef __INTPTR_TYPE__ intptr_t;
-bool testNoCrashOnSwitchEnumBoolConstantCastedFromNullptr() {
- EnumBool E = static_cast<EnumBool>((intptr_t)nullptr);
- switch (E) {
- case EnumBool::F:
- return false;
- }
- return true;
-}
-
-bool testNoCrashOnSwitchEnumBoolConstantCastedFromPtr() {
- int X;
- intptr_t P = (intptr_t)&X;
- EnumBool E = static_cast<EnumBool>(P);
- switch (E) {
- case EnumBool::F:
- return false;
- }
- return true;
-}
diff --git a/test/Analysis/exceptions.mm b/test/Analysis/exceptions.mm
deleted file mode 100644
index 0e776373b62a..000000000000
--- a/test/Analysis/exceptions.mm
+++ /dev/null
@@ -1,38 +0,0 @@
-// RUN: %clang_analyze_cc1 -fexceptions -fobjc-exceptions -fcxx-exceptions -analyzer-checker=core,unix.Malloc,debug.ExprInspection -verify %s
-
-void clang_analyzer_checkInlined(bool);
-
-typedef typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-
-id getException();
-void inlinedObjC() {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- @throw getException();
-}
-
-int testObjC() {
- int a; // uninitialized
- void *mem = malloc(4); // no-warning (ObjC exceptions are usually fatal)
- inlinedObjC();
- free(mem);
- return a; // no-warning
-}
-
-
-void inlinedCXX() {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- throw -1;
-}
-
-int testCXX() {
- int a; // uninitialized
- // FIXME: this should be reported as a leak, because C++ exceptions are
- // often not fatal.
- void *mem = malloc(4);
- inlinedCXX();
- free(mem);
- return a; // no-warning
-}
diff --git a/test/Analysis/exercise-ps.c b/test/Analysis/exercise-ps.c
deleted file mode 100644
index c459260c2a1d..000000000000
--- a/test/Analysis/exercise-ps.c
+++ /dev/null
@@ -1,31 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s
-//
-// Just exercise the analyzer on code that has at one point caused issues
-// (i.e., no assertions or crashes).
-
-
-static void f1(const char *x, char *y) {
- while (*x != 0) {
- *y++ = *x++;
- }
-}
-
-// This following case checks that we properly handle typedefs when getting
-// the RvalueType of an ElementRegion.
-typedef struct F12_struct {} F12_typedef;
-typedef void* void_typedef;
-void_typedef f2_helper();
-static void f2(void *buf) {
- F12_typedef* x;
- x = f2_helper();
- memcpy((&x[1]), (buf), 1); // expected-warning{{implicitly declaring library function 'memcpy' with type 'void *(void *, const void *}} \
- // expected-note{{include the header <string.h> or explicitly provide a declaration for 'memcpy'}}
-}
-
-// AllocaRegion is untyped. Void pointer isn't of much help either. Before
-// realizing that the value is undefined, we need to somehow figure out
-// what type of value do we expect.
-void f3(void *dest) {
- void *src = __builtin_alloca(5);
- memcpy(dest, src, 1); // expected-warning{{2nd function call argument is a pointer to uninitialized value}}
-}
diff --git a/test/Analysis/explain-svals.c b/test/Analysis/explain-svals.c
deleted file mode 100644
index f1540bbe2de8..000000000000
--- a/test/Analysis/explain-svals.c
+++ /dev/null
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core.builtin,debug.ExprInspection,unix.cstring -verify %s
-
-struct S {
- int z;
-};
-
-void clang_analyzer_explain_int(int);
-void clang_analyzer_explain_voidp(void *);
-void clang_analyzer_explain_S(struct S);
-
-int glob;
-
-void test_1(int param, void *ptr) {
- clang_analyzer_explain_voidp(&glob); // expected-warning-re{{{{^pointer to global variable 'glob'$}}}}
- clang_analyzer_explain_int(param); // expected-warning-re{{{{^argument 'param'$}}}}
- clang_analyzer_explain_voidp(ptr); // expected-warning-re{{{{^argument 'ptr'$}}}}
- if (param == 42)
- clang_analyzer_explain_int(param); // expected-warning-re{{{{^signed 32-bit integer '42'$}}}}
-}
-
-void test_2(struct S s) {
- clang_analyzer_explain_S(s); //expected-warning-re{{{{^lazily frozen compound value of parameter 's'$}}}}
- clang_analyzer_explain_voidp(&s); // expected-warning-re{{{{^pointer to parameter 's'$}}}}
- clang_analyzer_explain_int(s.z); // expected-warning-re{{{{^initial value of field 'z' of parameter 's'$}}}}
-}
diff --git a/test/Analysis/explain-svals.cpp b/test/Analysis/explain-svals.cpp
deleted file mode 100644
index c1b5200eb8e9..000000000000
--- a/test/Analysis/explain-svals.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -analyzer-checker=core.builtin,debug.ExprInspection,unix.cstring -verify %s
-
-typedef unsigned long size_t;
-
-struct S {
- struct S3 {
- int y[10];
- };
- struct S2 : S3 {
- int *x;
- } s2[10];
- int z;
-};
-
-
-void clang_analyzer_explain(int);
-void clang_analyzer_explain(void *);
-void clang_analyzer_explain(S);
-
-size_t clang_analyzer_getExtent(void *);
-
-size_t strlen(const char *);
-
-int conjure();
-S conjure_S();
-
-int glob;
-static int stat_glob;
-void *glob_ptr;
-
-// Test strings are regex'ed because we need to match exact string
-// rather than a substring.
-
-void test_1(int param, void *ptr) {
- clang_analyzer_explain(&glob); // expected-warning-re{{{{^pointer to global variable 'glob'$}}}}
- clang_analyzer_explain(param); // expected-warning-re{{{{^argument 'param'$}}}}
- clang_analyzer_explain(ptr); // expected-warning-re{{{{^argument 'ptr'$}}}}
- if (param == 42)
- clang_analyzer_explain(param); // expected-warning-re{{{{^signed 32-bit integer '42'$}}}}
-}
-
-void test_2(char *ptr, int ext) {
- clang_analyzer_explain((void *) "asdf"); // expected-warning-re{{{{^pointer to element of type 'char' with index 0 of string literal "asdf"$}}}}
- clang_analyzer_explain(strlen(ptr)); // expected-warning-re{{{{^metadata of type 'unsigned long' tied to pointee of argument 'ptr'$}}}}
- clang_analyzer_explain(conjure()); // expected-warning-re{{{{^symbol of type 'int' conjured at statement 'conjure\(\)'$}}}}
- clang_analyzer_explain(glob); // expected-warning-re{{{{^value derived from \(symbol of type 'int' conjured at statement 'conjure\(\)'\) for global variable 'glob'$}}}}
- clang_analyzer_explain(glob_ptr); // expected-warning-re{{{{^value derived from \(symbol of type 'int' conjured at statement 'conjure\(\)'\) for global variable 'glob_ptr'$}}}}
- clang_analyzer_explain(clang_analyzer_getExtent(ptr)); // expected-warning-re{{{{^extent of pointee of argument 'ptr'$}}}}
- int *x = new int[ext];
- clang_analyzer_explain(x); // expected-warning-re{{{{^pointer to element of type 'int' with index 0 of heap segment that starts at symbol of type 'int \*' conjured at statement 'new int \[ext\]'$}}}}
- // Sic! What gets computed is the extent of the element-region.
- clang_analyzer_explain(clang_analyzer_getExtent(x)); // expected-warning-re{{{{^signed 32-bit integer '4'$}}}}
- delete[] x;
-}
-
-void test_3(S s) {
- clang_analyzer_explain(&s); // expected-warning-re{{{{^pointer to parameter 's'$}}}}
- clang_analyzer_explain(s.z); // expected-warning-re{{{{^initial value of field 'z' of parameter 's'$}}}}
- clang_analyzer_explain(&s.s2[5].y[3]); // expected-warning-re{{{{^pointer to element of type 'int' with index 3 of field 'y' of base object 'S::S3' inside element of type 'struct S::S2' with index 5 of field 's2' of parameter 's'$}}}}
- if (!s.s2[7].x) {
- clang_analyzer_explain(s.s2[7].x); // expected-warning-re{{{{^concrete memory address '0'$}}}}
- // FIXME: we need to be explaining '1' rather than '0' here; not explainer bug.
- clang_analyzer_explain(s.s2[7].x + 1); // expected-warning-re{{{{^concrete memory address '0'$}}}}
- }
-}
-
-void test_4(int x, int y) {
- int z;
- static int stat;
- clang_analyzer_explain(x + 1); // expected-warning-re{{{{^\(argument 'x'\) \+ 1$}}}}
- clang_analyzer_explain(1 + y); // expected-warning-re{{{{^\(argument 'y'\) \+ 1$}}}}
- clang_analyzer_explain(x + y); // expected-warning-re{{{{^\(argument 'x'\) \+ \(argument 'y'\)$}}}}
- clang_analyzer_explain(z); // expected-warning-re{{{{^undefined value$}}}}
- clang_analyzer_explain(&z); // expected-warning-re{{{{^pointer to local variable 'z'$}}}}
- clang_analyzer_explain(stat); // expected-warning-re{{{{^signed 32-bit integer '0'$}}}}
- clang_analyzer_explain(&stat); // expected-warning-re{{{{^pointer to static local variable 'stat'$}}}}
- clang_analyzer_explain(stat_glob); // expected-warning-re{{{{^initial value of global variable 'stat_glob'$}}}}
- clang_analyzer_explain(&stat_glob); // expected-warning-re{{{{^pointer to global variable 'stat_glob'$}}}}
- clang_analyzer_explain((int[]){1, 2, 3}); // expected-warning-re{{{{^pointer to element of type 'int' with index 0 of temporary object constructed at statement '\(int \[3\]\)\{1, 2, 3\}'$}}}}
-}
-
-namespace {
-class C {
- int x[10];
-
-public:
- void test_5(int i) {
- clang_analyzer_explain(this); // expected-warning-re{{{{^pointer to 'this' object$}}}}
- clang_analyzer_explain(&x[i]); // expected-warning-re{{{{^pointer to element of type 'int' with index 'argument 'i'' of field 'x' of 'this' object$}}}}
- clang_analyzer_explain(__builtin_alloca(i)); // expected-warning-re{{{{^pointer to region allocated by '__builtin_alloca\(i\)'$}}}}
- }
-};
-} // end of anonymous namespace
-
-void test_6() {
- clang_analyzer_explain(conjure_S()); // expected-warning-re{{{{^lazily frozen compound value of temporary object constructed at statement 'conjure_S\(\)'$}}}}
- clang_analyzer_explain(conjure_S().z); // expected-warning-re{{{{^value derived from \(symbol of type 'int' conjured at statement 'conjure_S\(\)'\) for field 'z' of temporary object constructed at statement 'conjure_S\(\)'$}}}}
-}
diff --git a/test/Analysis/explain-svals.m b/test/Analysis/explain-svals.m
deleted file mode 100644
index dd40946c8432..000000000000
--- a/test/Analysis/explain-svals.m
+++ /dev/null
@@ -1,27 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -triple i386-apple-darwin10 -fblocks -analyzer-checker=core.builtin,debug.ExprInspection -verify %s
-
-#include "Inputs/system-header-simulator-objc.h"
-
-void clang_analyzer_explain(void *);
-
-@interface Object : NSObject {
-@public
- Object *x;
-}
-@end
-
-void test_1(Object *p) {
- clang_analyzer_explain(p); // expected-warning-re{{{{^argument 'p'$}}}}
- clang_analyzer_explain(p->x); // expected-warning-re{{{{^initial value of instance variable 'x' of object at argument 'p'$}}}}
- Object *q = [[Object alloc] init];
- clang_analyzer_explain(q); // expected-warning-re{{{{^symbol of type 'Object \*' conjured at statement '\[\[Object alloc\] init\]'$}}}}
- clang_analyzer_explain(q->x); // expected-warning-re{{{{^initial value of instance variable 'x' of object at symbol of type 'Object \*' conjured at statement '\[\[Object alloc\] init\]'$}}}}
-}
-
-void test_2() {
- __block int x;
- ^{
- clang_analyzer_explain(&x); // expected-warning-re{{{{^pointer to block variable 'x'$}}}}
- };
- clang_analyzer_explain(&x); // expected-warning-re{{{{^pointer to block variable 'x'$}}}}
-}
diff --git a/test/Analysis/exploration_order/noexprcrash.c b/test/Analysis/exploration_order/noexprcrash.c
deleted file mode 100644
index 75c2f0e6798a..000000000000
--- a/test/Analysis/exploration_order/noexprcrash.c
+++ /dev/null
@@ -1,17 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify -analyzer-config exploration_strategy=unexplored_first %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify -analyzer-config exploration_strategy=dfs %s
-
-extern void clang_analyzer_eval(int);
-
-typedef struct { char a; } b;
-int c(b* input) {
- int x = (input->a ?: input) ? 1 : 0; // expected-warning{{pointer/integer type mismatch}}
- if (input->a) {
- // FIXME: The value should actually be "TRUE",
- // but is incorrect due to a bug.
- clang_analyzer_eval(x); // expected-warning{{FALSE}}
- } else {
- clang_analyzer_eval(x); // expected-warning{{TRUE}}
- }
- return x;
-}
diff --git a/test/Analysis/exploration_order/prefer_unexplored.cpp b/test/Analysis/exploration_order/prefer_unexplored.cpp
deleted file mode 100644
index 29e763357727..000000000000
--- a/test/Analysis/exploration_order/prefer_unexplored.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core -analyzer-config exploration_strategy=unexplored_first -analyzer-output=text -verify %s
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core -analyzer-config exploration_strategy=unexplored_first_queue -analyzer-output=text -verify %s
-
-extern int coin();
-
-int foo() {
- int *x = 0; // expected-note {{'x' initialized to a null pointer value}}
- while (coin()) { // expected-note{{Loop condition is true}}
- if (coin()) // expected-note {{Taking true branch}}
- // expected-note@-1 {{Assuming the condition is true}}
- return *x; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}}
- // expected-note@-1{{Dereference of null pointer (loaded from variable 'x')}}
- }
- return 0;
-}
-
-void bar() {
- while(coin())
- if (coin())
- foo();
-}
-
-int foo2() {
- int *x = 0; // expected-note {{'x' initialized to a null pointer value}}
- while (coin()) { // expected-note{{Loop condition is true}}
- if (coin()) // expected-note {{Taking false branch}}
- // expected-note@-1 {{Assuming the condition is false}}
- return false;
- else
- return *x; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}}
- // expected-note@-1{{Dereference of null pointer (loaded from variable 'x')}}
- }
- return 0;
-}
-
-void bar2() {
- while(coin()) // expected-note{{Loop condition is true}}
- if (coin()) // expected-note {{Assuming the condition is false}}
- // expected-note@-1 {{Taking false branch}}
- return;
- else
- foo(); // expected-note{{Calling 'foo'}}
-}
diff --git a/test/Analysis/expr-inspection.c b/test/Analysis/expr-inspection.c
deleted file mode 100644
index 841954288932..000000000000
--- a/test/Analysis/expr-inspection.c
+++ /dev/null
@@ -1,25 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify %s 2>&1 | FileCheck %s
-
-// Self-tests for the debug.ExprInspection checker.
-
-void clang_analyzer_dump(int x);
-void clang_analyzer_printState();
-void clang_analyzer_numTimesReached();
-
-void foo(int x) {
- clang_analyzer_dump(x); // expected-warning{{reg_$0<int x>}}
- clang_analyzer_dump(x + (-1)); // expected-warning{{(reg_$0<int x>) + -1}}
- int y = 1;
- clang_analyzer_printState();
- for (; y < 3; ++y)
- clang_analyzer_numTimesReached(); // expected-warning{{2}}
-}
-
-// CHECK: Store (direct and default bindings)
-// CHECK-NEXT: (y,0,direct) : 1 S32b
-
-// CHECK: Expressions by stack frame:
-// CHECK-NEXT: #0 Calling foo
-// CHECK-NEXT: clang_analyzer_printState : &code{clang_analyzer_printState}
-
-// CHECK: {{(Ranges are empty.)|(Constraints:[[:space:]]*$)}}
diff --git a/test/Analysis/expr-inspection.cpp b/test/Analysis/expr-inspection.cpp
deleted file mode 100644
index 609b44ca6d4c..000000000000
--- a/test/Analysis/expr-inspection.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// RUN: %clang_analyze_cc1 -x c++ -analyzer-checker=debug.ExprInspection -verify %s
-
-// Self-tests for the debug.ExprInspection checker.
-
-void clang_analyzer_denote(int x, const char *str);
-void clang_analyzer_express(int x);
-
-// Invalid declarations to test sanity checks.
-void clang_analyzer_denote();
-void clang_analyzer_denote(int x);
-void clang_analyzer_express();
-
-void foo(int x, unsigned y) {
- clang_analyzer_denote(); // expected-warning{{clang_analyzer_denote() requires a symbol and a string literal}}
- clang_analyzer_express(); // expected-warning{{clang_analyzer_express() requires a symbol}}
-
- clang_analyzer_denote(x); // expected-warning{{clang_analyzer_denote() requires a symbol and a string literal}}
- clang_analyzer_express(x); // expected-warning{{Unable to express}}
-
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- clang_analyzer_express(x + y); // expected-warning{{$x + $y}}
-
- clang_analyzer_denote(1, "$z"); // expected-warning{{Not a symbol}}
- clang_analyzer_express(1); // expected-warning{{Not a symbol}}
-
- clang_analyzer_denote(x + 1, "$w");
- clang_analyzer_express(x + 1); // expected-warning{{$w}}
- clang_analyzer_express(y + 1); // expected-warning{{$y + 1U}}
-}
diff --git a/test/Analysis/fields.c b/test/Analysis/fields.c
deleted file mode 100644
index 1aa484074208..000000000000
--- a/test/Analysis/fields.c
+++ /dev/null
@@ -1,125 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core,debug.ExprInspection %s -analyzer-store=region -verify
-
-void clang_analyzer_eval(int);
-
-unsigned foo();
-typedef struct bf { unsigned x:2; } bf;
-void bar() {
- bf y;
- *(unsigned*)&y = foo();
- y.x = 1;
-}
-
-struct s {
- int n;
-};
-
-void f() {
- struct s a;
- int *p = &(a.n) + 1; // expected-warning{{Pointer arithmetic on}}
-}
-
-typedef struct {
- int x,y;
-} Point;
-
-Point getit(void);
-void test() {
- Point p;
- (void)(p = getit()).x;
-}
-
-#define true ((bool)1)
-#define false ((bool)0)
-typedef _Bool bool;
-
-
-void testLazyCompoundVal() {
- Point p = {42, 0};
- Point q;
- clang_analyzer_eval((q = p).x == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(q.x == 42); // expected-warning{{TRUE}}
-}
-
-
-struct Bits {
- unsigned a : 1;
- unsigned b : 2;
- unsigned c : 1;
-
- bool x;
-
- struct InnerBits {
- bool y;
-
- unsigned d : 16;
- unsigned e : 6;
- unsigned f : 2;
- } inner;
-};
-
-void testBitfields() {
- struct Bits bits;
-
- if (foo() && bits.b) // expected-warning {{garbage}}
- return;
- if (foo() && bits.inner.e) // expected-warning {{garbage}}
- return;
-
- bits.c = 1;
- clang_analyzer_eval(bits.c == 1); // expected-warning {{TRUE}}
-
- if (foo() && bits.b) // expected-warning {{garbage}}
- return;
- if (foo() && bits.x) // expected-warning {{garbage}}
- return;
-
- bits.x = true;
- clang_analyzer_eval(bits.x == true); // expected-warning{{TRUE}}
- bits.b = 2;
- clang_analyzer_eval(bits.x == true); // expected-warning{{TRUE}}
- if (foo() && bits.c) // no-warning
- return;
-
- bits.inner.e = 50;
- if (foo() && bits.inner.e) // no-warning
- return;
- if (foo() && bits.inner.y) // expected-warning {{garbage}}
- return;
- if (foo() && bits.inner.f) // expected-warning {{garbage}}
- return;
-
- extern struct InnerBits getInner();
- bits.inner = getInner();
-
- if (foo() && bits.inner.e) // no-warning
- return;
- if (foo() && bits.inner.y) // no-warning
- return;
- if (foo() && bits.inner.f) // no-warning
- return;
-
- bits.inner.f = 1;
-
- if (foo() && bits.inner.e) // no-warning
- return;
- if (foo() && bits.inner.y) // no-warning
- return;
- if (foo() && bits.inner.f) // no-warning
- return;
-
- if (foo() && bits.a) // expected-warning {{garbage}}
- return;
-}
-
-
-//-----------------------------------------------------------------------------
-// Incorrect behavior
-//-----------------------------------------------------------------------------
-
-void testTruncation() {
- struct Bits bits;
- bits.c = 0x11; // expected-warning{{implicit truncation}}
- // FIXME: We don't model truncation of bitfields.
- clang_analyzer_eval(bits.c == 1); // expected-warning {{FALSE}}
-}
diff --git a/test/Analysis/free.c b/test/Analysis/free.c
deleted file mode 100644
index acdb2820d328..000000000000
--- a/test/Analysis/free.c
+++ /dev/null
@@ -1,79 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-store=region -analyzer-checker=core,unix.Malloc -fblocks -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-store=region -analyzer-checker=core,unix.Malloc -fblocks -verify -analyzer-config unix.Malloc:Optimistic=true %s
-typedef __typeof(sizeof(int)) size_t;
-void free(void *);
-void *alloca(size_t);
-
-void t1 () {
- int a[] = { 1 };
- free(a); // expected-warning {{Argument to free() is the address of the local variable 'a', which is not memory allocated by malloc()}}
-}
-
-void t2 () {
- int a = 1;
- free(&a); // expected-warning {{Argument to free() is the address of the local variable 'a', which is not memory allocated by malloc()}}
-}
-
-void t3 () {
- static int a[] = { 1 };
- free(a); // expected-warning {{Argument to free() is the address of the static variable 'a', which is not memory allocated by malloc()}}
-}
-
-void t4 (char *x) {
- free(x); // no-warning
-}
-
-void t5 () {
- extern char *ptr();
- free(ptr()); // no-warning
-}
-
-void t6 () {
- free((void*)1000); // expected-warning {{Argument to free() is a constant address (1000), which is not memory allocated by malloc()}}
-}
-
-void t7 (char **x) {
- free(*x); // no-warning
-}
-
-void t8 (char **x) {
- // ugh
- free((*x)+8); // no-warning
-}
-
-void t9 () {
-label:
- free(&&label); // expected-warning {{Argument to free() is the address of the label 'label', which is not memory allocated by malloc()}}
-}
-
-void t10 () {
- free((void*)&t10); // expected-warning {{Argument to free() is the address of the function 't10', which is not memory allocated by malloc()}}
-}
-
-void t11 () {
- char *p = (char*)alloca(2);
- free(p); // expected-warning {{Memory allocated by alloca() should not be deallocated}}
-}
-
-void t12 () {
- char *p = (char*)__builtin_alloca(2);
- free(p); // expected-warning {{Memory allocated by alloca() should not be deallocated}}
-}
-
-void t13 () {
- free(^{return;}); // expected-warning {{Argument to free() is a block, which is not memory allocated by malloc()}}
-}
-
-void t14 (char a) {
- free(&a); // expected-warning {{Argument to free() is the address of the parameter 'a', which is not memory allocated by malloc()}}
-}
-
-static int someGlobal[2];
-void t15 () {
- free(someGlobal); // expected-warning {{Argument to free() is the address of the global variable 'someGlobal', which is not memory allocated by malloc()}}
-}
-
-void t16 (char **x, int offset) {
- // Unknown value
- free(x[offset]); // no-warning
-}
diff --git a/test/Analysis/func-mapping-test.cpp b/test/Analysis/func-mapping-test.cpp
deleted file mode 100644
index a5d7cfb449c7..000000000000
--- a/test/Analysis/func-mapping-test.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-// RUN: %clang_extdef_map %s -- | FileCheck %s
-
-int f(int) {
- return 0;
-}
-
-// CHECK: c:@F@f#I#
diff --git a/test/Analysis/func.c b/test/Analysis/func.c
deleted file mode 100644
index 44d09f498992..000000000000
--- a/test/Analysis/func.c
+++ /dev/null
@@ -1,41 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(int);
-void clang_analyzer_warnIfReached();
-
-void f(void) {
- void (*p)(void);
- p = f;
- p = &f;
- p();
- (*p)();
-}
-
-void g(void (*fp)(void));
-
-void f2() {
- g(f);
-}
-
-void f3(void (*f)(void), void (*g)(void)) {
- clang_analyzer_eval(!f); // expected-warning{{UNKNOWN}}
- f();
- clang_analyzer_eval(!f); // expected-warning{{FALSE}}
-
- clang_analyzer_eval(!g); // expected-warning{{UNKNOWN}}
- (*g)();
- clang_analyzer_eval(!g); // expected-warning{{FALSE}}
-}
-
-void nullFunctionPointerConstant() {
- void (*f)(void) = 0;
- f(); // expected-warning{{Called function pointer is null}}
- clang_analyzer_warnIfReached(); // no-warning
-}
-
-void nullFunctionPointerConstraint(void (*f)(void)) {
- if (f)
- return;
- f(); // expected-warning{{Called function pointer is null}}
- clang_analyzer_warnIfReached(); // no-warning
-}
diff --git a/test/Analysis/gcdantipatternchecker_test.m b/test/Analysis/gcdantipatternchecker_test.m
deleted file mode 100644
index 24ffe8975dd9..000000000000
--- a/test/Analysis/gcdantipatternchecker_test.m
+++ /dev/null
@@ -1,345 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,optin.performance.GCDAntipattern %s -fblocks -verify
-typedef signed char BOOL;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
--(id)retain;
-@end
-
-typedef int dispatch_semaphore_t;
-typedef int dispatch_group_t;
-typedef void (^block_t)();
-
-dispatch_semaphore_t dispatch_semaphore_create(int);
-dispatch_group_t dispatch_group_create();
-void dispatch_group_enter(dispatch_group_t);
-void dispatch_group_leave(dispatch_group_t);
-void dispatch_group_wait(dispatch_group_t, int);
-
-
-void dispatch_semaphore_wait(dispatch_semaphore_t, int);
-void dispatch_semaphore_signal(dispatch_semaphore_t);
-
-void func(void (^)(void));
-void func_w_typedef(block_t);
-
-int coin();
-
-void use_semaphor_antipattern() {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
-
- func(^{
- dispatch_semaphore_signal(sema);
- });
- dispatch_semaphore_wait(sema, 100); // expected-warning{{Waiting on a callback using a semaphore}}
-}
-
-// It's OK to use pattern in tests.
-// We simply match the containing function name against ^test.
-void test_no_warning() {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
-
- func(^{
- dispatch_semaphore_signal(sema);
- });
- dispatch_semaphore_wait(sema, 100);
-}
-
-void use_semaphor_antipattern_multiple_times() {
- dispatch_semaphore_t sema1 = dispatch_semaphore_create(0);
-
- func(^{
- dispatch_semaphore_signal(sema1);
- });
- dispatch_semaphore_wait(sema1, 100); // expected-warning{{Waiting on a callback using a semaphore}}
-
- dispatch_semaphore_t sema2 = dispatch_semaphore_create(0);
-
- func(^{
- dispatch_semaphore_signal(sema2);
- });
- dispatch_semaphore_wait(sema2, 100); // expected-warning{{Waiting on a callback using a semaphore}}
-}
-
-void use_semaphor_antipattern_multiple_wait() {
- dispatch_semaphore_t sema1 = dispatch_semaphore_create(0);
-
- func(^{
- dispatch_semaphore_signal(sema1);
- });
- // FIXME: multiple waits on same semaphor should not raise a warning.
- dispatch_semaphore_wait(sema1, 100); // expected-warning{{Waiting on a callback using a semaphore}}
- dispatch_semaphore_wait(sema1, 100); // expected-warning{{Waiting on a callback using a semaphore}}
-}
-
-void warn_incorrect_order() {
- // FIXME: ASTMatchers do not allow ordered matching, so would match even
- // if out of order.
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
-
- dispatch_semaphore_wait(sema, 100); // expected-warning{{Waiting on a callback}}
- func(^{
- dispatch_semaphore_signal(sema);
- });
-}
-
-void warn_w_typedef() {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
-
- func_w_typedef(^{
- dispatch_semaphore_signal(sema);
- });
- dispatch_semaphore_wait(sema, 100); // expected-warning{{Waiting on a callback using a semaphore}}
-}
-
-void warn_nested_ast() {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
-
- if (coin()) {
- func(^{
- dispatch_semaphore_signal(sema);
- });
- } else {
- func(^{
- dispatch_semaphore_signal(sema);
- });
- }
- dispatch_semaphore_wait(sema, 100); // expected-warning{{Waiting on a callback using a semaphore}}
-}
-
-void use_semaphore_assignment() {
- dispatch_semaphore_t sema;
- sema = dispatch_semaphore_create(0);
-
- func(^{
- dispatch_semaphore_signal(sema);
- });
- dispatch_semaphore_wait(sema, 100); // expected-warning{{Waiting on a callback using a semaphore}}
-}
-
-void use_semaphore_assignment_init() {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
- sema = dispatch_semaphore_create(1);
-
- func(^{
- dispatch_semaphore_signal(sema);
- });
- dispatch_semaphore_wait(sema, 100); // expected-warning{{Waiting on a callback using a semaphore}}
-}
-
-void differentsemaphoreok() {
- dispatch_semaphore_t sema1 = dispatch_semaphore_create(0);
- dispatch_semaphore_t sema2 = dispatch_semaphore_create(0);
-
- func(^{
- dispatch_semaphore_signal(sema1);
- });
- dispatch_semaphore_wait(sema2, 100); // no-warning
-}
-
-void nosignalok() {
- dispatch_semaphore_t sema1 = dispatch_semaphore_create(0);
- dispatch_semaphore_wait(sema1, 100);
-}
-
-void nowaitok() {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
- func(^{
- dispatch_semaphore_signal(sema);
- });
-}
-
-void noblockok() {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
- dispatch_semaphore_signal(sema);
- dispatch_semaphore_wait(sema, 100);
-}
-
-void storedblockok() {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
- block_t b = ^{
- dispatch_semaphore_signal(sema);
- };
- dispatch_semaphore_wait(sema, 100);
-}
-
-void passed_semaphore_ok(dispatch_semaphore_t sema) {
- func(^{
- dispatch_semaphore_signal(sema);
- });
- dispatch_semaphore_wait(sema, 100);
-}
-
-void warn_with_cast() {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
-
- func(^{
- dispatch_semaphore_signal((int)sema);
- });
- dispatch_semaphore_wait((int)sema, 100); // expected-warning{{Waiting on a callback using a semaphore}}
-}
-
-@interface MyInterface1 : NSObject
--(void)use_method_warn;
--(void) pass_block_as_second_param_warn;
--(void)use_objc_callback_warn;
--(void) use_dispatch_group;
--(void)testNoWarn;
--(void)acceptBlock:(block_t)callback;
--(void)flag:(int)flag acceptBlock:(block_t)callback;
-@end
-
-@implementation MyInterface1
-
--(void)use_method_warn {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
-
- func(^{
- dispatch_semaphore_signal(sema);
- });
- dispatch_semaphore_wait(sema, 100); // expected-warning{{Waiting on a callback}}
-}
-
--(void) pass_block_as_second_param_warn {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
-
- [self flag:1 acceptBlock:^{
- dispatch_semaphore_signal(sema);
- }];
- dispatch_semaphore_wait(sema, 100); // expected-warning{{Waiting on a callback}}
-}
-
--(void)testNoWarn {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
-
- func(^{
- dispatch_semaphore_signal(sema);
- });
- dispatch_semaphore_wait(sema, 100);
-}
-
--(void)acceptBlock:(block_t) callback {
- callback();
-}
-
--(void)flag:(int)flag acceptBlock:(block_t)callback {
- callback();
-}
-
--(void)use_objc_callback_warn {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
-
- [self acceptBlock:^{
- dispatch_semaphore_signal(sema);
- }];
- dispatch_semaphore_wait(sema, 100); // expected-warning{{Waiting on a callback}}
-}
-
--(void)use_dispatch_group {
- dispatch_group_t group = dispatch_group_create();
- dispatch_group_enter(group);
- [self acceptBlock:^{
- dispatch_group_leave(group);
- }];
- dispatch_group_wait(group, 100); // expected-warning{{Waiting on a callback using a group}}
-
-}
-
-void use_objc_and_c_callback(MyInterface1 *t) {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
-
- func(^{
- dispatch_semaphore_signal(sema);
- });
- dispatch_semaphore_wait(sema, 100); // expected-warning{{Waiting on a callback using a semaphore}}
-
- dispatch_semaphore_t sema1 = dispatch_semaphore_create(0);
-
- [t acceptBlock:^{
- dispatch_semaphore_signal(sema1);
- }];
- dispatch_semaphore_wait(sema1, 100); // expected-warning{{Waiting on a callback}}
-}
-@end
-
-// No warnings: class name contains "test"
-@interface Test1 : NSObject
--(void)use_method_warn;
-@end
-
-@implementation Test1
--(void)use_method_warn {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
-
- func(^{
- dispatch_semaphore_signal(sema);
- });
- dispatch_semaphore_wait(sema, 100);
-}
-@end
-
-
-// No warnings: class name contains "mock"
-@interface Mock1 : NSObject
--(void)use_method_warn;
-@end
-
-@implementation Mock1
--(void)use_method_warn {
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
-
- func(^{
- dispatch_semaphore_signal(sema);
- });
- dispatch_semaphore_wait(sema, 100);
-}
-@end
-
-void dispatch_group_wait_func(MyInterface1 *M) {
- dispatch_group_t group = dispatch_group_create();
- dispatch_group_enter(group);
-
- func(^{
- dispatch_group_leave(group);
- });
- dispatch_group_wait(group, 100); // expected-warning{{Waiting on a callback using a group}}
-}
-
-
-void dispatch_group_wait_cfunc(MyInterface1 *M) {
- dispatch_group_t group = dispatch_group_create();
- dispatch_group_enter(group);
- [M acceptBlock:^{
- dispatch_group_leave(group);
- }];
- dispatch_group_wait(group, 100); // expected-warning{{Waiting on a callback using a group}}
-}
-
-void dispatch_group_and_semaphore_use(MyInterface1 *M) {
- dispatch_group_t group = dispatch_group_create();
- dispatch_group_enter(group);
- [M acceptBlock:^{
- dispatch_group_leave(group);
- }];
- dispatch_group_wait(group, 100); // expected-warning{{Waiting on a callback using a group}}
-
- dispatch_semaphore_t sema1 = dispatch_semaphore_create(0);
-
- [M acceptBlock:^{
- dispatch_semaphore_signal(sema1);
- }];
- dispatch_semaphore_wait(sema1, 100); // expected-warning{{Waiting on a callback using a semaphore}}
-}
-
-void no_warn_on_nonzero_semaphore(MyInterface1 *M) {
- dispatch_semaphore_t sema1 = dispatch_semaphore_create(1);
-
- [M acceptBlock:^{
- dispatch_semaphore_signal(sema1);
- }];
- dispatch_semaphore_wait(sema1, 100); // no-warning
-}
-
diff --git a/test/Analysis/generics.m b/test/Analysis/generics.m
deleted file mode 100644
index 1d6fa84a9c52..000000000000
--- a/test/Analysis/generics.m
+++ /dev/null
@@ -1,408 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.ObjCGenerics,alpha.core.DynamicTypeChecker -verify -Wno-objc-method-access %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.ObjCGenerics,alpha.core.DynamicTypeChecker -verify -Wno-objc-method-access %s -analyzer-output=plist -o %t.plist
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/generics.m.plist -
-
-#if !__has_feature(objc_generics)
-# error Compiler does not support Objective-C generics?
-#endif
-
-#if !__has_feature(objc_generics_variance)
-# error Compiler does not support co- and contr-variance?
-#endif
-
-#define nil 0
-typedef unsigned long NSUInteger;
-typedef int BOOL;
-
-@protocol NSObject
-+ (id)alloc;
-- (id)init;
-@end
-
-@protocol NSCopying
-@end
-
-__attribute__((objc_root_class))
-@interface NSObject <NSObject>
-@end
-
-@interface NSString : NSObject <NSCopying>
-@end
-
-@interface NSMutableString : NSString
-@end
-
-@interface NSNumber : NSObject <NSCopying>
-@end
-
-@interface NSSet : NSObject <NSCopying>
-@end
-
-@interface NSArray<__covariant ObjectType> : NSObject
-+ (instancetype)arrayWithObjects:(const ObjectType [])objects count:(NSUInteger)count;
-+ (instancetype)getEmpty;
-+ (NSArray<ObjectType> *)getEmpty2;
-- (BOOL)contains:(ObjectType)obj;
-- (BOOL)containsObject:(ObjectType)anObject;
-- (ObjectType)getObjAtIndex:(NSUInteger)idx;
-- (ObjectType)objectAtIndexedSubscript:(NSUInteger)idx;
-- (NSArray<ObjectType> *)arrayByAddingObject:(ObjectType)anObject;
-@property(readonly) ObjectType firstObject;
-@end
-
-@interface NSMutableArray<ObjectType> : NSArray<ObjectType>
-- (void)addObject:(ObjectType)anObject;
-- (instancetype)init;
-@end
-
-@interface MutableArray<ObjectType> : NSArray<ObjectType>
-- (void)addObject:(ObjectType)anObject;
-@end
-
-@interface LegacyMutableArray : MutableArray
-@end
-
-@interface LegacySpecialMutableArray : LegacyMutableArray
-@end
-
-@interface BuggyMutableArray<T> : MutableArray
-@end
-
-@interface BuggySpecialMutableArray<T> : BuggyMutableArray<T>
-@end
-
-@interface MyMutableStringArray : MutableArray<NSString *>
-@end
-
-@interface ExceptionalArray<ExceptionType> : MutableArray<NSString *>
-- (ExceptionType) getException;
-@end
-
-@interface UnrelatedType : NSObject<NSCopying>
-@end
-
-int getUnknown();
-NSArray *getStuff();
-NSArray *getTypedStuff() {
- NSArray<NSNumber *> *c = getStuff();
- return c;
-}
-
-void doStuff(NSArray<NSNumber *> *);
-void withArrString(NSArray<NSString *> *);
-void withArrMutableString(NSArray<NSMutableString *> *);
-void withMutArrString(MutableArray<NSString *> *);
-void withMutArrMutableString(MutableArray<NSMutableString *> *);
-
-void incompatibleTypesErased(NSArray *a, NSMutableArray<NSString *> *b,
- NSArray<NSNumber *> *c,
- NSMutableArray *d) {
- a = b;
- c = a; // expected-warning {{Conversion from value of type 'NSMutableArray<NSString *> *' to incompatible type 'NSArray<NSNumber *> *'}}
- [a contains: [[NSNumber alloc] init]];
- [a contains: [[NSString alloc] init]];
- doStuff(a); // expected-warning {{Conversion}}
-
- d = b;
- [d addObject: [[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
-}
-
-void crossProceduralErasedTypes() {
- NSArray<NSString *> *a = getTypedStuff(); // expected-warning {{Conversion}}
-}
-
-void incompatibleTypesErasedReverseConversion(NSMutableArray *a,
- NSMutableArray<NSString *> *b) {
- b = a;
- [a contains: [[NSNumber alloc] init]];
- [a contains: [[NSString alloc] init]];
- doStuff(a); // expected-warning {{Conversion}}
-
- [a addObject: [[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
-}
-
-void idErasedIncompatibleTypesReverseConversion(id a, NSMutableArray<NSString *> *b) {
- b = a;
- [a contains: [[NSNumber alloc] init]];
- [a contains: [[NSString alloc] init]];
- doStuff(a); // expected-warning {{Conversion}}
-
- [a addObject:[[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
-}
-
-void idErasedIncompatibleTypes(id a, NSMutableArray<NSString *> *b,
- NSArray<NSNumber *> *c) {
- a = b;
- c = a; // expected-warning {{Conversion}}
- [a contains: [[NSNumber alloc] init]];
- [a contains: [[NSString alloc] init]];
- doStuff(a); // expected-warning {{Conversion}}
-
- [a addObject:[[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
-}
-
-void pathSensitiveInference(MutableArray *m, MutableArray<NSString *> *a,
- MutableArray<NSMutableString *> *b) {
- if (getUnknown() == 5) {
- m = a;
- [m contains: [[NSString alloc] init]];
- } else {
- m = b;
- [m contains: [[NSMutableString alloc] init]];
- }
- [m addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}}
- [m addObject: [[NSMutableString alloc] init]];
-}
-
-void verifyAPIusage(id a, MutableArray<NSString *> *b) {
- b = a;
- doStuff(a); // expected-warning {{Conversion}}
-}
-
-void dontInferFromExplicitCastsOnUnspecialized(MutableArray *a,
- MutableArray<NSMutableString *> *b) {
- b = (MutableArray<NSMutableString *> *)a;
- [a addObject: [[NSString alloc] init]]; // no-warning
-}
-
-void dontWarnOnExplicitCastsAfterInference(MutableArray *a) {
- withMutArrString(a);
- withMutArrMutableString((MutableArray<NSMutableString *> *)a); // no-warning
-}
-
-void dontDiagnoseOnExplicitCrossCasts(MutableArray<NSSet *> *a,
- MutableArray<NSMutableString *> *b) {
- // Treat an explicit cast to a specialized type as an indication that
- // Objective-C's type system is not expressive enough to represent a
- // the invariant the programmer wanted. After an explicit cast, do not
- // warn about potential generics shenanigans.
- b = (MutableArray<NSMutableString *> *)a; // no-warning
- [a addObject: [[NSSet alloc] init]]; // no-warning
- [b addObject: [[NSMutableString alloc] init]]; //no-warning
-}
-
-void subtypeOfGeneric(id d, MyMutableStringArray *a,
- MutableArray<NSString *> *b,
- MutableArray<NSNumber *> *c) {
- d = a;
- b = d;
- c = d; // expected-warning {{Conversion}}
-}
-
-void genericSubtypeOfGeneric(id d, ExceptionalArray<NSString *> *a,
- MutableArray<NSString *> *b,
- MutableArray<NSNumber *> *c) {
- d = a;
- [d contains: [[NSString alloc] init]];
- [d contains: [[NSNumber alloc] init]];
- b = d;
- c = d; // expected-warning {{Conversion}}
-
- [d addObject: [[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
-}
-
-void genericSubtypeOfGenericReverse(id d, ExceptionalArray<NSString *> *a,
- MutableArray<NSString *> *b,
- MutableArray<NSNumber *> *c) {
- a = d;
- [d contains: [[NSString alloc] init]];
- [d contains: [[NSNumber alloc] init]];
- b = d;
- c = d; // expected-warning {{Conversion}}
-
- [d addObject: [[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
-}
-
-void inferenceFromAPI(id a) {
- // Here the type parameter is invariant. There should be a warning every time
- // when the type parameter changes during the conversions.
- withMutArrString(a);
- withMutArrMutableString(a); // expected-warning {{Conversion}}
-}
-
-void inferenceFromAPI2(id a) {
- withMutArrMutableString(a);
- withMutArrString(a); // expected-warning {{Conversion}}
-}
-
-void inferenceFromAPIWithLegacyTypes(LegacyMutableArray *a) {
- withMutArrMutableString(a);
- withMutArrString(a); // expected-warning {{Conversion}}
-}
-
-void inferenceFromAPIWithLegacyTypes2(LegacySpecialMutableArray *a) {
- withMutArrString(a);
- withMutArrMutableString(a); // expected-warning {{Conversion}}
-}
-
-void inferenceFromAPIWithLegacyTypes3(__kindof NSArray<NSString *> *a) {
- LegacyMutableArray *b = a;
- withMutArrString(b);
- withMutArrMutableString(b); // expected-warning {{Conversion}}
-}
-
-void inferenceFromAPIWithBuggyTypes(BuggyMutableArray<NSMutableString *> *a) {
- withMutArrString(a);
- withMutArrMutableString(a); // expected-warning {{Conversion}}
-}
-
-void InferenceFromAPIWithBuggyTypes2(BuggySpecialMutableArray<NSMutableString *> *a) {
- withMutArrMutableString(a);
- withMutArrString(a); // expected-warning {{Conversion}}
-}
-
-void InferenceFromAPIWithBuggyTypes3(MutableArray<NSMutableString *> *a) {
- id b = a;
- withMutArrMutableString((BuggyMutableArray<NSMutableString *> *)b);
- withMutArrString(b); // expected-warning {{Conversion}}
-}
-
-void InferenceFromAPIWithBuggyTypes4(__kindof NSArray<NSString *> *a) {
- BuggyMutableArray<NSMutableString *> *b = a;
- withMutArrString(b);
- withMutArrMutableString(b); // expected-warning {{Conversion}}
-}
-
-NSArray<NSString *> *getStrings();
-void enforceDynamicRulesInsteadOfStatic(NSArray<NSNumber *> *a) {
- NSArray *b = a;
- // Valid uses of NSArray of NSNumbers.
- b = getStrings();
- // Valid uses of NSArray of NSStrings.
-}
-
-void workWithProperties(NSArray<NSNumber *> *a) {
- NSArray *b = a;
- NSString *str = [b getObjAtIndex: 0]; // expected-warning {{Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *'}}
- NSNumber *num = [b getObjAtIndex: 0];
- str = [b firstObject]; // expected-warning {{Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *'}}
- num = [b firstObject];
- str = b.firstObject; // expected-warning {{Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *'}}
- num = b.firstObject;
- str = b[0]; // expected-warning {{Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *'}}
- num = b[0];
-}
-
-void findMethodDeclInTrackedType(id m, NSArray<NSMutableString *> *a,
- MutableArray<NSMutableString *> *b) {
- a = b;
- if (getUnknown() == 5) {
- m = a;
- [m addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}}
- } else {
- m = b;
- [m addObject: [[NSMutableString alloc] init]];
- }
-}
-
-void findMethodDeclInTrackedType2(__kindof NSArray<NSString *> *a,
- MutableArray<NSMutableString *> *b) {
- a = b;
- if (getUnknown() == 5) {
- [a addObject: [[NSString alloc] init]]; // expected-warning {{Conversion}}
- } else {
- [a addObject: [[NSMutableString alloc] init]];
- }
-}
-
-void testUnannotatedLiterals() {
- // ObjCArrayLiterals are not specialized in the AST.
- NSArray *arr = @[@"A", @"B"];
- [arr contains: [[NSNumber alloc] init]];
-}
-
-void testAnnotatedLiterals() {
- NSArray<NSString *> *arr = @[@"A", @"B"];
- NSArray *arr2 = arr;
- [arr2 contains: [[NSNumber alloc] init]];
-}
-
-void nonExistentMethodDoesNotCrash(id a, MutableArray<NSMutableString *> *b) {
- a = b;
- [a nonExistentMethod];
-}
-
-void trackedClassVariables() {
- Class c = [NSArray<NSString *> class];
- NSArray<NSNumber *> *a = [c getEmpty]; // expected-warning {{Conversion}}
- a = [c getEmpty2]; // expected-warning {{Conversion}}
-}
-
-void nestedCollections(NSArray<NSArray<NSNumber *> *> *mat, NSArray<NSString *> *row) {
- id temp = row;
- [mat contains: temp]; // expected-warning {{Conversion}}
-}
-
-void testMistmatchedTypeCast(MutableArray<NSMutableString *> *a) {
- MutableArray *b = (MutableArray<NSNumber *> *)a;
- [b addObject: [[NSNumber alloc] init]];
- id c = (UnrelatedType *)a;
- [c addObject: [[NSNumber alloc] init]];
- [c addObject: [[NSString alloc] init]];
-}
-
-void returnCollectionToIdVariable(NSArray<NSArray<NSString *> *> *arr) {
- NSArray *erased = arr;
- id a = [erased firstObject];
- NSArray<NSNumber *> *res = a; // expected-warning {{Conversion}}
-}
-
-void eraseSpecialization(NSArray<NSArray<NSString *> *> *arr) {
- NSArray *erased = arr;
- NSArray* a = [erased firstObject];
- NSArray<NSNumber *> *res = a; // expected-warning {{Conversion}}
-}
-
-void returnToUnrelatedType(NSArray<NSArray<NSString *> *> *arr) {
- NSArray *erased = arr;
- NSSet* a = [erased firstObject]; // expected-warning {{Object has a dynamic type 'NSArray<NSString *> *' which is incompatible with static type 'NSSet *'}}
- (void)a;
-}
-
-void returnToIdVariable(NSArray<NSString *> *arr) {
- NSArray *erased = arr;
- id a = [erased firstObject];
- NSNumber *res = a; // expected-warning {{Object has a dynamic type 'NSString *' which is incompatible with static type 'NSNumber *'}}
-}
-
-@interface UnrelatedTypeGeneric<T> : NSObject<NSCopying>
-- (void)takesType:(T)v;
-@end
-
-void testGetMostInformativeDerivedForId(NSArray<NSString *> *a,
- UnrelatedTypeGeneric<NSString *> *b) {
- id idB = b;
- a = idB; // expected-warning {{Conversion from value of type 'UnrelatedTypeGeneric<NSString *> *' to incompatible type 'NSArray<NSString *> *'}}
-
- // rdar://problem/26086914 crash here caused by symbolic type being unrelated
- // to compile-time source type of cast.
- id x = a; // Compile-time type is NSArray<>, Symbolic type is UnrelatedTypeGeneric<>.
- [x takesType:[[NSNumber alloc] init]]; // expected-warning {{Conversion from value of type 'NSNumber *' to incompatible type 'NSString *'}}
-}
-
-void testArgumentAfterUpcastToRootWithCovariantTypeParameter(NSArray<NSString *> *allStrings, NSNumber *number) {
- NSArray<NSObject *> *allObjects = allStrings; // no-warning
- NSArray<NSObject *> *moreObjects = [allObjects arrayByAddingObject:number]; // no-warning
-}
-
-void testArgumentAfterUpcastWithCovariantTypeParameter(NSArray<NSMutableString *> *allMutableStrings, NSNumber *number) {
- NSArray<NSString *> *allStrings = allMutableStrings; // no-warning
- id numberAsId = number;
- NSArray<NSString *> *moreStrings = [allStrings arrayByAddingObject:numberAsId]; // Sema: expected-warning {{Object has a dynamic type 'NSNumber *' which is incompatible with static type 'NSString *'}}
-}
-
-void testArgumentAfterCastToUnspecializedWithCovariantTypeParameter(NSArray<NSMutableString *> *allMutableStrings, NSNumber *number) {
- NSArray *allStrings = allMutableStrings; // no-warning
- id numberAsId = number;
-
- NSArray *moreStringsUnspecialized = [allStrings arrayByAddingObject:numberAsId]; // no-warning
-
- // Ideally the analyzer would warn here.
- NSArray<NSString *> *moreStringsSpecialized = [allStrings arrayByAddingObject:numberAsId];
-}
-
-void testCallToMethodWithCovariantParameterOnInstanceOfSubclassWithInvariantParameter(NSMutableArray<NSMutableString *> *mutableArrayOfMutableStrings, NSString *someString) {
- NSArray<NSString *> *arrayOfStrings = mutableArrayOfMutableStrings;
- [arrayOfStrings containsObject:someString]; // no-warning
-}
-
diff --git a/test/Analysis/global-region-invalidation.c b/test/Analysis/global-region-invalidation.c
deleted file mode 100644
index a40ab392b697..000000000000
--- a/test/Analysis/global-region-invalidation.c
+++ /dev/null
@@ -1,127 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -disable-free -analyzer-checker=core,deadcode,alpha.security.taint,debug.TaintTest,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-
-// Note, we do need to include headers here, since the analyzer checks if the function declaration is located in a system header.
-#include "Inputs/system-header-simulator.h"
-
-// Test that system header does not invalidate the internal global.
-int size_rdar9373039 = 1;
-int rdar9373039() {
- int x;
- int j = 0;
-
- for (int i = 0 ; i < size_rdar9373039 ; ++i)
- x = 1;
-
- // strlen doesn't invalidate the value of 'size_rdar9373039'.
- int extra = (2 + strlen ("Clang") + ((4 - ((unsigned int) (2 + strlen ("Clang")) % 4)) % 4)) + (2 + strlen ("1.0") + ((4 - ((unsigned int) (2 + strlen ("1.0")) % 4)) % 4));
-
- for (int i = 0 ; i < size_rdar9373039 ; ++i)
- j += x; // no-warning
-
- return j;
-}
-
-// Test stdin does not get invalidated by a system call nor by an internal call.
-void foo();
-int stdinTest() {
- int i = 0;
- fscanf(stdin, "%d", &i);
- foo();
- int m = i; // expected-warning + {{tainted}}
- fscanf(stdin, "%d", &i);
- int j = i; // expected-warning + {{tainted}}
- return m + j; // expected-warning + {{tainted}}
-}
-
-// Test errno gets invalidated by a system call.
-int testErrnoSystem() {
- int i;
- int *p = 0;
- fscanf(stdin, "%d", &i);
- if (errno == 0) {
- fscanf(stdin, "%d", &i); // errno gets invalidated here.
- return 5 / errno; // no-warning
- }
-
- errno = 0;
- fscanf(stdin, "%d", &i); // errno gets invalidated here.
- return 5 / errno; // no-warning
-}
-
-// Test that errno gets invalidated by internal calls.
-int testErrnoInternal() {
- int i;
- int *p = 0;
- fscanf(stdin, "%d", &i);
- if (errno == 0) {
- foo(); // errno gets invalidated here.
- return 5 / errno; // no-warning
- }
- return 0;
-}
-
-// Test that const integer does not get invalidated.
-const int x = 0;
-int constIntGlob() {
- const int *m = &x;
- foo();
- return 3 / *m; // expected-warning {{Division by zero}}
-}
-
-extern const int y;
-int constIntGlobExtern() {
- if (y == 0) {
- foo();
- return 5 / y; // expected-warning {{Division by zero}}
- }
- return 0;
-}
-
-static void * const ptr = 0;
-void constPtrGlob() {
- clang_analyzer_eval(ptr == 0); // expected-warning{{TRUE}}
- foo();
- clang_analyzer_eval(ptr == 0); // expected-warning{{TRUE}}
-}
-
-static const int x2 = x;
-void constIntGlob2() {
- clang_analyzer_eval(x2 == 0); // expected-warning{{TRUE}}
- foo();
- clang_analyzer_eval(x2 == 0); // expected-warning{{TRUE}}
-}
-
-void testAnalyzerEvalIsPure() {
- extern int someGlobal;
- if (someGlobal == 0) {
- clang_analyzer_eval(someGlobal == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(someGlobal == 0); // expected-warning{{TRUE}}
- }
-}
-
-// Test that static variables with initializers do not get reinitialized on
-// recursive calls.
-void Function2(void);
-int *getPtr();
-void Function1(void) {
- static unsigned flag;
- static int *p = 0;
- if (!flag) {
- flag = 1;
- p = getPtr();
- }
- int m = *p; // no-warning: p is never null.
- m++;
- Function2();
-}
-void Function2(void) {
- Function1();
-}
-
-void SetToNonZero(void) {
- static int g = 5;
- clang_analyzer_eval(g == 5); // expected-warning{{TRUE}}
-}
-
diff --git a/test/Analysis/global_region_invalidation.mm b/test/Analysis/global_region_invalidation.mm
deleted file mode 100644
index 57a695edd3fb..000000000000
--- a/test/Analysis/global_region_invalidation.mm
+++ /dev/null
@@ -1,188 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(int);
-
-#include "Inputs/system-header-simulator.h"
-
-void use(int);
-id foo(int x) {
- if (x)
- return 0;
- static id p = foo(1);
- clang_analyzer_eval(p == 0); // expected-warning{{TRUE}}
- return p;
-}
-
-const int &globalIntRef = 42;
-
-void testGlobalRef() {
- // FIXME: Should be TRUE, but should at least not crash.
- clang_analyzer_eval(globalIntRef == 42); // expected-warning{{UNKNOWN}}
-}
-
-extern int globalInt;
-struct IntWrapper {
- int value;
-};
-extern struct IntWrapper globalStruct;
-extern void invalidateGlobals();
-
-void testGlobalInvalidation() {
- clang_analyzer_eval(globalInt == 42); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{UNKNOWN}}
-
- if (globalInt != 42)
- return;
- if (globalStruct.value != 43)
- return;
- clang_analyzer_eval(globalInt == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{TRUE}}
-
- invalidateGlobals();
- clang_analyzer_eval(globalInt == 42); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{UNKNOWN}}
-
- // Repeat to make sure we don't get the /same/ new symbolic values.
- if (globalInt != 42)
- return;
- if (globalStruct.value != 43)
- return;
- clang_analyzer_eval(globalInt == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{TRUE}}
-
- invalidateGlobals();
- clang_analyzer_eval(globalInt == 42); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{UNKNOWN}}
-}
-
-void testGlobalInvalidationWithDirectBinding() {
- clang_analyzer_eval(globalInt == 42); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{UNKNOWN}}
-
- globalInt = 42;
- globalStruct.value = 43;
- clang_analyzer_eval(globalInt == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{TRUE}}
-
- invalidateGlobals();
- clang_analyzer_eval(globalInt == 42); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{UNKNOWN}}
-}
-
-void testStaticLocals(void) {
- static int i;
- int tmp;
-
- extern int someSymbolicValue();
- i = someSymbolicValue();
-
- if (i == 5) {
- clang_analyzer_eval(i == 5); // expected-warning{{TRUE}}
- scanf("%d", &tmp);
- clang_analyzer_eval(i == 5); // expected-warning{{TRUE}}
- invalidateGlobals();
- clang_analyzer_eval(i == 5); // expected-warning{{TRUE}}
- }
-
- i = 6;
- clang_analyzer_eval(i == 6); // expected-warning{{TRUE}}
- scanf("%d", &tmp);
- clang_analyzer_eval(i == 6); // expected-warning{{TRUE}}
- invalidateGlobals();
- clang_analyzer_eval(i == 6); // expected-warning{{TRUE}}
-
- i = someSymbolicValue();
- if (i == 7) {
- clang_analyzer_eval(i == 7); // expected-warning{{TRUE}}
- scanf("%d", &i);
- clang_analyzer_eval(i == 7); // expected-warning{{UNKNOWN}}
- }
-
- i = 8;
- clang_analyzer_eval(i == 8); // expected-warning{{TRUE}}
- scanf("%d", &i);
- clang_analyzer_eval(i == 8); // expected-warning{{UNKNOWN}}
-}
-
-void testNonSystemGlobals(void) {
- extern int i;
- int tmp;
-
- if (i == 5) {
- clang_analyzer_eval(i == 5); // expected-warning{{TRUE}}
- scanf("%d", &tmp);
- clang_analyzer_eval(i == 5); // expected-warning{{TRUE}}
- invalidateGlobals();
- clang_analyzer_eval(i == 5); // expected-warning{{UNKNOWN}}
- }
-
- i = 6;
- clang_analyzer_eval(i == 6); // expected-warning{{TRUE}}
- scanf("%d", &tmp);
- clang_analyzer_eval(i == 6); // expected-warning{{TRUE}}
- invalidateGlobals();
- clang_analyzer_eval(i == 6); // expected-warning{{UNKNOWN}}
-
- if (i == 7) {
- clang_analyzer_eval(i == 7); // expected-warning{{TRUE}}
- scanf("%d", &i);
- clang_analyzer_eval(i == 7); // expected-warning{{UNKNOWN}}
- }
-
- i = 8;
- clang_analyzer_eval(i == 8); // expected-warning{{TRUE}}
- scanf("%d", &i);
- clang_analyzer_eval(i == 8); // expected-warning{{UNKNOWN}}
-}
-
-void testWrappedGlobals(void) {
- extern char c;
- SomeStruct s;
-
- if (c == 'C') {
- s.p = &c;
- clang_analyzer_eval(c == 'C'); // expected-warning{{TRUE}}
- fakeSystemHeaderCall(0);
- clang_analyzer_eval(c == 'C'); // expected-warning{{TRUE}}
- fakeSystemHeaderCall(&s);
- clang_analyzer_eval(c == 'C'); // expected-warning{{UNKNOWN}}
- }
-
- c = 'c';
- s.p = &c;
- clang_analyzer_eval(c == 'c'); // expected-warning{{TRUE}}
- fakeSystemHeaderCall(0);
- clang_analyzer_eval(c == 'c'); // expected-warning{{TRUE}}
- fakeSystemHeaderCall(&s);
- clang_analyzer_eval(c == 'c'); // expected-warning{{UNKNOWN}}
-
- if (c == 'C') {
- s.p = &c;
- clang_analyzer_eval(c == 'C'); // expected-warning{{TRUE}}
- fakeSystemHeaderCall(0);
- clang_analyzer_eval(c == 'C'); // expected-warning{{TRUE}}
- fakeSystemHeaderCall(&s);
- clang_analyzer_eval(c == 'C'); // expected-warning{{UNKNOWN}}
- }
-}
-
-void testWrappedStaticsViaGlobal(void) {
- static char c;
- extern SomeStruct s;
-
- extern char getSomeChar();
- c = getSomeChar();
-
- if (c == 'C') {
- s.p = &c;
- clang_analyzer_eval(c == 'C'); // expected-warning{{TRUE}}
- invalidateGlobals();
- clang_analyzer_eval(c == 'C'); // expected-warning{{UNKNOWN}}
- }
-
- c = 'c';
- s.p = &c;
- clang_analyzer_eval(c == 'c'); // expected-warning{{TRUE}}
- invalidateGlobals();
- clang_analyzer_eval(c == 'c'); // expected-warning{{UNKNOWN}}
-}
diff --git a/test/Analysis/globals.cpp b/test/Analysis/globals.cpp
deleted file mode 100644
index 5bbb241bdcf3..000000000000
--- a/test/Analysis/globals.cpp
+++ /dev/null
@@ -1,111 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-
-
-static const unsigned long long scull = 0;
-void static_int()
-{
- *(int*)scull = 0; // expected-warning{{Dereference of null pointer}}
-}
-
-const unsigned long long cull = 0;
-void const_int()
-{
- *(int*)cull = 0; // expected-warning{{Dereference of null pointer}}
-}
-
-static int * const spc = 0;
-void static_ptr()
-{
- *spc = 0; // expected-warning{{Dereference of null pointer}}
-}
-
-int * const pc = 0;
-void const_ptr()
-{
- *pc = 0; // expected-warning{{Dereference of null pointer}}
-}
-
-const unsigned long long cull_nonnull = 4;
-void nonnull_int()
-{
- *(int*)(cull_nonnull - 4) = 0; // expected-warning{{Dereference of null pointer}}
-}
-
-int * const pc_nonnull = (int*)sizeof(int);
-void nonnull_ptr()
-{
- *(pc_nonnull - 1) = 0; // expected-warning{{Dereference of null pointer}}
-}
-
-int * const constcast = const_cast<int * const>((int*)sizeof(int));
-void cast1()
-{
- *(constcast - 1) = 0; // expected-warning{{Dereference of null pointer}}
-}
-
-int * const recast = reinterpret_cast<int*>(sizeof(int));
-void cast2()
-{
- *(recast - 1) = 0; // expected-warning{{Dereference of null pointer}}
-}
-
-int * const staticcast = static_cast<int * const>((int*)sizeof(int));
-void cast3()
-{
- *(staticcast - 1) = 0; // expected-warning{{Dereference of null pointer}}
-}
-
-struct Foo { int a; };
-Foo * const dyncast = dynamic_cast<Foo * const>((Foo*)sizeof(Foo));
-void cast4()
-{
- // Do not handle dynamic_cast for now, because it may change the pointer value.
- (dyncast - 1)->a = 0; // no-warning
-}
-
-typedef int * const intptrconst;
-int * const funccast = intptrconst(sizeof(int));
-void cast5()
-{
- *(funccast - 1) = 0; // expected-warning{{Dereference of null pointer}}
-}
-
-struct S1
-{
- int * p;
-};
-const S1 s1 = {
- .p = (int*)sizeof(int)
-};
-void conststruct()
-{
- *(s1.p - 1) = 0; // expected-warning{{Dereference of null pointer}}
-}
-
-struct S2
-{
- int * const p;
-};
-S2 s2 = {
- .p = (int*)sizeof(int)
-};
-void constfield()
-{
- *(s2.p - 1) = 0; // expected-warning{{Dereference of null pointer}}
-}
-
-int * const parr[1] = { (int*)sizeof(int) };
-void constarr()
-{
- *(parr[0] - 1) = 0; // expected-warning{{Dereference of null pointer}}
-}
-
-struct S3
-{
- int * p = (int*)sizeof(int);
-};
-void recordinit()
-{
- S3 s3;
- *(s3.p - 1) = 0; // expected-warning{{Dereference of null pointer}}
-}
diff --git a/test/Analysis/gmalloc.c b/test/Analysis/gmalloc.c
deleted file mode 100644
index 50413e2e9b13..000000000000
--- a/test/Analysis/gmalloc.c
+++ /dev/null
@@ -1,169 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc -analyzer-store=region -verify %s
-
-#include "Inputs/system-header-simulator.h"
-
-typedef void* gpointer;
-typedef const void* gconstpointer;
-typedef unsigned long gsize;
-typedef unsigned int guint;
-
-gpointer g_malloc(gsize n_bytes);
-gpointer g_malloc0(gsize n_bytes);
-gpointer g_realloc(gpointer mem, gsize n_bytes);
-gpointer g_try_malloc(gsize n_bytes);
-gpointer g_try_malloc0(gsize n_bytes);
-gpointer g_try_realloc(gpointer mem, gsize n_bytes);
-gpointer g_malloc_n(gsize n_blocks, gsize n_block_bytes);
-gpointer g_malloc0_n(gsize n_blocks, gsize n_block_bytes);
-gpointer g_realloc_n(gpointer mem, gsize n_blocks, gsize n_block_bytes);
-gpointer g_try_malloc_n(gsize n_blocks, gsize n_block_bytes);
-gpointer g_try_malloc0_n(gsize n_blocks, gsize n_block_bytes);
-gpointer g_try_realloc_n(gpointer mem, gsize n_blocks, gsize n_block_bytes);
-void g_free(gpointer mem);
-gpointer g_memdup(gconstpointer mem, guint byte_size);
-
-static const gsize n_bytes = 1024;
-
-void f1() {
- gpointer g1 = g_malloc(n_bytes);
- gpointer g2 = g_malloc0(n_bytes);
- g1 = g_realloc(g1, n_bytes * 2);
- gpointer g3 = g_try_malloc(n_bytes);
- gpointer g4 = g_try_malloc0(n_bytes);
- g3 = g_try_realloc(g3, n_bytes * 2);
- gpointer g5 = g_malloc_n(n_bytes, sizeof(char));
- gpointer g6 = g_malloc0_n(n_bytes, sizeof(char));
- g5 = g_realloc_n(g5, n_bytes * 2, sizeof(char));
- gpointer g7 = g_try_malloc_n(n_bytes, sizeof(char));
- gpointer g8 = g_try_malloc0_n(n_bytes, sizeof(char));
- g7 = g_try_realloc_n(g7, n_bytes * 2, sizeof(char));
-
- g_free(g1);
- g_free(g2);
- g_free(g2); // expected-warning{{Attempt to free released memory}}
-}
-
-void f2() {
- gpointer g1 = g_malloc(n_bytes);
- gpointer g2 = g_malloc0(n_bytes);
- g1 = g_realloc(g1, n_bytes * 2);
- gpointer g3 = g_try_malloc(n_bytes);
- gpointer g4 = g_try_malloc0(n_bytes);
- g3 = g_try_realloc(g3, n_bytes * 2);
- gpointer g5 = g_malloc_n(n_bytes, sizeof(char));
- gpointer g6 = g_malloc0_n(n_bytes, sizeof(char));
- g5 = g_realloc_n(g5, n_bytes * 2, sizeof(char));
- gpointer g7 = g_try_malloc_n(n_bytes, sizeof(char));
- gpointer g8 = g_try_malloc0_n(n_bytes, sizeof(char));
- g7 = g_try_realloc_n(g7, n_bytes * 2, sizeof(char));
-
- g_free(g1);
- g_free(g2);
- g_free(g3);
- g3 = g_memdup(g3, n_bytes); // expected-warning{{Use of memory after it is freed}}
-}
-
-void f3() {
- gpointer g1 = g_malloc(n_bytes);
- gpointer g2 = g_malloc0(n_bytes);
- g1 = g_realloc(g1, n_bytes * 2);
- gpointer g3 = g_try_malloc(n_bytes);
- gpointer g4 = g_try_malloc0(n_bytes);
- g3 = g_try_realloc(g3, n_bytes * 2); // expected-warning{{Potential leak of memory pointed to by 'g4'}}
- gpointer g5 = g_malloc_n(n_bytes, sizeof(char));
- gpointer g6 = g_malloc0_n(n_bytes, sizeof(char));
- g5 = g_realloc_n(g5, n_bytes * 2, sizeof(char)); // expected-warning{{Potential leak of memory pointed to by 'g6'}}
- gpointer g7 = g_try_malloc_n(n_bytes, sizeof(char)); // expected-warning{{Potential leak of memory pointed to by 'g5'}}
- gpointer g8 = g_try_malloc0_n(n_bytes, sizeof(char));
- g7 = g_try_realloc_n(g7, n_bytes * 2, sizeof(char)); // expected-warning{{Potential leak of memory pointed to by 'g8'}}
-
- g_free(g1); // expected-warning{{Potential leak of memory pointed to by 'g7'}}
- g_free(g2);
- g_free(g3);
-}
-
-void f4() {
- gpointer g1 = g_malloc(n_bytes);
- gpointer g2 = g_malloc0(n_bytes);
- g1 = g_realloc(g1, n_bytes * 2);
- gpointer g3 = g_try_malloc(n_bytes);
- gpointer g4 = g_try_malloc0(n_bytes);
- g3 = g_try_realloc(g3, n_bytes * 2);
- gpointer g5 = g_malloc_n(n_bytes, sizeof(char));
- gpointer g6 = g_malloc0_n(n_bytes, sizeof(char));
- g5 = g_realloc_n(g5, n_bytes * 2, sizeof(char)); // expected-warning{{Potential leak of memory pointed to by 'g6'}}
- gpointer g7 = g_try_malloc_n(n_bytes, sizeof(char)); // expected-warning{{Potential leak of memory pointed to by 'g5'}}
- gpointer g8 = g_try_malloc0_n(n_bytes, sizeof(char));
- g7 = g_try_realloc_n(g7, n_bytes * 2, sizeof(char)); // expected-warning{{Potential leak of memory pointed to by 'g8'}}
-
- g_free(g1); // expected-warning{{Potential leak of memory pointed to by 'g7'}}
- g_free(g2);
- g_free(g3);
- g_free(g4);
-}
-
-void f5() {
- gpointer g1 = g_malloc(n_bytes);
- gpointer g2 = g_malloc0(n_bytes);
- g1 = g_realloc(g1, n_bytes * 2);
- gpointer g3 = g_try_malloc(n_bytes);
- gpointer g4 = g_try_malloc0(n_bytes);
- g3 = g_try_realloc(g3, n_bytes * 2);
- gpointer g5 = g_malloc_n(n_bytes, sizeof(char));
- gpointer g6 = g_malloc0_n(n_bytes, sizeof(char));
- g5 = g_realloc_n(g5, n_bytes * 2, sizeof(char)); // expected-warning{{Potential leak of memory pointed to by 'g6'}}
- gpointer g7 = g_try_malloc_n(n_bytes, sizeof(char));
- gpointer g8 = g_try_malloc0_n(n_bytes, sizeof(char));
- g7 = g_try_realloc_n(g7, n_bytes * 2, sizeof(char)); // expected-warning{{Potential leak of memory pointed to by 'g8'}}
-
- g_free(g1); // expected-warning{{Potential leak of memory pointed to by 'g7'}}
- g_free(g2);
- g_free(g3);
- g_free(g4);
- g_free(g5);
-}
-
-void f6() {
- gpointer g1 = g_malloc(n_bytes);
- gpointer g2 = g_malloc0(n_bytes);
- g1 = g_realloc(g1, n_bytes * 2);
- gpointer g3 = g_try_malloc(n_bytes);
- gpointer g4 = g_try_malloc0(n_bytes);
- g3 = g_try_realloc(g3, n_bytes * 2);
- gpointer g5 = g_malloc_n(n_bytes, sizeof(char));
- gpointer g6 = g_malloc0_n(n_bytes, sizeof(char));
- g5 = g_realloc_n(g5, n_bytes * 2, sizeof(char));
- gpointer g7 = g_try_malloc_n(n_bytes, sizeof(char));
- gpointer g8 = g_try_malloc0_n(n_bytes, sizeof(char));
- g7 = g_try_realloc_n(g7, n_bytes * 2, sizeof(char)); // expected-warning{{Potential leak of memory pointed to by 'g8'}}
-
- g_free(g1); // expected-warning{{Potential leak of memory pointed to by 'g7'}}
- g_free(g2);
- g_free(g3);
- g_free(g4);
- g_free(g5);
- g_free(g6);
-}
-
-void f7() {
- gpointer g1 = g_malloc(n_bytes);
- gpointer g2 = g_malloc0(n_bytes);
- g1 = g_realloc(g1, n_bytes * 2);
- gpointer g3 = g_try_malloc(n_bytes);
- gpointer g4 = g_try_malloc0(n_bytes);
- g3 = g_try_realloc(g3, n_bytes * 2);
- gpointer g5 = g_malloc_n(n_bytes, sizeof(char));
- gpointer g6 = g_malloc0_n(n_bytes, sizeof(char));
- g5 = g_realloc_n(g5, n_bytes * 2, sizeof(char));
- gpointer g7 = g_try_malloc_n(n_bytes, sizeof(char));
- gpointer g8 = g_try_malloc0_n(n_bytes, sizeof(char));
- g7 = g_try_realloc_n(g7, n_bytes * 2, sizeof(char)); // expected-warning{{Potential leak of memory pointed to by 'g8'}}
-
- g_free(g1);
- g_free(g2);
- g_free(g3);
- g_free(g4);
- g_free(g5);
- g_free(g6);
- g_free(g7);
-}
diff --git a/test/Analysis/gtest.cpp b/test/Analysis/gtest.cpp
deleted file mode 100644
index 43c823a8c126..000000000000
--- a/test/Analysis/gtest.cpp
+++ /dev/null
@@ -1,164 +0,0 @@
-//RUN: %clang_analyze_cc1 -cc1 -std=c++11 -analyzer-checker=core,apiModeling.google.GTest,debug.ExprInspection %s -verify
-//RUN: %clang_analyze_cc1 -cc1 -std=c++11 -analyzer-checker=core,apiModeling.google.GTest,debug.ExprInspection -DGTEST_VERSION_1_8_AND_LATER=1 %s -verify
-
-void clang_analyzer_eval(int);
-void clang_analyzer_warnIfReached();
-
-namespace std {
- class string {
- public:
- ~string();
- const char *c_str();
- };
-}
-
-namespace testing {
-
-class Message { };
-class TestPartResult {
- public:
- enum Type {
- kSuccess,
- kNonFatalFailure,
- kFatalFailure
- };
-};
-
-namespace internal {
-
-class AssertHelper {
- public:
- AssertHelper(TestPartResult::Type type, const char* file, int line,
- const char* message);
- ~AssertHelper();
- void operator=(const Message& message) const;
-};
-
-
-template <typename T>
-struct AddReference { typedef T& type; };
-template <typename T>
-struct AddReference<T&> { typedef T& type; };
-template <typename From, typename To>
-class ImplicitlyConvertible {
- private:
- static typename AddReference<From>::type MakeFrom();
- static char Helper(To);
- static char (&Helper(...))[2];
- public:
- static const bool value =
- sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1;
-};
-template <typename From, typename To>
-const bool ImplicitlyConvertible<From, To>::value;
-template<bool> struct EnableIf;
-template<> struct EnableIf<true> { typedef void type; };
-
-} // end internal
-
-
-class AssertionResult {
-public:
-
- // The implementation for the copy constructor is not exposed in the
- // interface.
- AssertionResult(const AssertionResult& other);
-
-#if defined(GTEST_VERSION_1_8_AND_LATER)
- template <typename T>
- explicit AssertionResult(
- const T& success,
- typename internal::EnableIf<
- !internal::ImplicitlyConvertible<T, AssertionResult>::value>::type*
- /*enabler*/ = 0)
- : success_(success) {}
-#else
- explicit AssertionResult(bool success) : success_(success) {}
-#endif
-
- operator bool() const { return success_; }
-
- // The actual AssertionResult does not have an explicit destructor, but
- // it does have a non-trivial member veriable, so we add a destructor here
- // to force temporary cleanups.
- ~AssertionResult();
-private:
-
- bool success_;
-};
-
-namespace internal {
-std::string GetBoolAssertionFailureMessage(
- const AssertionResult& assertion_result,
- const char* expression_text,
- const char* actual_predicate_value,
- const char* expected_predicate_value);
-} // end internal
-
-} // end testing
-
-#define GTEST_MESSAGE_AT_(file, line, message, result_type) \
- ::testing::internal::AssertHelper(result_type, file, line, message) \
- = ::testing::Message()
-
-#define GTEST_MESSAGE_(message, result_type) \
- GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)
-
-#define GTEST_FATAL_FAILURE_(message) \
- return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)
-
-#define GTEST_NONFATAL_FAILURE_(message) \
- GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)
-
-# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default:
-
-#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (const ::testing::AssertionResult gtest_ar_ = \
- ::testing::AssertionResult(expression)) \
- ; \
- else \
- fail(::testing::internal::GetBoolAssertionFailureMessage(\
- gtest_ar_, text, #actual, #expected).c_str())
-
-#define EXPECT_TRUE(condition) \
- GTEST_TEST_BOOLEAN_((condition), #condition, false, true, \
- GTEST_NONFATAL_FAILURE_)
-#define ASSERT_TRUE(condition) \
- GTEST_TEST_BOOLEAN_((condition), #condition, false, true, \
- GTEST_FATAL_FAILURE_)
-
-#define ASSERT_FALSE(condition) \
- GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
- GTEST_FATAL_FAILURE_)
-
-void testAssertTrue(int *p) {
- ASSERT_TRUE(p != nullptr);
- EXPECT_TRUE(1 == *p); // no-warning
-}
-
-void testAssertFalse(int *p) {
- ASSERT_FALSE(p == nullptr);
- EXPECT_TRUE(1 == *p); // no-warning
-}
-
-void testConstrainState(int p) {
- ASSERT_TRUE(p == 7);
-
- clang_analyzer_eval(p == 7); // expected-warning {{TRUE}}
-
- ASSERT_TRUE(false);
- clang_analyzer_warnIfReached(); // no-warning
-}
-
-void testAssertSymbolicPtr(const bool *b) {
- ASSERT_TRUE(*b); // no-crash
-
- clang_analyzer_eval(*b); // expected-warning{{TRUE}}
-}
-
-void testAssertSymbolicRef(const bool &b) {
- ASSERT_TRUE(b); // no-crash
-
- clang_analyzer_eval(b); // expected-warning{{TRUE}}
-}
diff --git a/test/Analysis/hangs.c b/test/Analysis/hangs.c
deleted file mode 100644
index b109bcb52fdb..000000000000
--- a/test/Analysis/hangs.c
+++ /dev/null
@@ -1,30 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker core -verify %s
-
-// expected-no-diagnostics
-
-// Stuff that used to hang.
-
-int g();
-
-int f(int y) {
- return y + g();
-}
-
-int produce_a_very_large_symbol(int x) {
- return f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(
- f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(x))))))))))))))))))))))))))))))));
-}
-
-void produce_an_exponentially_exploding_symbol(int x, int y) {
- x += y; y += x + g();
- x += y; y += x + g();
- x += y; y += x + g();
- x += y; y += x + g();
- x += y; y += x + g();
- x += y; y += x + g();
- x += y; y += x + g();
- x += y; y += x + g();
- x += y; y += x + g();
- x += y; y += x + g();
- x += y; y += x + g();
-}
diff --git a/test/Analysis/html-diag-singlefile.c b/test/Analysis/html-diag-singlefile.c
deleted file mode 100644
index fc0dcc7a4233..000000000000
--- a/test/Analysis/html-diag-singlefile.c
+++ /dev/null
@@ -1,14 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=html-single-file -o D30406.html %s 2>&1 | FileCheck %s
-
-// Check that single file HTML output does not process multi-file diagnostics.
-// (This used to test for PR12421, before the introduction of the html-single-file format)
-
-#include "html-diag-singlefile.h"
-
-int main(){
- f();
- return 0;
-}
-
-// CHECK: warning: Path diagnostic report is not generated.
diff --git a/test/Analysis/html-diag-singlefile.h b/test/Analysis/html-diag-singlefile.h
deleted file mode 100644
index 1af7d1f1fbb4..000000000000
--- a/test/Analysis/html-diag-singlefile.h
+++ /dev/null
@@ -1,4 +0,0 @@
-static void f() {
- int *p = 0;
- *p = 1; // expected-warning{{Dereference of null pointer}}
-}
diff --git a/test/Analysis/html-diags-analyze-headers.c b/test/Analysis/html-diags-analyze-headers.c
deleted file mode 100644
index fa5f21de0478..000000000000
--- a/test/Analysis/html-diags-analyze-headers.c
+++ /dev/null
@@ -1,10 +0,0 @@
-// RUN: mkdir -p %t.dir
-// RUN: %clang_analyze_cc1 -analyzer-opt-analyze-headers -analyzer-output=html -analyzer-checker=core -o %t.dir %s
-// RUN: ls %t.dir | grep report
-// RUN: rm -rf %t.dir
-
-// This tests that we emit HTML diagnostics for reports in headers when the
-// analyzer is run with -analyzer-opt-analyze-headers. This was handled
-// incorrectly in the first iteration of D30406.
-
-#include "html-diags-analyze-headers.h"
diff --git a/test/Analysis/html-diags-analyze-headers.h b/test/Analysis/html-diags-analyze-headers.h
deleted file mode 100644
index 3641ca9c0400..000000000000
--- a/test/Analysis/html-diags-analyze-headers.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#include "html-diags-multifile.h"
-
-void test_call_macro() {
- has_bug(0);
-}
diff --git a/test/Analysis/html-diags-multifile.c b/test/Analysis/html-diags-multifile.c
deleted file mode 100644
index ff7b625ad083..000000000000
--- a/test/Analysis/html-diags-multifile.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: mkdir -p %t.dir
-// RUN: %clang_analyze_cc1 -analyzer-output=html -analyzer-checker=core -o %t.dir %s
-// RUN: ls %t.dir | grep report
-// RUN: rm -fR %t.dir
-
-// This tests that we emit HTML diagnostics for reports that cross file boundaries.
-
-#include "html-diags-multifile.h"
-
-#define CALL_HAS_BUG(q) has_bug(q)
-
-void test_call_macro() {
- CALL_HAS_BUG(0);
-}
-
diff --git a/test/Analysis/html-diags-multifile.h b/test/Analysis/html-diags-multifile.h
deleted file mode 100644
index 71d39ba79e1c..000000000000
--- a/test/Analysis/html-diags-multifile.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#define DEREF(p) *p = 0xDEADBEEF
-void has_bug(int *p) {
- DEREF(p);
-}
diff --git a/test/Analysis/html-diags.c b/test/Analysis/html-diags.c
deleted file mode 100644
index 89f1e8ba7930..000000000000
--- a/test/Analysis/html-diags.c
+++ /dev/null
@@ -1,32 +0,0 @@
-// RUN: rm -fR %t
-// RUN: mkdir %t
-// RUN: %clang_analyze_cc1 -analyzer-output=html -analyzer-checker=core -o %t %s
-// RUN: ls %t | grep report
-
-// D30406: Test new html-single-file output
-// RUN: rm -fR %t
-// RUN: mkdir %t
-// RUN: %clang_analyze_cc1 -analyzer-output=html-single-file -analyzer-checker=core -o %t %s
-// RUN: ls %t | grep report
-
-// PR16547: Test relative paths
-// RUN: cd %t
-// RUN: %clang_analyze_cc1 -analyzer-output=html -analyzer-checker=core -o testrelative %s
-// RUN: ls %t/testrelative | grep report
-
-// Currently this test mainly checks that the HTML diagnostics doesn't crash
-// when handling macros will calls with macros. We should actually validate
-// the output, but that requires being able to match against a specifically
-// generate HTML file.
-
-#define DEREF(p) *p = 0xDEADBEEF
-
-void has_bug(int *p) {
- DEREF(p);
-}
-
-#define CALL_HAS_BUG(q) has_bug(q)
-
-void test_call_macro() {
- CALL_HAS_BUG(0);
-}
diff --git a/test/Analysis/html_diagnostics/relevant_lines/goto.c b/test/Analysis/html_diagnostics/relevant_lines/goto.c
deleted file mode 100644
index fc90f1334f07..000000000000
--- a/test/Analysis/html_diagnostics/relevant_lines/goto.c
+++ /dev/null
@@ -1,13 +0,0 @@
-int goto_test(int input) {
- int *p = 0;
- if (input)
- goto mylabel;
- return 0;
-mylabel:
- return *p;
-}
-
-// RUN: rm -rf %t.output
-// RUN: %clang_analyze_cc1 -analyze -analyzer-checker=core -analyzer-output html -o %t.output %s
-// RUN: cat %t.output/* | FileCheck %s --match-full-lines
-// CHECK: var relevant_lines = {"1": {"1": 1, "2": 1, "3": 1, "4": 1, "6": 1, "7": 1}};
diff --git a/test/Analysis/html_diagnostics/relevant_lines/header.h b/test/Analysis/html_diagnostics/relevant_lines/header.h
deleted file mode 100644
index 579b66a1cb31..000000000000
--- a/test/Analysis/html_diagnostics/relevant_lines/header.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#define deref(X) (*X)
-
-char helper(
- char *out,
- int doDereference) {
- if (doDereference) {
- return deref(out);
- } else {
- return 'x';
- }
- return 'c';
-}
diff --git a/test/Analysis/html_diagnostics/relevant_lines/macros_same_file.c b/test/Analysis/html_diagnostics/relevant_lines/macros_same_file.c
deleted file mode 100644
index 5b3556526add..000000000000
--- a/test/Analysis/html_diagnostics/relevant_lines/macros_same_file.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#define deref(X) (*X)
-
-int f(int coin) {
- if (coin) {
- int *x = 0;
- return deref(x);
- } else {
- return 0;
- }
-}
-
-// RUN: rm -rf %t.output
-// RUN: %clang_analyze_cc1 -analyze -analyzer-checker=core -analyzer-output html -o %t.output %s
-// RUN: cat %t.output/* | FileCheck %s --match-full-lines
-// CHECK: var relevant_lines = {"1": {"3": 1, "4": 1, "5": 1, "6": 1}};
diff --git a/test/Analysis/html_diagnostics/relevant_lines/multifile.c b/test/Analysis/html_diagnostics/relevant_lines/multifile.c
deleted file mode 100644
index 3abffd609b5b..000000000000
--- a/test/Analysis/html_diagnostics/relevant_lines/multifile.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "header.h"
-
-int f(int coin) {
- char *p = 0;
- if (coin) {
- return helper(p, coin);
- }
- return 0;
-}
-
-// RUN: rm -rf %t.output
-// RUN: %clang_analyze_cc1 -analyze -analyzer-checker=core -analyzer-output html -o %t.output %s
-// RUN: cat %t.output/* | FileCheck %s --match-full-lines
-// CHECK: var relevant_lines = {"1": {"3": 1, "4": 1, "5": 1, "6": 1}, "3": {"3": 1, "4": 1, "5": 1, "6": 1, "7": 1}};
diff --git a/test/Analysis/html_diagnostics/relevant_lines/multiline_func_def.c b/test/Analysis/html_diagnostics/relevant_lines/multiline_func_def.c
deleted file mode 100644
index 35158a46868c..000000000000
--- a/test/Analysis/html_diagnostics/relevant_lines/multiline_func_def.c
+++ /dev/null
@@ -1,16 +0,0 @@
-int f(
- int coin,
- int paramA,
- int paramB) {
- if (coin) {
- int *x = 0;
- return *x;
- } else {
- return 0;
- }
-}
-
-// RUN: rm -rf %t.output
-// RUN: %clang_analyze_cc1 -analyze -analyzer-checker=core -analyzer-output html -o %t.output %s
-// RUN: cat %t.output/* | FileCheck %s --match-full-lines
-// CHECK: var relevant_lines = {"1": {"1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1}};
diff --git a/test/Analysis/html_diagnostics/relevant_lines/notexecutedlines.c b/test/Analysis/html_diagnostics/relevant_lines/notexecutedlines.c
deleted file mode 100644
index 3c723aa93349..000000000000
--- a/test/Analysis/html_diagnostics/relevant_lines/notexecutedlines.c
+++ /dev/null
@@ -1,12 +0,0 @@
-int f() {
- int zzz = 200;
- zzz += 100;
- return 0;
-}
-
-// Show line with the warning even if it wasn't executed (e.g. warning given
-// by path-insensitive analysis).
-// RUN: rm -rf %t.output
-// RUN: %clang_analyze_cc1 -analyze -analyzer-checker=core,deadcode -analyzer-output html -o %t.output %s
-// RUN: cat %t.output/* | FileCheck %s --match-full-lines
-// CHECK: var relevant_lines = {"1": {"3": 1}};
diff --git a/test/Analysis/html_diagnostics/relevant_lines/objcmethods.m b/test/Analysis/html_diagnostics/relevant_lines/objcmethods.m
deleted file mode 100644
index 41a4c1d2e097..000000000000
--- a/test/Analysis/html_diagnostics/relevant_lines/objcmethods.m
+++ /dev/null
@@ -1,19 +0,0 @@
-@interface I
-- (int)func;
-@end
-
-@implementation I
-- (int)func:(int *)param {
- return *param;
-}
-@end
-
-void foo(I *i) {
- int *x = 0;
- [i func:x];
-}
-
-// RUN: rm -rf %t.output
-// RUN: %clang_analyze_cc1 -analyze -analyzer-checker=core -analyzer-output html -o %t.output -Wno-objc-root-class %s
-// RUN: cat %t.output/* | FileCheck %s
-// CHECK: var relevant_lines = {"1": {"6": 1, "7": 1, "11": 1, "12": 1, "13": 1}};
diff --git a/test/Analysis/html_diagnostics/relevant_lines/simple_conditional.c b/test/Analysis/html_diagnostics/relevant_lines/simple_conditional.c
deleted file mode 100644
index 769859dea5ef..000000000000
--- a/test/Analysis/html_diagnostics/relevant_lines/simple_conditional.c
+++ /dev/null
@@ -1,13 +0,0 @@
-int f(int coin) {
- if (coin) {
- int *x = 0;
- return *x;
- } else {
- return 0;
- }
-}
-
-// RUN: rm -rf %t.output
-// RUN: %clang_analyze_cc1 -analyze -analyzer-checker=core -analyzer-output html -o %t.output %s
-// RUN: cat %t.output/* | FileCheck %s --match-full-lines
-// CHECK: var relevant_lines = {"1": {"1": 1, "2": 1, "3": 1, "4": 1}};
diff --git a/test/Analysis/html_diagnostics/relevant_lines/switch.c b/test/Analysis/html_diagnostics/relevant_lines/switch.c
deleted file mode 100644
index e9032cdece9d..000000000000
--- a/test/Analysis/html_diagnostics/relevant_lines/switch.c
+++ /dev/null
@@ -1,20 +0,0 @@
-enum E {
- A, B, C
-};
-
-int f(enum E input) {
- int *x = 0;
- switch (input) {
- case A:
- return 1;
- case B:
- return 0;
- case C:
- return *x;
- }
-}
-
-// RUN: rm -rf %t.output
-// RUN: %clang_analyze_cc1 -analyze -analyzer-checker=core -analyzer-output html -o %t.output %s
-// RUN: cat %t.output/* | FileCheck %s --match-full-lines
-// CHECK: var relevant_lines = {"1": {"5": 1, "6": 1, "7": 1, "12": 1, "13": 1}};
diff --git a/test/Analysis/html_diagnostics/relevant_lines/switch_default.c b/test/Analysis/html_diagnostics/relevant_lines/switch_default.c
deleted file mode 100644
index b14e3f9fa8fd..000000000000
--- a/test/Analysis/html_diagnostics/relevant_lines/switch_default.c
+++ /dev/null
@@ -1,20 +0,0 @@
-enum E {
- A, B, C
-};
-
-int f(enum E input) {
- int *x = 0;
- switch (input) {
- case A:
- return 1;
- case B:
- return 0;
- default:
- return *x;
- }
-}
-
-// RUN: rm -rf %t.output
-// RUN: %clang_analyze_cc1 -analyze -analyzer-checker=core -analyzer-output html -o %t.output %s
-// RUN: cat %t.output/* | FileCheck %s --match-full-lines
-// CHECK: var relevant_lines = {"1": {"5": 1, "6": 1, "7": 1, "12": 1, "13": 1}};
diff --git a/test/Analysis/html_diagnostics/relevant_lines/synthesized_body.cpp b/test/Analysis/html_diagnostics/relevant_lines/synthesized_body.cpp
deleted file mode 100644
index 2ed8355f6e60..000000000000
--- a/test/Analysis/html_diagnostics/relevant_lines/synthesized_body.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-// Faking std::call_once implementation.
-namespace std {
-typedef struct once_flag_s {
- int _M_once = 0;
-} once_flag;
-
-template <class Callable, class... Args>
-void call_once(once_flag &o, Callable&& func, Args&&... args);
-} // namespace std
-
-int deref(int *x) {
- return *x;
-}
-
-void call_deref_once() {
- static std::once_flag once;
- int *p = nullptr;
- std::call_once(once, &deref, p);
-}
-
-
-// RUN: rm -rf %t.output
-// RUN: %clang_analyze_cc1 -std=c++11 -analyze -analyzer-checker=core -analyzer-output html -o %t.output %s
-// RUN: cat %t.output/* | FileCheck %s --match-full-lines
-// CHECK: var relevant_lines = {"1": {"3": 1, "8": 1, "11": 1, "12": 1, "15": 1, "16": 1, "17": 1, "18": 1}};
diff --git a/test/Analysis/html_diagnostics/relevant_lines/unused_header.c b/test/Analysis/html_diagnostics/relevant_lines/unused_header.c
deleted file mode 100644
index 4b77c651eddd..000000000000
--- a/test/Analysis/html_diagnostics/relevant_lines/unused_header.c
+++ /dev/null
@@ -1,19 +0,0 @@
-#include "header.h"
-
-int f(int coin) {
- if (coin) {
- int *x = 0;
- return *x;
- } else {
- return 0;
- }
-}
-
-int v(int coin) {
- return coin;
-}
-
-// RUN: rm -rf %t.output
-// RUN: %clang_analyze_cc1 -analyze -analyzer-checker=core -analyzer-output html -o %t.output %s
-// RUN: cat %t.output/* | FileCheck %s --match-full-lines
-// CHECK: var relevant_lines = {"1": {"3": 1, "4": 1, "5": 1, "6": 1}};
diff --git a/test/Analysis/identical-expressions.cpp b/test/Analysis/identical-expressions.cpp
deleted file mode 100644
index 8bb82372b534..000000000000
--- a/test/Analysis/identical-expressions.cpp
+++ /dev/null
@@ -1,1564 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core.IdenticalExpr -w -verify %s
-
-/* Only one expected warning per function allowed at the very end. */
-
-int func(void)
-{
- return 0;
-}
-
-int func2(void)
-{
- return 0;
-}
-
-int funcParam(int a)
-{
- return 0;
-}
-
-/* '!=' operator*/
-
-/* '!=' with float */
-int checkNotEqualFloatLiteralCompare1(void) {
- return (5.14F != 5.14F); // no warning
-}
-
-int checkNotEqualFloatLiteralCompare2(void) {
- return (6.14F != 7.14F); // no warning
-}
-
-int checkNotEqualFloatDeclCompare1(void) {
- float f = 7.1F;
- float g = 7.1F;
- return (f != g); // no warning
-}
-
-int checkNotEqualFloatDeclCompare12(void) {
- float f = 7.1F;
- return (f != f); // no warning
-}
-
-int checkNotEqualFloatDeclCompare3(void) {
- float f = 7.1F;
- return (f != 7.1F); // no warning
-}
-
-int checkNotEqualFloatDeclCompare4(void) {
- float f = 7.1F;
- return (7.1F != f); // no warning
-}
-
-int checkNotEqualFloatDeclCompare5(void) {
- float f = 7.1F;
- int t = 7;
- return (t != f); // no warning
-}
-
-int checkNotEqualFloatDeclCompare6(void) {
- float f = 7.1F;
- int t = 7;
- return (f != t); // no warning
-}
-
-
-
-int checkNotEqualCastFloatDeclCompare11(void) {
- float f = 7.1F;
- return ((int)f != (int)f); // expected-warning {{comparison of identical expressions always evaluates to false}}
-}
-int checkNotEqualCastFloatDeclCompare12(void) {
- float f = 7.1F;
- return ((char)f != (int)f); // no warning
-}
-int checkNotEqualBinaryOpFloatCompare1(void) {
- int res;
- float f= 3.14F;
- res = (f + 3.14F != f + 3.14F); // no warning
- return (0);
-}
-int checkNotEqualBinaryOpFloatCompare2(void) {
- float f = 7.1F;
- float g = 7.1F;
- return (f + 3.14F != g + 3.14F); // no warning
-}
-int checkNotEqualBinaryOpFloatCompare3(void) {
- int res;
- float f= 3.14F;
- res = ((int)f + 3.14F != (int)f + 3.14F); // no warning
- return (0);
-}
-int checkNotEqualBinaryOpFloatCompare4(void) {
- int res;
- float f= 3.14F;
- res = ((int)f + 3.14F != (char)f + 3.14F); // no warning
- return (0);
-}
-
-int checkNotEqualNestedBinaryOpFloatCompare1(void) {
- int res;
- int t= 1;
- int u= 2;
- float f= 3.14F;
- res = (((int)f + (3.14F - u)*t) != ((int)f + (3.14F - u)*t)); // no warning
- return (0);
-}
-
-int checkNotEqualNestedBinaryOpFloatCompare2(void) {
- int res;
- int t= 1;
- int u= 2;
- float f= 3.14F;
- res = (((int)f + (u - 3.14F)*t) != ((int)f + (3.14F - u)*t)); // no warning
- return (0);
-}
-
-int checkNotEqualNestedBinaryOpFloatCompare3(void) {
- int res;
- int t= 1;
- int u= 2;
- float f= 3.14F;
- res = (((int)f + (u - 3.14F)*t) != ((int)f + (3.14F - u)*(f + t != f + t))); // no warning
- return (0);
-}
-
-
-
-
-/* end '!=' with float*/
-
-/* '!=' with int*/
-
-int checkNotEqualIntLiteralCompare1(void) {
- return (5 != 5); // expected-warning {{comparison of identical expressions always evaluates to false}}
-}
-
-int checkNotEqualIntLiteralCompare2(void) {
- return (6 != 7); // no warning
-}
-
-int checkNotEqualIntDeclCompare1(void) {
- int f = 7;
- int g = 7;
- return (f != g); // no warning
-}
-
-int checkNotEqualIntDeclCompare3(void) {
- int f = 7;
- return (f != 7); // no warning
-}
-
-int checkNotEqualIntDeclCompare4(void) {
- int f = 7;
- return (7 != f); // no warning
-}
-
-int checkNotEqualCastIntDeclCompare11(void) {
- int f = 7;
- return ((int)f != (int)f); // expected-warning {{comparison of identical expressions always evaluates to false}}
-}
-int checkNotEqualCastIntDeclCompare12(void) {
- int f = 7;
- return ((char)f != (int)f); // no warning
-}
-int checkNotEqualBinaryOpIntCompare1(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 4;
- res = (f + 4 != f + 4); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-int checkNotEqualBinaryOpIntCompare2(void) {
- int f = 7;
- int g = 7;
- return (f + 4 != g + 4); // no warning
-}
-
-
-int checkNotEqualBinaryOpIntCompare3(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 4;
- res = ((int)f + 4 != (int)f + 4); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-int checkNotEqualBinaryOpIntCompare4(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 4;
- res = ((int)f + 4 != (char)f + 4); // no warning
- return (0);
-}
-int checkNotEqualBinaryOpIntCompare5(void) {
- int res;
- int t= 1;
- int u= 2;
- res = (u + t != u + t); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-
-int checkNotEqualNestedBinaryOpIntCompare1(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 3;
- res = (((int)f + (3 - u)*t) != ((int)f + (3 - u)*t)); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-
-int checkNotEqualNestedBinaryOpIntCompare2(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 3;
- res = (((int)f + (u - 3)*t) != ((int)f + (3 - u)*t)); // no warning
- return (0);
-}
-
-int checkNotEqualNestedBinaryOpIntCompare3(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 3;
- res = (((int)f + (u - 3)*t) != ((int)f + (3 - u)*(t + 1 != t + 1))); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-
-/* end '!=' int */
-
-
-
-/* '!=' with int pointer */
-
-int checkNotEqualIntPointerLiteralCompare1(void) {
- int* p = 0;
- return (p != 0); // no warning
-}
-
-int checkNotEqualIntPointerLiteralCompare2(void) {
- return (6 != 7); // no warning
-}
-
-int checkNotEqualIntPointerDeclCompare1(void) {
- int k = 3;
- int* f = &k;
- int* g = &k;
- return (f != g); // no warning
-}
-
-int checkNotEqualCastIntPointerDeclCompare11(void) {
- int k = 7;
- int* f = &k;
- return ((int*)f != (int*)f); // expected-warning {{comparison of identical expressions always evaluates to false}}
-}
-int checkNotEqualCastIntPointerDeclCompare12(void) {
- int k = 7;
- int* f = &k;
- return ((int*)((char*)f) != (int*)f); // no warning
-}
-int checkNotEqualBinaryOpIntPointerCompare1(void) {
- int k = 7;
- int res;
- int* f= &k;
- res = (f + 4 != f + 4); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-int checkNotEqualBinaryOpIntPointerCompare2(void) {
- int k = 7;
- int* f = &k;
- int* g = &k;
- return (f + 4 != g + 4); // no warning
-}
-
-
-int checkNotEqualBinaryOpIntPointerCompare3(void) {
- int k = 7;
- int res;
- int* f= &k;
- res = ((int*)f + 4 != (int*)f + 4); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-int checkNotEqualBinaryOpIntPointerCompare4(void) {
- int k = 7;
- int res;
- int* f= &k;
- res = ((int*)f + 4 != (int*)((char*)f) + 4); // no warning
- return (0);
-}
-
-int checkNotEqualNestedBinaryOpIntPointerCompare1(void) {
- int res;
- int k = 7;
- int t= 1;
- int* u= &k+2;
- int* f= &k+3;
- res = ((f + (3)*t) != (f + (3)*t)); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-
-int checkNotEqualNestedBinaryOpIntPointerCompare2(void) {
- int res;
- int k = 7;
- int t= 1;
- int* u= &k+2;
- int* f= &k+3;
- res = (((3)*t + f) != (f + (3)*t)); // no warning
- return (0);
-}
-/* end '!=' int* */
-
-/* '!=' with function*/
-
-int checkNotEqualSameFunction() {
- unsigned a = 0;
- unsigned b = 1;
- int res = (a+func() != a+func()); // no warning
- return (0);
-}
-
-int checkNotEqualDifferentFunction() {
- unsigned a = 0;
- unsigned b = 1;
- int res = (a+func() != a+func2()); // no warning
- return (0);
-}
-
-int checkNotEqualSameFunctionSameParam() {
- unsigned a = 0;
- unsigned b = 1;
- int res = (a+funcParam(a) != a+funcParam(a)); // no warning
- return (0);
-}
-
-int checkNotEqualSameFunctionDifferentParam() {
- unsigned a = 0;
- unsigned b = 1;
- int res = (a+funcParam(a) != a+funcParam(b)); // no warning
- return (0);
-}
-
-/* end '!=' with function*/
-
-/* end '!=' */
-
-
-
-/* EQ operator */
-
-int checkEqualIntPointerDeclCompare(void) {
- int k = 3;
- int* f = &k;
- int* g = &k;
- return (f == g); // no warning
-}
-
-int checkEqualIntPointerDeclCompare0(void) {
- int k = 3;
- int* f = &k;
- return (f+1 == f+1); // expected-warning {{comparison of identical expressions always evaluates to true}}
-}
-
-/* EQ with float*/
-
-int checkEqualFloatLiteralCompare1(void) {
- return (5.14F == 5.14F); // no warning
-}
-
-int checkEqualFloatLiteralCompare2(void) {
- return (6.14F == 7.14F); // no warning
-}
-
-int checkEqualFloatDeclCompare1(void) {
- float f = 7.1F;
- float g = 7.1F;
- return (f == g); // no warning
-}
-
-int checkEqualFloatDeclCompare12(void) {
- float f = 7.1F;
- return (f == f); // no warning
-}
-
-
-int checkEqualFloatDeclCompare3(void) {
- float f = 7.1F;
- return (f == 7.1F); // no warning
-}
-
-int checkEqualFloatDeclCompare4(void) {
- float f = 7.1F;
- return (7.1F == f); // no warning
-}
-
-int checkEqualFloatDeclCompare5(void) {
- float f = 7.1F;
- int t = 7;
- return (t == f); // no warning
-}
-
-int checkEqualFloatDeclCompare6(void) {
- float f = 7.1F;
- int t = 7;
- return (f == t); // no warning
-}
-
-
-
-
-int checkEqualCastFloatDeclCompare11(void) {
- float f = 7.1F;
- return ((int)f == (int)f); // expected-warning {{comparison of identical expressions always evaluates to true}}
-}
-int checkEqualCastFloatDeclCompare12(void) {
- float f = 7.1F;
- return ((char)f == (int)f); // no warning
-}
-int checkEqualBinaryOpFloatCompare1(void) {
- int res;
- float f= 3.14F;
- res = (f + 3.14F == f + 3.14F); // no warning
- return (0);
-}
-int checkEqualBinaryOpFloatCompare2(void) {
- float f = 7.1F;
- float g = 7.1F;
- return (f + 3.14F == g + 3.14F); // no warning
-}
-int checkEqualBinaryOpFloatCompare3(void) {
- int res;
- float f= 3.14F;
- res = ((int)f + 3.14F == (int)f + 3.14F); // no warning
- return (0);
-}
-int checkEqualBinaryOpFloatCompare4(void) {
- int res;
- float f= 3.14F;
- res = ((int)f + 3.14F == (char)f + 3.14F); // no warning
- return (0);
-}
-
-int checkEqualNestedBinaryOpFloatCompare1(void) {
- int res;
- int t= 1;
- int u= 2;
- float f= 3.14F;
- res = (((int)f + (3.14F - u)*t) == ((int)f + (3.14F - u)*t)); // no warning
- return (0);
-}
-
-int checkEqualNestedBinaryOpFloatCompare2(void) {
- int res;
- int t= 1;
- int u= 2;
- float f= 3.14F;
- res = (((int)f + (u - 3.14F)*t) == ((int)f + (3.14F - u)*t)); // no warning
- return (0);
-}
-
-int checkEqualNestedBinaryOpFloatCompare3(void) {
- int res;
- int t= 1;
- int u= 2;
- float f= 3.14F;
- res = (((int)f + (u - 3.14F)*t) == ((int)f + (3.14F - u)*(f + t == f + t))); // no warning
- return (0);
-}
-
-
-
-
-
-/* Equal with int*/
-
-int checkEqualIntLiteralCompare1(void) {
- return (5 == 5); // expected-warning {{comparison of identical expressions always evaluates to true}}
-}
-
-int checkEqualIntLiteralCompare2(void) {
- return (6 == 7); // no warning
-}
-
-int checkEqualIntDeclCompare1(void) {
- int f = 7;
- int g = 7;
- return (f == g); // no warning
-}
-
-int checkEqualCastIntDeclCompare11(void) {
- int f = 7;
- return ((int)f == (int)f); // expected-warning {{comparison of identical expressions always evaluates to true}}
-}
-int checkEqualCastIntDeclCompare12(void) {
- int f = 7;
- return ((char)f == (int)f); // no warning
-}
-
-int checkEqualIntDeclCompare3(void) {
- int f = 7;
- return (f == 7); // no warning
-}
-
-int checkEqualIntDeclCompare4(void) {
- int f = 7;
- return (7 == f); // no warning
-}
-
-int checkEqualBinaryOpIntCompare1(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 4;
- res = (f + 4 == f + 4); // expected-warning {{comparison of identical expressions always evaluates to true}}
- return (0);
-}
-int checkEqualBinaryOpIntCompare2(void) {
- int f = 7;
- int g = 7;
- return (f + 4 == g + 4); // no warning
-}
-
-
-int checkEqualBinaryOpIntCompare3(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 4;
- res = ((int)f + 4 == (int)f + 4); // expected-warning {{comparison of identical expressions always evaluates to true}}
- return (0);
-
-}
-int checkEqualBinaryOpIntCompare4(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 4;
- res = ((int)f + 4 == (char)f + 4); // no warning
- return (0);
-}
-int checkEqualBinaryOpIntCompare5(void) {
- int res;
- int t= 1;
- int u= 2;
- res = (u + t == u + t); // expected-warning {{comparison of identical expressions always evaluates to true}}
- return (0);
-}
-
-int checkEqualNestedBinaryOpIntCompare1(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 3;
- res = (((int)f + (3 - u)*t) == ((int)f + (3 - u)*t)); // expected-warning {{comparison of identical expressions always evaluates to true}}
- return (0);
-}
-
-int checkEqualNestedBinaryOpIntCompare2(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 3;
- res = (((int)f + (u - 3)*t) == ((int)f + (3 - u)*t)); // no warning
- return (0);
-}
-
-int checkEqualNestedBinaryOpIntCompare3(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 3;
- res = (((int)f + (u - 3)*t) == ((int)f + (3 - u)*(t + 1 == t + 1))); // expected-warning {{comparison of identical expressions always evaluates to true}}
- return (0);
-}
-
-/* '==' with function*/
-
-int checkEqualSameFunction() {
- unsigned a = 0;
- unsigned b = 1;
- int res = (a+func() == a+func()); // no warning
- return (0);
-}
-
-int checkEqualDifferentFunction() {
- unsigned a = 0;
- unsigned b = 1;
- int res = (a+func() == a+func2()); // no warning
- return (0);
-}
-
-int checkEqualSameFunctionSameParam() {
- unsigned a = 0;
- unsigned b = 1;
- int res = (a+funcParam(a) == a+funcParam(a)); // no warning
- return (0);
-}
-
-int checkEqualSameFunctionDifferentParam() {
- unsigned a = 0;
- unsigned b = 1;
- int res = (a+funcParam(a) == a+funcParam(b)); // no warning
- return (0);
-}
-
-/* end '==' with function*/
-
-/* end EQ int */
-
-/* end EQ */
-
-
-/* LT */
-
-/* LT with float */
-
-int checkLessThanFloatLiteralCompare1(void) {
- return (5.14F < 5.14F); // expected-warning {{comparison of identical expressions always evaluates to false}}
-}
-
-int checkLessThanFloatLiteralCompare2(void) {
- return (6.14F < 7.14F); // no warning
-}
-
-int checkLessThanFloatDeclCompare1(void) {
- float f = 7.1F;
- float g = 7.1F;
- return (f < g); // no warning
-}
-
-int checkLessThanFloatDeclCompare12(void) {
- float f = 7.1F;
- return (f < f); // expected-warning {{comparison of identical expressions always evaluates to false}}
-}
-
-int checkLessThanFloatDeclCompare3(void) {
- float f = 7.1F;
- return (f < 7.1F); // no warning
-}
-
-int checkLessThanFloatDeclCompare4(void) {
- float f = 7.1F;
- return (7.1F < f); // no warning
-}
-
-int checkLessThanFloatDeclCompare5(void) {
- float f = 7.1F;
- int t = 7;
- return (t < f); // no warning
-}
-
-int checkLessThanFloatDeclCompare6(void) {
- float f = 7.1F;
- int t = 7;
- return (f < t); // no warning
-}
-
-
-int checkLessThanCastFloatDeclCompare11(void) {
- float f = 7.1F;
- return ((int)f < (int)f); // expected-warning {{comparison of identical expressions always evaluates to false}}
-}
-int checkLessThanCastFloatDeclCompare12(void) {
- float f = 7.1F;
- return ((char)f < (int)f); // no warning
-}
-int checkLessThanBinaryOpFloatCompare1(void) {
- int res;
- float f= 3.14F;
- res = (f + 3.14F < f + 3.14F); // no warning
- return (0);
-}
-int checkLessThanBinaryOpFloatCompare2(void) {
- float f = 7.1F;
- float g = 7.1F;
- return (f + 3.14F < g + 3.14F); // no warning
-}
-int checkLessThanBinaryOpFloatCompare3(void) {
- int res;
- float f= 3.14F;
- res = ((int)f + 3.14F < (int)f + 3.14F); // no warning
- return (0);
-}
-int checkLessThanBinaryOpFloatCompare4(void) {
- int res;
- float f= 3.14F;
- res = ((int)f + 3.14F < (char)f + 3.14F); // no warning
- return (0);
-}
-
-int checkLessThanNestedBinaryOpFloatCompare1(void) {
- int res;
- int t= 1;
- int u= 2;
- float f= 3.14F;
- res = (((int)f + (3.14F - u)*t) < ((int)f + (3.14F - u)*t)); // no warning
- return (0);
-}
-
-int checkLessThanNestedBinaryOpFloatCompare2(void) {
- int res;
- int t= 1;
- int u= 2;
- float f= 3.14F;
- res = (((int)f + (u - 3.14F)*t) < ((int)f + (3.14F - u)*t)); // no warning
- return (0);
-}
-
-int checkLessThanNestedBinaryOpFloatCompare3(void) {
- int res;
- int t= 1;
- int u= 2;
- float f= 3.14F;
- res = (((int)f + (u - 3.14F)*t) < ((int)f + (3.14F - u)*(f + t < f + t))); // no warning
- return (0);
-}
-
-/* end LT with float */
-
-/* LT with int */
-
-
-int checkLessThanIntLiteralCompare1(void) {
- return (5 < 5); // expected-warning {{comparison of identical expressions always evaluates to false}}
-}
-
-int checkLessThanIntLiteralCompare2(void) {
- return (6 < 7); // no warning
-}
-
-int checkLessThanIntDeclCompare1(void) {
- int f = 7;
- int g = 7;
- return (f < g); // no warning
-}
-
-int checkLessThanIntDeclCompare3(void) {
- int f = 7;
- return (f < 7); // no warning
-}
-
-int checkLessThanIntDeclCompare4(void) {
- int f = 7;
- return (7 < f); // no warning
-}
-
-int checkLessThanIntDeclCompare5(void) {
- int f = 7;
- int t = 7;
- return (t < f); // no warning
-}
-
-int checkLessThanIntDeclCompare6(void) {
- int f = 7;
- int t = 7;
- return (f < t); // no warning
-}
-
-int checkLessThanCastIntDeclCompare11(void) {
- int f = 7;
- return ((int)f < (int)f); // expected-warning {{comparison of identical expressions always evaluates to false}}
-}
-int checkLessThanCastIntDeclCompare12(void) {
- int f = 7;
- return ((char)f < (int)f); // no warning
-}
-int checkLessThanBinaryOpIntCompare1(void) {
- int res;
- int f= 3;
- res = (f + 3 < f + 3); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-int checkLessThanBinaryOpIntCompare2(void) {
- int f = 7;
- int g = 7;
- return (f + 3 < g + 3); // no warning
-}
-int checkLessThanBinaryOpIntCompare3(void) {
- int res;
- int f= 3;
- res = ((int)f + 3 < (int)f + 3); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-int checkLessThanBinaryOpIntCompare4(void) {
- int res;
- int f= 3;
- res = ((int)f + 3 < (char)f + 3); // no warning
- return (0);
-}
-
-int checkLessThanNestedBinaryOpIntCompare1(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 3;
- res = (((int)f + (3 - u)*t) < ((int)f + (3 - u)*t)); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-
-int checkLessThanNestedBinaryOpIntCompare2(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 3;
- res = (((int)f + (u - 3)*t) < ((int)f + (3 - u)*t)); // no warning
- return (0);
-}
-
-int checkLessThanNestedBinaryOpIntCompare3(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 3;
- res = (((int)f + (u - 3)*t) < ((int)f + (3 - u)*(t + u < t + u))); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-
-/* end LT with int */
-
-/* end LT */
-
-
-/* GT */
-
-/* GT with float */
-
-int checkGreaterThanFloatLiteralCompare1(void) {
- return (5.14F > 5.14F); // expected-warning {{comparison of identical expressions always evaluates to false}}
-}
-
-int checkGreaterThanFloatLiteralCompare2(void) {
- return (6.14F > 7.14F); // no warning
-}
-
-int checkGreaterThanFloatDeclCompare1(void) {
- float f = 7.1F;
- float g = 7.1F;
-
- return (f > g); // no warning
-}
-
-int checkGreaterThanFloatDeclCompare12(void) {
- float f = 7.1F;
- return (f > f); // expected-warning {{comparison of identical expressions always evaluates to false}}
-}
-
-
-int checkGreaterThanFloatDeclCompare3(void) {
- float f = 7.1F;
- return (f > 7.1F); // no warning
-}
-
-int checkGreaterThanFloatDeclCompare4(void) {
- float f = 7.1F;
- return (7.1F > f); // no warning
-}
-
-int checkGreaterThanFloatDeclCompare5(void) {
- float f = 7.1F;
- int t = 7;
- return (t > f); // no warning
-}
-
-int checkGreaterThanFloatDeclCompare6(void) {
- float f = 7.1F;
- int t = 7;
- return (f > t); // no warning
-}
-
-int checkGreaterThanCastFloatDeclCompare11(void) {
- float f = 7.1F;
- return ((int)f > (int)f); // expected-warning {{comparison of identical expressions always evaluates to false}}
-}
-int checkGreaterThanCastFloatDeclCompare12(void) {
- float f = 7.1F;
- return ((char)f > (int)f); // no warning
-}
-int checkGreaterThanBinaryOpFloatCompare1(void) {
- int res;
- float f= 3.14F;
- res = (f + 3.14F > f + 3.14F); // no warning
- return (0);
-}
-int checkGreaterThanBinaryOpFloatCompare2(void) {
- float f = 7.1F;
- float g = 7.1F;
- return (f + 3.14F > g + 3.14F); // no warning
-}
-int checkGreaterThanBinaryOpFloatCompare3(void) {
- int res;
- float f= 3.14F;
- res = ((int)f + 3.14F > (int)f + 3.14F); // no warning
- return (0);
-}
-int checkGreaterThanBinaryOpFloatCompare4(void) {
- int res;
- float f= 3.14F;
- res = ((int)f + 3.14F > (char)f + 3.14F); // no warning
- return (0);
-}
-
-int checkGreaterThanNestedBinaryOpFloatCompare1(void) {
- int res;
- int t= 1;
- int u= 2;
- float f= 3.14F;
- res = (((int)f + (3.14F - u)*t) > ((int)f + (3.14F - u)*t)); // no warning
- return (0);
-}
-
-int checkGreaterThanNestedBinaryOpFloatCompare2(void) {
- int res;
- int t= 1;
- int u= 2;
- float f= 3.14F;
- res = (((int)f + (u - 3.14F)*t) > ((int)f + (3.14F - u)*t)); // no warning
- return (0);
-}
-
-int checkGreaterThanNestedBinaryOpFloatCompare3(void) {
- int res;
- int t= 1;
- int u= 2;
- float f= 3.14F;
- res = (((int)f + (u - 3.14F)*t) > ((int)f + (3.14F - u)*(f + t > f + t))); // no warning
- return (0);
-}
-
-/* end GT with float */
-
-/* GT with int */
-
-
-int checkGreaterThanIntLiteralCompare1(void) {
- return (5 > 5); // expected-warning {{comparison of identical expressions always evaluates to false}}
-}
-
-int checkGreaterThanIntLiteralCompare2(void) {
- return (6 > 7); // no warning
-}
-
-int checkGreaterThanIntDeclCompare1(void) {
- int f = 7;
- int g = 7;
-
- return (f > g); // no warning
-}
-
-int checkGreaterThanIntDeclCompare3(void) {
- int f = 7;
- return (f > 7); // no warning
-}
-
-int checkGreaterThanIntDeclCompare4(void) {
- int f = 7;
- return (7 > f); // no warning
-}
-
-int checkGreaterThanCastIntDeclCompare11(void) {
- int f = 7;
- return ((int)f > (int)f); // expected-warning {{comparison of identical expressions always evaluates to false}}
-}
-int checkGreaterThanCastIntDeclCompare12(void) {
- int f = 7;
- return ((char)f > (int)f); // no warning
-}
-int checkGreaterThanBinaryOpIntCompare1(void) {
- int res;
- int f= 3;
- res = (f + 3 > f + 3); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-int checkGreaterThanBinaryOpIntCompare2(void) {
- int f = 7;
- int g = 7;
- return (f + 3 > g + 3); // no warning
-}
-int checkGreaterThanBinaryOpIntCompare3(void) {
- int res;
- int f= 3;
- res = ((int)f + 3 > (int)f + 3); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-int checkGreaterThanBinaryOpIntCompare4(void) {
- int res;
- int f= 3;
- res = ((int)f + 3 > (char)f + 3); // no warning
- return (0);
-}
-
-int checkGreaterThanNestedBinaryOpIntCompare1(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 3;
- res = (((int)f + (3 - u)*t) > ((int)f + (3 - u)*t)); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-
-int checkGreaterThanNestedBinaryOpIntCompare2(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 3;
- res = (((int)f + (u - 3)*t) > ((int)f + (3 - u)*t)); // no warning
- return (0);
-}
-
-int checkGreaterThanNestedBinaryOpIntCompare3(void) {
- int res;
- int t= 1;
- int u= 2;
- int f= 3;
- res = (((int)f + (u - 3)*t) > ((int)f + (3 - u)*(t + u > t + u))); // expected-warning {{comparison of identical expressions always evaluates to false}}
- return (0);
-}
-
-/* end GT with int */
-
-/* end GT */
-
-
-/* Checking use of identical expressions in conditional operator*/
-
-unsigned test_unsigned(unsigned a) {
- unsigned b = 1;
- a = a > 5 ? b : b; // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
- return a;
-}
-
-void test_signed() {
- int a = 0;
- a = a > 5 ? a : a; // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
-}
-
-void test_bool(bool a) {
- a = a > 0 ? a : a; // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
-}
-
-void test_float() {
- float a = 0;
- float b = 0;
- a = a > 5 ? a : a; // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
-}
-
-const char *test_string() {
- float a = 0;
- return a > 5 ? "abc" : "abc"; // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
-}
-
-void test_unsigned_expr() {
- unsigned a = 0;
- unsigned b = 0;
- a = a > 5 ? a+b : a+b; // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
-}
-
-void test_signed_expr() {
- int a = 0;
- int b = 1;
- a = a > 5 ? a+b : a+b; // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
-}
-
-void test_bool_expr(bool a) {
- bool b = 0;
- a = a > 0 ? a&&b : a&&b; // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
-}
-
-void test_unsigned_expr_negative() {
- unsigned a = 0;
- unsigned b = 0;
- a = a > 5 ? a+b : b+a; // no warning
-}
-
-void test_signed_expr_negative() {
- int a = 0;
- int b = 1;
- a = a > 5 ? b+a : a+b; // no warning
-}
-
-void test_bool_expr_negative(bool a) {
- bool b = 0;
- a = a > 0 ? a&&b : b&&a; // no warning
-}
-
-void test_float_expr_positive() {
- float a = 0;
- float b = 0;
- a = a > 5 ? a+b : a+b; // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
-}
-
-void test_expr_positive_func() {
- unsigned a = 0;
- unsigned b = 1;
- a = a > 5 ? a+func() : a+func(); // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
-}
-
-void test_expr_negative_func() {
- unsigned a = 0;
- unsigned b = 1;
- a = a > 5 ? a+func() : a+func2(); // no warning
-}
-
-void test_expr_positive_funcParam() {
- unsigned a = 0;
- unsigned b = 1;
- a = a > 5 ? a+funcParam(b) : a+funcParam(b); // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
-}
-
-void test_expr_negative_funcParam() {
- unsigned a = 0;
- unsigned b = 1;
- a = a > 5 ? a+funcParam(a) : a+funcParam(b); // no warning
-}
-
-void test_expr_positive_inc() {
- unsigned a = 0;
- unsigned b = 1;
- a = a > 5 ? a++ : a++; // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
-}
-
-void test_expr_negative_inc() {
- unsigned a = 0;
- unsigned b = 1;
- a = a > 5 ? a++ : b++; // no warning
-}
-
-void test_expr_positive_assign() {
- unsigned a = 0;
- unsigned b = 1;
- a = a > 5 ? a=1 : a=1; // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
-}
-
-void test_expr_negative_assign() {
- unsigned a = 0;
- unsigned b = 1;
- a = a > 5 ? a=1 : a=2; // no warning
-}
-
-void test_signed_nested_expr() {
- int a = 0;
- int b = 1;
- int c = 3;
- a = a > 5 ? a+b+(c+a)*(a + b*(c+a)) : a+b+(c+a)*(a + b*(c+a)); // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
-}
-
-void test_signed_nested_expr_negative() {
- int a = 0;
- int b = 1;
- int c = 3;
- a = a > 5 ? a+b+(c+a)*(a + b*(c+a)) : a+b+(c+a)*(a + b*(a+c)); // no warning
-}
-
-void test_signed_nested_cond_expr_negative() {
- int a = 0;
- int b = 1;
- int c = 3;
- a = a > 5 ? (b > 5 ? 1 : 4) : (b > 5 ? 2 : 4); // no warning
-}
-
-void test_signed_nested_cond_expr() {
- int a = 0;
- int b = 1;
- int c = 3;
- a = a > 5 ? (b > 5 ? 1 : 4) : (b > 5 ? 4 : 4); // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
-}
-
-void test_identical_branches1(bool b) {
- int i = 0;
- if (b) { // expected-warning {{true and false branches are identical}}
- ++i;
- } else {
- ++i;
- }
-}
-
-void test_identical_branches2(bool b) {
- int i = 0;
- if (b) { // expected-warning {{true and false branches are identical}}
- ++i;
- } else
- ++i;
-}
-
-void test_identical_branches3(bool b) {
- int i = 0;
- if (b) { // no warning
- ++i;
- } else {
- i++;
- }
-}
-
-void test_identical_branches4(bool b) {
- int i = 0;
- if (b) { // expected-warning {{true and false branches are identical}}
- } else {
- }
-}
-
-void test_identical_branches_break(bool b) {
- while (true) {
- if (b) // expected-warning {{true and false branches are identical}}
- break;
- else
- break;
- }
-}
-
-void test_identical_branches_continue(bool b) {
- while (true) {
- if (b) // expected-warning {{true and false branches are identical}}
- continue;
- else
- continue;
- }
-}
-
-void test_identical_branches_func(bool b) {
- if (b) // expected-warning {{true and false branches are identical}}
- func();
- else
- func();
-}
-
-void test_identical_branches_func_arguments(bool b) {
- if (b) // no-warning
- funcParam(1);
- else
- funcParam(2);
-}
-
-void test_identical_branches_cast1(bool b) {
- long v = -7;
- if (b) // no-warning
- v = (signed int) v;
- else
- v = (unsigned int) v;
-}
-
-void test_identical_branches_cast2(bool b) {
- long v = -7;
- if (b) // expected-warning {{true and false branches are identical}}
- v = (signed int) v;
- else
- v = (signed int) v;
-}
-
-int test_identical_branches_return_int(bool b) {
- int i = 0;
- if (b) { // expected-warning {{true and false branches are identical}}
- i++;
- return i;
- } else {
- i++;
- return i;
- }
-}
-
-int test_identical_branches_return_func(bool b) {
- if (b) { // expected-warning {{true and false branches are identical}}
- return func();
- } else {
- return func();
- }
-}
-
-void test_identical_branches_for(bool b) {
- int i;
- int j;
- if (b) { // expected-warning {{true and false branches are identical}}
- for (i = 0, j = 0; i < 10; i++)
- j += 4;
- } else {
- for (i = 0, j = 0; i < 10; i++)
- j += 4;
- }
-}
-
-void test_identical_branches_while(bool b) {
- int i = 10;
- if (b) { // expected-warning {{true and false branches are identical}}
- while (func())
- i--;
- } else {
- while (func())
- i--;
- }
-}
-
-void test_identical_branches_while_2(bool b) {
- int i = 10;
- if (b) { // no-warning
- while (func())
- i--;
- } else {
- while (func())
- i++;
- }
-}
-
-void test_identical_branches_do_while(bool b) {
- int i = 10;
- if (b) { // expected-warning {{true and false branches are identical}}
- do {
- i--;
- } while (func());
- } else {
- do {
- i--;
- } while (func());
- }
-}
-
-void test_identical_branches_if(bool b, int i) {
- if (b) { // expected-warning {{true and false branches are identical}}
- if (i < 5)
- i += 10;
- } else {
- if (i < 5)
- i += 10;
- }
-}
-
-void test_identical_bitwise1() {
- int a = 5 | 5; // expected-warning {{identical expressions on both sides of bitwise operator}}
-}
-
-void test_identical_bitwise2() {
- int a = 5;
- int b = a | a; // expected-warning {{identical expressions on both sides of bitwise operator}}
-}
-
-void test_identical_bitwise3() {
- int a = 5;
- int b = (a | a); // expected-warning {{identical expressions on both sides of bitwise operator}}
-}
-
-void test_identical_bitwise4() {
- int a = 4;
- int b = a | 4; // no-warning
-}
-
-void test_identical_bitwise5() {
- int a = 4;
- int b = 4;
- int c = a | b; // no-warning
-}
-
-void test_identical_bitwise6() {
- int a = 5;
- int b = a | 4 | a; // expected-warning {{identical expressions on both sides of bitwise operator}}
-}
-
-void test_identical_bitwise7() {
- int a = 5;
- int b = func() | func(); // no-warning
-}
-
-void test_identical_logical1(int a) {
- if (a == 4 && a == 4) // expected-warning {{identical expressions on both sides of logical operator}}
- ;
-}
-
-void test_identical_logical2(int a) {
- if (a == 4 || a == 5 || a == 4) // expected-warning {{identical expressions on both sides of logical operator}}
- ;
-}
-
-void test_identical_logical3(int a) {
- if (a == 4 || a == 5 || a == 6) // no-warning
- ;
-}
-
-void test_identical_logical4(int a) {
- if (a == func() || a == func()) // no-warning
- ;
-}
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wlogical-op-parentheses"
-void test_identical_logical5(int x, int y) {
- if (x == 4 && y == 5 || x == 4 && y == 6) // no-warning
- ;
-}
-
-void test_identical_logical6(int x, int y) {
- if (x == 4 && y == 5 || x == 4 && y == 5) // expected-warning {{identical expressions on both sides of logical operator}}
- ;
-}
-
-void test_identical_logical7(int x, int y) {
- // FIXME: We should warn here
- if (x == 4 && y == 5 || x == 4)
- ;
-}
-
-void test_identical_logical8(int x, int y) {
- // FIXME: We should warn here
- if (x == 4 || y == 5 && x == 4)
- ;
-}
-
-void test_identical_logical9(int x, int y) {
- // FIXME: We should warn here
- if (x == 4 || x == 4 && y == 5)
- ;
-}
-#pragma clang diagnostic pop
-
-void test_warn_chained_if_stmts_1(int x) {
- if (x == 1)
- ;
- else if (x == 1) // expected-warning {{expression is identical to previous condition}}
- ;
-}
-
-void test_warn_chained_if_stmts_2(int x) {
- if (x == 1)
- ;
- else if (x == 1) // expected-warning {{expression is identical to previous condition}}
- ;
- else if (x == 1) // expected-warning {{expression is identical to previous condition}}
- ;
-}
-
-void test_warn_chained_if_stmts_3(int x) {
- if (x == 1)
- ;
- else if (x == 2)
- ;
- else if (x == 1) // expected-warning {{expression is identical to previous condition}}
- ;
-}
-
-void test_warn_chained_if_stmts_4(int x) {
- if (x == 1)
- ;
- else if (func())
- ;
- else if (x == 1) // expected-warning {{expression is identical to previous condition}}
- ;
-}
-
-void test_warn_chained_if_stmts_5(int x) {
- if (x & 1)
- ;
- else if (x & 1) // expected-warning {{expression is identical to previous condition}}
- ;
-}
-
-void test_warn_chained_if_stmts_6(int x) {
- if (x == 1)
- ;
- else if (x == 2)
- ;
- else if (x == 2) // expected-warning {{expression is identical to previous condition}}
- ;
- else if (x == 3)
- ;
-}
-
-void test_warn_chained_if_stmts_7(int x) {
- if (x == 1)
- ;
- else if (x == 2)
- ;
- else if (x == 3)
- ;
- else if (x == 2) // expected-warning {{expression is identical to previous condition}}
- ;
- else if (x == 5)
- ;
-}
-
-void test_warn_chained_if_stmts_8(int x) {
- if (x == 1)
- ;
- else if (x == 2)
- ;
- else if (x == 3)
- ;
- else if (x == 2) // expected-warning {{expression is identical to previous condition}}
- ;
- else if (x == 5)
- ;
- else if (x == 3) // expected-warning {{expression is identical to previous condition}}
- ;
- else if (x == 7)
- ;
-}
-
-void test_nowarn_chained_if_stmts_1(int x) {
- if (func())
- ;
- else if (func()) // no-warning
- ;
-}
-
-void test_nowarn_chained_if_stmts_2(int x) {
- if (func())
- ;
- else if (x == 1)
- ;
- else if (func()) // no-warning
- ;
-}
-
-void test_nowarn_chained_if_stmts_3(int x) {
- if (x++)
- ;
- else if (x++) // no-warning
- ;
-}
-
-void test_warn_wchar() {
- const wchar_t * a = 0 ? L"Warning" : L"Warning"; // expected-warning {{identical expressions on both sides of ':' in conditional expression}}
-}
-void test_nowarn_wchar() {
- const wchar_t * a = 0 ? L"No" : L"Warning";
-}
-
-void test_nowarn_long() {
- int a = 0, b = 0;
- long c;
- if (0) {
- b -= a;
- c = 0;
- } else { // no-warning
- b -= a;
- c = 0LL;
- }
-}
-
-// Identical inner conditions
-
-void test_warn_inner_if_1(int x) {
- if (x == 1) {
- if (x == 1) // expected-warning {{conditions of the inner and outer statements are identical}}
- ;
- }
-
- // FIXME: Should warn here. The warning is currently not emitted because there
- // is code between the conditions.
- if (x == 1) {
- int y = x;
- if (x == 1)
- ;
- }
-}
-
-void test_nowarn_inner_if_1(int x) {
- // Don't warn when condition has side effects.
- if (x++ == 1) {
- if (x++ == 1)
- ;
- }
-
- // Don't warn when x is changed before inner condition.
- if (x < 10) {
- x++;
- if (x < 10)
- ;
- }
-}
diff --git a/test/Analysis/implicit-ctor-undef-value.cpp b/test/Analysis/implicit-ctor-undef-value.cpp
deleted file mode 100644
index 87824c0533a0..000000000000
--- a/test/Analysis/implicit-ctor-undef-value.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -verify %s
-
-namespace implicit_constructor {
-struct S {
-public:
- S() {}
- S(const S &) {}
-};
-
-// Warning is in a weird position because the body of the constructor is
-// missing. Specify which field is being assigned.
-class C { // expected-warning{{Value assigned to field 'y' in implicit constructor is garbage or undefined}}
- // expected-note@-1{{Value assigned to field 'y' in implicit constructor is garbage or undefined}}
- int x, y;
- S s;
-
-public:
- C(): x(0) {}
-};
-
-void test() {
- C c1;
- C c2(c1); // expected-note{{Calling implicit copy constructor for 'C'}}
-}
-} // end namespace implicit_constructor
-
-
-namespace explicit_constructor {
-class C {
- int x, y;
-
-public:
- C(): x(0) {}
- // It is not necessary to specify which field is being assigned to.
- C(const C &c):
- x(c.x),
- y(c.y) // expected-warning{{Assigned value is garbage or undefined}}
- // expected-note@-1{{Assigned value is garbage or undefined}}
- {}
-};
-
-void test() {
- C c1;
- C c2(c1); // expected-note{{Calling copy constructor for 'C'}}
-}
-} // end namespace explicit_constructor
-
-
-namespace base_class_constructor {
-struct S {
-public:
- S() {}
- S(const S &) {}
-};
-
-class C { // expected-warning{{Value assigned to field 'y' in implicit constructor is garbage or undefined}}
- // expected-note@-1{{Value assigned to field 'y' in implicit constructor is garbage or undefined}}
- int x, y;
- S s;
-
-public:
- C(): x(0) {}
-};
-
-class D: public C {
-public:
- D(): C() {}
-};
-
-void test() {
- D d1;
- D d2(d1); // expected-note {{Calling implicit copy constructor for 'D'}}
- // expected-note@-1{{Calling implicit copy constructor for 'C'}}
-}
-} // end namespace base_class_constructor
diff --git a/test/Analysis/index-type.c b/test/Analysis/index-type.c
deleted file mode 100644
index 123dcd65bd7c..000000000000
--- a/test/Analysis/index-type.c
+++ /dev/null
@@ -1,58 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,alpha.security.ArrayBoundV2 -Wno-implicit-function-declaration -verify %s
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -analyzer-checker=core,alpha.security.ArrayBoundV2 -Wno-implicit-function-declaration -DM32 -verify %s
-// expected-no-diagnostics
-
-#define UINT_MAX (~0u)
-
-#ifdef M32
-
-#define X86_ARRAY_SIZE (UINT_MAX/2 + 4)
-
-void testIndexTooBig() {
- char arr[X86_ARRAY_SIZE];
- char *ptr = arr + UINT_MAX/2;
- ptr += 2; // index shouldn't overflow
- *ptr = 42; // no-warning
-}
-
-#else // 64-bit tests
-
-#define ARRAY_SIZE 0x100000000
-
-void testIndexOverflow64() {
- char arr[ARRAY_SIZE];
- char *ptr = arr + UINT_MAX/2;
- ptr += 2; // don't overflow 64-bit index
- *ptr = 42; // no-warning
-}
-
-#define ULONG_MAX (~0ul)
-#define BIG_INDEX (ULONG_MAX/16)
-
-void testIndexTooBig64() {
- char arr[ULONG_MAX/8-1];
- char *ptr = arr + BIG_INDEX;
- ptr += 2; // don't overflow 64-bit index
- *ptr = 42; // no-warning
-}
-
-#define SIZE 4294967296
-
-static unsigned size;
-static void * addr;
-static unsigned buf[SIZE];
-
-void testOutOfBounds() {
- // Not out of bounds.
- buf[SIZE-1] = 1; // no-warning
-}
-
-void testOutOfBoundsCopy1() {
- memcpy(buf, addr, size); // no-warning
-}
-
-void testOutOfBoundsCopy2() {
- memcpy(addr, buf, size); // no-warning
-}
-
-#endif
diff --git a/test/Analysis/initialization.c b/test/Analysis/initialization.c
deleted file mode 100644
index c1d6361f1245..000000000000
--- a/test/Analysis/initialization.c
+++ /dev/null
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core.builtin,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-
-void initbug() {
- const union { float a; } u = {};
- (void)u.a; // no-crash
-}
-
-int const parr[2] = {1};
-void constarr() {
- int i = 2;
- clang_analyzer_eval(parr[i]); // expected-warning{{UNDEFINED}}
- i = 1;
- clang_analyzer_eval(parr[i] == 0); // expected-warning{{TRUE}}
- i = -1;
- clang_analyzer_eval(parr[i]); // expected-warning{{UNDEFINED}}
-}
-
-struct SM {
- int a;
- int b;
-};
-const struct SM sm = {.a = 1};
-void multinit() {
- clang_analyzer_eval(sm.a == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(sm.b == 0); // expected-warning{{TRUE}}
-}
diff --git a/test/Analysis/initialization.cpp b/test/Analysis/initialization.cpp
deleted file mode 100644
index db765930b6e5..000000000000
--- a/test/Analysis/initialization.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core.builtin,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-
-struct S {
- int a = 3;
-};
-S const sarr[2] = {};
-void definit() {
- int i = 1;
- // FIXME: Should recognize that it is 3.
- clang_analyzer_eval(sarr[i].a); // expected-warning{{UNKNOWN}}
-}
-
-int const arr[2][2] = {};
-void arr2init() {
- int i = 1;
- // FIXME: Should recognize that it is 0.
- clang_analyzer_eval(arr[i][0]); // expected-warning{{UNKNOWN}}
-}
diff --git a/test/Analysis/initializer.cpp b/test/Analysis/initializer.cpp
deleted file mode 100644
index 0cb68c4a9780..000000000000
--- a/test/Analysis/initializer.cpp
+++ /dev/null
@@ -1,245 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,cplusplus.NewDeleteLeaks,debug.ExprInspection -analyzer-config c++-inlining=constructors -std=c++11 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,cplusplus.NewDeleteLeaks,debug.ExprInspection -analyzer-config c++-inlining=constructors -std=c++17 -DCPLUSPLUS17 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,cplusplus.NewDeleteLeaks,debug.ExprInspection -analyzer-config c++-inlining=constructors -std=c++11 -DTEST_INLINABLE_ALLOCATORS -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,cplusplus.NewDeleteLeaks,debug.ExprInspection -analyzer-config c++-inlining=constructors -std=c++17 -DCPLUSPLUS17 -DTEST_INLINABLE_ALLOCATORS -verify %s
-
-void clang_analyzer_eval(bool);
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-class A {
- int x;
-public:
- A();
-};
-
-A::A() : x(0) {
- clang_analyzer_eval(x == 0); // expected-warning{{TRUE}}
-}
-
-
-class DirectMember {
- int x;
-public:
- DirectMember(int value) : x(value) {}
-
- int getX() { return x; }
-};
-
-void testDirectMember() {
- DirectMember obj(3);
- clang_analyzer_eval(obj.getX() == 3); // expected-warning{{TRUE}}
-}
-
-
-class IndirectMember {
- struct {
- int x;
- };
-public:
- IndirectMember(int value) : x(value) {}
-
- int getX() { return x; }
-};
-
-void testIndirectMember() {
- IndirectMember obj(3);
- clang_analyzer_eval(obj.getX() == 3); // expected-warning{{TRUE}}
-}
-
-
-struct DelegatingConstructor {
- int x;
- DelegatingConstructor(int y) { x = y; }
- DelegatingConstructor() : DelegatingConstructor(42) {}
-};
-
-void testDelegatingConstructor() {
- DelegatingConstructor obj;
- clang_analyzer_eval(obj.x == 42); // expected-warning{{TRUE}}
-}
-
-
-struct RefWrapper {
- RefWrapper(int *p) : x(*p) {}
- RefWrapper(int &r) : x(r) {}
- int &x;
-};
-
-void testReferenceMember() {
- int *p = 0;
- RefWrapper X(p); // expected-warning@-7 {{Dereference of null pointer}}
-}
-
-void testReferenceMember2() {
- int *p = 0;
- RefWrapper X(*p); // expected-warning {{Forming reference to null pointer}}
-}
-
-
-extern "C" char *strdup(const char *);
-
-class StringWrapper {
- char *str;
-public:
- StringWrapper(const char *input) : str(strdup(input)) {} // no-warning
-};
-
-
-// PR15070 - Constructing a type containing a non-POD array mistakenly
-// tried to perform a bind instead of relying on the CXXConstructExpr,
-// which caused a cast<> failure in RegionStore.
-namespace DefaultConstructorWithCleanups {
- class Element {
- public:
- int value;
-
- class Helper {
- public:
- ~Helper();
- };
- Element(Helper h = Helper());
- };
- class Wrapper {
- public:
- Element arr[2];
-
- Wrapper();
- };
-
- Wrapper::Wrapper() /* initializers synthesized */ {}
-
- int test() {
- Wrapper w;
- return w.arr[0].value; // no-warning
- }
-}
-
-namespace DefaultMemberInitializers {
- struct Wrapper {
- int value = 42;
-
- Wrapper() {}
- Wrapper(int x) : value(x) {}
- Wrapper(bool) {}
- };
-
- void test() {
- Wrapper w1;
- clang_analyzer_eval(w1.value == 42); // expected-warning{{TRUE}}
-
- Wrapper w2(50);
- clang_analyzer_eval(w2.value == 50); // expected-warning{{TRUE}}
-
- Wrapper w3(false);
- clang_analyzer_eval(w3.value == 42); // expected-warning{{TRUE}}
- }
-
- struct StringWrapper {
- const char s[4] = "abc";
- const char *p = "xyz";
-
- StringWrapper(bool) {}
- };
-
- void testString() {
- StringWrapper w(true);
- clang_analyzer_eval(w.s[1] == 'b'); // expected-warning{{TRUE}}
- clang_analyzer_eval(w.p[1] == 'y'); // expected-warning{{TRUE}}
- }
-}
-
-namespace ReferenceInitialization {
- struct OtherStruct {
- OtherStruct(int i);
- ~OtherStruct();
- };
-
- struct MyStruct {
- MyStruct(int i);
- MyStruct(OtherStruct os);
-
- void method() const;
- };
-
- void referenceInitializeLocal() {
- const MyStruct &myStruct(5);
- myStruct.method(); // no-warning
- }
-
- void referenceInitializeMultipleLocals() {
- const MyStruct &myStruct1(5), myStruct2(5), &myStruct3(5);
- myStruct1.method(); // no-warning
- myStruct2.method(); // no-warning
- myStruct3.method(); // no-warning
- }
-
- void referenceInitializeLocalWithCleanup() {
- const MyStruct &myStruct(OtherStruct(5));
- myStruct.method(); // no-warning
- }
-};
-
-namespace PR31592 {
-struct C {
- C() : f("}") { } // no-crash
- const char(&f)[2];
-};
-}
-
-namespace CXX_initializer_lists {
-struct C {
- C(std::initializer_list<int *> list);
-};
-void testPointerEscapeIntoLists() {
- C empty{}; // no-crash
-
- // Do not warn that 'x' leaks. It might have been deleted by
- // the destructor of 'c'.
- int *x = new int;
- C c{x}; // no-warning
-}
-
-void testPassListsWithExplicitConstructors() {
- (void)(std::initializer_list<int>){12}; // no-crash
-}
-}
-
-namespace CXX17_aggregate_construction {
-struct A {
- A();
-};
-
-struct B: public A {
-};
-
-struct C: public B {
-};
-
-struct D: public virtual A {
-};
-
-// In C++17, classes B and C are aggregates, so they will be constructed
-// without actually calling their trivial constructor. Used to crash.
-void foo() {
- B b = {}; // no-crash
- const B &bl = {}; // no-crash
- B &&br = {}; // no-crash
-
- C c = {}; // no-crash
- const C &cl = {}; // no-crash
- C &&cr = {}; // no-crash
-
- D d = {}; // no-crash
-
-#ifdef CPLUSPLUS17
- C cd = {{}}; // no-crash
- const C &cdl = {{}}; // no-crash
- C &&cdr = {{}}; // no-crash
-
- const B &bll = {{}}; // no-crash
- const B &bcl = C({{}}); // no-crash
- B &&bcr = C({{}}); // no-crash
-#endif
-}
-}
diff --git a/test/Analysis/initializers-cfg-output.cpp b/test/Analysis/initializers-cfg-output.cpp
deleted file mode 100644
index 8d1039ddf34e..000000000000
--- a/test/Analysis/initializers-cfg-output.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=debug.DumpCFG -analyzer-config cfg-rich-constructors=false %s 2>&1 | FileCheck -check-prefixes=CHECK,WARNINGS %s
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=debug.DumpCFG -analyzer-config cfg-rich-constructors=true %s 2>&1 | FileCheck -check-prefixes=CHECK,ANALYZER %s
-
-// This file tests how we construct two different flavors of the Clang CFG -
-// the CFG used by the Sema analysis-based warnings and the CFG used by the
-// static analyzer. The difference in the behavior is checked via FileCheck
-// prefixes (WARNINGS and ANALYZER respectively). When introducing new analyzer
-// flags, no new run lines should be added - just these flags would go to the
-// respective line depending on where is it turned on and where is it turned
-// off. Feel free to add tests that test only one of the CFG flavors if you're
-// not sure how the other flavor is supposed to work in your case.
-
-class A {
-public:
- A() {}
- A(int i) {}
-};
-
-class B : public virtual A {
-public:
- B() {}
- B(int i) : A(i) {}
-};
-
-class C : public virtual A {
-public:
- C() {}
- C(int i) : A(i) {}
-};
-
-class TestOrder : public C, public B, public A {
- int i;
- int& r;
-public:
- TestOrder();
-};
-
-TestOrder::TestOrder()
- : r(i), B(), i(), C() {
- A a;
-}
-
-class TestControlFlow {
- int x, y, z;
-public:
- TestControlFlow(bool b);
-};
-
-TestControlFlow::TestControlFlow(bool b)
- : y(b ? 0 : 1)
- , x(0)
- , z(y) {
- int v;
-}
-
-class TestDelegating {
- int x, z;
- public:
- TestDelegating() : TestDelegating(2, 3) {}
- TestDelegating(int x, int z) : x(x), z(z) {}
-};
-
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// WARNINGS: 1: (CXXConstructExpr, class A)
-// ANALYZER: 1: (CXXConstructExpr, A() (Base initializer), class A)
-// CHECK: 2: A([B1.1]) (Base initializer)
-// WARNINGS: 3: (CXXConstructExpr, class C)
-// ANALYZER: 3: (CXXConstructExpr, C() (Base initializer), class C)
-// CHECK: 4: C([B1.3]) (Base initializer)
-// WARNINGS: 5: (CXXConstructExpr, class B)
-// ANALYZER: 5: (CXXConstructExpr, B() (Base initializer), class B)
-// CHECK: 6: B([B1.5]) (Base initializer)
-// WARNINGS: 7: (CXXConstructExpr, class A)
-// ANALYZER: 7: (CXXConstructExpr, A() (Base initializer), class A)
-// CHECK: 8: A([B1.7]) (Base initializer)
-// CHECK: 9: /*implicit*/(int)0
-// CHECK: 10: i([B1.9]) (Member initializer)
-// CHECK: 11: this
-// CHECK: 12: [B1.11]->i
-// CHECK: 13: r([B1.12]) (Member initializer)
-// WARNINGS: 14: (CXXConstructExpr, class A)
-// ANALYZER: 14: (CXXConstructExpr, [B1.15], class A)
-// CHECK: 15: A a;
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B5 (ENTRY)]
-// CHECK: Succs (1): B4
-// CHECK: [B1]
-// CHECK: 1: [B4.4] ? [B2.1] : [B3.1]
-// CHECK: 2: y([B1.1]) (Member initializer)
-// CHECK: 3: this
-// CHECK: 4: [B1.3]->y
-// CHECK: 5: [B1.4] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK: 6: z([B1.5]) (Member initializer)
-// CHECK: 7: int v;
-// CHECK: Preds (2): B2 B3
-// CHECK: Succs (1): B0
-// CHECK: [B2]
-// CHECK: 1: 0
-// CHECK: Preds (1): B4
-// CHECK: Succs (1): B1
-// CHECK: [B3]
-// CHECK: 1: 1
-// CHECK: Preds (1): B4
-// CHECK: Succs (1): B1
-// CHECK: [B4]
-// CHECK: 1: 0
-// CHECK: 2: x([B4.1]) (Member initializer)
-// CHECK: 3: b
-// CHECK: 4: [B4.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK: T: [B4.4] ? ... : ...
-// CHECK: Preds (1): B5
-// CHECK: Succs (2): B2 B3
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: 2
-// CHECK: 2: 3
-// WARNINGS: 3: [B1.1], [B1.2] (CXXConstructExpr, class TestDelegating)
-// ANALYZER: 3: [B1.1], [B1.2] (CXXConstructExpr, TestDelegating([B1.1], [B1.2]) (Delegating initializer), class TestDelegating)
-// CHECK: 4: TestDelegating([B1.3]) (Delegating initializer)
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
diff --git a/test/Analysis/inline-not-supported.c b/test/Analysis/inline-not-supported.c
deleted file mode 100644
index c5f4c74952cc..000000000000
--- a/test/Analysis/inline-not-supported.c
+++ /dev/null
@@ -1,29 +0,0 @@
-// RUN: %clang_analyze_cc1 -fblocks -analyzer-checker=core -verify %s
-
-// For now, don't inline varargs.
-void foo(int *x, ...) {
- *x = 1;
-}
-
-void bar() {
- foo(0, 2); // no-warning
-}
-
-// For now, don't inline vararg blocks.
-void (^baz)(int *x, ...) = ^(int *x, ...) { *x = 1; };
-
-void taz() {
- baz(0, 2); // no-warning
-}
-
-// For now, don't inline global blocks.
-void (^qux)(int *p) = ^(int *p) { *p = 1; };
-void test_qux() {
- qux(0); // no-warning
-}
-
-
-void test_analyzer_is_running() {
- int *p = 0;
- *p = 0xDEADBEEF; // expected-warning {{null}}
-}
diff --git a/test/Analysis/inline-plist.c b/test/Analysis/inline-plist.c
deleted file mode 100644
index b3fb554da704..000000000000
--- a/test/Analysis/inline-plist.c
+++ /dev/null
@@ -1,88 +0,0 @@
-// RUN: %clang_analyze_cc1 %s -analyzer-checker=core.NullDereference,core.DivideZero -fblocks -analyzer-output=text -analyzer-config suppress-null-return-paths=false -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -analyzer-config eagerly-assume=false %s -analyzer-checker=core.NullDereference,core.DivideZero -fblocks -analyzer-output=plist -analyzer-config suppress-null-return-paths=false -o %t
-// RUN: cat %t | %diff_plist %S/Inputs/expected-plists/inline-plist.c.plist -
-
-// <rdar://problem/10967815>
-void mmm(int y) {
- if (y != 0)
- y++;
-}
-
-int foo(int x, int y) {
- mmm(y);
- if (x != 0) {
- // expected-note@-1 {{Assuming 'x' is equal to 0}}
- // expected-note@-2 {{Taking false branch}}
- x++;
- }
- return 5/x; // expected-warning{{Division by zero}} expected-note{{Division by zero}}
-}
-
-// Test a bug triggering only when inlined.
-void has_bug(int *p) {
- *p = 0xDEADBEEF; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}} expected-note{{Dereference of null pointer (loaded from variable 'p')}}
-}
-
-void test_has_bug() {
- has_bug(0);
- // expected-note@-1 {{Passing null pointer value via 1st parameter 'p'}}
- // expected-note@-2 {{Calling 'has_bug'}}
-}
-
-void triggers_bug(int *p) {
- *p = 0xDEADBEEF; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}} expected-note{{Dereference of null pointer (loaded from variable 'p')}}
-}
-
-// This function triggers a bug by calling triggers_bug(). The diagnostics
-// should show when p is assumed to be null.
-void bar(int *p) {
- if (!!p) {
- // expected-note@-1 {{Assuming 'p' is null}}
- // expected-note@-2 {{Taking false branch}}
- return;
- }
-
- if (p == 0) {
- // expected-note@-1 {{Taking true branch}}
- triggers_bug(p);
- // expected-note@-1 {{Passing null pointer value via 1st parameter 'p'}}
- // expected-note@-2 {{Calling 'triggers_bug'}}
- }
-}
-
-// ========================================================================== //
-// Test inlining of blocks.
-// ========================================================================== //
-
-void test_block__capture_null() {
- int *p = 0; // expected-note{{'p' initialized to a null pointer value}}
- ^(){ // expected-note {{Calling anonymous block}}
- *p = 1; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}} expected-note{{Dereference of null pointer (loaded from variable 'p')}}
- }();
-
-}
-
-void test_block_ret() {
- int *p = ^int*(){ // expected-note {{Calling anonymous block}} expected-note{{Returning to caller}} expected-note {{'p' initialized to a null pointer value}}
- int *q = 0; // expected-note {{'q' initialized to a null pointer value}}
- return q; // expected-note {{Returning null pointer (loaded from 'q')}}
- }();
- *p = 1; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}} expected-note{{Dereference of null pointer (loaded from variable 'p')}}
-}
-
-void test_block_blockvar() {
- __block int *p;
- ^(){ // expected-note{{Calling anonymous block}} expected-note{{Returning to caller}}
- p = 0; // expected-note{{Null pointer value stored to 'p'}}
- }();
- *p = 1; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}} expected-note{{Dereference of null pointer (loaded from variable 'p')}}
-}
-
-void test_block_arg() {
- int *p;
- ^(int **q){ // expected-note{{Calling anonymous block}} expected-note{{Returning to caller}}
- *q = 0; // expected-note{{Null pointer value stored to 'p'}}
- }(&p);
- *p = 1; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}} expected-note{{Dereference of null pointer (loaded from variable 'p')}}
-}
-
diff --git a/test/Analysis/inline-unique-reports.c b/test/Analysis/inline-unique-reports.c
deleted file mode 100644
index 94289a1e8dd9..000000000000
--- a/test/Analysis/inline-unique-reports.c
+++ /dev/null
@@ -1,18 +0,0 @@
-// RUN: %clang_analyze_cc1 %s -analyzer-checker=core.NullDereference -analyzer-output=plist -o %t > /dev/null 2>&1
-// RUN: cat %t | %diff_plist %S/Inputs/expected-plists/inline-unique-reports.c.plist -
-
-static inline bug(int *p) {
- *p = 0xDEADBEEF;
-}
-
-void test_bug_1() {
- int *p = 0;
- bug(p);
-}
-
-void test_bug_2() {
- int *p = 0;
- bug(p);
-}
-
-
diff --git a/test/Analysis/inline.c b/test/Analysis/inline.c
deleted file mode 100644
index 8fce0fb176ea..000000000000
--- a/test/Analysis/inline.c
+++ /dev/null
@@ -1,118 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-void clang_analyzer_checkInlined(int);
-
-int test1_f1() {
- int y = 1;
- y++;
- clang_analyzer_checkInlined(1); // expected-warning{{TRUE}}
- return y;
-}
-
-void test1_f2() {
- int x = 1;
- x = test1_f1();
- if (x == 1) {
- int *p = 0;
- *p = 3; // no-warning
- }
- if (x == 2) {
- int *p = 0;
- *p = 3; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}}
- }
-}
-
-// Test that inlining works when the declared function has less arguments
-// than the actual number in the declaration.
-void test2_f1() {}
-int test2_f2();
-
-void test2_f3() {
- test2_f1(test2_f2()); // expected-warning{{too many arguments in call to 'test2_f1'}}
-}
-
-// Test that inlining works with recursive functions.
-
-unsigned factorial(unsigned x) {
- if (x <= 1)
- return 1;
- return x * factorial(x - 1);
-}
-
-void test_factorial() {
- if (factorial(3) == 6) {
- int *p = 0;
- *p = 0xDEADBEEF; // expected-warning {{null}}
- }
- else {
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
- }
-}
-
-void test_factorial_2() {
- unsigned x = factorial(3);
- if (x == factorial(3)) {
- int *p = 0;
- *p = 0xDEADBEEF; // expected-warning {{null}}
- }
- else {
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
- }
-}
-
-// Test that returning stack memory from a parent stack frame does
-// not trigger a warning.
-static char *return_buf(char *buf) {
- return buf + 10;
-}
-
-void test_return_stack_memory_ok() {
- char stack_buf[100];
- char *pos = return_buf(stack_buf);
- (void) pos;
-}
-
-char *test_return_stack_memory_bad() {
- char stack_buf[100];
- char *x = stack_buf;
- return x; // expected-warning {{stack memory associated}}
-}
-
-// Test that passing a struct value with an uninitialized field does
-// not trigger a warning if we are inlining and the body is available.
-struct rdar10977037 { int x, y; };
-int test_rdar10977037_aux(struct rdar10977037 v) { return v.y; }
-int test_rdar10977037_aux_2(struct rdar10977037 v);
-int test_rdar10977037() {
- struct rdar10977037 v;
- v.y = 1;
- v. y += test_rdar10977037_aux(v); // no-warning
- return test_rdar10977037_aux_2(v); // expected-warning {{Passed-by-value struct argument contains uninitialized data}}
-}
-
-
-// Test inlining a forward-declared function.
-// This regressed when CallEvent was first introduced.
-int plus1(int x);
-void test() {
- clang_analyzer_eval(plus1(2) == 3); // expected-warning{{TRUE}}
-}
-
-int plus1(int x) {
- return x + 1;
-}
-
-
-void never_called_by_anyone() {
- clang_analyzer_checkInlined(0); // no-warning
-}
-
-
-void knr_one_argument(a) int a; { }
-
-void call_with_less_arguments() {
- knr_one_argument(); // expected-warning{{too few arguments}} expected-warning{{Function taking 1 argument is called with fewer (0)}}
-}
diff --git a/test/Analysis/inline.cpp b/test/Analysis/inline.cpp
deleted file mode 100644
index 2b31460330e4..000000000000
--- a/test/Analysis/inline.cpp
+++ /dev/null
@@ -1,443 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config ipa=inlining -analyzer-config c++-allocator-inlining=true -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_checkInlined(bool);
-
-typedef __typeof__(sizeof(int)) size_t;
-extern "C" void *malloc(size_t);
-
-// This is the standard placement new.
-inline void* operator new(size_t, void* __p) throw()
-{
- clang_analyzer_checkInlined(true);// expected-warning{{TRUE}}
- return __p;
-}
-
-
-class A {
-public:
- int getZero() { return 0; }
- virtual int getNum() { return 0; }
-};
-
-void test(A &a) {
- clang_analyzer_eval(a.getZero() == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(a.getNum() == 0); // expected-warning{{UNKNOWN}}
-
- A copy(a);
- clang_analyzer_eval(copy.getZero() == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(copy.getNum() == 0); // expected-warning{{TRUE}}
-}
-
-
-class One : public A {
-public:
- virtual int getNum() { return 1; }
-};
-
-void testPathSensitivity(int x) {
- A a;
- One b;
-
- A *ptr;
- switch (x) {
- case 0:
- ptr = &a;
- break;
- case 1:
- ptr = &b;
- break;
- default:
- return;
- }
-
- // This should be true on both branches.
- clang_analyzer_eval(ptr->getNum() == x); // expected-warning {{TRUE}}
-}
-
-
-namespace PureVirtualParent {
- class Parent {
- public:
- virtual int pureVirtual() const = 0;
- int callVirtual() const {
- return pureVirtual();
- }
- };
-
- class Child : public Parent {
- public:
- virtual int pureVirtual() const {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- return 42;
- }
- };
-
- void testVirtual() {
- Child x;
-
- clang_analyzer_eval(x.pureVirtual() == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(x.callVirtual() == 42); // expected-warning{{TRUE}}
- }
-}
-
-
-namespace PR13569 {
- class Parent {
- protected:
- int m_parent;
- virtual int impl() const = 0;
-
- Parent() : m_parent(0) {}
-
- public:
- int interface() const {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- return impl();
- }
- };
-
- class Child : public Parent {
- protected:
- virtual int impl() const {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- return m_parent + m_child;
- }
-
- public:
- Child() : m_child(0) {}
-
- int m_child;
- };
-
- void testVirtual() {
- Child x;
- x.m_child = 42;
-
- // Don't crash when inlining and devirtualizing.
- x.interface();
- }
-
-
- class Grandchild : public Child {};
-
- void testDevirtualizeToMiddle() {
- Grandchild x;
- x.m_child = 42;
-
- // Don't crash when inlining and devirtualizing.
- x.interface();
- }
-}
-
-namespace PR13569_virtual {
- class Parent {
- protected:
- int m_parent;
- virtual int impl() const = 0;
-
- Parent() : m_parent(0) {}
-
- public:
- int interface() const {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- return impl();
- }
- };
-
- class Child : virtual public Parent {
- protected:
- virtual int impl() const {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- return m_parent + m_child;
- }
-
- public:
- Child() : m_child(0) {}
-
- int m_child;
- };
-
- void testVirtual() {
- Child x;
- x.m_child = 42;
-
- // Don't crash when inlining and devirtualizing.
- x.interface();
- }
-
-
- class Grandchild : virtual public Child {};
-
- void testDevirtualizeToMiddle() {
- Grandchild x;
- x.m_child = 42;
-
- // Don't crash when inlining and devirtualizing.
- x.interface();
- }
-}
-
-namespace Invalidation {
- struct X {
- void touch(int &x) const {
- x = 0;
- }
-
- void touch2(int &x) const;
-
- virtual void touchV(int &x) const {
- x = 0;
- }
-
- virtual void touchV2(int &x) const;
-
- int test() const {
- // We were accidentally not invalidating under inlining
- // at one point for virtual methods with visible definitions.
- int a, b, c, d;
- touch(a);
- touch2(b);
- touchV(c);
- touchV2(d);
- return a + b + c + d; // no-warning
- }
- };
-}
-
-namespace DefaultArgs {
- int takesDefaultArgs(int i = 42) {
- return -i;
- }
-
- void testFunction() {
- clang_analyzer_eval(takesDefaultArgs(1) == -1); // expected-warning{{TRUE}}
- clang_analyzer_eval(takesDefaultArgs() == -42); // expected-warning{{TRUE}}
- }
-
- class Secret {
- public:
- static const int value = 40 + 2;
- int get(int i = value) {
- return i;
- }
- };
-
- void testMethod() {
- Secret obj;
- clang_analyzer_eval(obj.get(1) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(obj.get() == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(Secret::value == 42); // expected-warning{{TRUE}}
- }
-
- enum ABC {
- A = 0,
- B = 1,
- C = 2
- };
-
- int enumUser(ABC input = B) {
- return static_cast<int>(input);
- }
-
- void testEnum() {
- clang_analyzer_eval(enumUser(C) == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(enumUser() == 1); // expected-warning{{TRUE}}
- }
-
-
- int exprUser(int input = 2 * 4) {
- return input;
- }
-
- int complicatedExprUser(int input = 2 * Secret::value) {
- return input;
- }
-
- void testExprs() {
- clang_analyzer_eval(exprUser(1) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(exprUser() == 8); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(complicatedExprUser(1) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(complicatedExprUser() == 84); // expected-warning{{TRUE}}
- }
-
- int defaultReference(const int &input = 42) {
- return -input;
- }
- int defaultReferenceZero(const int &input = 0) {
- return -input;
- }
-
- void testReference() {
- clang_analyzer_eval(defaultReference(1) == -1); // expected-warning{{TRUE}}
- clang_analyzer_eval(defaultReference() == -42); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(defaultReferenceZero(1) == -1); // expected-warning{{TRUE}}
- clang_analyzer_eval(defaultReferenceZero() == 0); // expected-warning{{TRUE}}
- }
-
- double defaultFloatReference(const double &i = 42) {
- return -i;
- }
- double defaultFloatReferenceZero(const double &i = 0) {
- return -i;
- }
-
- void testFloatReference() {
- clang_analyzer_eval(defaultFloatReference(1) == -1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(defaultFloatReference() == -42); // expected-warning{{UNKNOWN}}
-
- clang_analyzer_eval(defaultFloatReferenceZero(1) == -1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(defaultFloatReferenceZero() == 0); // expected-warning{{UNKNOWN}}
- }
-
- char defaultString(const char *s = "abc") {
- return s[1];
- }
-
- void testString() {
- clang_analyzer_eval(defaultString("xyz") == 'y'); // expected-warning{{TRUE}}
- clang_analyzer_eval(defaultString() == 'b'); // expected-warning{{TRUE}}
- }
-
- const void * const void_string = "abc";
-
- void testBitcastedString() {
- clang_analyzer_eval(0 != void_string); // expected-warning{{TRUE}}
- clang_analyzer_eval('b' == ((char *)void_string)[1]); // expected-warning{{TRUE}}
- }
-}
-
-namespace OperatorNew {
- class IntWrapper {
- public:
- int value;
-
- IntWrapper(int input) : value(input) {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- }
- };
-
- void test() {
- IntWrapper *obj = new IntWrapper(42);
- clang_analyzer_eval(obj->value == 42); // expected-warning{{TRUE}}
- delete obj;
- }
-
- void testPlacement() {
- IntWrapper *obj = static_cast<IntWrapper *>(malloc(sizeof(IntWrapper)));
- IntWrapper *alias = new (obj) IntWrapper(42);
-
- clang_analyzer_eval(alias == obj); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(obj->value == 42); // expected-warning{{TRUE}}
- // Because malloc() was never free()d:
- // expected-warning@-2{{Potential leak of memory pointed to by 'alias'}}
- }
-}
-
-
-namespace VirtualWithSisterCasts {
- // This entire set of tests exercises casts from sister classes and
- // from classes outside the hierarchy, which can very much confuse
- // code that uses DynamicTypeInfo or needs to construct CXXBaseObjectRegions.
- // These examples used to cause crashes in +Asserts builds.
- struct Parent {
- virtual int foo();
- int x;
- };
-
- struct A : Parent {
- virtual int foo() { return 42; }
- };
-
- struct B : Parent {
- virtual int foo();
- };
-
- struct Grandchild : public A {};
-
- struct Unrelated {};
-
- void testDowncast(Parent *b) {
- A *a = (A *)(void *)b;
- clang_analyzer_eval(a->foo() == 42); // expected-warning{{UNKNOWN}}
-
- a->x = 42;
- clang_analyzer_eval(a->x == 42); // expected-warning{{TRUE}}
- }
-
- void testRelated(B *b) {
- A *a = (A *)(void *)b;
- clang_analyzer_eval(a->foo() == 42); // expected-warning{{UNKNOWN}}
-
- a->x = 42;
- clang_analyzer_eval(a->x == 42); // expected-warning{{TRUE}}
- }
-
- void testUnrelated(Unrelated *b) {
- A *a = (A *)(void *)b;
- clang_analyzer_eval(a->foo() == 42); // expected-warning{{UNKNOWN}}
-
- a->x = 42;
- clang_analyzer_eval(a->x == 42); // expected-warning{{TRUE}}
- }
-
- void testCastViaNew(B *b) {
- Grandchild *g = new (b) Grandchild();
- clang_analyzer_eval(g->foo() == 42); // expected-warning{{TRUE}}
-
- g->x = 42;
- clang_analyzer_eval(g->x == 42); // expected-warning{{TRUE}}
- }
-}
-
-
-namespace QualifiedCalls {
- void test(One *object) {
- // This uses the One class from the top of the file.
- clang_analyzer_eval(object->getNum() == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(object->One::getNum() == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(object->A::getNum() == 0); // expected-warning{{TRUE}}
-
- // getZero is non-virtual.
- clang_analyzer_eval(object->getZero() == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(object->One::getZero() == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(object->A::getZero() == 0); // expected-warning{{TRUE}}
-}
-}
-
-
-namespace rdar12409977 {
- struct Base {
- int x;
- };
-
- struct Parent : public Base {
- virtual Parent *vGetThis();
- Parent *getThis() { return vGetThis(); }
- };
-
- struct Child : public Parent {
- virtual Child *vGetThis() { return this; }
- };
-
- void test() {
- Child obj;
- obj.x = 42;
-
- // Originally, calling a devirtualized method with a covariant return type
- // caused a crash because the return value had the wrong type. When we then
- // go to layer a CXXBaseObjectRegion on it, the base isn't a direct base of
- // the object region and we get an assertion failure.
- clang_analyzer_eval(obj.getThis()->x == 42); // expected-warning{{TRUE}}
- }
-}
-
-namespace bug16307 {
- void one_argument(int a) { }
- void call_with_less() {
- reinterpret_cast<void (*)()>(one_argument)(); // expected-warning{{Function taking 1 argument is called with fewer (0)}}
- }
-}
diff --git a/test/Analysis/inline2.c b/test/Analysis/inline2.c
deleted file mode 100644
index 39e6d16cc4fd..000000000000
--- a/test/Analysis/inline2.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-// expected-no-diagnostics
-
-// Test parameter 'a' is registered to LiveVariables analysis data although it
-// is not referenced in the function body.
-// Before processing 'return 1;', in RemoveDeadBindings(), we query the liveness
-// of 'a', because we have a binding for it due to parameter passing.
-int f1(int a) {
- return 1;
-}
-
-void f2() {
- int x;
- x = f1(1);
-}
diff --git a/test/Analysis/inline3.c b/test/Analysis/inline3.c
deleted file mode 100644
index 2c70fb21aa2b..000000000000
--- a/test/Analysis/inline3.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-// expected-no-diagnostics
-
-// Test when entering f1(), we set the right AnalysisDeclContext to Environment.
-// Otherwise, block-level expr '1 && a' would not be block-level.
-int a;
-
-void f1() {
- if (1 && a)
- return;
-}
-
-void f2() {
- f1();
-}
diff --git a/test/Analysis/inline4.c b/test/Analysis/inline4.c
deleted file mode 100644
index a1aac1dec686..000000000000
--- a/test/Analysis/inline4.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-// expected-no-diagnostics
-
-int g(int a) {
- return a;
-}
-
-int f(int a) {
- // Do not remove block-level expression bindings of caller when analyzing
- // in the callee.
- if (1 && g(a)) // The binding of '1 && g(a)' which is an UndefinedVal
- // carries important information.
- return 1;
- return 0;
-}
diff --git a/test/Analysis/inlining/DynDispatchBifurcate.m b/test/Analysis/inlining/DynDispatchBifurcate.m
deleted file mode 100644
index a41a5e3a858d..000000000000
--- a/test/Analysis/inlining/DynDispatchBifurcate.m
+++ /dev/null
@@ -1,191 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx -analyzer-config ipa=dynamic-bifurcate -verify %s
-
-#include "InlineObjCInstanceMethod.h"
-
-@interface MyParent : NSObject
-- (int)getZero;
-@end
-@implementation MyParent
-- (int)getZero {
- return 0;
-}
-@end
-
-@interface PublicClass () {
- int value2;
-}
-@property (readwrite) int value1;
-- (void)setValue2:(int)newValue2;
-@end
-
-@implementation PublicClass
-
-- (int)getZeroPublic {
- return 0;
-}
-
-@synthesize value1;
-
-- (int)value2 {
- return value2;
-}
-- (void)setValue2:(int)newValue {
- value2 = newValue;
-}
-
-- (int)value3 {
- return value3;
-}
-- (void)setValue3:(int)newValue {
- value3 = newValue;
-}
-
-@end
-
-@interface MyClassWithPublicParent : PublicClass
-- (int)getZeroPublic;
-@end
-@implementation MyClassWithPublicParent
-- (int)getZeroPublic {
- return 0;
-}
-@end
-
-// Category overrides a public method.
-@interface PublicSubClass (PrvateCat)
- - (int) getZeroPublic;
-@end
-@implementation PublicSubClass (PrvateCat)
-- (int)getZeroPublic {
- return 0;
-}
-@end
-
-
-@interface MyClass : MyParent {
- int value;
-}
-- (int)getZero;
-@property int value;
-@end
-
-// Since class is private, we assume that it cannot be subclassed.
-// False negative: this class is "privately subclassed". this is very rare
-// in practice.
-@implementation MyClass
-+ (int) testTypeFromParam:(MyParent*) p {
- int m = 0;
- int z = [p getZero];
- if (z)
- return 5/m; // false negative
- return 5/[p getZero];// expected-warning {{Division by zero}}
-}
-
-// Here only one definition is possible, since the declaration is not visible
-// from outside.
-+ (int) testTypeFromParamPrivateChild:(MyClass*) c {
- int m = 0;
- int z = [c getZero]; // MyClass overrides getZero to return '1'.
- if (z)
- return 5/m; // expected-warning {{Division by zero}}
- return 5/[c getZero];//no warning
-}
-
-- (int)getZero {
- return 1;
-}
-
-- (int)value {
- return value;
-}
-
-- (void)setValue:(int)newValue {
- value = newValue;
-}
-
-// Test ivar access.
-- (int) testIvarInSelf {
- value = 0;
- return 5/value; // expected-warning {{Division by zero}}
-}
-
-+ (int) testIvar: (MyClass*) p {
- p.value = 0;
- return 5/p.value; // expected-warning {{Division by zero}}
-}
-
-// Test simple property access.
-+ (int) testProperty: (MyClass*) p {
- int x= 0;
- [p setValue:0];
- return 5/[p value]; // expected-warning {{Division by zero}}
-}
-
-@end
-
-// The class is prvate and is not subclassed.
-int testCallToPublicAPIInParent(MyClassWithPublicParent *p) {
- int m = 0;
- int z = [p getZeroPublic];
- if (z)
- return 5/m; // no warning
- return 5/[p getZeroPublic];// expected-warning {{Division by zero}}
-}
-
-// When the called method is public (due to it being defined outside of main file),
-// split the path and analyze both branches.
-// In this case, p can be either the object of type MyParent* or MyClass*:
-// - If it's MyParent*, getZero returns 0.
-// - If it's MyClass*, getZero returns 1 and 'return 5/m' is reachable.
-// Declaration is provate, but p can be a subclass (MyClass*).
-int testCallToPublicAPI(PublicClass *p) {
- int m = 0;
- int z = [p getZeroPublic];
- if (z)
- return 5/m; // expected-warning {{Division by zero}}
- return 5/[p getZeroPublic];// expected-warning {{Division by zero}}
-}
-
-// Even though the method is privately declared in the category, the parent
-// declares the method as public. Assume the instance can be subclassed.
-int testCallToPublicAPICat(PublicSubClass *p) {
- int m = 0;
- int z = [p getZeroPublic];
- if (z)
- return 5/m; // expected-warning {{Division by zero}}
- return 5/[p getZeroPublic];// expected-warning {{Division by zero}}
-}
-
-// Test public property - properties should always be inlined, regardless
-// weither they are "public" or private.
-int testPublicProperty(PublicClass *p) {
- int x = 0;
- p.value3 = 0;
- if (p.value3 != 0)
- return 5/x;
- return 5/p.value3;// expected-warning {{Division by zero}}
-}
-
-int testExtension(PublicClass *p) {
- int x = 0;
- [p setValue2:0];
- if ([p value2] != 0)
- return 5/x; // expected-warning {{Division by zero}}
- return 5/[p value2]; // expected-warning {{Division by zero}}
-}
-
-// TODO: we do not handle synthesized properties yet.
-int testPropertySynthesized(PublicClass *p) {
- [p setValue1:0];
- return 5/[p value1];
-}
-
-// Test definition not available edge case.
-@interface DefNotAvailClass : NSObject // expected-note {{receiver is instance of class declared here}}
-@end
-id testDefNotAvailableInlined(DefNotAvailClass *C) {
- return [C mem]; // expected-warning {{instance method '-mem' not found}}
-}
-id testDefNotAvailable(DefNotAvailClass *C) {
- return testDefNotAvailableInlined(C);
-}
diff --git a/test/Analysis/inlining/InlineObjCClassMethod.m b/test/Analysis/inlining/InlineObjCClassMethod.m
deleted file mode 100644
index 11b2d63afa59..000000000000
--- a/test/Analysis/inlining/InlineObjCClassMethod.m
+++ /dev/null
@@ -1,311 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=dynamic-bifurcate -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_checkInlined(int);
-void clang_analyzer_eval(int);
-
-// Test inlining of ObjC class methods.
-
-typedef signed char BOOL;
-typedef struct objc_class *Class;
-typedef struct objc_object {
- Class isa;
-} *id;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
-@end
-
-// Vanila: ObjC class method is called by name.
-@interface MyParent : NSObject
-+ (int)getInt;
-@end
-@interface MyClass : MyParent
-+ (int)getInt;
-@end
-@implementation MyClass
-+ (int)testClassMethodByName {
- int y = [MyClass getInt];
- return 5/y; // expected-warning {{Division by zero}}
-}
-+ (int)getInt {
- return 0;
-}
-@end
-
-// The definition is defined by the parent. Make sure we find it and inline.
-@interface MyParentDIP : NSObject
-+ (int)getInt;
-@end
-@interface MyClassDIP : MyParentDIP
-@end
-@implementation MyClassDIP
-+ (int)testClassMethodByName {
- int y = [MyClassDIP getInt];
- return 5/y; // expected-warning {{Division by zero}}
-}
-@end
-@implementation MyParentDIP
-+ (int)getInt {
- return 0;
-}
-@end
-
-// ObjC class method is called by name. Definition is in the category.
-@interface AAA : NSObject
-@end
-@interface AAA (MyCat)
-+ (int)getInt;
-@end
-int foo() {
- int y = [AAA getInt];
- return 5/y; // expected-warning {{Division by zero}}
-}
-@implementation AAA
-@end
-@implementation AAA (MyCat)
-+ (int)getInt {
- return 0;
-}
-@end
-
-// ObjC class method is called by name. Definition is in the parent category.
-@interface PPP : NSObject
-@end
-@interface PPP (MyCat)
-+ (int)getInt;
-@end
-@interface CCC : PPP
-@end
-int foo4() {
- int y = [CCC getInt];
- return 5/y; // expected-warning {{Division by zero}}
-}
-@implementation PPP
-@end
-@implementation PPP (MyCat)
-+ (int)getInt {
- return 0;
-}
-@end
-
-// There is no declaration in the class but there is one in the parent. Make
-// sure we pick the definition from the class and not the parent.
-@interface MyParentTricky : NSObject
-+ (int)getInt;
-@end
-@interface MyClassTricky : MyParentTricky
-@end
-@implementation MyParentTricky
-+ (int)getInt {
- return 0;
-}
-@end
-@implementation MyClassTricky
-+ (int)getInt {
- return 1;
-}
-+ (int)testClassMethodByName {
- int y = [MyClassTricky getInt];
- return 5/y; // no-warning
-}
-@end
-
-// ObjC class method is called by unknown class declaration (passed in as a
-// parameter). We should not inline in such case.
-@interface MyParentUnknown : NSObject
-+ (int)getInt;
-@end
-@interface MyClassUnknown : MyParentUnknown
-+ (int)getInt;
-@end
-@implementation MyClassUnknown
-+ (int)testClassVariableByUnknownVarDecl: (Class)cl {
- int y = [cl getInt];
- return 3/y; // no-warning
-}
-+ (int)getInt {
- return 0;
-}
-@end
-
-
-// False negative.
-// ObjC class method call through a decl with a known type.
-// We should be able to track the type of currentClass and inline this call.
-// Note, [self class] could be a subclass. Do we still want to inline here?
-@interface MyClassKT : NSObject
-@end
-@interface MyClassKT (MyCatKT)
-+ (int)getInt;
-@end
-@implementation MyClassKT (MyCatKT)
-+ (int)getInt {
- return 0;
-}
-@end
-@implementation MyClassKT
-- (int)testClassMethodByKnownVarDecl {
- Class currentClass = [self class];
- int y = [currentClass getInt];
- return 5/y; // Would be great to get a warning here.
-}
-@end
-
-// Another false negative due to us not reasoning about self, which in this
-// case points to the object of the class in the call site and should be equal
-// to [MyParent class].
-@interface MyParentSelf : NSObject
-+ (int)testSelf;
-@end
-@implementation MyParentSelf
-+ (int)testSelf {
- if (self == [MyParentSelf class])
- return 0;
- else
- return 1;
-}
-@end
-@interface MyClassSelf : MyParentSelf
-@end
-@implementation MyClassSelf
-+ (int)testClassMethodByKnownVarDecl {
- int y = [MyParentSelf testSelf];
- return 5/y; // expected-warning{{Division by zero}}
-}
-@end
-int foo2() {
- int y = [MyParentSelf testSelf];
- return 5/y; // expected-warning{{Division by zero}}
-}
-
-// TODO: We do not inline 'getNum' in the following case, where the value of
-// 'self' in call '[self getNum]' is available and evaualtes to
-// 'SelfUsedInParentChild' if it's called from fooA.
-// Self region should get created before we call foo and yje call to super
-// should keep it live.
-@interface SelfUsedInParent : NSObject
-+ (int)getNum;
-+ (int)foo;
-@end
-@implementation SelfUsedInParent
-+ (int)getNum {return 5;}
-+ (int)foo {
- int r = [self getNum];
- clang_analyzer_eval(r == 5); // expected-warning{{TRUE}}
- return r;
-}
-@end
-@interface SelfUsedInParentChild : SelfUsedInParent
-+ (int)getNum;
-+ (int)fooA;
-@end
-@implementation SelfUsedInParentChild
-+ (int)getNum {return 0;}
-+ (int)fooA {
- return [super foo];
-}
-@end
-int checkSelfUsedInparentClassMethod() {
- return 5/[SelfUsedInParentChild fooA];
-}
-
-
-@interface Rdar15037033 : NSObject
-@end
-
-void rdar15037033() {
- [Rdar15037033 forwardDeclaredMethod]; // expected-warning {{class method '+forwardDeclaredMethod' not found}}
- [Rdar15037033 forwardDeclaredVariadicMethod:1, 2, 3, 0]; // expected-warning {{class method '+forwardDeclaredVariadicMethod:' not found}}
-}
-
-@implementation Rdar15037033
-
-+ (void)forwardDeclaredMethod {
- clang_analyzer_checkInlined(1); // expected-warning{{TRUE}}
-}
-
-+ (void)forwardDeclaredVariadicMethod:(int)x, ... {
- clang_analyzer_checkInlined(0); // no-warning
-}
-@end
-
-@interface SelfClassTestParent : NSObject
--(unsigned)returns10;
-+(unsigned)returns20;
-+(unsigned)returns30;
-@end
-
-@implementation SelfClassTestParent
--(unsigned)returns10 { return 100; }
-+(unsigned)returns20 { return 100; }
-+(unsigned)returns30 { return 100; }
-@end
-
-@interface SelfClassTest : SelfClassTestParent
--(unsigned)returns10;
-+(unsigned)returns20;
-+(unsigned)returns30;
-@end
-
-@implementation SelfClassTest
--(unsigned)returns10 { return 10; }
-+(unsigned)returns20 { return 20; }
-+(unsigned)returns30 { return 30; }
-+(void)classMethod {
- unsigned result1 = [self returns20];
- clang_analyzer_eval(result1 == 20); // expected-warning{{TRUE}}
- unsigned result2 = [[self class] returns30];
- clang_analyzer_eval(result2 == 30); // expected-warning{{TRUE}}
- unsigned result3 = [[super class] returns30];
- clang_analyzer_eval(result3 == 100); // expected-warning{{UNKNOWN}}
-}
--(void)instanceMethod {
- unsigned result0 = [self returns10];
- clang_analyzer_eval(result0 == 10); // expected-warning{{TRUE}}
- unsigned result2 = [[self class] returns30];
- clang_analyzer_eval(result2 == 30); // expected-warning{{TRUE}}
- unsigned result3 = [[super class] returns30];
- clang_analyzer_eval(result3 == 100); // expected-warning{{UNKNOWN}}
-}
-@end
-
-@interface Parent : NSObject
-+ (int)a;
-+ (int)b;
-@end
-@interface Child : Parent
-@end
-@interface Other : NSObject
-+(void)run;
-@end
-int main(int argc, const char * argv[]) {
- @autoreleasepool {
- [Other run];
- }
- return 0;
-}
-@implementation Other
-+(void)run {
- int result = [Child a];
- // TODO: This should return 100.
- clang_analyzer_eval(result == 12); // expected-warning{{TRUE}}
-}
-@end
-@implementation Parent
-+ (int)a; {
- return [self b];
-}
-+ (int)b; {
- return 12;
-}
-@end
-@implementation Child
-+ (int)b; {
- return 100;
-}
-@end
diff --git a/test/Analysis/inlining/InlineObjCInstanceMethod.h b/test/Analysis/inlining/InlineObjCInstanceMethod.h
deleted file mode 100644
index bb0da280c8ef..000000000000
--- a/test/Analysis/inlining/InlineObjCInstanceMethod.h
+++ /dev/null
@@ -1,46 +0,0 @@
-
-// Define a public header for the ObjC methods that are "visible" externally
-// and, thus, could be sub-classed. We should explore the path on which these
-// are sub-classed with unknown class by not inlining them.
-
-typedef signed char BOOL;
-typedef struct objc_class *Class;
-typedef struct objc_object {
- Class isa;
-} *id;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
-@end
-
-@interface PublicClass : NSObject {
- int value3;
-}
-- (int)getZeroPublic;
-
-- (int) value2;
-
-@property (readonly) int value1;
-
-@property int value3;
-- (int)value3;
-- (void)setValue3:(int)newValue;
-@end
-
-@interface PublicSubClass : PublicClass
-@end
-
-@interface PublicParent : NSObject
-- (int)getZeroOverridden;
-@end
-
-@interface PublicSubClass2 : PublicParent
-- (int) getZeroOverridden;
-@end
-
diff --git a/test/Analysis/inlining/InlineObjCInstanceMethod.m b/test/Analysis/inlining/InlineObjCInstanceMethod.m
deleted file mode 100644
index 4578a55c7a07..000000000000
--- a/test/Analysis/inlining/InlineObjCInstanceMethod.m
+++ /dev/null
@@ -1,148 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core.DivideZero,core.DynamicTypePropagation,osx.cocoa.IncompatibleMethodTypes -w -verify %s
-
-#include "InlineObjCInstanceMethod.h"
-
-typedef const struct __CFString * CFStringRef;
-typedef const void * CFTypeRef;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-extern void CFRelease(CFTypeRef cf);
-extern CFStringRef getString(void);
-
-// Method is defined in the parent; called through self.
-@interface MyParent : NSObject
-- (int)getInt;
-- (const struct __CFString *) testCovariantReturnType __attribute__((cf_returns_retained));
-@end
-@implementation MyParent
-- (int)getInt {
- return 0;
-}
-
-- (CFStringRef) testCovariantReturnType __attribute__((cf_returns_retained)) {
- CFStringRef Str = ((void*)0);
- Str = getString();
- if (Str) {
- CFRetain(Str);
- }
- return Str;
-}
-
-@end
-
-@interface MyClass : MyParent
-@end
-@implementation MyClass
-- (int)testDynDispatchSelf {
- int y = [self getInt];
- return 5/y; // expected-warning {{Division by zero}}
-}
-
-// Get the dynamic type info from a cast (from id to MyClass*).
-+ (int)testAllocInit {
- MyClass *a = [[self alloc] init];
- return 5/[a getInt]; // expected-warning {{Division by zero}}
-}
-
-// Method is called on inited object.
-+ (int)testAllocInit2 {
- MyClass *a = [[MyClass alloc] init];
- return 5/[a getInt]; // expected-warning {{Division by zero}}
-}
-
-// Method is called on a parameter.
-+ (int)testParam: (MyClass*) a {
- return 5/[a getInt]; // expected-warning {{Division by zero}}
-}
-
-// Method is called on a parameter of unnown type.
-+ (int)testParamUnknownType: (id) a {
- return 5/[a getInt]; // no warning
-}
-
-@end
-
-// TODO: When method is inlined, the attribute reset should be visible.
-@interface TestSettingAnAttributeInCallee : NSObject {
- int _attribute;
-}
- - (void) method2;
-@end
-
-@implementation TestSettingAnAttributeInCallee
-- (int) method1 {
- [self method2];
- return 5/_attribute; // expected-warning {{Division by zero}}
-}
-
-- (void) method2 {
- _attribute = 0;
-}
-@end
-
-@interface TestSettingAnAttributeInCaller : NSObject {
- int _attribute;
-}
- - (int) method2;
-@end
-
-@implementation TestSettingAnAttributeInCaller
-- (void) method1 {
- _attribute = 0;
- [self method2];
-}
-
-- (int) method2 {
- return 5/_attribute; // expected-warning {{Division by zero}}
-}
-@end
-
-
-// Don't crash if we don't know the receiver's region.
-void randomlyMessageAnObject(MyClass *arr[], int i) {
- (void)[arr[i] getInt];
-}
-
-
-@interface EvilChild : MyParent
-- (id)getInt;
-- (const struct __CFString *) testCovariantReturnType __attribute__((cf_returns_retained));
-@end
-
-@implementation EvilChild
-- (id)getInt { // expected-warning {{types are incompatible}}
- return self;
-}
-- (CFStringRef) testCovariantReturnType __attribute__((cf_returns_retained)) {
- CFStringRef Str = ((void*)0);
- Str = getString();
- if (Str) {
- CFRetain(Str);
- }
- return Str;
-}
-
-@end
-
-int testNonCovariantReturnType() {
- MyParent *obj = [[EvilChild alloc] init];
-
- // Devirtualization allows us to directly call -[EvilChild getInt], but
- // that returns an id, not an int. There is an off-by-default warning for
- // this, -Woverriding-method-mismatch, and an on-by-default analyzer warning,
- // osx.cocoa.IncompatibleMethodTypes. This code would probably crash at
- // runtime, but at least the analyzer shouldn't crash.
- int x = 1 + [obj getInt];
-
- [obj release];
- return 5/(x-1); // no-warning
-}
-
-int testCovariantReturnTypeNoErrorSinceTypesMatch() {
- MyParent *obj = [[EvilChild alloc] init];
-
- CFStringRef S = ((void*)0);
- S = [obj testCovariantReturnType];
- if (S)
- CFRelease(S);
- CFRelease(obj);
-}
diff --git a/test/Analysis/inlining/Inputs/expected-plists/eager-reclamation-path-notes.c.plist b/test/Analysis/inlining/Inputs/expected-plists/eager-reclamation-path-notes.c.plist
deleted file mode 100644
index 184aa195e376..000000000000
--- a/test/Analysis/inlining/Inputs/expected-plists/eager-reclamation-path-notes.c.plist
+++ /dev/null
@@ -1,653 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Passing null pointer value via 1st parameter &apos;ptr&apos;</string>
- <key>message</key>
- <string>Passing null pointer value via 1st parameter &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>21</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;use&apos;</string>
- <key>message</key>
- <string>Calling &apos;use&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testSimple&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testSimple&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5c273b7f0421359833fde3f06e8a5c07</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>use</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>5</integer>
- <integer>6</integer>
- <integer>10</integer>
- <integer>15</integer>
- <integer>18</integer>
- <integer>19</integer>
- <integer>21</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;ptr&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;ptr&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- <key>message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;passThrough&apos;</string>
- <key>message</key>
- <string>Calling &apos;passThrough&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testChainedCalls&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testChainedCalls&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Passing null pointer value via 1st parameter &apos;ptr&apos;</string>
- <key>message</key>
- <string>Passing null pointer value via 1st parameter &apos;ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling &apos;use2&apos;</string>
- <key>message</key>
- <string>Calling &apos;use2&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;passThrough&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;passThrough&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>27</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1d1fa98a8e9fbfa90777dac9fc2795a8</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>use2</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>28</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>10</integer>
- <integer>15</integer>
- <integer>27</integer>
- <integer>28</integer>
- <integer>32</integer>
- <integer>33</integer>
- <integer>38</integer>
- <integer>39</integer>
- <integer>41</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/inlining/eager-reclamation-path-notes.c</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/inlining/Inputs/expected-plists/eager-reclamation-path-notes.cpp.plist b/test/Analysis/inlining/Inputs/expected-plists/eager-reclamation-path-notes.cpp.plist
deleted file mode 100644
index cc699ae1d154..000000000000
--- a/test/Analysis/inlining/Inputs/expected-plists/eager-reclamation-path-notes.cpp.plist
+++ /dev/null
@@ -1,377 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;getNullWrapper&apos;</string>
- <key>message</key>
- <string>Calling &apos;getNullWrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;memberCallBaseDisappears&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;memberCallBaseDisappears&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>9</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>10</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning null pointer</string>
- <key>message</key>
- <string>Returning null pointer</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;getNullWrapper&apos;</string>
- <key>message</key>
- <string>Returning from &apos;getNullWrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;ptr&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;ptr&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Called C++ object pointer is null</string>
- <key>message</key>
- <string>Called C++ object pointer is null</string>
- </dict>
- </array>
- <key>description</key><string>Called C++ object pointer is null</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Called C++ object pointer is null</string>
- <key>check_name</key><string>core.CallAndMessage</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f4a4cee851880ebbe93d3b657920ebe9</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>memberCallBaseDisappears</string>
- <key>issue_hash_function_offset</key><string>19</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>9</integer>
- <integer>10</integer>
- <integer>14</integer>
- <integer>24</integer>
- <integer>30</integer>
- <integer>31</integer>
- <integer>33</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/inlining/eager-reclamation-path-notes.cpp</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/inlining/Inputs/expected-plists/path-notes.c.plist b/test/Analysis/inlining/Inputs/expected-plists/path-notes.c.plist
deleted file mode 100644
index d9001556a2a8..000000000000
--- a/test/Analysis/inlining/Inputs/expected-plists/path-notes.c.plist
+++ /dev/null
@@ -1,3780 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;zero&apos;</string>
- <key>message</key>
- <string>Calling &apos;zero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testZero&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>5</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>6</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;zero&apos;</string>
- <key>message</key>
- <string>Returning from &apos;zero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>11</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>52499a849b132453be19ec9167d8c021</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testZero</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>14</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>5</integer>
- <integer>6</integer>
- <integer>10</integer>
- <integer>11</integer>
- <integer>14</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;a&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;a&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>19</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>cb893891b6a08ee4b7dc3d0c11df856e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCheck</string>
- <key>issue_hash_function_offset</key><string>6</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>18</integer>
- <integer>19</integer>
- <integer>24</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;a&apos; initialized here</string>
- <key>message</key>
- <string>&apos;a&apos; initialized here</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;a&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;a&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ec20b5e53a72c82d442b3ca04c81e138</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testInitCheck</string>
- <key>issue_hash_function_offset</key><string>8</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>39</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>31</integer>
- <integer>32</integer>
- <integer>34</integer>
- <integer>39</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Value assigned to &apos;a&apos;</string>
- <key>message</key>
- <string>Value assigned to &apos;a&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;a&apos; is null</string>
- <key>message</key>
- <string>Assuming &apos;a&apos; is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>1ae8e7c84d15f307abc1df9f5612078b</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testStoreCheck</string>
- <key>issue_hash_function_offset</key><string>8</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>51</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>43</integer>
- <integer>44</integer>
- <integer>46</integer>
- <integer>51</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;getZero&apos;</string>
- <key>message</key>
- <string>Calling &apos;getZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testReturnZero&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testReturnZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning null pointer (loaded from &apos;p&apos;)</string>
- <key>message</key>
- <string>Returning null pointer (loaded from &apos;p&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;getZero&apos;</string>
- <key>message</key>
- <string>Returning from &apos;getZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d03346854b8f45b55cbd5efe29bf2c8e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testReturnZero</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>65</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>56</integer>
- <integer>57</integer>
- <integer>60</integer>
- <integer>64</integer>
- <integer>65</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;getZero&apos;</string>
- <key>message</key>
- <string>Calling &apos;getZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testReturnZero2&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testReturnZero2&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning null pointer (loaded from &apos;p&apos;)</string>
- <key>message</key>
- <string>Returning null pointer (loaded from &apos;p&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;getZero&apos;</string>
- <key>message</key>
- <string>Returning from &apos;getZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>5a72f98932a4061a833287a12b28ba8b</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testReturnZero2</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>56</integer>
- <integer>57</integer>
- <integer>60</integer>
- <integer>71</integer>
- <integer>72</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;getZero&apos;</string>
- <key>message</key>
- <string>Calling &apos;getZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testInitZero&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testInitZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning null pointer (loaded from &apos;p&apos;)</string>
- <key>message</key>
- <string>Returning null pointer (loaded from &apos;p&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;getZero&apos;</string>
- <key>message</key>
- <string>Returning from &apos;getZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;a&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;a&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6d3745ba4b32e1858de16c61fecf8ed4</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testInitZero</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>56</integer>
- <integer>57</integer>
- <integer>60</integer>
- <integer>78</integer>
- <integer>79</integer>
- <integer>83</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;getZero&apos;</string>
- <key>message</key>
- <string>Calling &apos;getZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testStoreZero&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testStoreZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning null pointer (loaded from &apos;p&apos;)</string>
- <key>message</key>
- <string>Returning null pointer (loaded from &apos;p&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;getZero&apos;</string>
- <key>message</key>
- <string>Returning from &apos;getZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;a&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;a&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2d25b170621486480ca76aaba4c7a0c0</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testStoreZero</string>
- <key>issue_hash_function_offset</key><string>5</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>92</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>56</integer>
- <integer>57</integer>
- <integer>60</integer>
- <integer>87</integer>
- <integer>88</integer>
- <integer>92</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;getZero&apos;</string>
- <key>message</key>
- <string>Calling &apos;getZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testUseOfNullPointer&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testUseOfNullPointer&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>56</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>57</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>60</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning null pointer (loaded from &apos;p&apos;)</string>
- <key>message</key>
- <string>Returning null pointer (loaded from &apos;p&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;getZero&apos;</string>
- <key>message</key>
- <string>Returning from &apos;getZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- <key>message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>103</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;usePointer&apos;</string>
- <key>message</key>
- <string>Calling &apos;usePointer&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testUseOfNullPointer&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testUseOfNullPointer&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>96</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>567151df0ae29b0f0e1a412114d544dc</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>usePointer</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>56</integer>
- <integer>57</integer>
- <integer>60</integer>
- <integer>96</integer>
- <integer>97</integer>
- <integer>101</integer>
- <integer>103</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>117</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>117</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>117</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;setFieldToNull&apos;</string>
- <key>message</key>
- <string>Calling &apos;setFieldToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>112</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testSetFieldToNull&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testSetFieldToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>112</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>112</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>113</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>113</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>113</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>113</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>113</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to field &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to field &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>117</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>117</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>117</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;setFieldToNull&apos;</string>
- <key>message</key>
- <string>Returning from &apos;setFieldToNull&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>117</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>117</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from field &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from field &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from field &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>7849ab11af99aee1e3603a24ae95cdfd</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testSetFieldToNull</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>119</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>112</integer>
- <integer>113</integer>
- <integer>116</integer>
- <integer>117</integer>
- <integer>119</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to field &apos;p&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to field &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>131</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from field &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from field &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from field &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>3ccb5e7e2cc82aba5c28a1cc873c83a1</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>132</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>130</integer>
- <integer>131</integer>
- <integer>132</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming pointer value is null</string>
- <key>message</key>
- <string>Assuming pointer value is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>137</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>19292468c6c6f83fbbdb2ff072bb2ae8</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test4</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>139</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>136</integer>
- <integer>137</integer>
- <integer>139</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;interestingCallee&apos;</string>
- <key>message</key>
- <string>Calling &apos;interestingCallee&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testBoringCalleeOfInterestingCallee&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testBoringCalleeOfInterestingCallee&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>146</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>The value 0 is assigned to &apos;x&apos;</string>
- <key>message</key>
- <string>The value 0 is assigned to &apos;x&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>147</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>148</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>148</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;interestingCallee&apos;</string>
- <key>message</key>
- <string>Returning from &apos;interestingCallee&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>fcd480c0f73d071bac6f908387893e26</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testBoringCalleeOfInterestingCallee</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>155</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>143</integer>
- <integer>146</integer>
- <integer>147</integer>
- <integer>148</integer>
- <integer>151</integer>
- <integer>152</integer>
- <integer>153</integer>
- <integer>155</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/inlining/path-notes.c</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/inlining/Inputs/expected-plists/path-notes.cpp.plist b/test/Analysis/inlining/Inputs/expected-plists/path-notes.cpp.plist
deleted file mode 100644
index f517d4dddbc6..000000000000
--- a/test/Analysis/inlining/Inputs/expected-plists/path-notes.cpp.plist
+++ /dev/null
@@ -1,5227 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;globalPtr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;globalPtr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>32</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>34</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;~Bar&apos;</string>
- <key>message</key>
- <string>Calling &apos;~Bar&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- <key>message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling constructor for &apos;Foo&apos;</string>
- <key>message</key>
- <string>Calling constructor for &apos;Foo&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;~Bar&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;~Bar&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>12</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- <key>message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>13</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Calling &apos;Foo::use&apos;</string>
- <key>message</key>
- <string>Calling &apos;Foo::use&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>3</integer>
- <key>extended_message</key>
- <string>Entered call from constructor for &apos;Foo&apos;</string>
- <key>message</key>
- <string>Entered call from constructor for &apos;Foo&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>7</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>3</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2bf06135909de50c70d8390e77bddf9e</string>
- <key>issue_context_kind</key><string>C++ method</string>
- <key>issue_context</key><string>use</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>8</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>7</integer>
- <integer>8</integer>
- <integer>12</integer>
- <integer>13</integer>
- <integer>21</integer>
- <integer>23</integer>
- <integer>24</integer>
- <integer>30</integer>
- <integer>31</integer>
- <integer>32</integer>
- <integer>34</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>44</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- <key>message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>46</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;method&apos;</string>
- <key>message</key>
- <string>Calling &apos;method&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testAnonymous&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testAnonymous&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>40</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>efde323086a985fe1e8ccc6cd0123c12</string>
- <key>issue_context_kind</key><string>C++ method</string>
- <key>issue_context</key><string>method</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>41</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>37</integer>
- <integer>38</integer>
- <integer>40</integer>
- <integer>41</integer>
- <integer>44</integer>
- <integer>46</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>110</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>110</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>110</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;globalPtr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;globalPtr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>110</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>110</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>112</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>112</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>112</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>112</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>112</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>112</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>112</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>112</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>112</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling implicit default constructor for &apos;Wrapper&apos;</string>
- <key>message</key>
- <string>Calling implicit default constructor for &apos;Wrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>112</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>112</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>112</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling default constructor for &apos;Dereferencer&apos;</string>
- <key>message</key>
- <string>Calling default constructor for &apos;Dereferencer&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from default constructor for &apos;Wrapper&apos;</string>
- <key>message</key>
- <string>Entered call from default constructor for &apos;Wrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>62</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8162ef7a27137328a4a7a131e8d52cbe</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>63</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>62</integer>
- <integer>63</integer>
- <integer>93</integer>
- <integer>109</integer>
- <integer>110</integer>
- <integer>112</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>118</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>118</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>118</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;globalPtr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;globalPtr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>118</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>118</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling implicit copy constructor for &apos;Wrapper&apos;</string>
- <key>message</key>
- <string>Calling implicit copy constructor for &apos;Wrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling copy constructor for &apos;Dereferencer&apos;</string>
- <key>message</key>
- <string>Calling copy constructor for &apos;Dereferencer&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from copy constructor for &apos;Wrapper&apos;</string>
- <key>message</key>
- <string>Entered call from copy constructor for &apos;Wrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>67</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>675157873c1414a885eb1f429b26f389</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>68</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>67</integer>
- <integer>68</integer>
- <integer>93</integer>
- <integer>117</integer>
- <integer>118</integer>
- <integer>120</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;globalPtr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;globalPtr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>126</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>128</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling defaulted move constructor for &apos;MovableWrapper&apos;</string>
- <key>message</key>
- <string>Calling defaulted move constructor for &apos;MovableWrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>102</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling move constructor for &apos;Dereferencer&apos;</string>
- <key>message</key>
- <string>Calling move constructor for &apos;Dereferencer&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from move constructor for &apos;MovableWrapper&apos;</string>
- <key>message</key>
- <string>Entered call from move constructor for &apos;MovableWrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>aff5e83726a1ce1144580e4c80bde47c</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>54</integer>
- <integer>55</integer>
- <integer>72</integer>
- <integer>73</integer>
- <integer>102</integer>
- <integer>125</integer>
- <integer>126</integer>
- <integer>128</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>133</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>133</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>134</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>134</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>134</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>134</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>134</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;globalPtr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;globalPtr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>134</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>134</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling implicit copy assignment operator for &apos;Wrapper&apos;</string>
- <key>message</key>
- <string>Calling implicit copy assignment operator for &apos;Wrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>136</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling copy assignment operator for &apos;Dereferencer&apos;</string>
- <key>message</key>
- <string>Calling copy assignment operator for &apos;Dereferencer&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from copy assignment operator for &apos;Wrapper&apos;</string>
- <key>message</key>
- <string>Entered call from copy assignment operator for &apos;Wrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>77</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>9484c73e190dfe4b8c6c5bdfad9700c1</string>
- <key>issue_context_kind</key><string>C++ method</string>
- <key>issue_context</key><string>operator=</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>78</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>62</integer>
- <integer>63</integer>
- <integer>77</integer>
- <integer>78</integer>
- <integer>93</integer>
- <integer>132</integer>
- <integer>133</integer>
- <integer>134</integer>
- <integer>136</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>142</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;globalPtr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;globalPtr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling defaulted move assignment operator for &apos;MovableWrapper&apos;</string>
- <key>message</key>
- <string>Calling defaulted move assignment operator for &apos;MovableWrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>63</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>63</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>63</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>63</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>105</integer>
- <key>col</key><integer>63</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling move assignment operator for &apos;Dereferencer&apos;</string>
- <key>message</key>
- <string>Calling move assignment operator for &apos;Dereferencer&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from move assignment operator for &apos;MovableWrapper&apos;</string>
- <key>message</key>
- <string>Entered call from move assignment operator for &apos;MovableWrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>82</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a0f0ac76cf282b61236bfac7eb2eca62</string>
- <key>issue_context_kind</key><string>C++ method</string>
- <key>issue_context</key><string>operator=</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>83</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>54</integer>
- <integer>55</integer>
- <integer>62</integer>
- <integer>63</integer>
- <integer>82</integer>
- <integer>83</integer>
- <integer>100</integer>
- <integer>105</integer>
- <integer>141</integer>
- <integer>142</integer>
- <integer>143</integer>
- <integer>145</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;globalPtr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;globalPtr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>151</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling implicit destructor for &apos;Wrapper&apos;</string>
- <key>message</key>
- <string>Calling implicit destructor for &apos;Wrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>93</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>153</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling &apos;~Dereferencer&apos;</string>
- <key>message</key>
- <string>Calling &apos;~Dereferencer&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from destructor for &apos;Wrapper&apos;</string>
- <key>message</key>
- <string>Entered call from destructor for &apos;Wrapper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>87</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;globalPtr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>74b213f52cad2a4cbfcc8c5766bdd974</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>62</integer>
- <integer>63</integer>
- <integer>87</integer>
- <integer>88</integer>
- <integer>93</integer>
- <integer>149</integer>
- <integer>150</integer>
- <integer>151</integer>
- <integer>153</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;getZero&apos;</string>
- <key>message</key>
- <string>Calling &apos;getZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>160</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning zero</string>
- <key>message</key>
- <string>Returning zero</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;getZero&apos;</string>
- <key>message</key>
- <string>Returning from &apos;getZero&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>29</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>0d5730cf85cea686ed80d788ab666603</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>173</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>159</integer>
- <integer>160</integer>
- <integer>172</integer>
- <integer>173</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;getZeroByRef&apos;</string>
- <key>message</key>
- <string>Calling &apos;getZeroByRef&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>164</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testRef&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testRef&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>164</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>164</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>165</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>165</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>165</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>165</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>The value 0 is assigned to &apos;zeroVar&apos;</string>
- <key>message</key>
- <string>The value 0 is assigned to &apos;zeroVar&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>166</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>168</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning zero (reference to &apos;zeroVar&apos;)</string>
- <key>message</key>
- <string>Returning zero (reference to &apos;zeroVar&apos;)</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;getZeroByRef&apos;</string>
- <key>message</key>
- <string>Returning from &apos;getZeroByRef&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>992e0f2917d29d0977d09ee64b3d10ef</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testRef</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>180</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>164</integer>
- <integer>165</integer>
- <integer>166</integer>
- <integer>168</integer>
- <integer>179</integer>
- <integer>180</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>188</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>188</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>188</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;x&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;x&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>188</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>188</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>190</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>190</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>190</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>190</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>190</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning null reference</string>
- <key>message</key>
- <string>Returning null reference</string>
- </dict>
- </array>
- <key>description</key><string>Returning null reference</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Returning null reference</string>
- <key>check_name</key><string>core.uninitialized.UndefReturn</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ece17cf25bc055cbc118d903744a00cf</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>returnNullReference</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>190</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>187</integer>
- <integer>188</integer>
- <integer>190</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- <key>message</key>
- <string>&apos;p&apos; initialized to a null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>203</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>205</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>205</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>205</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>205</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>205</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>205</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>205</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>205</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>205</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- <key>message</key>
- <string>Passing null pointer value via 1st parameter &apos;p&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>205</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>205</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>205</integer>
- <key>col</key><integer>24</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling constructor for &apos;FooWithInitializer&apos;</string>
- <key>message</key>
- <string>Calling constructor for &apos;FooWithInitializer&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testPathNoteOnInitializer&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testPathNoteOnInitializer&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;f.ptr&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;f.ptr&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>31</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>196</integer>
- <key>col</key><integer>33</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>197</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>197</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>197</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>197</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>197</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>197</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>197</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>197</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>197</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from field &apos;ptr&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from field &apos;ptr&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from field &apos;ptr&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>32677550226a34f422a4165a34f6a124</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>197</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>196</integer>
- <integer>197</integer>
- <integer>202</integer>
- <integer>203</integer>
- <integer>205</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>210</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>210</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>210</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;y&apos; initialized here</string>
- <key>message</key>
- <string>&apos;y&apos; initialized here</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>210</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>210</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Storing null pointer value</string>
- <key>message</key>
- <string>Storing null pointer value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>211</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>212</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>212</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>212</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>212</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>212</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>212</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>212</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>212</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>212</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;y&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;y&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;y&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>b5460cc5ca67af5b9f4943d7117f9bcf</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testNonPrintableAssignment</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>212</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>209</integer>
- <integer>210</integer>
- <integer>211</integer>
- <integer>212</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Null pointer value stored to &apos;d.x&apos;</string>
- <key>message</key>
- <string>Null pointer value stored to &apos;d.x&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>220</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from field &apos;x&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from field &apos;x&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from field &apos;x&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>749bda64658e48896477213e90176f5e</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>test</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>221</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>219</integer>
- <integer>220</integer>
- <integer>221</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming pointer value is null</string>
- <key>message</key>
- <string>Assuming pointer value is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>234</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>2f9098b97145118cf80f1c9f2b9f8a90</string>
- <key>issue_context_kind</key><string>C++ method</string>
- <key>issue_context</key><string>testGetDerefExprOnMemberExprWithADot</string>
- <key>issue_hash_function_offset</key><string>4</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>237</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>233</integer>
- <integer>234</integer>
- <integer>237</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>242</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>242</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>242</integer>
- <key>col</key><integer>21</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;arr&apos; declared without an initial value</string>
- <key>message</key>
- <string>&apos;arr&apos; declared without an initial value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>242</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>242</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>2</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of undefined pointer value</string>
- <key>message</key>
- <string>Dereference of undefined pointer value</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of undefined pointer value</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of undefined pointer value</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>41b38aba8763180af245befa02f63d61</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testGetDerefExprOnMemberExprWithADot</string>
- <key>issue_hash_function_offset</key><string>2</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>243</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>241</integer>
- <integer>242</integer>
- <integer>243</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;val&apos; initialized here</string>
- <key>message</key>
- <string>&apos;val&apos; initialized here</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>254</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>259</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>259</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>259</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>259</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>259</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>259</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>259</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>259</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>259</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming pointer value is null</string>
- <key>message</key>
- <string>Assuming pointer value is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>259</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>259</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Called C++ object pointer is null</string>
- <key>message</key>
- <string>Called C++ object pointer is null</string>
- </dict>
- </array>
- <key>description</key><string>Called C++ object pointer is null</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Called C++ object pointer is null</string>
- <key>check_name</key><string>core.CallAndMessage</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>8b577b362ffa5a7290d00d03635c1fca</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testDeclRefExprToReferenceInGetDerefExpr</string>
- <key>issue_hash_function_offset</key><string>8</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>261</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>253</integer>
- <integer>254</integer>
- <integer>259</integer>
- <integer>261</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>273</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>273</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>273</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>273</integer>
- <key>col</key><integer>38</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>273</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>273</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>273</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Passing the value 0 via 2nd parameter &apos;two&apos;</string>
- <key>message</key>
- <string>Passing the value 0 via 2nd parameter &apos;two&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>273</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>273</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>273</integer>
- <key>col</key><integer>41</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;generateNoteOnDefaultArgument&apos;</string>
- <key>message</key>
- <string>Calling &apos;generateNoteOnDefaultArgument&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>268</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;callGenerateNoteOnDefaultArgument&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;callGenerateNoteOnDefaultArgument&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>268</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>268</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>269</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>269</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>269</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>269</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>269</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>f7fcdbc77cfb95588c0e5b606288013d</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>generateNoteOnDefaultArgument</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>269</integer>
- <key>col</key><integer>13</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>268</integer>
- <integer>269</integer>
- <integer>272</integer>
- <integer>273</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>296</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>296</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>296</integer>
- <key>col</key><integer>16</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;~Outer&apos;</string>
- <key>message</key>
- <string>Calling &apos;~Outer&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>289</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;test&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;test&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>289</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>289</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>290</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>290</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>290</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>290</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>290</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling &apos;~Inner&apos;</string>
- <key>message</key>
- <string>Calling &apos;~Inner&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;~Outer&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;~Outer&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>280</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>281</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>281</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>281</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>281</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>281</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>281</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>281</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>281</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>281</integer>
- <key>col</key><integer>28</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>ff61a6b893cd2d64c7ccaa2a9805311d</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>281</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>280</integer>
- <integer>281</integer>
- <integer>289</integer>
- <integer>290</integer>
- <integer>295</integer>
- <integer>296</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/inlining/path-notes.cpp</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/inlining/Inputs/expected-plists/path-notes.m.plist b/test/Analysis/inlining/Inputs/expected-plists/path-notes.m.plist
deleted file mode 100644
index 1974e7ab2541..000000000000
--- a/test/Analysis/inlining/Inputs/expected-plists/path-notes.m.plist
+++ /dev/null
@@ -1,2001 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>clang_version</key>
-<string>clang version 8.0.0 </string>
- <key>diagnostics</key>
- <array>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Passing nil object reference via 1st parameter &apos;x&apos;</string>
- <key>message</key>
- <string>Passing nil object reference via 1st parameter &apos;x&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>17</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;getZeroIfNil&apos;</string>
- <key>message</key>
- <string>Calling &apos;getZeroIfNil&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testReturnZeroIfNil&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testReturnZeroIfNil&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>72</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>&apos;p&apos; not called because the receiver is nil</string>
- <key>message</key>
- <string>&apos;p&apos; not called because the receiver is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>73</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning null pointer</string>
- <key>message</key>
- <string>Returning null pointer</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;getZeroIfNil&apos;</string>
- <key>message</key>
- <string>Returning from &apos;getZeroIfNil&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>22</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer</string>
- <key>message</key>
- <string>Dereference of null pointer</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>24947a6942bfa6030ab81e53a201d816</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testReturnZeroIfNil</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>79</integer>
- <key>col</key><integer>20</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>72</integer>
- <integer>73</integer>
- <integer>78</integer>
- <integer>79</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>88</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>99</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;dispatch_sync&apos;</string>
- <key>message</key>
- <string>Calling &apos;dispatch_sync&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>99</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;dispatch_sync&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;dispatch_sync&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>97</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>The value 0 is assigned to &apos;x&apos;</string>
- <key>message</key>
- <string>The value 0 is assigned to &apos;x&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>99</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Returning to caller</string>
- <key>message</key>
- <string>Returning to caller</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>99</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Returning from &apos;dispatch_sync&apos;</string>
- <key>message</key>
- <string>Returning from &apos;dispatch_sync&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>94</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>14</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Division by zero</string>
- <key>message</key>
- <string>Division by zero</string>
- </dict>
- </array>
- <key>description</key><string>Division by zero</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Division by zero</string>
- <key>check_name</key><string>core.DivideZero</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>fd12d9853f5c0f7398305ff4047f4848</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testDispatchSyncInlining</string>
- <key>issue_hash_function_offset</key><string>14</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>101</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>7</integer>
- <integer>87</integer>
- <integer>88</integer>
- <integer>90</integer>
- <integer>94</integer>
- <integer>97</integer>
- <integer>101</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>109</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>109</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>15</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;dispatch_sync&apos;</string>
- <key>message</key>
- <string>Calling &apos;dispatch_sync&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>120</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;dispatch_sync&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;dispatch_sync&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>114</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>&apos;x&apos; declared without an initial value</string>
- <key>message</key>
- <string>&apos;x&apos; declared without an initial value</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>116</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>118</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>118</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>118</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>118</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>118</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Variable &apos;x&apos; is uninitialized when captured by block</string>
- <key>message</key>
- <string>Variable &apos;x&apos; is uninitialized when captured by block</string>
- </dict>
- </array>
- <key>description</key><string>Variable &apos;x&apos; is uninitialized when captured by block</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>uninitialized variable captured by block</string>
- <key>check_name</key><string>core.uninitialized.CapturedBlockVariable</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>6763f0438bcb4337c8f8c9863b35b8c1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>118</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>7</integer>
- <integer>105</integer>
- <integer>109</integer>
- <integer>111</integer>
- <integer>114</integer>
- <integer>116</integer>
- <integer>118</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>143</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming pointer value is null</string>
- <key>message</key>
- <string>Assuming pointer value is null</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>145</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming the condition is false</string>
- <key>message</key>
- <string>Assuming the condition is false</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>150</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>27</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>&apos;getPtr&apos; not called because the receiver is nil</string>
- <key>message</key>
- <string>&apos;getPtr&apos; not called because the receiver is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>35</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Passing null pointer value via 1st parameter &apos;x&apos;</string>
- <key>message</key>
- <string>Passing null pointer value via 1st parameter &apos;x&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>25</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>152</integer>
- <key>col</key><integer>36</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Calling &apos;testNilReceiverHelper&apos;</string>
- <key>message</key>
- <string>Calling &apos;testNilReceiverHelper&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>134</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Entered call from &apos;testNilReceiver&apos;</string>
- <key>message</key>
- <string>Entered call from &apos;testNilReceiver&apos;</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>134</integer>
- <key>col</key><integer>1</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>134</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Dereference of null pointer (loaded from variable &apos;x&apos;)</string>
- <key>message</key>
- <string>Dereference of null pointer (loaded from variable &apos;x&apos;)</string>
- </dict>
- </array>
- <key>description</key><string>Dereference of null pointer (loaded from variable &apos;x&apos;)</string>
- <key>category</key><string>Logic error</string>
- <key>type</key><string>Dereference of null pointer</string>
- <key>check_name</key><string>core.NullDereference</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>d32b4cd912950f7b38ae28dbf29d9e63</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testNilReceiverHelper</string>
- <key>issue_hash_function_offset</key><string>1</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>135</integer>
- <key>col</key><integer>6</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>134</integer>
- <integer>135</integer>
- <integer>139</integer>
- <integer>143</integer>
- <integer>145</integer>
- <integer>150</integer>
- <integer>152</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Assuming &apos;myNil&apos; is nil</string>
- <key>message</key>
- <string>Assuming &apos;myNil&apos; is nil</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>7</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>159</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>19</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>23</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Array element cannot be nil</string>
- <key>message</key>
- <string>Array element cannot be nil</string>
- </dict>
- </array>
- <key>description</key><string>Array element cannot be nil</string>
- <key>category</key><string>API Misuse (Apple)</string>
- <key>type</key><string>nil argument</string>
- <key>check_name</key><string>osx.cocoa.NilArg</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a90589ba5d063fbfecc615bf06f84f5a</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testCreateArrayLiteral</string>
- <key>issue_hash_function_offset</key><string>3</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>161</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>158</integer>
- <integer>159</integer>
- <integer>161</integer>
- </array>
- </dict>
- </dict>
- <dict>
- <key>path</key>
- <array>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>167</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>167</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Method returns an instance of NSObject with a +1 retain count</string>
- <key>message</key>
- <string>Method returns an instance of NSObject with a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>11</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>47</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <array>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>34</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object autoreleased</string>
- <key>message</key>
- <string>Object autoreleased</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>170</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- <key>end</key>
- <array>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>8</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>10</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>Object was autoreleased 2 times but the object has a +0 retain count</string>
- <key>message</key>
- <string>Object was autoreleased 2 times but the object has a +0 retain count</string>
- </dict>
- </array>
- <key>description</key><string>Object autoreleased too many times</string>
- <key>category</key><string>Memory (Core Foundation/Objective-C/OSObject)</string>
- <key>type</key><string>Object autoreleased too many times</string>
- <key>check_name</key><string>osx.cocoa.RetainCount</string>
- <!-- This hash is experimental and going to change! -->
- <key>issue_hash_content_of_line_in_context</key><string>a3c91a7a52619d81ebe032dcc49ebb93</string>
- <key>issue_context_kind</key><string>function</string>
- <key>issue_context</key><string>testAutoreleaseTakesEffectInDispatch</string>
- <key>issue_hash_function_offset</key><string>11</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>177</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ExecutedLines</key>
- <dict>
- <key>0</key>
- <array>
- <integer>13</integer>
- <integer>166</integer>
- <integer>167</integer>
- <integer>168</integer>
- <integer>170</integer>
- <integer>175</integer>
- <integer>177</integer>
- </array>
- </dict>
- </dict>
- </array>
- <key>files</key>
- <array>
- <string>/clang/test/Analysis/inlining/path-notes.m</string>
- </array>
-</dict>
-</plist>
diff --git a/test/Analysis/inlining/ObjCDynTypePopagation.m b/test/Analysis/inlining/ObjCDynTypePopagation.m
deleted file mode 100644
index 0c1d4f2a31cb..000000000000
--- a/test/Analysis/inlining/ObjCDynTypePopagation.m
+++ /dev/null
@@ -1,101 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=dynamic-bifurcate -verify %s
-
-#include "InlineObjCInstanceMethod.h"
-
-void clang_analyzer_eval(int);
-
-PublicSubClass2 *getObj();
-
-@implementation PublicParent
-- (int) getZeroOverridden {
- return 1;
-}
-- (int) getZero {
- return 0;
-}
-@end
-
-@implementation PublicSubClass2
-- (int) getZeroOverridden {
- return 0;
-}
-
-/* Test that we get the right type from call to alloc. */
-+ (void) testAllocSelf {
- id a = [self alloc];
- clang_analyzer_eval([a getZeroOverridden] == 0); // expected-warning{{TRUE}}
-}
-
-
-+ (void) testAllocClass {
- id a = [PublicSubClass2 alloc];
- clang_analyzer_eval([a getZeroOverridden] == 0); // expected-warning{{TRUE}}
-}
-
-+ (void) testAllocSuperOverriden {
- id a = [super alloc];
- // Evaluates to 1 in the parent.
- clang_analyzer_eval([a getZeroOverridden] == 0); // expected-warning{{FALSE}}
-}
-
-+ (void) testAllocSuper {
- id a = [super alloc];
- clang_analyzer_eval([a getZero] == 0); // expected-warning{{TRUE}}
-}
-
-+ (void) testAllocInit {
- id a = [[self alloc] init];
- clang_analyzer_eval([a getZeroOverridden] == 0); // expected-warning{{TRUE}}
-}
-
-+ (void) testNewSelf {
- id a = [self new];
- clang_analyzer_eval([a getZeroOverridden] == 0); // expected-warning{{TRUE}}
-}
-
-// Casting to parent should not pessimize the dynamic type.
-+ (void) testCastToParent {
- id a = [[self alloc] init];
- PublicParent *p = a;
- clang_analyzer_eval([p getZeroOverridden] == 0); // expected-warning{{TRUE}}
-}
-
-// The type of parameter gets used.
-+ (void)testTypeFromParam:(PublicParent*) p {
- clang_analyzer_eval([p getZero] == 0); // expected-warning{{TRUE}}
-}
-
-// Test implicit cast.
-// Note, in this case, p could also be a subclass of MyParent.
-+ (void) testCastFromId:(id) a {
- PublicParent *p = a;
- clang_analyzer_eval([p getZero] == 0); // expected-warning{{TRUE}}
-}
-@end
-
-// TODO: Would be nice to handle the case of dynamically obtained class info
-// as well. We need a MemRegion for class types for this.
-int testDynamicClass(BOOL coin) {
- Class AllocClass = (coin ? [NSObject class] : [PublicSubClass2 class]);
- id x = [[AllocClass alloc] init];
- if (coin)
- return [x getZero];
- return 1;
-}
-
-@interface UserClass : NSObject
-- (PublicSubClass2 *) _newPublicSubClass2;
-- (int) getZero;
-- (void) callNew;
-@end
-
-@implementation UserClass
-- (PublicSubClass2 *) _newPublicSubClass2 {
- return [[PublicSubClass2 alloc] init];
-}
-- (int) getZero { return 5; }
-- (void) callNew {
- PublicSubClass2 *x = [self _newPublicSubClass2];
- clang_analyzer_eval([x getZero] == 0); //expected-warning{{TRUE}}
-}
-@end \ No newline at end of file
diff --git a/test/Analysis/inlining/ObjCImproperDynamictallyDetectableCast.m b/test/Analysis/inlining/ObjCImproperDynamictallyDetectableCast.m
deleted file mode 100644
index d787c7e9e17b..000000000000
--- a/test/Analysis/inlining/ObjCImproperDynamictallyDetectableCast.m
+++ /dev/null
@@ -1,37 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=dynamic-bifurcate -verify %s
-
-typedef signed char BOOL;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
-+(id)new;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
-@end
-void clang_analyzer_eval(BOOL);
-
-@interface SomeOtherClass : NSObject
-- (int)getZero;
-@end
-@implementation SomeOtherClass
-- (int)getZero { return 0; }
-@end
-
-@interface MyClass : NSObject
-- (int)getZero;
-@end
-
-@implementation MyClass
-- (int)getZero { return 1; }
-
-// TODO: Not only we should correctly determine that the type of o at runtime
-// is MyClass, but we should also warn about it.
-+ (void) testCastToParent {
- id a = [[self alloc] init];
- SomeOtherClass *o = a;
- clang_analyzer_eval([o getZero] == 0); // expected-warning{{FALSE}}
-}
-@end
diff --git a/test/Analysis/inlining/RetainCountExamples.m b/test/Analysis/inlining/RetainCountExamples.m
deleted file mode 100644
index 938d3e2bfb62..000000000000
--- a/test/Analysis/inlining/RetainCountExamples.m
+++ /dev/null
@@ -1,127 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-config ipa=dynamic-bifurcate -verify %s
-
-typedef signed char BOOL;
-typedef struct objc_class *Class;
-typedef struct objc_object {
- Class isa;
-} *id;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
-- (oneway void)release;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
-- (oneway void)release;
-@end
-
-@interface SelfStaysLive : NSObject
-- (id)init;
-@end
-
-@implementation SelfStaysLive
-- (id)init {
- return [super init];
-}
-@end
-
-void selfStaysLive() {
- SelfStaysLive *foo = [[SelfStaysLive alloc] init];
- [foo release];
-}
-
-// Test that retain release checker warns on leaks and use-after-frees when
-// self init is not enabled.
-// radar://12115830
-@interface ParentOfCell : NSObject
-- (id)initWithInt: (int)inInt;
-@end
-@interface Cell : ParentOfCell{
- int x;
-}
-- (id)initWithInt: (int)inInt;
-+ (void)testOverRelease;
-+ (void)testLeak;
-@property int x;
-@end
-@implementation Cell
-@synthesize x;
-- (id) initWithInt: (int)inInt {
- [super initWithInt: inInt];
- self.x = inInt; // no-warning
- return self; // Self Init checker would produce a warning here.
-}
-+ (void) testOverRelease {
- Cell *sharedCell3 = [[Cell alloc] initWithInt: 3];
- [sharedCell3 release];
- [sharedCell3 release]; // expected-warning {{Reference-counted object is used after it is released}}
-}
-+ (void) testLeak {
- Cell *sharedCell4 = [[Cell alloc] initWithInt: 3]; // expected-warning {{leak}}
-}
-@end
-
-// We should stop tracking some objects even when we inline the call.
-// Specialically, the objects passed into calls with delegate and callback
-// parameters.
-@class DelegateTest;
-typedef void (*ReleaseCallbackTy) (DelegateTest *c);
-
-@interface Delegate : NSObject
-@end
-
-@interface DelegateTest : NSObject {
- Delegate *myDel;
-}
-// Object initialized with a delagate which could potentially release it.
-- (id)initWithDelegate: (id) d;
-
-- (void) setDelegate: (id) d;
-
-// Releases object through callback.
-+ (void)updateObject:(DelegateTest*)obj WithCallback:(ReleaseCallbackTy)rc;
-
-+ (void)test: (Delegate *)d;
-
-@property (assign) Delegate* myDel;
-@end
-
-void releaseObj(DelegateTest *c);
-
-// Releases object through callback.
-void updateObject(DelegateTest *c, ReleaseCallbackTy rel) {
- rel(c);
-}
-
-@implementation DelegateTest
-@synthesize myDel;
-
-- (id) initWithDelegate: (id) d {
- if ((self = [super init]))
- myDel = d;
- return self;
-}
-
-- (void) setDelegate: (id) d {
- myDel = d;
-}
-
-+ (void)updateObject:(DelegateTest*)obj WithCallback:(ReleaseCallbackTy)rc {
- rc(obj);
-}
-
-+ (void) test: (Delegate *)d {
- DelegateTest *obj1 = [[DelegateTest alloc] initWithDelegate: d]; // no-warning
- DelegateTest *obj2 = [[DelegateTest alloc] init]; // no-warning
- DelegateTest *obj3 = [[DelegateTest alloc] init]; // no-warning
- updateObject(obj2, releaseObj);
- [DelegateTest updateObject: obj3
- WithCallback: releaseObj];
- DelegateTest *obj4 = [[DelegateTest alloc] init]; // no-warning
- [obj4 setDelegate: d];
-}
-@end
-
diff --git a/test/Analysis/inlining/analysis-order.c b/test/Analysis/inlining/analysis-order.c
deleted file mode 100644
index 620732c68542..000000000000
--- a/test/Analysis/inlining/analysis-order.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core.builtin.NoReturnFunctions -analyzer-display-progress %s 2>&1 | FileCheck %s
-
-// Do not analyze test1() again because it was inlined
-void test1();
-
-void test2() {
- test1();
-}
-
-void test1() {
-}
-
-// CHECK: analysis-order.c test2
-// CHECK-NEXT: analysis-order.c test1
-// CHECK-NEXT: analysis-order.c test2
diff --git a/test/Analysis/inlining/assume-super-init-does-not-return-nil.m b/test/Analysis/inlining/assume-super-init-does-not-return-nil.m
deleted file mode 100644
index be46776b37d4..000000000000
--- a/test/Analysis/inlining/assume-super-init-does-not-return-nil.m
+++ /dev/null
@@ -1,41 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx -verify %s
-
-typedef signed char BOOL;
-
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
-- (oneway void)release;
-@end
-
-@interface Cell : NSObject {
- int x;
-}
-- (id) init;
-- (void)test;
-@end
-
-@implementation Cell
-- (id) init {
- if ((self = [super init])) {
- return self;
- }
- // Test that this is being analyzed.
- int m;
- m = m + 1; //expected-warning {{The left operand of '+' is a garbage value}}
- return self;
-}
-
-// Make sure that we do not propagate the 'nil' check from inlined 'init' to 'test'.
-- (void) test {
- Cell *newCell = [[Cell alloc] init];
- newCell->x = 5; // no-warning
- [newCell release];
-}
-@end
diff --git a/test/Analysis/inlining/containers.cpp b/test/Analysis/inlining/containers.cpp
deleted file mode 100644
index e88787c08311..000000000000
--- a/test/Analysis/inlining/containers.cpp
+++ /dev/null
@@ -1,273 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config c++-inlining=destructors -analyzer-config c++-container-inlining=false -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config c++-inlining=destructors -analyzer-config c++-container-inlining=true -DINLINE=1 -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config c++-inlining=destructors -analyzer-config c++-container-inlining=false -DTEST_INLINABLE_ALLOCATORS -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config c++-inlining=destructors -analyzer-config c++-container-inlining=true -DTEST_INLINABLE_ALLOCATORS -DINLINE=1 -verify -analyzer-config eagerly-assume=false %s
-
-#ifndef HEADER
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_checkInlined(bool);
-
-#define HEADER
-#include "containers.cpp"
-#undef HEADER
-
-void test() {
- MySet set(0);
-
- clang_analyzer_eval(set.isEmpty());
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#else
- // expected-warning@-4 {{UNKNOWN}}
-#endif
-
- clang_analyzer_eval(set.raw_begin() == set.raw_end());
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#else
- // expected-warning@-4 {{UNKNOWN}}
-#endif
-
- clang_analyzer_eval(set.begin().impl == set.end().impl);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#else
- // expected-warning@-4 {{UNKNOWN}}
-#endif
-}
-
-void testSubclass(MySetSubclass &sub) {
- sub.useIterator(sub.begin());
-
- MySetSubclass local;
-}
-
-void testWrappers(BeginOnlySet &w1, IteratorStructOnlySet &w2,
- IteratorTypedefOnlySet &w3, IteratorUsingOnlySet &w4) {
- BeginOnlySet local1;
- IteratorStructOnlySet local2;
- IteratorTypedefOnlySet local3;
- IteratorUsingOnlySet local4;
-
- clang_analyzer_eval(w1.begin().impl.impl == w1.begin().impl.impl);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#else
- // expected-warning@-4 {{UNKNOWN}}
-#endif
-
- clang_analyzer_eval(w2.start().impl == w2.start().impl);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#else
- // expected-warning@-4 {{UNKNOWN}}
-#endif
-
- clang_analyzer_eval(w3.start().impl == w3.start().impl);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#else
- // expected-warning@-4 {{UNKNOWN}}
-#endif
-
- clang_analyzer_eval(w4.start().impl == w4.start().impl);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#else
- // expected-warning@-4 {{UNKNOWN}}
-#endif
-}
-
-
-#else // HEADER
-
-#include "../Inputs/system-header-simulator-cxx.h"
-
-class MySet {
- int *storage;
- unsigned size;
-public:
- MySet() : storage(0), size(0) {
- clang_analyzer_checkInlined(true);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#endif
- }
-
- MySet(unsigned n) : storage(new int[n]), size(n) {
- clang_analyzer_checkInlined(true);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#endif
- }
-
- ~MySet() { delete[] storage; }
-
- bool isEmpty() {
- clang_analyzer_checkInlined(true);
- #if INLINE
- // expected-warning@-2 {{TRUE}}
- #endif
- return size == 0;
- }
-
- struct iterator {
- int *impl;
-
- iterator(int *p) : impl(p) {}
- };
-
- iterator begin() {
- clang_analyzer_checkInlined(true);
- #if INLINE
- // expected-warning@-2 {{TRUE}}
- #endif
- return iterator(storage);
- }
-
- iterator end() {
- clang_analyzer_checkInlined(true);
- #if INLINE
- // expected-warning@-2 {{TRUE}}
- #endif
- return iterator(storage+size);
- }
-
- typedef int *raw_iterator;
-
- raw_iterator raw_begin() {
- clang_analyzer_checkInlined(true);
- #if INLINE
- // expected-warning@-2 {{TRUE}}
- #endif
- return storage;
- }
- raw_iterator raw_end() {
- clang_analyzer_checkInlined(true);
- #if INLINE
- // expected-warning@-2 {{TRUE}}
- #endif
- return storage + size;
- }
-};
-
-class MySetSubclass : public MySet {
-public:
- MySetSubclass() {
- clang_analyzer_checkInlined(true);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#endif
- }
-
- void useIterator(iterator i) {
- clang_analyzer_checkInlined(true);
- #if INLINE
- // expected-warning@-2 {{TRUE}}
- #endif
- }
-};
-
-class BeginOnlySet {
- MySet impl;
-public:
- struct IterImpl {
- MySet::iterator impl;
- typedef std::forward_iterator_tag iterator_category;
-
- IterImpl(MySet::iterator i) : impl(i) {
- clang_analyzer_checkInlined(true);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#endif
- }
- };
-
- BeginOnlySet() {
- clang_analyzer_checkInlined(true);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#endif
- }
-
- typedef IterImpl wrapped_iterator;
-
- wrapped_iterator begin() {
- clang_analyzer_checkInlined(true);
- #if INLINE
- // expected-warning@-2 {{TRUE}}
- #endif
- return IterImpl(impl.begin());
- }
-};
-
-class IteratorTypedefOnlySet {
- MySet impl;
-public:
-
- IteratorTypedefOnlySet() {
- clang_analyzer_checkInlined(true);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#endif
- }
-
- typedef MySet::iterator iterator;
-
- iterator start() {
- clang_analyzer_checkInlined(true);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#endif
- return impl.begin();
- }
-};
-
-class IteratorUsingOnlySet {
- MySet impl;
-public:
-
- IteratorUsingOnlySet() {
- clang_analyzer_checkInlined(true);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#endif
- }
-
- using iterator = MySet::iterator;
-
- iterator start() {
- clang_analyzer_checkInlined(true);
- #if INLINE
- // expected-warning@-2 {{TRUE}}
- #endif
- return impl.begin();
- }
-};
-
-class IteratorStructOnlySet {
- MySet impl;
-public:
-
- IteratorStructOnlySet() {
- clang_analyzer_checkInlined(true);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#endif
- }
-
- struct iterator {
- int *impl;
- };
-
- iterator start() {
- clang_analyzer_checkInlined(true);
- #if INLINE
- // expected-warning@-2 {{TRUE}}
- #endif
- return iterator{impl.begin().impl};
- }
-};
-
-#endif // HEADER
diff --git a/test/Analysis/inlining/dyn-dispatch-bifurcate.cpp b/test/Analysis/inlining/dyn-dispatch-bifurcate.cpp
deleted file mode 100644
index 531fc3485450..000000000000
--- a/test/Analysis/inlining/dyn-dispatch-bifurcate.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=dynamic-bifurcate -verify -Wno-reinterpret-base-class -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(bool);
-
-class A {
-public:
- virtual int get() { return 0; }
-};
-
-void testBifurcation(A *a) {
- clang_analyzer_eval(a->get() == 0); // expected-warning{{TRUE}} expected-warning{{UNKNOWN}}
-}
-
-void testKnown() {
- A a;
- clang_analyzer_eval(a.get() == 0); // expected-warning{{TRUE}}
-}
-
-void testNew() {
- A *a = new A();
- clang_analyzer_eval(a->get() == 0); // expected-warning{{TRUE}}
-}
-
-
-namespace ReinterpretDisruptsDynamicTypeInfo {
- class Parent {};
-
- class Child : public Parent {
- public:
- virtual int foo() { return 42; }
- };
-
- void test(Parent *a) {
- Child *b = reinterpret_cast<Child *>(a);
- if (!b) return;
- clang_analyzer_eval(b->foo() == 42); // expected-warning{{UNKNOWN}}
- }
-}
diff --git a/test/Analysis/inlining/eager-reclamation-path-notes.c b/test/Analysis/inlining/eager-reclamation-path-notes.c
deleted file mode 100644
index 8dfd14dd34dd..000000000000
--- a/test/Analysis/inlining/eager-reclamation-path-notes.c
+++ /dev/null
@@ -1,45 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -analyzer-config graph-trim-interval=5 -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=plist-multi-file -analyzer-config graph-trim-interval=5 %s -o %t.plist
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/eager-reclamation-path-notes.c.plist -
-
-void use(int *ptr, int val) {
- *ptr = val; // expected-warning {{Dereference of null pointer (loaded from variable 'ptr')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'ptr')}}
-}
-
-int compute() {
- // Do something that will take enough processing to trigger trimming.
- // FIXME: This is actually really sensitive. If the interval timing is just
- // wrong, the node for the actual dereference may also be collected, and all
- // the path notes will disappear. <rdar://problem/12511814>
- return 2 + 3 + 4 + 5 + 6;
-}
-
-void testSimple() {
- int *p = 0;
- // expected-note@-1 {{'p' initialized to a null pointer value}}
- use(p, compute());
- // expected-note@-1 {{Passing null pointer value via 1st parameter 'ptr'}}
- // expected-note@-2 {{Calling 'use'}}
-}
-
-
-void use2(int *ptr, int val) {
- *ptr = val; // expected-warning {{Dereference of null pointer (loaded from variable 'ptr')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'ptr')}}
-}
-
-void passThrough(int *p) {
- use2(p, compute());
- // expected-note@-1 {{Passing null pointer value via 1st parameter 'ptr'}}
- // expected-note@-2 {{Calling 'use2'}}
-}
-
-void testChainedCalls() {
- int *ptr = 0;
- // expected-note@-1 {{'ptr' initialized to a null pointer value}}
- passThrough(ptr);
- // expected-note@-1 {{Passing null pointer value via 1st parameter 'p'}}
- // expected-note@-2 {{Calling 'passThrough'}}
-}
-
diff --git a/test/Analysis/inlining/eager-reclamation-path-notes.cpp b/test/Analysis/inlining/eager-reclamation-path-notes.cpp
deleted file mode 100644
index 7cbda91b6573..000000000000
--- a/test/Analysis/inlining/eager-reclamation-path-notes.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -analyzer-config graph-trim-interval=5 -analyzer-config suppress-null-return-paths=false -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=plist-multi-file -analyzer-config graph-trim-interval=5 -analyzer-config suppress-null-return-paths=false %s -o %t.plist
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/eager-reclamation-path-notes.cpp.plist -
-
-typedef struct {
- int getValue();
-} IntWrapper;
-
-IntWrapper *getNullWrapper() {
- return 0;
- // expected-note@-1 {{Returning null pointer}}
-}
-
-int memberCallBaseDisappears() {
- // In this case, we need the lvalue-to-rvalue cast for 'ptr' to disappear,
- // which means we need to trigger reclamation between that and the ->
- // operator.
- //
- // Note that this test is EXTREMELY brittle because it's a negative test:
- // we want to show that even if the node for the rvalue of 'ptr' disappears,
- // we get the same results as if it doesn't. The test should never fail even
- // if our node reclamation policy changes, but it could easily not be testing
- // anything at that point.
- IntWrapper *ptr = getNullWrapper();
- // expected-note@-1 {{Calling 'getNullWrapper'}}
- // expected-note@-2 {{Returning from 'getNullWrapper'}}
- // expected-note@-3 {{'ptr' initialized to a null pointer value}}
-
- // Burn some nodes to trigger reclamation.
- int unused = 1;
- (void)unused;
-
- return ptr->getValue(); // expected-warning {{Called C++ object pointer is null}}
- // expected-note@-1 {{Called C++ object pointer is null}}
-}
-
diff --git a/test/Analysis/inlining/false-positive-suppression.c b/test/Analysis/inlining/false-positive-suppression.c
deleted file mode 100644
index e060eb1d1e88..000000000000
--- a/test/Analysis/inlining/false-positive-suppression.c
+++ /dev/null
@@ -1,384 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-config suppress-null-return-paths=false -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify -DSUPPRESSED=1 %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-config avoid-suppressing-null-argument-paths=true -DSUPPRESSED=1 -DNULL_ARGS=1 -verify %s
-
-int opaquePropertyCheck(void *object);
-int coin();
-
-int *getNull() {
- return 0;
-}
-
-int* getPtr();
-
-int *dynCastToInt(void *ptr) {
- if (opaquePropertyCheck(ptr))
- return (int *)ptr;
- return 0;
-}
-
-int *dynCastOrNull(void *ptr) {
- if (!ptr)
- return 0;
- if (opaquePropertyCheck(ptr))
- return (int *)ptr;
- return 0;
-}
-
-
-void testDynCast(void *p) {
- int *casted = dynCastToInt(p);
- *casted = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-void testDynCastOrNull(void *p) {
- int *casted = dynCastOrNull(p);
- *casted = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-
-void testBranch(void *p) {
- int *casted;
-
- // Although the report will be suppressed on one branch, it should still be
- // valid on the other.
- if (coin()) {
- casted = dynCastToInt(p);
- } else {
- if (p)
- return;
- casted = (int *)p;
- }
-
- *casted = 1; // expected-warning {{Dereference of null pointer}}
-}
-
-void testBranchReversed(void *p) {
- int *casted;
-
- // Although the report will be suppressed on one branch, it should still be
- // valid on the other.
- if (coin()) {
- if (p)
- return;
- casted = (int *)p;
- } else {
- casted = dynCastToInt(p);
- }
-
- *casted = 1; // expected-warning {{Dereference of null pointer}}
-}
-
-void testMultipleStore(void *p) {
- int *casted = 0;
- casted = dynCastToInt(p);
- *casted = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-// Test that div by zero does not get suppressed. This is a policy choice.
-int retZero() {
- return 0;
-}
-int triggerDivZero () {
- int y = retZero();
- return 5/y; // expected-warning {{Division by zero}}
-}
-
-// Treat a function-like macro similarly to an inlined function, so suppress
-// warnings along paths resulting from inlined checks.
-#define MACRO_WITH_CHECK(a) ( ((a) != 0) ? *a : 17)
-void testInlineCheckInMacro(int *p) {
- int i = MACRO_WITH_CHECK(p);
- (void)i;
-
- *p = 1; // no-warning
-}
-
-#define MACRO_WITH_NESTED_CHECK(a) ( { int j = MACRO_WITH_CHECK(a); j; } )
-void testInlineCheckInNestedMacro(int *p) {
- int i = MACRO_WITH_NESTED_CHECK(p);
- (void)i;
-
- *p = 1; // no-warning
-}
-
-#define NON_FUNCTION_MACRO_WITH_CHECK ( ((p) != 0) ? *p : 17)
-void testNonFunctionMacro(int *p) {
- int i = NON_FUNCTION_MACRO_WITH_CHECK ;
- (void)i;
-
- *p = 1; // no-warning
-}
-
-
-// This macro will dereference its argument if the argument is NULL.
-#define MACRO_WITH_ERROR(a) ( ((a) != 0) ? 0 : *a)
-void testErrorInMacro(int *p) {
- int i = MACRO_WITH_ERROR(p); // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}
- (void)i;
-}
-
-// Here the check (the "if") is not in a macro, so we should still warn.
-#define MACRO_IN_GUARD(a) (!(a))
-void testMacroUsedAsGuard(int *p) {
- if (MACRO_IN_GUARD(p))
- *p = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}
-}
-
-// When a nil case split is introduced in a macro and the macro is in a guard,
-// we still shouldn't warn.
-int isNull(int *p);
-int isEqual(int *p, int *q);
-#define ISNULL(ptr) ((ptr) == 0 || isNull(ptr))
-#define ISEQUAL(a, b) ((int *)(a) == (int *)(b) || (ISNULL(a) && ISNULL(b)) || isEqual(a,b))
-#define ISNOTEQUAL(a, b) (!ISEQUAL(a, b))
-void testNestedDisjunctiveMacro(int *p, int *q) {
- if (ISNOTEQUAL(p,q)) {
- *p = 1; // no-warning
- *q = 1; // no-warning
- }
-
- *p = 1; // no-warning
- *q = 1; // no-warning
-}
-
-void testNestedDisjunctiveMacro2(int *p, int *q) {
- if (ISEQUAL(p,q)) {
- return;
- }
-
- *p = 1; // no-warning
- *q = 1; // no-warning
-}
-
-
-
-// Here the check is entirely in non-macro code even though the code itself
-// is a macro argument.
-#define MACRO_DO_IT(a) (a)
-void testErrorInArgument(int *p) {
- int i = MACRO_DO_IT((p ? 0 : *p)); // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}c
- (void)i;
-}
-
-// No warning should be emitted if dereference is performed from a different
-// macro.
-#define MACRO_CHECK(a) if (a) {}
-#define MACRO_DEREF(a) (*a)
-int testDifferentMacro(int *p) {
- MACRO_CHECK(p);
- return MACRO_DEREF(p); // no-warning
-}
-
-// --------------------------
-// "Suppression suppression"
-// --------------------------
-
-void testDynCastOrNullOfNull() {
- // Don't suppress when one of the arguments is NULL.
- int *casted = dynCastOrNull(0);
- *casted = 1;
-#if !SUPPRESSED || NULL_ARGS
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-void testDynCastOfNull() {
- // Don't suppress when one of the arguments is NULL.
- int *casted = dynCastToInt(0);
- *casted = 1;
-#if !SUPPRESSED || NULL_ARGS
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-int *lookUpInt(int unused) {
- if (coin())
- return 0;
- static int x;
- return &x;
-}
-
-void testZeroIsNotNull() {
- // /Do/ suppress when the argument is 0 (an integer).
- int *casted = lookUpInt(0);
- *casted = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-void testTrackNull() {
- // /Do/ suppress if the null argument came from another call returning null.
- int *casted = dynCastOrNull(getNull());
- *casted = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-void testTrackNullVariable() {
- // /Do/ suppress if the null argument came from another call returning null.
- int *ptr;
- ptr = getNull();
- int *casted = dynCastOrNull(ptr);
- *casted = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-void inlinedIsDifferent(int inlined) {
- int i;
-
- // We were erroneously picking up the inner stack frame's initialization,
- // even though the error occurs in the outer stack frame!
- int *p = inlined ? &i : getNull();
-
- if (!inlined)
- inlinedIsDifferent(1);
-
- *p = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-void testInlinedIsDifferent() {
- // <rdar://problem/13787723>
- inlinedIsDifferent(0);
-}
-
-
-// ---------------------------------------
-// FALSE NEGATIVES (over-suppression)
-// ---------------------------------------
-
-void testNoArguments() {
- // In this case the function has no branches, and MUST return null.
- int *casted = getNull();
- *casted = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-int *getNullIfNonNull(void *input) {
- if (input)
- return 0;
- static int x;
- return &x;
-}
-
-void testKnownPath(void *input) {
- if (!input)
- return;
-
- // In this case we have a known value for the argument, and thus the path
- // through the function doesn't ever split.
- int *casted = getNullIfNonNull(input);
- *casted = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-int *alwaysReturnNull(void *input) {
- if (opaquePropertyCheck(input))
- return 0;
- return 0;
-}
-
-void testAlwaysReturnNull(void *input) {
- // In this case all paths out of the function return 0, but they are all
- // dominated by a branch whose condition we don't know!
- int *casted = alwaysReturnNull(input);
- *casted = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-int derefArg(int *p) {
- return *p;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-void ternaryArg(char cond) {
- static int x;
- derefArg(cond ? &x : getNull());
-}
-
-int derefArgCast(char *p) {
- return *p;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-void ternaryArgCast(char cond) {
- static int x;
- derefArgCast((char*)((unsigned)cond ? &x : getNull()));
-}
-
-int derefAssignment(int *p) {
- return *p;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-void ternaryAssignment(char cond) {
- static int x;
- int *p = cond ? getNull() : getPtr();
- derefAssignment(p);
-}
-
-int *retNull(char cond) {
- static int x;
- return cond ? &x : getNull();
-}
-int ternaryRetNull(char cond) {
- int *p = retNull(cond);
- return *p;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-// Test suppression of nested conditional operators.
-int testConditionalOperatorSuppress(int x) {
- return *(x ? getNull() : getPtr());
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-int testNestedConditionalOperatorSuppress(int x) {
- return *(x ? (x ? getNull() : getPtr()) : getPtr());
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-int testConditionalOperator(int x) {
- return *(x ? 0 : getPtr()); // expected-warning {{Dereference of null pointer}}
-}
-int testNestedConditionalOperator(int x) {
- return *(x ? (x ? 0 : getPtr()) : getPtr()); // expected-warning {{Dereference of null pointer}}
-}
-
-int testConditionalOperatorSuppressFloatCond(float x) {
- return *(x ? getNull() : getPtr());
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
diff --git a/test/Analysis/inlining/false-positive-suppression.cpp b/test/Analysis/inlining/false-positive-suppression.cpp
deleted file mode 100644
index 56659b4a1941..000000000000
--- a/test/Analysis/inlining/false-positive-suppression.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-config suppress-null-return-paths=false -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify -DSUPPRESSED=1 %s
-
-namespace rdar12676053 {
- // Delta-reduced from a preprocessed file.
- template<class T>
- class RefCount {
- T *ref;
- public:
- T *operator->() const {
- return ref ? ref : 0;
- }
- };
-
- class string {};
-
- class ParserInputState {
- public:
- string filename;
- };
-
- class Parser {
- void setFilename(const string& f) {
- inputState->filename = f;
-#ifndef SUPPRESSED
-// expected-warning@-2 {{Called C++ object pointer is null}}
-#endif
- }
- protected:
- RefCount<ParserInputState> inputState;
- };
-}
-
-
-// This is the standard placement new.
-inline void* operator new(__typeof__(sizeof(int)), void* __p) throw()
-{
- return __p;
-}
-
-extern bool coin();
-
-class SomeClass {
-public:
- void doSomething();
-};
-
-namespace References {
- class Map {
- int *&getNewBox();
- int *firstBox;
-
- public:
- int *&getValue(int key) {
- if (coin()) {
- return firstBox;
- } else {
- int *&newBox = getNewBox();
- newBox = 0;
- return newBox;
- }
- }
-
- int *&getValueIndirectly(int key) {
- int *&valueBox = getValue(key);
- return valueBox;
- }
- };
-
- void testMap(Map &m, int i) {
- *m.getValue(i) = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-
- *m.getValueIndirectly(i) = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-
- int *&box = m.getValue(i);
- extern int *getPointer();
- box = getPointer();
- *box = 1; // no-warning
-
- int *&box2 = m.getValue(i);
- box2 = 0;
- *box2 = 1; // expected-warning {{Dereference of null pointer}}
- }
-
- SomeClass *&getSomeClass() {
- if (coin()) {
- extern SomeClass *&opaqueClass();
- return opaqueClass();
- } else {
- static SomeClass *sharedClass;
- sharedClass = 0;
- return sharedClass;
- }
- }
-
- void testClass() {
- getSomeClass()->doSomething();
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Called C++ object pointer is null}}
-#endif
-
- // Separate the lvalue-to-rvalue conversion from the subsequent dereference.
- SomeClass *object = getSomeClass();
- object->doSomething();
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Called C++ object pointer is null}}
-#endif
- }
-
- SomeClass *getNull() {
- return 0;
- }
-
- SomeClass &returnNullReference() {
- SomeClass *x = getNull();
- return *x;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Returning null reference}}
-#endif
- }
-}
-
-class X{
-public:
- void get();
-};
-
-X *getNull() {
- return 0;
-}
-
-void deref1(X *const &p) {
- return p->get();
- #ifndef SUPPRESSED
- // expected-warning@-2 {{Called C++ object pointer is null}}
- #endif
-}
-
-void test1() {
- return deref1(getNull());
-}
-
-void deref2(X *p3) {
- p3->get();
- #ifndef SUPPRESSED
- // expected-warning@-2 {{Called C++ object pointer is null}}
- #endif
-}
-
-void pass2(X *const &p2) {
- deref2(p2);
-}
-
-void test2() {
- pass2(getNull());
-}
-
-void deref3(X *const &p2) {
- X *p3 = p2;
- p3->get();
- #ifndef SUPPRESSED
- // expected-warning@-2 {{Called C++ object pointer is null}}
- #endif
-}
-
-void test3() {
- deref3(getNull());
-}
-
-
-namespace Cleanups {
- class NonTrivial {
- public:
- ~NonTrivial();
-
- SomeClass *getNull() {
- return 0;
- }
- };
-
- void testImmediate() {
- NonTrivial().getNull()->doSomething();
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Called C++ object pointer is null}}
-#endif
- }
-
- void testAssignment() {
- SomeClass *ptr = NonTrivial().getNull();
- ptr->doSomething();
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Called C++ object pointer is null}}
-#endif
- }
-
- void testArgumentHelper(SomeClass *arg) {
- arg->doSomething();
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Called C++ object pointer is null}}
-#endif
- }
-
- void testArgument() {
- testArgumentHelper(NonTrivial().getNull());
- }
-}
diff --git a/test/Analysis/inlining/false-positive-suppression.m b/test/Analysis/inlining/false-positive-suppression.m
deleted file mode 100644
index 25fe40fc8555..000000000000
--- a/test/Analysis/inlining/false-positive-suppression.m
+++ /dev/null
@@ -1,136 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-config suppress-null-return-paths=false -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify -DSUPPRESSED=1 %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -fobjc-arc -verify -DSUPPRESSED=1 %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-config avoid-suppressing-null-argument-paths=true -DSUPPRESSED=1 -DNULL_ARGS=1 -verify %s
-
-#define ARC __has_feature(objc_arc)
-
-#ifdef SUPPRESSED
-// expected-no-diagnostics
-#endif
-
-@interface PointerWrapper
-- (int *)getPtr;
-- (id)getObject;
-@end
-
-id getNil() {
- return 0;
-}
-
-void testNilReceiverHelperA(int *x) {
- *x = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-void testNilReceiverHelperB(int *x) {
- *x = 1;
-#if !defined(SUPPRESSED)
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-void testNilReceiver(int coin) {
- id x = getNil();
- if (coin)
- testNilReceiverHelperA([x getPtr]);
- else
- testNilReceiverHelperB([[x getObject] getPtr]);
-}
-
-// FALSE NEGATIVES (over-suppression)
-
-__attribute__((objc_root_class))
-@interface SomeClass {
- int ivar;
-}
--(int *)methodReturningNull;
-
-@property(readonly) int *propertyReturningNull;
-
-@property(readonly) int *synthesizedProperty;
-
-@property(readonly) SomeClass *propertyReturningNil;
-
-@end
-
-@interface SubOfSomeClass : SomeClass
-@end
-
-@implementation SubOfSomeClass
-@end
-
-@implementation SomeClass
--(int *)methodReturningNull {
- return 0;
-}
-
--(int *)propertyReturningNull {
- return 0;
-}
-
--(SomeClass *)propertyReturningNil {
- return 0;
-}
-
-+(int *)classPropertyReturningNull {
- return 0;
-}
-@end
-
-void testMethodReturningNull(SomeClass *sc) {
- int *result = [sc methodReturningNull];
- *result = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-void testPropertyReturningNull(SomeClass *sc) {
- int *result = sc.propertyReturningNull;
- *result = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-@implementation SubOfSomeClass (ForTestOfSuperProperty)
--(void)testSuperPropertyReturningNull {
- int *result = super.propertyReturningNull;
- *result = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-@end
-
-void testClassPropertyReturningNull() {
- int *result = SomeClass.classPropertyReturningNull;
- *result = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
-
-@implementation SomeClass (ForTestOfPropertyReturningNil)
-void testPropertyReturningNil(SomeClass *sc) {
- SomeClass *result = sc.propertyReturningNil;
- result->ivar = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Access to instance variable 'ivar' results in a dereference of a null pointer (loaded from variable 'result')}}
-#endif
-}
-@end
-
-void testSynthesizedPropertyReturningNull(SomeClass *sc) {
- if (sc.synthesizedProperty)
- return;
-
- int *result = sc.synthesizedProperty;
- *result = 1;
-#ifndef SUPPRESSED
- // expected-warning@-2 {{Dereference of null pointer}}
-#endif
-}
diff --git a/test/Analysis/inlining/inline-defensive-checks.c b/test/Analysis/inlining/inline-defensive-checks.c
deleted file mode 100644
index d290cf25f42f..000000000000
--- a/test/Analysis/inlining/inline-defensive-checks.c
+++ /dev/null
@@ -1,242 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-config suppress-inlined-defensive-checks=true -verify %s
-
-// Perform inline defensive checks.
-void idc(void *p) {
- if (p)
- ;
-}
-
-int test01(int *p) {
- if (p)
- ;
- return *p; // expected-warning {{Dereference of null pointer}}
-}
-
-int test02(int *p, int *x) {
- if (p)
- ;
- idc(p);
- if (x)
- ;
- return *p; // expected-warning {{Dereference of null pointer}}
-}
-
-int test03(int *p, int *x) {
- idc(p);
- if (p)
- ;
- return *p; // False negative
-}
-
-int deref04(int *p) {
- return *p; // expected-warning {{Dereference of null pointer}}
-}
-
-int test04(int *p) {
- if (p)
- ;
- idc(p);
- return deref04(p);
-}
-
-int test11(int *q, int *x) {
- int *p = q;
- if (q)
- ;
- if (x)
- ;
- return *p; // expected-warning{{Dereference of null pointer}}
-}
-
-int test12(int *q) {
- int *p = q;
- idc(q);
- return *p;
-}
-
-int test13(int *q) {
- int *p = q;
- idc(p);
- return *p;
-}
-
-int test21(int *q, int *x) {
- if (q)
- ;
- if (x)
- ;
- int *p = q;
- return *p; // expected-warning{{Dereference of null pointer}}
-}
-
-int test22(int *q, int *x) {
- idc(q);
- if (x)
- ;
- int *p = q;
- return *p;
-}
-
-int test23(int *q, int *x) {
- idc(q);
- if (x)
- ;
- int *p = q;
- if (!p)
- ;
- return *p; // False negative
-}
-
-void use(char *p) {
- if (!p)
- return;
- p[0] = 'a';
-}
-
-void test24(char *buffer) {
- use(buffer);
- buffer[1] = 'b';
-}
-
-// Ensure idc works on pointers with constant offset.
-void idcchar(const char *s2) {
- if(s2)
- ;
-}
-void testConstantOffset(char *value) {
- char *cursor = value + 5;
- idcchar(cursor);
- if (*cursor) {
- cursor++;
- }
-}
-
-// Ensure idc works for integer zero values (ex: suppressed div by zero).
-void idcZero(int assume) {
- if (assume)
- ;
-}
-
-int idcTriggerZeroValue(int m) {
- idcZero(m);
- return 5/m; // no-warning
-}
-
-int idcTriggerZeroValueThroughCall(int i) {
- return 5/i; // no-warning
-}
-void idcTrackZeroValueThroughCall(int x) {
- idcZero(x);
- idcTriggerZeroValueThroughCall(x);
-}
-
-int idcTriggerZeroThroughDoubleAssignemnt(int i) {
- return 5/i; // no-warning
-}
-void idcTrackZeroThroughDoubleAssignemnt(int x) {
- idcZero(x);
- int y = x;
- int z = y;
- idcTriggerZeroValueThroughCall(z);
-}
-
-struct S {
- int f1;
- int f2;
-};
-
-void idcTrackZeroValueThroughUnaryPointerOperators(struct S *s) {
- idc(s);
- *(&(s->f1)) = 7; // no-warning
-}
-
-void idcTrackZeroValueThroughUnaryPointerOperatorsWithOffset1(struct S *s) {
- idc(s);
- int *x = &(s->f2);
- *x = 7; // no-warning
-}
-
-void idcTrackZeroValueThroughUnaryPointerOperatorsWithOffset2(struct S *s) {
- idc(s);
- int *x = &(s->f2) - 1;
- *x = 7; // no-warning
-}
-
-void idcTrackZeroValueThroughUnaryPointerOperatorsWithAssignment(struct S *s) {
- idc(s);
- int *x = &(s->f1);
- *x = 7; // no-warning
-}
-
-void idcTrackZeroValueThroughManyUnaryPointerOperatorsWithAssignment(struct S *s) {
- idc(s);
- int *x = &*&(s->f1);
- *x = 7; // no-warning
-}
-
-void idcTrackZeroValueThroughManyUnaryPointerOperatorsWithAssignmentAndUnaryIncrement(struct S *s) {
- idc(s);
- int *x = &*&((++s)->f1);
- *x = 7; // no-warning
-}
-
-
-struct S2 {
- int a[1];
-};
-
-void idcTrackZeroValueThroughUnaryPointerOperatorsWithArrayField(struct S2 *s) {
- idc(s);
- *(&(s->a[0])) = 7; // no-warning
-}
-
-void idcTrackConstraintThroughSymbolicRegion(int **x) {
- idc(*x);
- // FIXME: Should not warn.
- **x = 7; // expected-warning{{Dereference of null pointer}}
-}
-
-void idcTrackConstraintThroughSymbolicRegionAndParens(int **x) {
- idc(*x);
- // FIXME: Should not warn.
- *(*x) = 7; // expected-warning{{Dereference of null pointer}}
-}
-
-int *idcPlainNull(int coin) {
- if (coin)
- return 0;
- static int X;
- return &X;
-}
-
-void idcTrackZeroValueThroughSymbolicRegion(int coin, int **x) {
- *x = idcPlainNull(coin);
- **x = 7; // no-warning
-}
-
-void idcTrackZeroValueThroughSymbolicRegionAndParens(int coin, int **x) {
- *x = idcPlainNull(coin);
- *(*x) = 7; // no-warning
-}
-
-struct WithInt {
- int i;
-};
-
-struct WithArray {
- struct WithInt arr[1];
-};
-
-struct WithArray *idcPlainNullWithArray(int coin) {
- if (coin)
- return 0;
- static struct WithArray S;
- return &S;
-}
-
-void idcTrackZeroValueThroughSymbolicRegionWithArray(int coin, struct WithArray **s) {
- *s = idcPlainNullWithArray(coin);
- (*s)->arr[0].i = 1; // no-warning
- // Same thing.
- (*s)->arr->i = 1; // no-warning
-}
diff --git a/test/Analysis/inlining/inline-defensive-checks.cpp b/test/Analysis/inlining/inline-defensive-checks.cpp
deleted file mode 100644
index 6fb0e1cd70b0..000000000000
--- a/test/Analysis/inlining/inline-defensive-checks.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-// expected-no-diagnostics
-
-extern void __assert_fail (__const char *__assertion, __const char *__file,
- unsigned int __line, __const char *__function)
-__attribute__ ((__noreturn__));
-#define assert(expr) \
-((expr) ? (void)(0) : __assert_fail (#expr, __FILE__, __LINE__, __func__))
-
-class ButterFly {
-private:
- ButterFly() { }
-public:
- int triggerderef() {
- return 0;
- }
-};
-ButterFly *getInP();
-class X{
- ButterFly *p;
- void setP(ButterFly *inP) {
- if(inP)
- ;
- p = inP;
- };
- void subtest1() {
- ButterFly *inP = getInP();
- setP(inP);
- }
- int subtest2() {
- int c = p->triggerderef(); // no-warning
- return c;
- }
- int test() {
- subtest1();
- return subtest2();
- }
-};
-
-typedef const int *Ty;
-extern
-Ty notNullArg(Ty cf) __attribute__((nonnull));
-typedef const void *CFTypeRef;
-extern Ty getTyVal();
-inline void radar13224271_callee(Ty def, Ty& result ) {
- result = def;
- // Clearly indicates that result cannot be 0 if def is not NULL.
- assert( (result != 0) || (def == 0) );
-}
-void radar13224271_caller()
-{
- Ty value;
- radar13224271_callee(getTyVal(), value );
- notNullArg(value); // no-warning
-}
-
-struct Foo {
- int *ptr;
- Foo(int *p) {
- *p = 1; // no-warning
- }
-};
-void idc(int *p3) {
- if (p3)
- ;
-}
-int *retNull() {
- return 0;
-}
-void test(int *p1, int *p2) {
- idc(p1);
- Foo f(p1);
-}
-
-struct Bar {
- int x;
-};
-void idcBar(Bar *b) {
- if (b)
- ;
-}
-void testRefToField(Bar *b) {
- idcBar(b);
- int &x = b->x; // no-warning
- x = 5;
-}
-
-namespace get_deref_expr_with_cleanups {
-struct S {
-~S();
-};
-S *conjure();
-// The argument won't be used, but it'll cause cleanups
-// to appear around the call site.
-S *get_conjured(S _) {
- S *s = conjure();
- if (s) {}
- return s;
-}
-void test_conjured() {
- S &s = *get_conjured(S()); // no-warning
-}
-} // namespace get_deref_expr_with_cleanups
diff --git a/test/Analysis/inlining/inline-defensive-checks.m b/test/Analysis/inlining/inline-defensive-checks.m
deleted file mode 100644
index 38e5446ecd39..000000000000
--- a/test/Analysis/inlining/inline-defensive-checks.m
+++ /dev/null
@@ -1,129 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-config suppress-inlined-defensive-checks=true -verify %s
-
-typedef signed char BOOL;
-typedef struct objc_class *Class;
-typedef struct objc_object {
- Class isa;
-} *id;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
-@end
-
-// Check that inline defensive checks is triggered for null expressions
-// within CompoundLiteralExpr.
-typedef union {
- struct dispatch_object_s *_do;
- struct dispatch_source_s *_ds;
-} dispatch_object_t __attribute__((__transparent_union__));
-typedef struct dispatch_source_s *dispatch_source_t;
-
-extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__))
-void
-dispatch_resume(dispatch_object_t object);
-
-@interface AppDelegate : NSObject {
-@protected
- dispatch_source_t p;
-}
-@end
-@implementation AppDelegate
-- (void)updateDeleteTimer {
- if (p != ((void*)0))
- ;
-}
-- (void)createAndStartDeleteTimer {
- [self updateDeleteTimer];
- dispatch_resume(p); // no warning
-}
-@end
-
-// Test nil receiver suppression.
-// We only suppress on nil receiver if the nil value is directly causing the bug.
-@interface Foo {
-@public
- int x;
-}
-- (Foo *)getFooPtr;
-@end
-
-Foo *retNil() {
- return 0;
-}
-
-Foo *retInputOrNil(Foo *p) {
- if (p)
- return p;
- return 0;
-}
-
-void idc(Foo *p) {
- if (p)
- ;
-}
-
-int testNilReceiver(Foo* fPtr) {
- if (fPtr)
- ;
- // On a path where fPtr is nil, mem should be nil.
- Foo *mem = [fPtr getFooPtr];
- return mem->x; // expected-warning {{Access to instance variable 'x' results in a dereference of a null pointer}}
-}
-
-int suppressNilReceiverRetNullCond(Foo* fPtr) {
- unsigned zero = 0;
- fPtr = retInputOrNil(fPtr);
- // On a path where fPtr is nzil, mem should be nil.
- Foo *mem = [fPtr getFooPtr];
- return mem->x;
-}
-
-int suppressNilReceiverRetNullCondCast(id fPtr) {
- unsigned zero = 0;
- fPtr = retInputOrNil(fPtr);
- // On a path where fPtr is nzil, mem should be nil.
- Foo *mem = ((id)([(Foo*)(fPtr) getFooPtr]));
- return mem->x;
-}
-
-int dontSuppressNilReceiverRetNullCond(Foo* fPtr) {
- unsigned zero = 0;
- fPtr = retInputOrNil(fPtr);
- // On a path where fPtr is nil, mem should be nil.
- // The warning is not suppressed because the receiver being nil is not
- // directly related to the value that triggers the warning.
- Foo *mem = [fPtr getFooPtr];
- if (!mem)
- return 5/zero; // expected-warning {{Division by zero}}
- return 0;
-}
-
-int dontSuppressNilReceiverRetNull(Foo* fPtr) {
- unsigned zero = 0;
- fPtr = retNil();
- // On a path where fPtr is nil, mem should be nil.
- // The warning is not suppressed because the receiver being nil is not
- // directly related to the value that triggers the warning.
- Foo *mem = [fPtr getFooPtr];
- if (!mem)
- return 5/zero; // expected-warning {{Division by zero}}
- return 0;
-}
-
-int dontSuppressNilReceiverIDC(Foo* fPtr) {
- unsigned zero = 0;
- idc(fPtr);
- // On a path where fPtr is nil, mem should be nil.
- // The warning is not suppressed because the receiver being nil is not
- // directly related to the value that triggers the warning.
- Foo *mem = [fPtr getFooPtr];
- if (!mem)
- return 5/zero; // expected-warning {{Division by zero}}
- return 0;
-}
diff --git a/test/Analysis/inlining/path-notes.c b/test/Analysis/inlining/path-notes.c
deleted file mode 100644
index 253ff949dc51..000000000000
--- a/test/Analysis/inlining/path-notes.c
+++ /dev/null
@@ -1,158 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -analyzer-config suppress-null-return-paths=false -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=plist-multi-file -analyzer-config suppress-null-return-paths=false %s -o %t.plist
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/path-notes.c.plist -
-
-void zero(int **p) {
- *p = 0;
- // expected-note@-1 {{Null pointer value stored to 'a'}}
-}
-
-void testZero(int *a) {
- zero(&a);
- // expected-note@-1 {{Calling 'zero'}}
- // expected-note@-2 {{Returning from 'zero'}}
- *a = 1; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'a')}}
-}
-
-void testCheck(int *a) {
- if (a) {
- // expected-note@-1 + {{Assuming 'a' is null}}
- // expected-note@-2 + {{Taking false branch}}
- ;
- }
- *a = 1; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'a')}}
-}
-
-
-int *getPointer();
-
-void testInitCheck() {
- int *a = getPointer();
- // expected-note@-1 {{'a' initialized here}}
- if (a) {
- // expected-note@-1 + {{Assuming 'a' is null}}
- // expected-note@-2 + {{Taking false branch}}
- ;
- }
- *a = 1; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'a')}}
-}
-
-void testStoreCheck(int *a) {
- a = getPointer();
- // expected-note@-1 {{Value assigned to 'a'}}
- if (a) {
- // expected-note@-1 + {{Assuming 'a' is null}}
- // expected-note@-2 + {{Taking false branch}}
- ;
- }
- *a = 1; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'a')}}
-}
-
-
-int *getZero() {
- int *p = 0;
- // expected-note@-1 + {{'p' initialized to a null pointer value}}
- // ^ This note checks that we add a second visitor for the return value.
- return p;
- // expected-note@-1 + {{Returning null pointer (loaded from 'p')}}
-}
-
-void testReturnZero() {
- *getZero() = 1; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1 {{Calling 'getZero'}}
- // expected-note@-2 {{Returning from 'getZero'}}
- // expected-note@-3 {{Dereference of null pointer}}
-}
-
-int testReturnZero2() {
- return *getZero(); // expected-warning{{Dereference of null pointer}}
- // expected-note@-1 {{Calling 'getZero'}}
- // expected-note@-2 {{Returning from 'getZero'}}
- // expected-note@-3 {{Dereference of null pointer}}
-}
-
-void testInitZero() {
- int *a = getZero();
- // expected-note@-1 {{Calling 'getZero'}}
- // expected-note@-2 {{Returning from 'getZero'}}
- // expected-note@-3 {{'a' initialized to a null pointer value}}
- *a = 1; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'a')}}
-}
-
-void testStoreZero(int *a) {
- a = getZero();
- // expected-note@-1 {{Calling 'getZero'}}
- // expected-note@-2 {{Returning from 'getZero'}}
- // expected-note@-3 {{Null pointer value stored to 'a'}}
- *a = 1; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'a')}}
-}
-
-void usePointer(int *p) {
- *p = 1; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1 {{Dereference of null pointer}}
-}
-
-void testUseOfNullPointer() {
- // Test the case where an argument expression is itself a call.
- usePointer(getZero());
- // expected-note@-1 {{Calling 'getZero'}}
- // expected-note@-2 {{Returning from 'getZero'}}
- // expected-note@-3 {{Passing null pointer value via 1st parameter 'p'}}
- // expected-note@-4 {{Calling 'usePointer'}}
-}
-
-struct X { char *p; };
-
-void setFieldToNull(struct X *x) {
- x->p = 0; // expected-note {{Null pointer value stored to field 'p'}}
-}
-
-int testSetFieldToNull(struct X *x) {
- setFieldToNull(x); // expected-note {{Calling 'setFieldToNull'}}
- // expected-note@-1{{Returning from 'setFieldToNull'}}
- return *x->p;
- // expected-warning@-1 {{Dereference of null pointer (loaded from field 'p')}}
- // expected-note@-2 {{Dereference of null pointer (loaded from field 'p')}}
-}
-
-struct Outer {
- struct Inner {
- int *p;
- } inner;
-};
-
-void test(struct Outer *wrapperPtr) {
- wrapperPtr->inner.p = 0; // expected-note {{Null pointer value stored to field 'p'}}
- *wrapperPtr->inner.p = 1; //expected-warning {{Dereference of null pointer (loaded from field 'p')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from field 'p')}}
-}
-
-void test4(int **p) {
- if (*p) return; // expected-note {{Taking false branch}}
- // expected-note@-1 {{Assuming pointer value is null}}
- **p = 1; // expected-warning {{Dereference of null pointer}}
- // expected-note@-1 {{Dereference of null pointer}}
-}
-
-void boringCallee() {
-}
-
-void interestingCallee(int *x) {
- *x = 0; // expected-note{{The value 0 is assigned to 'x'}}
- boringCallee(); // no-note
-}
-
-int testBoringCalleeOfInterestingCallee() {
- int x;
- interestingCallee(&x); // expected-note{{Calling 'interestingCallee'}}
- // expected-note@-1{{Returning from 'interestingCallee'}}
- return 1 / x; // expected-warning{{Division by zero}}
- // expected-note@-1{{Division by zero}}
-}
-
diff --git a/test/Analysis/inlining/path-notes.cpp b/test/Analysis/inlining/path-notes.cpp
deleted file mode 100644
index 43859237438f..000000000000
--- a/test/Analysis/inlining/path-notes.cpp
+++ /dev/null
@@ -1,300 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -analyzer-config c++-inlining=destructors -std=c++11 -verify -Wno-tautological-undefined-compare %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=plist-multi-file -analyzer-config c++-inlining=destructors -std=c++11 %s -o %t.plist -Wno-tautological-undefined-compare
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/path-notes.cpp.plist -
-
-class Foo {
-public:
- static void use(int *p) {
- *p = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'p')}}
- }
-
- Foo(int *p) {
- use(p);
- // expected-note@-1 {{Passing null pointer value via 1st parameter 'p'}}
- // expected-note@-2 {{Calling 'Foo::use'}}
- }
-};
-
-static int *globalPtr;
-
-class Bar {
-public:
- ~Bar() {
- Foo f(globalPtr);
- // expected-note@-1 {{Passing null pointer value via 1st parameter 'p'}}
- // expected-note@-2 {{Calling constructor for 'Foo'}}
- }
-};
-
-void test() {
- Bar b;
- globalPtr = 0;
- // expected-note@-1 {{Null pointer value stored to 'globalPtr'}}
-} // expected-note {{Calling '~Bar'}}
-
-
-void testAnonymous() {
- class {
- public:
- void method(int *p) {
- *p = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'p')}}
- }
- } anonymous;
-
- anonymous.method(0);
- // expected-note@-1 {{Passing null pointer value via 1st parameter 'p'}}
- // expected-note@-2 {{Calling 'method'}}
-}
-
-
-// A simplified version of std::move.
-template <typename T>
-T &&move(T &obj) {
- return static_cast<T &&>(obj);
-}
-
-
-namespace defaulted {
- class Dereferencer {
- public:
- Dereferencer() {
- *globalPtr = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'globalPtr')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'globalPtr')}}
- }
-
- Dereferencer(const Dereferencer &Other) {
- *globalPtr = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'globalPtr')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'globalPtr')}}
- }
-
- Dereferencer(Dereferencer &&Other) {
- *globalPtr = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'globalPtr')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'globalPtr')}}
- }
-
- void operator=(const Dereferencer &Other) {
- *globalPtr = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'globalPtr')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'globalPtr')}}
- }
-
- void operator=(Dereferencer &&Other) {
- *globalPtr = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'globalPtr')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'globalPtr')}}
- }
-
- ~Dereferencer() {
- *globalPtr = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'globalPtr')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'globalPtr')}}
- }
- };
-
- class Wrapper {
- Dereferencer d;
- };
-
- class MovableWrapper {
- Dereferencer d;
- public:
- MovableWrapper() = default;
-
- MovableWrapper(MovableWrapper &&Other) = default;
- // expected-note@-1 {{Calling move constructor for 'Dereferencer'}}
-
- MovableWrapper &operator=(MovableWrapper &&Other) = default;
- // expected-note@-1 {{Calling move assignment operator for 'Dereferencer'}}
- };
-
- void testDefaultConstruction() {
- globalPtr = 0;
- // expected-note@-1 {{Null pointer value stored to 'globalPtr'}}
- Wrapper w;
- // expected-note@-1 {{Calling implicit default constructor for 'Wrapper'}}
- // expected-note@-2 {{Calling default constructor for 'Dereferencer'}}
- }
-
- void testCopyConstruction(const Wrapper &input) {
- globalPtr = 0;
- // expected-note@-1 {{Null pointer value stored to 'globalPtr'}}
- Wrapper w{input};
- // expected-note@-1 {{Calling implicit copy constructor for 'Wrapper'}}
- // expected-note@-2 {{Calling copy constructor for 'Dereferencer'}}
- }
-
- void testMoveConstruction(MovableWrapper &&input) {
- globalPtr = 0;
- // expected-note@-1 {{Null pointer value stored to 'globalPtr'}}
- MovableWrapper w{move(input)};
- // expected-note@-1 {{Calling defaulted move constructor for 'MovableWrapper'}}
- }
-
- void testCopyAssignment(const Wrapper &input) {
- Wrapper w;
- globalPtr = 0;
- // expected-note@-1 {{Null pointer value stored to 'globalPtr'}}
- w = input;
- // expected-note@-1 {{Calling implicit copy assignment operator for 'Wrapper'}}
- // expected-note@-2 {{Calling copy assignment operator for 'Dereferencer'}}
- }
-
- void testMoveAssignment(MovableWrapper &&input) {
- MovableWrapper w;
- globalPtr = 0;
- // expected-note@-1 {{Null pointer value stored to 'globalPtr'}}
- w = move(input);
- // expected-note@-1 {{Calling defaulted move assignment operator for 'MovableWrapper'}}
- }
-
- void testDestruction() {
- Wrapper w;
- globalPtr = 0;
- // expected-note@-1 {{Null pointer value stored to 'globalPtr'}}
- }
- // expected-note@-1 {{Calling implicit destructor for 'Wrapper'}}
- // expected-note@-2 {{Calling '~Dereferencer'}}
-}
-
-namespace ReturnZeroNote {
- int getZero() {
- return 0;
- // expected-note@-1 {{Returning zero}}
- }
-
- const int &getZeroByRef() {
- static int zeroVar;
- zeroVar = 0;
- // expected-note@-1 {{The value 0 is assigned to 'zeroVar'}}
- return zeroVar;
- // expected-note@-1 {{Returning zero (reference to 'zeroVar')}}
- }
-
- void test() {
- int problem = 1 / getZero(); // expected-warning {{Division by zero}}
- // expected-note@-1 {{Calling 'getZero'}}
- // expected-note@-2 {{Returning from 'getZero'}}
- // expected-note@-3 {{Division by zero}}
- }
-
- void testRef() {
- int problem = 1 / getZeroByRef(); // expected-warning {{Division by zero}}
- // expected-note@-1 {{Calling 'getZeroByRef'}}
- // expected-note@-2 {{Returning from 'getZeroByRef'}}
- // expected-note@-3 {{Division by zero}}
- }
-}
-
-int &returnNullReference() {
- int *x = 0;
- // expected-note@-1 {{'x' initialized to a null pointer value}}
- return *x; // expected-warning{{Returning null reference}}
- // expected-note@-1 {{Returning null reference}}
-}
-
-struct FooWithInitializer {
- int *ptr;
- FooWithInitializer(int *p) : ptr(p) { // expected-note {{Null pointer value stored to 'f.ptr'}}
- *ptr = 1; // expected-note {{Dereference of null pointer (loaded from field 'ptr')}}
- // expected-warning@-1 {{Dereference of null pointer (loaded from field 'ptr')}}
- }
-};
-
-void testPathNoteOnInitializer() {
- int *p = 0; // expected-note {{'p' initialized to a null pointer value}}
-
- FooWithInitializer f(p); // expected-note {{Passing null pointer value via 1st parameter 'p'}}
- // expected-note@-1 {{Calling constructor for 'FooWithInitializer'}}
-}
-
-int testNonPrintableAssignment(int **p) {
- int *&y = *p; // expected-note {{'y' initialized here}}
- y = 0; // expected-note {{Storing null pointer value}}
- return *y; // expected-warning {{Dereference of null pointer (loaded from variable 'y')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'y')}}
-}
-
-struct Base { int *x; };
-struct Derived : public Base {};
-
-void test(Derived d) {
- d.x = 0; //expected-note {{Null pointer value stored to 'd.x'}}
- *d.x = 1; // expected-warning {{Dereference of null pointer (loaded from field 'x')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from field 'x')}}
-}
-
-struct Owner {
- struct Wrapper {
- int x;
- };
- Wrapper *arr;
- void testGetDerefExprOnMemberExprWithADot();
-};
-
-void Owner::testGetDerefExprOnMemberExprWithADot() {
- if (arr) // expected-note {{Assuming pointer value is null}}
- // expected-note@-1 {{Taking false branch}}
- ;
- arr[1].x = 1; //expected-warning {{Dereference of null pointer}}
- //expected-note@-1 {{Dereference of null pointer}}
-}
-
-void testGetDerefExprOnMemberExprWithADot() {
- Owner::Wrapper *arr; // expected-note {{'arr' declared without an initial value}}
- arr[2].x = 1; // expected-warning {{Dereference of undefined pointer value}}
- // expected-note@-1 {{Dereference of undefined pointer value}}
-}
-
-
-
-class A {
-public:
- void bar() const {}
-};
-const A& testDeclRefExprToReferenceInGetDerefExpr(const A *ptr) {
- const A& val = *ptr; //expected-note {{'val' initialized here}}
-
- // This is not valid C++; if 'ptr' were null, creating 'ref' would be illegal.
- // However, this is not checked at runtime, so this branch is actually
- // possible.
- if (&val == 0) { //expected-note {{Assuming pointer value is null}}
- // expected-note@-1 {{Taking true branch}}
- val.bar(); // expected-warning {{Called C++ object pointer is null}}
- // expected-note@-1 {{Called C++ object pointer is null}}
- }
-
- return val;
-}
-
-int generateNoteOnDefaultArgument(int one, int two = 0) {
- return one/two; // expected-warning {{Division by zero}}
- // expected-note@-1 {{Division by zero}}
-}
-int callGenerateNoteOnDefaultArgument(int o) {
- return generateNoteOnDefaultArgument(o); //expected-note{{Calling 'generateNoteOnDefaultArgument'}}
- //expected-note@-1 {{Passing the value 0 via 2nd parameter 'two'}}
-}
-
-namespace PR17746 {
- class Inner {
- public:
- ~Inner() {
- *(volatile int *)0 = 1; // expected-warning {{Dereference of null pointer}}
- // expected-note@-1 {{Dereference of null pointer}}
- }
- };
-
- class Outer {
- public:
- Inner *inner;
- ~Outer() {
- delete inner;
- // expected-note@-1 {{Calling '~Inner'}}
- }
- };
-
- void test(Outer *outer) {
- delete outer;
- // expected-note@-1 {{Calling '~Outer'}}
- }
-}
-
diff --git a/test/Analysis/inlining/path-notes.m b/test/Analysis/inlining/path-notes.m
deleted file mode 100644
index d48a89197625..000000000000
--- a/test/Analysis/inlining/path-notes.m
+++ /dev/null
@@ -1,184 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.NilArg,osx.cocoa.RetainCount -analyzer-output=text -analyzer-config suppress-null-return-paths=false -fblocks -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.NilArg,osx.cocoa.RetainCount -analyzer-output=plist-multi-file -analyzer-config suppress-null-return-paths=false -fblocks %s -o %t.plist
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/path-notes.m.plist -
-
-typedef struct dispatch_queue_s *dispatch_queue_t;
-typedef void (^dispatch_block_t)(void);
-void dispatch_sync(dispatch_queue_t, dispatch_block_t);
-
-typedef long dispatch_once_t;
-// Note: The real dispatch_once has all parameters marked nonnull.
-// We don't do that here so that we can trigger a null dereference inside
-// the synthesized body.
-void dispatch_once(dispatch_once_t *predicate, dispatch_block_t block);
-
-
-@interface Test
-@property int *p;
-@end
-
-typedef unsigned long NSUInteger;
-typedef signed char BOOL;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject
-@end
-@protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
-@end
-@protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
-@end
-@protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@protocol NSFastEnumeration
-@end
-@protocol NSSecureCoding <NSCoding>
-@required
-+ (BOOL)supportsSecureCoding;
-@end
-@interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
-- (id)autorelease;
-@end
-@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration>
-
-- (NSUInteger)count;
-- (id)objectAtIndex:(NSUInteger)index;
-
-@end
-
-@interface NSArray (NSExtendedArray)
-- (NSArray *)arrayByAddingObject:(id)anObject;
-- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx __attribute__((availability(macosx,introduced=10.8)));
-@end
-
-@interface NSArray (NSArrayCreation)
-+ (instancetype)arrayWithObjects:(const id [])objects count:(NSUInteger)cnt;
-@end
-
-@interface NSMutableArray : NSArray
-
-- (void)addObject:(id)anObject;
-- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
-- (void)removeLastObject;
-- (void)removeObjectAtIndex:(NSUInteger)index;
-- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
-
-@end
-
-int *getZeroIfNil(Test *x) {
- return x.p;
- // expected-note@-1 {{'p' not called because the receiver is nil}}
- // expected-note@-2 {{Returning null pointer}}
-}
-
-void testReturnZeroIfNil() {
- *getZeroIfNil(0) = 1; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1 {{Calling 'getZeroIfNil'}}
- // expected-note@-2 {{Passing nil object reference via 1st parameter 'x'}}
- // expected-note@-3 {{Returning from 'getZeroIfNil'}}
- // expected-note@-4 {{Dereference of null pointer}}
-}
-
-
-int testDispatchSyncInlining() {
- extern dispatch_queue_t globalQueue;
-
- __block int x;
-
- // expected-note@+2 {{Calling 'dispatch_sync'}}
- // expected-note@+1 {{Returning from 'dispatch_sync'}}
- dispatch_sync(globalQueue, ^{
- // expected-note@-1 {{Calling anonymous block}}
- // expected-note@-2 {{Returning to caller}}
- x = 0;
- // expected-note@-1 {{The value 0 is assigned to 'x'}}
- });
-
- return 1 / x; // expected-warning{{Division by zero}}
- // expected-note@-1 {{Division by zero}}
-}
-
-int testDispatchSyncInliningNoPruning(int coin) {
- // This tests exactly the same case as above, except on a bug report where
- // path pruning is disabled (an uninitialized variable capture).
- // In this case
- extern dispatch_queue_t globalQueue;
-
- __block int y;
-
- // expected-note@+1 {{Calling 'dispatch_sync'}}
- dispatch_sync(globalQueue, ^{
- // expected-note@-1 {{Calling anonymous block}}
- int x;
- // expected-note@-1 {{'x' declared without an initial value}}
- ^{ y = x; }(); // expected-warning{{Variable 'x' is uninitialized when captured by block}}
- // expected-note@-1 {{'x' is uninitialized when captured by block}}
- });
-
- return y;
-}
-
-
-@interface PointerWrapper
-- (int *)getPtr;
-@end
-
-id getNil() {
- return 0;
-}
-
-void testNilReceiverHelper(int *x) {
- *x = 1; // expected-warning {{Dereference of null pointer}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'x')}}
-}
-
-void testNilReceiver(id *x, id *y, id *z) {
- // FIXME: Should say "Assuming pointer value is null" instead.
- // For some reason we're displaying different notes for
- // tracked and untracked pointers.
- if (*y) {} // expected-note {{Assuming the condition is false}}
- // expected-note@-1 {{Taking false branch}}
- if (*x) { // expected-note {{Assuming pointer value is null}}
- // expected-note@-1 {{Taking false branch}}
- return;
- }
- // FIXME: Should say "Assuming pointer value is null" instead.
- if (*z) {} // expected-note {{Assuming the condition is false}}
- // expected-note@-1 {{Taking false branch}}
- testNilReceiverHelper([*x getPtr]);
- // expected-note@-1 {{'getPtr' not called because the receiver is nil}}
- // expected-note@-2 {{Passing null pointer value via 1st parameter 'x'}}
- // expected-note@-3 {{Calling 'testNilReceiverHelper'}}
-}
-
-id testCreateArrayLiteral(id myNil) {
- if (myNil) // expected-note {{Assuming 'myNil' is nil}}
- ; // expected-note@-1 {{Taking false branch}}
- return @[ @"a", myNil, @"c" ]; // expected-warning {{Array element cannot be nil}}
- //expected-note@-1 {{Array element cannot be nil}}
-}
-
-// <rdar://problem/14611722>
-id testAutoreleaseTakesEffectInDispatch() {
- static dispatch_once_t token = 0;
- dispatch_once(&token, ^{});
-
- id x = [[[[NSObject alloc] init] autorelease] autorelease];
- // expected-note@-1 {{Method returns an instance of NSObject with a +1 retain count}}
- // expected-note@-2 {{Object autoreleased}}
- // expected-note@-3 {{Object autoreleased}}
-
- dispatch_once(&token, ^{}); // don't crash, don't warn here
-
- return x; // expected-warning{{Object autoreleased too many times}}
- // expected-note@-1 {{Object was autoreleased 2 times but the object has a +0 retain count}}
-}
-
-void testNullDereferenceInDispatch() {
- dispatch_once(0, ^{}); // no-warning, don't crash
-}
-
diff --git a/test/Analysis/inlining/retain-count-self-init.m b/test/Analysis/inlining/retain-count-self-init.m
deleted file mode 100644
index 208197381f60..000000000000
--- a/test/Analysis/inlining/retain-count-self-init.m
+++ /dev/null
@@ -1,68 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,osx.cocoa.SelfInit -analyzer-config ipa=dynamic-bifurcate -verify %s
-
-typedef signed char BOOL;
-typedef struct objc_class *Class;
-typedef struct objc_object {
- Class isa;
-} *id;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
-- (oneway void)release;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
-@end
-
-// We do not want to overhelm user with error messages in case they forgot to
-// assign to self and check that the result of [super init] is non-nil. So
-// stop tracking the receiver of init with respect to Retain Release checker.
-// radar://12115830
-@interface ParentOfCell : NSObject
-- (id)initWithInt: (int)inInt;
-@end
-@interface Cell : ParentOfCell{
- int x;
-}
-- (id)init;
-+ (void)test;
-@property int x;
-@end
-@implementation Cell
-@synthesize x;
-- (id) init {
- [super init];
- self.x = 3; // no-warning
- return self; // expected-warning {{Returning 'self' while it is not set to the result of '[(super or self)}}
-}
-- (id) initWithInt: (int)inInt {
- [super initWithInt: inInt];
- self.x = inInt; // no-warning
- return self; // expected-warning {{Returning 'self' while it is not set to the result of '[(super or self)}}
-}
-- (id) init2 {
- [self init]; // The call [self init] is inlined. We will warn inside the inlined body.
- self.x = 2; // no-warning
- return self;
-}
-
-- (id) initWithIntGood: (int)inInt {
- if (self = [super initWithInt: inInt]) {
- self.x = inInt;
- }
- return self;
-}
-+ (void) test {
- Cell *sharedCell1 = [[Cell alloc] init];
- [sharedCell1 release];
- Cell *sharedCell2 = [[Cell alloc] initWithInt: 3];
- [sharedCell2 release];
- Cell *sharedCell3 = [[Cell alloc] initWithIntGood: 3];
- [sharedCell3 release];
-}
-
-@end
-
diff --git a/test/Analysis/inlining/stl.cpp b/test/Analysis/inlining/stl.cpp
deleted file mode 100644
index 6678b5d20d0a..000000000000
--- a/test/Analysis/inlining/stl.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,cplusplus.NewDelete,debug.ExprInspection -analyzer-config c++-container-inlining=true -analyzer-config c++-stdlib-inlining=false -std=c++11 -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,cplusplus.NewDelete,debug.ExprInspection -analyzer-config c++-container-inlining=true -analyzer-config c++-stdlib-inlining=true -std=c++11 -DINLINE=1 -verify -analyzer-config eagerly-assume=false %s
-
-#include "../Inputs/system-header-simulator-cxx.h"
-
-void clang_analyzer_eval(bool);
-
-void testVector(std::vector<int> &nums) {
- if (nums.begin() != nums.end()) return;
-
- clang_analyzer_eval(nums.size() == 0);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#else
- // expected-warning@-4 {{UNKNOWN}}
-#endif
-}
-
-void testException(std::exception e) {
- // Notice that the argument is NOT passed by reference, so we can devirtualize.
- const char *x = e.what();
- clang_analyzer_eval(x == 0);
-#if INLINE
- // expected-warning@-2 {{TRUE}}
-#else
- // expected-warning@-4 {{UNKNOWN}}
-#endif
-}
diff --git a/test/Analysis/inlining/temp-dtors-path-notes.cpp b/test/Analysis/inlining/temp-dtors-path-notes.cpp
deleted file mode 100644
index 40b26b5c91ae..000000000000
--- a/test/Analysis/inlining/temp-dtors-path-notes.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyze -analyzer-checker core -analyzer-config cfg-temporary-dtors=true,c++-temp-dtor-inlining=true -analyzer-output=text -verify %s
-
-namespace test_simple_temporary {
-class C {
- int x;
-
-public:
- C(int x): x(x) {} // expected-note{{The value 0 is assigned to field 'x'}}
- ~C() { x = 1 / x; } // expected-warning{{Division by zero}}
- // expected-note@-1{{Division by zero}}
-};
-
-void test() {
- C(0); // expected-note {{Passing the value 0 via 1st parameter 'x'}}
- // expected-note@-1{{Calling constructor for 'C'}}
- // expected-note@-2{{Returning from constructor for 'C'}}
- // expected-note@-3{{Calling '~C'}}
-}
-} // end namespace test_simple_temporary
-
-namespace test_lifetime_extended_temporary {
-class C {
- int x;
-
-public:
- C(int x): x(x) {} // expected-note{{The value 0 is assigned to field 'x'}}
- void nop() const {}
- ~C() { x = 1 / x; } // expected-warning{{Division by zero}}
- // expected-note@-1{{Division by zero}}
-};
-
-void test(int coin) {
- // We'd divide by zero in the automatic destructor for variable 'c'.
- const C &c = coin ? C(1) : C(0); // expected-note {{Assuming 'coin' is 0}}
- // expected-note@-1{{'?' condition is false}}
- // expected-note@-2{{Passing the value 0 via 1st parameter 'x'}}
- // expected-note@-3{{Calling constructor for 'C'}}
- // expected-note@-4{{Returning from constructor for 'C'}}
- c.nop();
-} // expected-note{{Calling '~C'}}
-} // end namespace test_lifetime_extended_temporary
-
-namespace test_bug_after_dtor {
-int glob;
-
-class C {
-public:
- C() { glob += 1; }
- ~C() { glob -= 2; } // expected-note{{The value 0 is assigned to 'glob'}}
-};
-
-void test() {
- glob = 1;
- C(); // expected-note {{Calling '~C'}}
- // expected-note@-1{{Returning from '~C'}}
- glob = 1 / glob; // expected-warning{{Division by zero}}
- // expected-note@-1{{Division by zero}}
-}
-} // end namespace test_bug_after_dtor
diff --git a/test/Analysis/inlining/test-always-inline-size-option.c b/test/Analysis/inlining/test-always-inline-size-option.c
deleted file mode 100644
index 85fc8a16cc75..000000000000
--- a/test/Analysis/inlining/test-always-inline-size-option.c
+++ /dev/null
@@ -1,48 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-inline-max-stack-depth=3 -analyzer-config ipa-always-inline-size=3 -verify %s
-
-void clang_analyzer_eval(int);
-int nested5() {
- if (5 < 3)
- return 0;
- else
- if (3 == 3)
- return 0;
- return 0;
-}
-int nested4() {
- return nested5();
-}
-int nested3() {
- return nested4();
-}
-int nested2() {
- return nested3();
-}
-int nested1() {
- return nested2();
-}
-
-void testNested() {
- clang_analyzer_eval(nested1() == 0); // expected-warning{{TRUE}}
-}
-
-// Make sure we terminate a recursive path.
-int recursive() {
- return recursive();
-}
-int callRecursive() {
- return recursive();
-}
-
-int mutuallyRecursive1();
-
-int mutuallyRecursive2() {
- return mutuallyRecursive1();
-}
-
-int mutuallyRecursive1() {
- return mutuallyRecursive2();
-}
-int callMutuallyRecursive() {
- return mutuallyRecursive1();
-}
diff --git a/test/Analysis/inlining/test_objc_inlining_option.m b/test/Analysis/inlining/test_objc_inlining_option.m
deleted file mode 100644
index f3a9417dac31..000000000000
--- a/test/Analysis/inlining/test_objc_inlining_option.m
+++ /dev/null
@@ -1,34 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-config ipa=dynamic-bifurcate -analyzer-config objc-inlining=false -verify %s
-// expected-no-diagnostics
-
-typedef signed char BOOL;
-typedef struct objc_class *Class;
-typedef struct objc_object {
- Class isa;
-} *id;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
-@end
-
-// Vanila: ObjC class method is called by name.
-@interface MyParent : NSObject
-+ (int)getInt;
-@end
-@interface MyClass : MyParent
-+ (int)getInt;
-@end
-@implementation MyClass
-+ (int)testClassMethodByName {
- int y = [MyClass getInt];
- return 5/y; // no-warning
-}
-+ (int)getInt {
- return 0;
-}
-@end \ No newline at end of file
diff --git a/test/Analysis/inner-pointer.cpp b/test/Analysis/inner-pointer.cpp
deleted file mode 100644
index 81b750d7e5dd..000000000000
--- a/test/Analysis/inner-pointer.cpp
+++ /dev/null
@@ -1,397 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=cplusplus.InnerPointer \
-// RUN: %s -analyzer-output=text -verify
-
-#include "Inputs/system-header-simulator-cxx.h"
-namespace std {
-
-template <typename T>
-void func_ref(T &a);
-
-template <typename T>
-void func_const_ref(const T &a);
-
-template <typename T>
-void func_value(T a);
-
-string my_string = "default";
-void default_arg(int a = 42, string &b = my_string);
-
-} // end namespace std
-
-void consume(const char *) {}
-void consume(const wchar_t *) {}
-void consume(const char16_t *) {}
-void consume(const char32_t *) {}
-
-//=--------------------------------------=//
-// `std::string` member functions //
-//=--------------------------------------=//
-
-void deref_after_scope_char(bool cond) {
- const char *c, *d;
- {
- std::string s;
- c = s.c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- d = s.data(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- } // expected-note {{Inner buffer of 'std::string' deallocated by call to destructor}}
- // expected-note@-1 {{Inner buffer of 'std::string' deallocated by call to destructor}}
- std::string s;
- const char *c2 = s.c_str();
- if (cond) {
- // expected-note@-1 {{Assuming 'cond' is not equal to 0}}
- // expected-note@-2 {{Taking true branch}}
- // expected-note@-3 {{Assuming 'cond' is 0}}
- // expected-note@-4 {{Taking false branch}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
- } else {
- consume(d); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
- }
-}
-
-void deref_after_scope_char_data_non_const() {
- char *c;
- {
- std::string s;
- c = s.data(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- } // expected-note {{Inner buffer of 'std::string' deallocated by call to destructor}}
- std::string s;
- char *c2 = s.data();
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_scope_wchar_t(bool cond) {
- const wchar_t *c, *d;
- {
- std::wstring s;
- c = s.c_str(); // expected-note {{Pointer to inner buffer of 'std::wstring' obtained here}}
- d = s.data(); // expected-note {{Pointer to inner buffer of 'std::wstring' obtained here}}
- } // expected-note {{Inner buffer of 'std::wstring' deallocated by call to destructor}}
- // expected-note@-1 {{Inner buffer of 'std::wstring' deallocated by call to destructor}}
- std::wstring s;
- const wchar_t *c2 = s.c_str();
- if (cond) {
- // expected-note@-1 {{Assuming 'cond' is not equal to 0}}
- // expected-note@-2 {{Taking true branch}}
- // expected-note@-3 {{Assuming 'cond' is 0}}
- // expected-note@-4 {{Taking false branch}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
- } else {
- consume(d); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
- }
-}
-
-void deref_after_scope_char16_t_cstr() {
- const char16_t *c16;
- {
- std::u16string s16;
- c16 = s16.c_str(); // expected-note {{Pointer to inner buffer of 'std::u16string' obtained here}}
- } // expected-note {{Inner buffer of 'std::u16string' deallocated by call to destructor}}
- std::u16string s16;
- const char16_t *c16_2 = s16.c_str();
- consume(c16); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_scope_char32_t_data() {
- const char32_t *c32;
- {
- std::u32string s32;
- c32 = s32.data(); // expected-note {{Pointer to inner buffer of 'std::u32string' obtained here}}
- } // expected-note {{Inner buffer of 'std::u32string' deallocated by call to destructor}}
- std::u32string s32;
- const char32_t *c32_2 = s32.data();
- consume(c32); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void multiple_symbols(bool cond) {
- const char *c1, *d1;
- {
- std::string s1;
- c1 = s1.c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- d1 = s1.data(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- const char *local = s1.c_str();
- consume(local); // no-warning
- } // expected-note {{Inner buffer of 'std::string' deallocated by call to destructor}}
- // expected-note@-1 {{Inner buffer of 'std::string' deallocated by call to destructor}}
- std::string s2;
- const char *c2 = s2.c_str();
- if (cond) {
- // expected-note@-1 {{Assuming 'cond' is not equal to 0}}
- // expected-note@-2 {{Taking true branch}}
- // expected-note@-3 {{Assuming 'cond' is 0}}
- // expected-note@-4 {{Taking false branch}}
- consume(c1); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
- } else {
- consume(d1); // expected-warning {{Inner pointer of container used after re/deallocation}}
- } // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_scope_ok(bool cond) {
- const char *c, *d;
- std::string s;
- {
- c = s.c_str();
- d = s.data();
- }
- if (cond)
- consume(c); // no-warning
- else
- consume(d); // no-warning
-}
-
-void deref_after_equals() {
- const char *c;
- std::string s = "hello";
- c = s.c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- s = "world"; // expected-note {{Inner buffer of 'std::string' reallocated by call to 'operator='}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_plus_equals() {
- const char *c;
- std::string s = "hello";
- c = s.data(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- s += " world"; // expected-note {{Inner buffer of 'std::string' reallocated by call to 'operator+='}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_clear() {
- const char *c;
- std::string s;
- c = s.c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- s.clear(); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'clear'}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_append() {
- const char *c;
- std::string s = "hello";
- c = s.c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- s.append(2, 'x'); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'append'}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_assign() {
- const char *c;
- std::string s;
- c = s.data(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- s.assign(4, 'a'); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'assign'}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_erase() {
- const char *c;
- std::string s = "hello";
- c = s.c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- s.erase(0, 2); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'erase'}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_insert() {
- const char *c;
- std::string s = "ello";
- c = s.c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- s.insert(0, 1, 'h'); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'insert'}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_replace() {
- const char *c;
- std::string s = "hello world";
- c = s.c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- s.replace(6, 5, "string"); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'replace'}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_pop_back() {
- const char *c;
- std::string s;
- c = s.c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- s.pop_back(); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'pop_back'}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_push_back() {
- const char *c;
- std::string s;
- c = s.data(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- s.push_back('c'); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'push_back'}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_reserve() {
- const char *c;
- std::string s;
- c = s.c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- s.reserve(5); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'reserve'}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_resize() {
- const char *c;
- std::string s;
- c = s.data(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- s.resize(5); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'resize'}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_shrink_to_fit() {
- const char *c;
- std::string s;
- c = s.data(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- s.shrink_to_fit(); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'shrink_to_fit'}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void deref_after_swap() {
- const char *c;
- std::string s1, s2;
- c = s1.data(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- s1.swap(s2); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'swap'}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-struct S {
- std::string s;
- const char *name() {
- return s.c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- // expected-note@-1 {{Pointer to inner buffer of 'std::string' obtained here}}
- }
- void clear() {
- s.clear(); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'clear'}}
- }
- ~S() {} // expected-note {{Inner buffer of 'std::string' deallocated by call to destructor}}
-};
-
-void cleared_through_method() {
- S x;
- const char *c = x.name(); // expected-note {{Calling 'S::name'}}
- // expected-note@-1 {{Returning from 'S::name'}}
- x.clear(); // expected-note {{Calling 'S::clear'}}
- // expected-note@-1 {{Returning; inner buffer was reallocated}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void destroyed_through_method() {
- S y;
- const char *c = y.name(); // expected-note {{Calling 'S::name'}}
- // expected-note@-1 {{Returning from 'S::name'}}
- y.~S(); // expected-note {{Calling '~S'}}
- // expected-note@-1 {{Returning; inner buffer was deallocated}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-//=---------------------------=//
-// Other STL functions //
-//=---------------------------=//
-
-void STL_func_ref() {
- const char *c;
- std::string s;
- c = s.c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- std::func_ref(s); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'func_ref'}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void STL_func_const_ref() {
- const char *c;
- std::string s;
- c = s.c_str();
- std::func_const_ref(s);
- consume(c); // no-warning
-}
-
-void STL_func_value() {
- const char *c;
- std::string s;
- c = s.c_str();
- std::func_value(s);
- consume(c); // no-warning
-}
-
-void func_ptr_known() {
- const char *c;
- std::string s;
- void (*func_ptr)(std::string &) = std::func_ref<std::string>;
- c = s.c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- func_ptr(s); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'func_ref'}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-void func_ptr_unknown(void (*func_ptr)(std::string &)) {
- const char *c;
- std::string s;
- c = s.c_str();
- func_ptr(s);
- consume(c); // no-warning
-}
-
-void func_default_arg() {
- const char *c;
- std::string s;
- c = s.c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- default_arg(3, s); // expected-note {{Inner buffer of 'std::string' reallocated by call to 'default_arg'}}
- consume(c); // expected-warning {{Inner pointer of container used after re/deallocation}}
- // expected-note@-1 {{Inner pointer of container used after re/deallocation}}
-}
-
-struct T {
- std::string to_string() { return s; }
-private:
- std::string s;
-};
-
-const char *escape_via_return_temp() {
- T x;
- return x.to_string().c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- // expected-note@-1 {{Inner buffer of 'std::string' deallocated by call to destructor}}
- // expected-warning@-2 {{Inner pointer of container used after re/deallocation}}
- // expected-note@-3 {{Inner pointer of container used after re/deallocation}}
-}
-
-const char *escape_via_return_local() {
- std::string s;
- return s.c_str(); // expected-note {{Pointer to inner buffer of 'std::string' obtained here}}
- // expected-note@-1 {{Inner buffer of 'std::string' deallocated by call to destructor}}
- // expected-warning@-2 {{Inner pointer of container used after re/deallocation}}
- // expected-note@-3 {{Inner pointer of container used after re/deallocation}}
-}
-
-
-char *c();
-class A {};
-
-void no_CXXRecordDecl() {
- A a, *b;
- *(void **)&b = c() + 1;
- *b = a; // no-crash
-}
-
-void checkReference(std::string &s) {
- const char *c = s.c_str();
-}
diff --git a/test/Analysis/invalid-a-na-ly-zer-con-fig-value.c b/test/Analysis/invalid-a-na-ly-zer-con-fig-value.c
deleted file mode 100644
index ec967d3c47c2..000000000000
--- a/test/Analysis/invalid-a-na-ly-zer-con-fig-value.c
+++ /dev/null
@@ -1,84 +0,0 @@
-// Same as invalid-analyzer-config-value.c but without -analyzer-config
-// in the file name, so that argument string pattern matching
-// didn't accidentally match it.
-
-// RUN: not %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config notes-as-events=yesplease \
-// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-BOOL-INPUT
-
-// CHECK-BOOL-INPUT: (frontend): invalid input for analyzer-config option
-// CHECK-BOOL-INPUT-SAME: 'notes-as-events', that expects a boolean value
-
-// RUN: %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config-compatibility-mode=true \
-// RUN: -analyzer-config notes-as-events=yesplease
-
-
-// RUN: not %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config max-inlinable-size=400km/h \
-// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-UINT-INPUT
-
-// CHECK-UINT-INPUT: (frontend): invalid input for analyzer-config option
-// CHECK-UINT-INPUT-SAME: 'max-inlinable-size', that expects an unsigned
-// CHECK-UINT-INPUT-SAME: value
-
-// RUN: %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config-compatibility-mode=true \
-// RUN: -analyzer-config max-inlinable-size=400km/h
-
-
-// RUN: not %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config ctu-dir=0123012301230123 \
-// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-FILENAME-INPUT
-
-// CHECK-FILENAME-INPUT: (frontend): invalid input for analyzer-config option
-// CHECK-FILENAME-INPUT-SAME: 'ctu-dir', that expects a filename
-// CHECK-FILENAME-INPUT-SAME: value
-
-// RUN: %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config-compatibility-mode=true \
-// RUN: -analyzer-config ctu-dir=0123012301230123
-
-
-// RUN: not %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config no-false-positives=true \
-// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-UNKNOWN-CFG
-
-// CHECK-UNKNOWN-CFG: (frontend): unknown analyzer-config 'no-false-positives'
-
-// RUN: %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config-compatibility-mode=true \
-// RUN: -analyzer-config no-false-positives=true
-
-
-// Test the driver properly using "analyzer-config-compatibility-mode=true",
-// no longer causing an error on input error.
-// RUN: %clang --analyze %s
-
-// RUN: not %clang --analyze %s \
-// RUN: -Xclang -analyzer-config -Xclang no-false-positives=true \
-// RUN: -Xclang -analyzer-config-compatibility-mode=false \
-// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-NO-COMPAT
-
-// CHECK-NO-COMPAT: error: unknown analyzer-config 'no-false-positives'
-
-// Test the driver properly using "analyzer-config-compatibility-mode=true",
-// even if -analyze isn't specified.
-// RUN: %clang -fsyntax-only -Xclang -analyzer-config\
-// RUN: -Xclang remember=TheVasa %s
-// RUN: %clang -fsyntax-only -Xanalyzer -analyzer-config\
-// RUN: -Xanalyzer remember=TheVasa %s
-// RUN: %clang --analyze -Xanalyzer -analyzer-config\
-// RUN: -Xanalyzer remember=TheVasa %s
-
-// expected-no-diagnostics
-
-int main() {}
diff --git a/test/Analysis/invalid-analyzer-config-value.c b/test/Analysis/invalid-analyzer-config-value.c
deleted file mode 100644
index f942dd3e6226..000000000000
--- a/test/Analysis/invalid-analyzer-config-value.c
+++ /dev/null
@@ -1,80 +0,0 @@
-// RUN: not %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config notes-as-events=yesplease \
-// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-BOOL-INPUT
-
-// CHECK-BOOL-INPUT: (frontend): invalid input for analyzer-config option
-// CHECK-BOOL-INPUT-SAME: 'notes-as-events', that expects a boolean value
-
-// RUN: %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config-compatibility-mode=true \
-// RUN: -analyzer-config notes-as-events=yesplease
-
-
-// RUN: not %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config max-inlinable-size=400km/h \
-// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-UINT-INPUT
-
-// CHECK-UINT-INPUT: (frontend): invalid input for analyzer-config option
-// CHECK-UINT-INPUT-SAME: 'max-inlinable-size', that expects an unsigned
-// CHECK-UINT-INPUT-SAME: value
-
-// RUN: %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config-compatibility-mode=true \
-// RUN: -analyzer-config max-inlinable-size=400km/h
-
-
-// RUN: not %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config ctu-dir=0123012301230123 \
-// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-FILENAME-INPUT
-
-// CHECK-FILENAME-INPUT: (frontend): invalid input for analyzer-config option
-// CHECK-FILENAME-INPUT-SAME: 'ctu-dir', that expects a filename
-// CHECK-FILENAME-INPUT-SAME: value
-
-// RUN: %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config-compatibility-mode=true \
-// RUN: -analyzer-config ctu-dir=0123012301230123
-
-
-// RUN: not %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config no-false-positives=true \
-// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-UNKNOWN-CFG
-
-// CHECK-UNKNOWN-CFG: (frontend): unknown analyzer-config 'no-false-positives'
-
-// RUN: %clang_analyze_cc1 -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-config-compatibility-mode=true \
-// RUN: -analyzer-config no-false-positives=true
-
-
-// Test the driver properly using "analyzer-config-compatibility-mode=true",
-// no longer causing an error on input error.
-// RUN: %clang --analyze %s
-
-// RUN: not %clang --analyze %s \
-// RUN: -Xclang -analyzer-config -Xclang no-false-positives=true \
-// RUN: -Xclang -analyzer-config-compatibility-mode=false \
-// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-NO-COMPAT
-
-// CHECK-NO-COMPAT: error: unknown analyzer-config 'no-false-positives'
-
-// Test the driver properly using "analyzer-config-compatibility-mode=true",
-// even if -analyze isn't specified.
-// RUN: %clang -fsyntax-only -Xclang -analyzer-config\
-// RUN: -Xclang remember=TheVasa %s
-// RUN: %clang -fsyntax-only -Xanalyzer -analyzer-config\
-// RUN: -Xanalyzer remember=TheVasa %s
-// RUN: %clang --analyze -Xanalyzer -analyzer-config\
-// RUN: -Xanalyzer remember=TheVasa %s
-
-// expected-no-diagnostics
-
-int main() {}
diff --git a/test/Analysis/invalidated-iterator.cpp b/test/Analysis/invalidated-iterator.cpp
deleted file mode 100644
index 1151838bb843..000000000000
--- a/test/Analysis/invalidated-iterator.cpp
+++ /dev/null
@@ -1,399 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,cplusplus,alpha.cplusplus.InvalidatedIterator -analyzer-config aggressive-binary-operation-simplification=true -analyzer-config c++-container-inlining=false %s -verify
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,cplusplus,alpha.cplusplus.InvalidatedIterator -analyzer-config aggressive-binary-operation-simplification=true -analyzer-config c++-container-inlining=true -DINLINE=1 %s -verify
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-void bad_copy_assign_operator_list1(std::list<int> &L1,
- const std::list<int> &L2) {
- auto i0 = L1.cbegin();
- L1 = L2;
- *i0; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void bad_copy_assign_operator_vector1(std::vector<int> &V1,
- const std::vector<int> &V2) {
- auto i0 = V1.cbegin();
- V1 = V2;
- *i0; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void bad_copy_assign_operator_deque1(std::deque<int> &D1,
- const std::deque<int> &D2) {
- auto i0 = D1.cbegin();
- D1 = D2;
- *i0; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void bad_copy_assign_operator_forward_list1(std::forward_list<int> &FL1,
- const std::forward_list<int> &FL2) {
- auto i0 = FL1.cbegin();
- FL1 = FL2;
- *i0; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void bad_assign_list1(std::list<int> &L, int n) {
- auto i0 = L.cbegin();
- L.assign(10, n);
- *i0; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void bad_assign_vector1(std::vector<int> &V, int n) {
- auto i0 = V.cbegin();
- V.assign(10, n);
- *i0; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void bad_assign_deque1(std::deque<int> &D, int n) {
- auto i0 = D.cbegin();
- D.assign(10, n);
- *i0; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void bad_assign_forward_list1(std::forward_list<int> &FL, int n) {
- auto i0 = FL.cbegin();
- FL.assign(10, n);
- *i0; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_clear_list1(std::list<int> &L) {
- auto i0 = L.cend();
- L.clear();
- --i0; // no-warning
-}
-
-void bad_clear_list1(std::list<int> &L) {
- auto i0 = L.cbegin(), i1 = L.cend();
- L.clear();
- *i0; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void bad_clear_vector1(std::vector<int> &V) {
- auto i0 = V.cbegin(), i1 = V.cend();
- V.clear();
- *i0; // expected-warning{{Invalidated iterator accessed}}
- --i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void bad_clear_deque1(std::deque<int> &D) {
- auto i0 = D.cbegin(), i1 = D.cend();
- D.clear();
- *i0; // expected-warning{{Invalidated iterator accessed}}
- --i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_push_back_list1(std::list<int> &L, int n) {
- auto i0 = L.cbegin(), i1 = L.cend();
- L.push_back(n);
- *i0; // no-warning
- --i1; // no-warning
-}
-
-void good_push_back_vector1(std::vector<int> &V, int n) {
- auto i0 = V.cbegin(), i1 = V.cend();
- V.push_back(n);
- *i0; // no-warning
-}
-
-void bad_push_back_vector1(std::vector<int> &V, int n) {
- auto i0 = V.cbegin(), i1 = V.cend();
- V.push_back(n);
- --i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void bad_push_back_deque1(std::deque<int> &D, int n) {
- auto i0 = D.cbegin(), i1 = D.cend();
- D.push_back(n);
- *i0; // expected-warning{{Invalidated iterator accessed}}
- --i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_emplace_back_list1(std::list<int> &L, int n) {
- auto i0 = L.cbegin(), i1 = L.cend();
- L.emplace_back(n);
- *i0; // no-warning
- --i1; // no-warning
-}
-
-void good_emplace_back_vector1(std::vector<int> &V, int n) {
- auto i0 = V.cbegin(), i1 = V.cend();
- V.emplace_back(n);
- *i0; // no-warning
-}
-
-void bad_emplace_back_vector1(std::vector<int> &V, int n) {
- auto i0 = V.cbegin(), i1 = V.cend();
- V.emplace_back(n);
- --i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void bad_emplace_back_deque1(std::deque<int> &D, int n) {
- auto i0 = D.cbegin(), i1 = D.cend();
- D.emplace_back(n);
- *i0; // expected-warning{{Invalidated iterator accessed}}
- --i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_pop_back_list1(std::list<int> &L, int n) {
- auto i0 = L.cbegin(), i1 = L.cend(), i2 = i1--;
- L.pop_back();
- *i0; // no-warning
- *i2; // no-warning
-}
-
-void bad_pop_back_list1(std::list<int> &L, int n) {
- auto i0 = L.cbegin(), i1 = L.cend(), i2 = i1--;
- L.pop_back();
- *i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_pop_back_vector1(std::vector<int> &V, int n) {
- auto i0 = V.cbegin(), i1 = V.cend(), i2 = i1--;
- V.pop_back();
- *i0; // no-warning
-}
-
-void bad_pop_back_vector1(std::vector<int> &V, int n) {
- auto i0 = V.cbegin(), i1 = V.cend(), i2 = i1--;
- V.pop_back();
- *i1; // expected-warning{{Invalidated iterator accessed}}
- --i2; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_pop_back_deque1(std::deque<int> &D, int n) {
- auto i0 = D.cbegin(), i1 = D.cend(), i2 = i1--;
- D.pop_back();
- *i0; // no-warning
-}
-
-void bad_pop_back_deque1(std::deque<int> &D, int n) {
- auto i0 = D.cbegin(), i1 = D.cend(), i2 = i1--;
- D.pop_back();
- *i1; // expected-warning{{Invalidated iterator accessed}}
- --i2; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_push_front_list1(std::list<int> &L, int n) {
- auto i0 = L.cbegin(), i1 = L.cend();
- L.push_front(n);
- *i0; // no-warning
- --i1; // no-warning
-}
-
-void bad_push_front_deque1(std::deque<int> &D, int n) {
- auto i0 = D.cbegin(), i1 = D.cend();
- D.push_front(n);
- *i0; // expected-warning{{Invalidated iterator accessed}}
- --i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_push_front_forward_list1(std::forward_list<int> &FL, int n) {
- auto i0 = FL.cbegin(), i1 = FL.cend();
- FL.push_front(n);
- *i0; // no-warning
-}
-
-void good_emplace_front_list1(std::list<int> &L, int n) {
- auto i0 = L.cbegin(), i1 = L.cend();
- L.emplace_front(n);
- *i0; // no-warning
- --i1; // no-warning
-}
-
-void bad_emplace_front_deque1(std::deque<int> &D, int n) {
- auto i0 = D.cbegin(), i1 = D.cend();
- D.emplace_front(n);
- *i0; // expected-warning{{Invalidated iterator accessed}}
- --i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_emplace_front_forward_list1(std::forward_list<int> &FL, int n) {
- auto i0 = FL.cbegin(), i1 = FL.cend();
- FL.emplace_front(n);
- *i0; // no-warning
-}
-
-void good_pop_front_list1(std::list<int> &L, int n) {
- auto i1 = L.cbegin(), i0 = i1++;
- L.pop_front();
- *i1; // no-warning
-}
-
-void bad_pop_front_list1(std::list<int> &L, int n) {
- auto i1 = L.cbegin(), i0 = i1++;
- L.pop_front();
- *i0; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_pop_front_deque1(std::deque<int> &D, int n) {
- auto i1 = D.cbegin(), i0 = i1++;
- D.pop_front();
- *i1; // no-warning
-}
-
-void bad_pop_front_deque1(std::deque<int> &D, int n) {
- auto i1 = D.cbegin(), i0 = i1++;
- D.pop_front();
- *i0; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_pop_front_forward_list1(std::forward_list<int> &FL, int n) {
- auto i1 = FL.cbegin(), i0 = i1++;
- FL.pop_front();
- *i1; // no-warning
-}
-
-void bad_pop_front_forward_list1(std::forward_list<int> &FL, int n) {
- auto i1 = FL.cbegin(), i0 = i1++;
- FL.pop_front();
- *i0; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_insert_list1(std::list<int> &L, int n) {
- auto i1 = L.cbegin(), i0 = i1++;
- L.insert(i1, n);
- *i0; // no-warning
- *i1; // no-warning
-}
-
-void good_insert_vector1(std::vector<int> &V, int n) {
- auto i1 = V.cbegin(), i0 = i1++;
- V.insert(i1, n);
- *i0; // no-warning
-}
-
-void bad_insert_vector1(std::vector<int> &V, int n) {
- auto i1 = V.cbegin(), i0 = i1++;
- V.insert(i1, n);
- *i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void bad_insert_deque1(std::deque<int> &D, int n) {
- auto i1 = D.cbegin(), i0 = i1++;
- D.insert(i1, n);
- *i0; // expected-warning{{Invalidated iterator accessed}}
- *i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_emplace_list1(std::list<int> &L, int n) {
- auto i1 = L.cbegin(), i0 = i1++;
- L.emplace(i1, n);
- *i0; // no-warning
- *i1; // no-warning
-}
-
-void good_emplace_vector1(std::vector<int> &V, int n) {
- auto i1 = V.cbegin(), i0 = i1++;
- V.emplace(i1, n);
- *i0; // no-warning
-}
-
-void bad_emplace_vector1(std::vector<int> &V, int n) {
- auto i1 = V.cbegin(), i0 = i1++;
- V.emplace(i1, n);
- *i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void bad_emplace_deque1(std::deque<int> &D, int n) {
- auto i1 = D.cbegin(), i0 = i1++;
- D.emplace(i1, n);
- *i0; // expected-warning{{Invalidated iterator accessed}}
- *i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_erase_list1(std::list<int> &L) {
- auto i2 = L.cbegin(), i0 = i2++, i1 = i2++;
- L.erase(i1);
- *i0; // no-warning
- *i2; // no-warning
-}
-
-void bad_erase_list1(std::list<int> &L) {
- auto i0 = L.cbegin();
- L.erase(i0);
- *i0; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_erase_vector1(std::vector<int> &V) {
- auto i2 = V.cbegin(), i0 = i2++, i1 = i2++;
- V.erase(i1);
- *i0; // no-warning
-}
-
-void bad_erase_vector1(std::vector<int> &V) {
- auto i1 = V.cbegin(), i0 = i1++;
- V.erase(i0);
- *i0; // expected-warning{{Invalidated iterator accessed}}
- *i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void bad_erase_deque1(std::deque<int> &D) {
- auto i2 = D.cbegin(), i0 = i2++, i1 = i2++;
- D.erase(i1);
- *i0; // expected-warning{{Invalidated iterator accessed}}
- *i1; // expected-warning{{Invalidated iterator accessed}}
- *i2; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_erase_list2(std::list<int> &L) {
- auto i3 = L.cbegin(), i0 = i3++, i1 = i3++, i2 = i3++;
- L.erase(i1, i3);
- *i0; // no-warning
- *i3; // no-warning
-}
-
-void bad_erase_list2(std::list<int> &L) {
- auto i2 = L.cbegin(), i0 = i2++, i1 = i2++;
- L.erase(i0, i2);
- *i0; // expected-warning{{Invalidated iterator accessed}}
- *i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_erase_vector2(std::vector<int> &V) {
- auto i3 = V.cbegin(), i0 = i3++, i1 = i3++, i2 = i3++;;
- V.erase(i1, i3);
- *i0; // no-warning
-}
-
-void bad_erase_vector2(std::vector<int> &V) {
- auto i2 = V.cbegin(), i0 = i2++, i1 = i2++;
- V.erase(i0, i2);
- *i0; // expected-warning{{Invalidated iterator accessed}}
- *i1; // expected-warning{{Invalidated iterator accessed}}
- *i2; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void bad_erase_deque2(std::deque<int> &D) {
- auto i3 = D.cbegin(), i0 = i3++, i1 = i3++, i2 = i3++;
- D.erase(i1, i3);
- *i0; // expected-warning{{Invalidated iterator accessed}}
- *i1; // expected-warning{{Invalidated iterator accessed}}
- *i2; // expected-warning{{Invalidated iterator accessed}}
- *i3; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_erase_after_forward_list1(std::forward_list<int> &FL) {
- auto i2 = FL.cbegin(), i0 = i2++, i1 = i2++;
- FL.erase_after(i0);
- *i0; // no-warning
- *i2; // no-warning
-}
-
-void bad_erase_after_forward_list1(std::forward_list<int> &FL) {
- auto i1 = FL.cbegin(), i0 = i1++;
- FL.erase_after(i0);
- *i1; // expected-warning{{Invalidated iterator accessed}}
-}
-
-void good_erase_after_forward_list2(std::forward_list<int> &FL) {
- auto i3 = FL.cbegin(), i0 = i3++, i1 = i3++, i2 = i3++;
- FL.erase_after(i0, i3);
- *i0; // no-warning
- *i3; // no-warning
-}
-
-void bad_erase_after_forward_list2(std::forward_list<int> &FL) {
- auto i3 = FL.cbegin(), i0 = i3++, i1 = i3++, i2 = i3++;
- FL.erase_after(i0, i3);
- *i1; // expected-warning{{Invalidated iterator accessed}}
- *i2; // expected-warning{{Invalidated iterator accessed}}
-}
diff --git a/test/Analysis/iterator-range.cpp b/test/Analysis/iterator-range.cpp
deleted file mode 100644
index 6fc8939c8e84..000000000000
--- a/test/Analysis/iterator-range.cpp
+++ /dev/null
@@ -1,238 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,cplusplus,alpha.cplusplus.IteratorRange -analyzer-config aggressive-binary-operation-simplification=true -analyzer-config c++-container-inlining=false %s -verify
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,cplusplus,alpha.cplusplus.IteratorRange -analyzer-config aggressive-binary-operation-simplification=true -analyzer-config c++-container-inlining=true -DINLINE=1 %s -verify
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-void clang_analyzer_warnIfReached();
-
-void simple_good_end(const std::vector<int> &v) {
- auto i = v.end();
- if (i != v.end()) {
- clang_analyzer_warnIfReached();
- *i; // no-warning
- }
-}
-
-void simple_good_end_negated(const std::vector<int> &v) {
- auto i = v.end();
- if (!(i == v.end())) {
- clang_analyzer_warnIfReached();
- *i; // no-warning
- }
-}
-
-void simple_bad_end(const std::vector<int> &v) {
- auto i = v.end();
- *i; // expected-warning{{Past-the-end iterator dereferenced}}
-}
-
-void copy(const std::vector<int> &v) {
- auto i1 = v.end();
- auto i2 = i1;
- *i2; // expected-warning{{Past-the-end iterator dereferenced}}
-}
-
-void decrease(const std::vector<int> &v) {
- auto i = v.end();
- --i;
- *i; // no-warning
-}
-
-void copy_and_decrease1(const std::vector<int> &v) {
- auto i1 = v.end();
- auto i2 = i1;
- --i1;
- *i1; // no-warning
-}
-
-void copy_and_decrease2(const std::vector<int> &v) {
- auto i1 = v.end();
- auto i2 = i1;
- --i1;
- *i2; // expected-warning{{Past-the-end iterator dereferenced}}
-}
-
-void copy_and_increase1(const std::vector<int> &v) {
- auto i1 = v.begin();
- auto i2 = i1;
- ++i1;
- if (i1 == v.end())
- *i2; // no-warning
-}
-
-void copy_and_increase2(const std::vector<int> &v) {
- auto i1 = v.begin();
- auto i2 = i1;
- ++i1;
- if (i2 == v.end())
- *i2; // expected-warning{{Past-the-end iterator dereferenced}}
-}
-
-void copy_and_increase3(const std::vector<int> &v) {
- auto i1 = v.begin();
- auto i2 = i1;
- ++i1;
- if (v.end() == i2)
- *i2; // expected-warning{{Past-the-end iterator dereferenced}}
-}
-
-template <class InputIterator, class T>
-InputIterator nonStdFind(InputIterator first, InputIterator last,
- const T &val) {
- for (auto i = first; i != last; ++i) {
- if (*i == val) {
- return i;
- }
- }
- return last;
-}
-
-void good_non_std_find(std::vector<int> &V, int e) {
- auto first = nonStdFind(V.begin(), V.end(), e);
- if (V.end() != first)
- *first; // no-warning
-}
-
-void bad_non_std_find(std::vector<int> &V, int e) {
- auto first = nonStdFind(V.begin(), V.end(), e);
- *first; // expected-warning{{Past-the-end iterator dereferenced}}
-}
-
-void tricky(std::vector<int> &V, int e) {
- const auto first = V.begin();
- const auto comp1 = (first != V.end()), comp2 = (first == V.end());
- if (comp1)
- *first; // no-warning
-}
-
-void loop(std::vector<int> &V, int e) {
- auto start = V.begin();
- while (true) {
- auto item = std::find(start, V.end(), e);
- if (item == V.end())
- break;
- *item; // no-warning
- start = ++item; // no-warning
- }
-}
-
-void good_push_back(std::list<int> &L, int n) {
- auto i0 = --L.cend();
- L.push_back(n);
- *++i0; // no-warning
-}
-
-void bad_push_back(std::list<int> &L, int n) {
- auto i0 = --L.cend();
- L.push_back(n);
- ++i0;
- *++i0; // expected-warning{{Past-the-end iterator dereferenced}}
-}
-
-void good_pop_back(std::list<int> &L, int n) {
- auto i0 = --L.cend(); --i0;
- L.pop_back();
- *i0; // no-warning
-}
-
-void bad_pop_back(std::list<int> &L, int n) {
- auto i0 = --L.cend(); --i0;
- L.pop_back();
- *++i0; // expected-warning{{Past-the-end iterator dereferenced}}
-}
-
-void good_push_front(std::list<int> &L, int n) {
- auto i0 = L.cbegin();
- L.push_front(n);
- *--i0; // no-warning
-}
-
-void bad_push_front(std::list<int> &L, int n) {
- auto i0 = L.cbegin();
- L.push_front(n);
- --i0;
- --i0; // expected-warning{{Iterator decremented ahead of its valid range}}
-}
-
-void good_pop_front(std::list<int> &L, int n) {
- auto i0 = ++L.cbegin();
- L.pop_front();
- *i0; // no-warning
-}
-
-void bad_pop_front(std::list<int> &L, int n) {
- auto i0 = ++L.cbegin();
- L.pop_front();
- --i0; // expected-warning{{Iterator decremented ahead of its valid range}}
-}
-
-void bad_move(std::list<int> &L1, std::list<int> &L2) {
- auto i0 = --L2.cend();
- L1 = std::move(L2);
- *++i0; // expected-warning{{Past-the-end iterator dereferenced}}
-}
-
-void bad_move_push_back(std::list<int> &L1, std::list<int> &L2, int n) {
- auto i0 = --L2.cend();
- L2.push_back(n);
- L1 = std::move(L2);
- ++i0;
- *++i0; // expected-warning{{Past-the-end iterator dereferenced}}
-}
-
-void good_incr_begin(const std::list<int> &L) {
- auto i0 = L.begin();
- ++i0; // no-warning
-}
-
-void bad_decr_begin(const std::list<int> &L) {
- auto i0 = L.begin();
- --i0; // expected-warning{{Iterator decremented ahead of its valid range}}
-}
-
-void good_decr_end(const std::list<int> &L) {
- auto i0 = L.end();
- --i0; // no-warning
-}
-
-void bad_incr_end(const std::list<int> &L) {
- auto i0 = L.end();
- ++i0; // expected-warning{{Iterator incremented behind the past-the-end iterator}}
-}
-
-struct simple_iterator_base {
- simple_iterator_base();
- simple_iterator_base(const simple_iterator_base& rhs);
- simple_iterator_base &operator=(const simple_iterator_base& rhs);
- virtual ~simple_iterator_base();
- bool friend operator==(const simple_iterator_base &lhs,
- const simple_iterator_base &rhs);
- bool friend operator!=(const simple_iterator_base &lhs,
- const simple_iterator_base &rhs);
-private:
- int *ptr;
-};
-
-struct simple_derived_iterator: public simple_iterator_base {
- int& operator*();
- int* operator->();
- simple_iterator_base &operator++();
- simple_iterator_base operator++(int);
- simple_iterator_base &operator--();
- simple_iterator_base operator--(int);
-};
-
-struct simple_container {
- typedef simple_derived_iterator iterator;
-
- iterator begin();
- iterator end();
-};
-
-void good_derived(simple_container c) {
- auto i0 = c.end();
- if (i0 != c.end()) {
- clang_analyzer_warnIfReached();
- *i0; // no-warning
- }
-}
diff --git a/test/Analysis/ivars.m b/test/Analysis/ivars.m
deleted file mode 100644
index c0bb4bc1749a..000000000000
--- a/test/Analysis/ivars.m
+++ /dev/null
@@ -1,140 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-store=region -fblocks -verify -Wno-objc-root-class -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(int);
-
-@interface Root {
-@public
- int uniqueID;
-}
-
-- (void)refreshID;
-@end
-
-void testInvalidation(Root *obj) {
- int savedID = obj->uniqueID;
- clang_analyzer_eval(savedID == obj->uniqueID); // expected-warning{{TRUE}}
-
- [obj refreshID];
- clang_analyzer_eval(savedID == obj->uniqueID); // expected-warning{{UNKNOWN}}
-}
-
-
-@interface Child : Root
-@end
-
-@implementation Child
-- (void)testSuperInvalidation {
- int savedID = self->uniqueID;
- clang_analyzer_eval(savedID == self->uniqueID); // expected-warning{{TRUE}}
-
- [super refreshID];
- clang_analyzer_eval(savedID == self->uniqueID); // expected-warning{{UNKNOWN}}
-}
-@end
-
-
-@interface ManyIvars {
- struct S { int a, b; } s;
- int c;
- int d;
-}
-@end
-
-struct S makeS();
-
-@implementation ManyIvars
-
-- (void)testMultipleIvarInvalidation:(int)useConstraints {
- if (useConstraints) {
- if (s.a != 1) return;
- if (s.b != 2) return;
- if (c != 3) return;
- if (d != 4) return;
- return;
- } else {
- s.a = 1;
- s.b = 2;
- c = 3;
- d = 4;
- }
-
- clang_analyzer_eval(s.a == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(s.b == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(c == 3); // expected-warning{{TRUE}}
- clang_analyzer_eval(d == 4); // expected-warning{{TRUE}}
-
- d = 0;
-
- clang_analyzer_eval(s.a == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(s.b == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(c == 3); // expected-warning{{TRUE}}
- clang_analyzer_eval(d == 0); // expected-warning{{TRUE}}
-
- d = 4;
- s = makeS();
-
- clang_analyzer_eval(s.a == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(s.b == 2); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(c == 3); // expected-warning{{TRUE}}
- clang_analyzer_eval(d == 4); // expected-warning{{TRUE}}
-
- s.a = 1;
-
- clang_analyzer_eval(s.a == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(s.b == 2); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(c == 3); // expected-warning{{TRUE}}
- clang_analyzer_eval(d == 4); // expected-warning{{TRUE}}
-}
-
-+ (void)testMultipleIvarInvalidation:(int)useConstraints
- forObject:(ManyIvars *)obj {
- if (useConstraints) {
- if (obj->s.a != 1) return;
- if (obj->s.b != 2) return;
- if (obj->c != 3) return;
- if (obj->d != 4) return;
- return;
- } else {
- obj->s.a = 1;
- obj->s.b = 2;
- obj->c = 3;
- obj->d = 4;
- }
-
- clang_analyzer_eval(obj->s.a == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(obj->s.b == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(obj->c == 3); // expected-warning{{TRUE}}
- clang_analyzer_eval(obj->d == 4); // expected-warning{{TRUE}}
-
- obj->d = 0;
-
- clang_analyzer_eval(obj->s.a == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(obj->s.b == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(obj->c == 3); // expected-warning{{TRUE}}
- clang_analyzer_eval(obj->d == 0); // expected-warning{{TRUE}}
-
- obj->d = 4;
- obj->s = makeS();
-
- clang_analyzer_eval(obj->s.a == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(obj->s.b == 2); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(obj->c == 3); // expected-warning{{TRUE}}
- clang_analyzer_eval(obj->d == 4); // expected-warning{{TRUE}}
-
- obj->s.a = 1;
-
- clang_analyzer_eval(obj->s.a == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(obj->s.b == 2); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(obj->c == 3); // expected-warning{{TRUE}}
- clang_analyzer_eval(obj->d == 4); // expected-warning{{TRUE}}
-}
-
-@end
-
-
-int testNull(Root *obj) {
- if (obj) return 0;
-
- int *x = &obj->uniqueID;
- return *x; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}}
-}
diff --git a/test/Analysis/keychainAPI-diagnostic-visitor.m b/test/Analysis/keychainAPI-diagnostic-visitor.m
deleted file mode 100644
index d8da697a41e8..000000000000
--- a/test/Analysis/keychainAPI-diagnostic-visitor.m
+++ /dev/null
@@ -1,35 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=osx.SecKeychainAPI -analyzer-store=region -analyzer-output=text -verify %s
-
-// This file is for testing enhanced diagnostics produced by the default SecKeychainAPI checker.
-
-typedef unsigned int OSStatus;
-typedef unsigned int SecKeychainAttributeList;
-typedef unsigned int SecKeychainItemRef;
-typedef unsigned int SecItemClass;
-typedef unsigned int UInt32;
-enum {
- noErr = 0,
- GenericError = 1
-};
-OSStatus SecKeychainItemCopyContent (
- SecKeychainItemRef itemRef,
- SecItemClass *itemClass,
- SecKeychainAttributeList *attrList,
- UInt32 *length,
- void **outData
- );
-
-void DellocWithCFStringCreate4() {
- unsigned int *ptr = 0;
- OSStatus st = 0;
- UInt32 length;
- char *bytes;
- char *x;
- st = SecKeychainItemCopyContent(2, ptr, ptr, &length, (void **)&bytes); // expected-note {{Data is allocated here}}
- x = bytes;
- if (st == noErr) // expected-note {{Assuming 'st' is equal to noErr}} // expected-note{{Taking true branch}}
- x = bytes;;
-
- length++; // expected-warning {{Allocated data is not released}} // expected-note{{Allocated data is not released}}
-}
-
diff --git a/test/Analysis/keychainAPI.m b/test/Analysis/keychainAPI.m
deleted file mode 100644
index 15a3b66b1a38..000000000000
--- a/test/Analysis/keychainAPI.m
+++ /dev/null
@@ -1,468 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=osx.SecKeychainAPI -fblocks %s -verify
-
-#include "Inputs/system-header-simulator-objc.h"
-
-// Fake typedefs.
-typedef unsigned int OSStatus;
-typedef unsigned int SecKeychainAttributeList;
-typedef unsigned int SecKeychainItemRef;
-typedef unsigned int SecItemClass;
-typedef unsigned int UInt32;
-typedef unsigned int SecProtocolType;
-typedef unsigned int SecAuthenticationType;
-typedef unsigned int SecKeychainAttributeInfo;
-enum {
- noErr = 0,
- GenericError = 1
-};
-
-// Functions that allocate data.
-OSStatus SecKeychainItemCopyContent (
- SecKeychainItemRef itemRef,
- SecItemClass *itemClass,
- SecKeychainAttributeList *attrList,
- UInt32 *length,
- void **outData
-);
-OSStatus SecKeychainFindGenericPassword (
- CFTypeRef keychainOrArray,
- UInt32 serviceNameLength,
- const char *serviceName,
- UInt32 accountNameLength,
- const char *accountName,
- UInt32 *passwordLength,
- void **passwordData,
- SecKeychainItemRef *itemRef
-);
-OSStatus SecKeychainFindInternetPassword (
- CFTypeRef keychainOrArray,
- UInt32 serverNameLength,
- const char *serverName,
- UInt32 securityDomainLength,
- const char *securityDomain,
- UInt32 accountNameLength,
- const char *accountName,
- UInt32 pathLength,
- const char *path,
- UInt16 port,
- SecProtocolType protocol,
- SecAuthenticationType authenticationType,
- UInt32 *passwordLength,
- void **passwordData,
- SecKeychainItemRef *itemRef
-);
-OSStatus SecKeychainItemCopyAttributesAndData (
- SecKeychainItemRef itemRef,
- SecKeychainAttributeInfo *info,
- SecItemClass *itemClass,
- SecKeychainAttributeList **attrList,
- UInt32 *length,
- void **outData
-);
-
-// Functions which free data.
-OSStatus SecKeychainItemFreeContent (
- SecKeychainAttributeList *attrList,
- void *data
-);
-OSStatus SecKeychainItemFreeAttributesAndData (
- SecKeychainAttributeList *attrList,
- void *data
-);
-
-void errRetVal() {
- unsigned int *ptr = 0;
- OSStatus st = 0;
- UInt32 length;
- void *outData;
- st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData);
- if (st == GenericError)
- SecKeychainItemFreeContent(ptr, outData);
-} // expected-warning{{Allocated data is not released: missing a call to 'SecKeychainItemFreeContent'}}
-
-// If null is passed in, the data is not allocated, so no need for the matching free.
-void fooDoNotReportNull() {
- unsigned int *ptr = 0;
- OSStatus st = 0;
- UInt32 *length = 0;
- void **outData = 0;
- SecKeychainItemCopyContent(2, ptr, ptr, 0, 0);
- SecKeychainItemCopyContent(2, ptr, ptr, length, outData);
-}// no-warning
-
-void doubleAlloc() {
- unsigned int *ptr = 0;
- OSStatus st = 0;
- UInt32 length;
- void *outData;
- st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData);
- st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData); // expected-warning {{Allocated data should be released before another call to the allocator:}}
- if (st == noErr)
- SecKeychainItemFreeContent(ptr, outData);
-}
-
-// Do not warn if undefined value is passed to a function.
-void fooOnlyFreeUndef() {
- unsigned int *ptr = 0;
- OSStatus st = 0;
- UInt32 length;
- void *outData;
- SecKeychainItemFreeContent(ptr, outData);
-}// no-warning
-
-// Do not warn if the address is a parameter in the enclosing function.
-void fooOnlyFreeParam(void *attrList, void* X) {
- SecKeychainItemFreeContent(attrList, X);
-}// no-warning
-
-// If we are returning the value, do not report.
-void* returnContent() {
- unsigned int *ptr = 0;
- OSStatus st = 0;
- UInt32 length;
- void *outData;
- st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData);
- return outData;
-} // no-warning
-
-// Password was passed in as an argument and does not have to be deleted.
-OSStatus getPasswordAndItem(void** password, UInt32* passwordLength) {
- OSStatus err;
- SecKeychainItemRef item;
- err = SecKeychainFindGenericPassword(0, 3, "xx", 3, "xx",
- passwordLength, password, &item);
- return err;
-} // no-warning
-
-// Make sure we do not report an error if we call free only if password != 0.
-// Also, do not report double allocation if first allocation returned an error.
-OSStatus testSecKeychainFindGenericPassword(UInt32* passwordLength,
- CFTypeRef keychainOrArray, SecProtocolType protocol,
- SecAuthenticationType authenticationType) {
- OSStatus err;
- SecKeychainItemRef item;
- void *password;
- err = SecKeychainFindGenericPassword(0, 3, "xx", 3, "xx",
- passwordLength, &password, &item);
- if( err == GenericError ) {
- err = SecKeychainFindInternetPassword(keychainOrArray,
- 16, "server", 16, "domain", 16, "account",
- 16, "path", 222, protocol, authenticationType,
- passwordLength, &(password), 0);
- }
-
- if (err == noErr && password) {
- SecKeychainItemFreeContent(0, password);
- }
- return err;
-}
-
-int apiMismatch(SecKeychainItemRef itemRef,
- SecKeychainAttributeInfo *info,
- SecItemClass *itemClass) {
- OSStatus st = 0;
- SecKeychainAttributeList *attrList;
- UInt32 length;
- void *outData;
-
- st = SecKeychainItemCopyAttributesAndData(itemRef, info, itemClass,
- &attrList, &length, &outData);
- if (st == noErr)
- SecKeychainItemFreeContent(attrList, outData); // expected-warning{{Deallocator doesn't match the allocator}}
- return 0;
-}
-
-int ErrorCodesFromDifferentAPISDoNotInterfere(SecKeychainItemRef itemRef,
- SecKeychainAttributeInfo *info,
- SecItemClass *itemClass) {
- unsigned int *ptr = 0;
- OSStatus st = 0;
- UInt32 length;
- void *outData;
- OSStatus st2 = 0;
- SecKeychainAttributeList *attrList;
- UInt32 length2;
- void *outData2;
-
- st2 = SecKeychainItemCopyAttributesAndData(itemRef, info, itemClass,
- &attrList, &length2, &outData2);
- st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData);
- if (st == noErr) {
- SecKeychainItemFreeContent(ptr, outData);
- if (st2 == noErr) {
- SecKeychainItemFreeAttributesAndData(attrList, outData2);
- }
- }
- return 0; // expected-warning{{Allocated data is not released: missing a call to 'SecKeychainItemFreeAttributesAndData'}}
-}
-
-int foo(CFTypeRef keychainOrArray, SecProtocolType protocol,
- SecAuthenticationType authenticationType, SecKeychainItemRef *itemRef) {
- unsigned int *ptr = 0;
- OSStatus st = 0;
-
- UInt32 length;
- void *outData[5];
-
- st = SecKeychainFindInternetPassword(keychainOrArray,
- 16, "server", 16, "domain", 16, "account",
- 16, "path", 222, protocol, authenticationType,
- &length, &(outData[3]), itemRef);
- if (length == 5) {
- if (st == noErr)
- SecKeychainItemFreeContent(ptr, outData[3]);
- }
- if (length) { // expected-warning{{Allocated data is not released: missing a call to 'SecKeychainItemFreeContent'}}
- length++;
- }
- return 0;
-}
-
-int testErrorCodeAsLHS(CFTypeRef keychainOrArray, SecProtocolType protocol,
- SecAuthenticationType authenticationType, SecKeychainItemRef *itemRef) {
- unsigned int *ptr = 0;
- OSStatus st = 0;
- UInt32 length;
- void *outData;
- st = SecKeychainFindInternetPassword(keychainOrArray,
- 16, "server", 16, "domain", 16, "account",
- 16, "path", 222, protocol, authenticationType,
- &length, &outData, itemRef);
- if (noErr == st)
- SecKeychainItemFreeContent(ptr, outData);
-
- return 0;
-}
-
-void free(void *ptr);
-void deallocateWithFree() {
- unsigned int *ptr = 0;
- OSStatus st = 0;
- UInt32 length;
- void *outData;
- st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData);
- if (st == noErr)
- free(outData); // expected-warning{{Deallocator doesn't match the allocator: 'SecKeychainItemFreeContent' should be used}}
-}
-
-// Typesdefs for CFStringCreateWithBytesNoCopy.
-typedef char uint8_t;
-typedef signed long CFIndex;
-typedef UInt32 CFStringEncoding;
-typedef unsigned Boolean;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern const CFAllocatorRef kCFAllocatorSystemDefault;
-extern const CFAllocatorRef kCFAllocatorMalloc;
-extern const CFAllocatorRef kCFAllocatorMallocZone;
-extern const CFAllocatorRef kCFAllocatorNull;
-extern const CFAllocatorRef kCFAllocatorUseContext;
-CFStringRef CFStringCreateWithBytesNoCopy(CFAllocatorRef alloc, const uint8_t *bytes, CFIndex numBytes, CFStringEncoding encoding, Boolean externalFormat, CFAllocatorRef contentsDeallocator);
-
-void DellocWithCFStringCreate1(CFAllocatorRef alloc) {
- unsigned int *ptr = 0;
- OSStatus st = 0;
- UInt32 length;
- void *bytes;
- char * x;
- st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &bytes);
- if (st == noErr) {
- CFStringRef userStr = CFStringCreateWithBytesNoCopy(alloc, bytes, length, 5, 0, kCFAllocatorDefault); // expected-warning{{Deallocator doesn't match the allocator:}}
- CFRelease(userStr);
- }
-}
-
-void DellocWithCFStringCreate2(CFAllocatorRef alloc) {
- unsigned int *ptr = 0;
- OSStatus st = 0;
- UInt32 length;
- void *bytes;
- char * x;
- st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &bytes);
- if (st == noErr) {
- CFStringRef userStr = CFStringCreateWithBytesNoCopy(alloc, bytes, length, 5, 0, kCFAllocatorNull); // expected-warning{{Allocated data is not released}}
- CFRelease(userStr);
- }
-}
-
-void DellocWithCFStringCreate3(CFAllocatorRef alloc) {
- unsigned int *ptr = 0;
- OSStatus st = 0;
- UInt32 length;
- void *bytes;
- char * x;
- st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &bytes);
- if (st == noErr) {
- CFStringRef userStr = CFStringCreateWithBytesNoCopy(alloc, bytes, length, 5, 0, kCFAllocatorUseContext);
- CFRelease(userStr);
- }
-}
-
-void DellocWithCFStringCreate4(CFAllocatorRef alloc) {
- unsigned int *ptr = 0;
- OSStatus st = 0;
- UInt32 length;
- void *bytes;
- char * x;
- st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &bytes);
- if (st == noErr) {
- CFStringRef userStr = CFStringCreateWithBytesNoCopy(alloc, bytes, length, 5, 0, 0); // expected-warning{{Deallocator doesn't match the allocator:}}
- CFRelease(userStr);
- }
-}
-
-static CFAllocatorRef gKeychainDeallocator = 0;
-
-static CFAllocatorRef GetKeychainDeallocator() {
- return gKeychainDeallocator;
-}
-
-CFStringRef DellocWithCFStringCreate5(CFAllocatorRef alloc) {
- unsigned int *ptr = 0;
- OSStatus st = 0;
- UInt32 length;
- void *bytes;
- char * x;
- st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &bytes);
- if (st == noErr) {
- return CFStringCreateWithBytesNoCopy(alloc, bytes, length, 5, 0, GetKeychainDeallocator()); // no-warning
- }
- return 0;
-}
-
-void radar10508828() {
- UInt32 pwdLen = 0;
- void* pwdBytes = 0;
- OSStatus rc = SecKeychainFindGenericPassword(0, 3, "foo", 3, "bar", &pwdLen, &pwdBytes, 0);
-#pragma unused(rc)
- if (pwdBytes)
- SecKeychainItemFreeContent(0, pwdBytes);
-}
-
-void radar10508828_20092614() {
- UInt32 pwdLen = 0;
- void* pwdBytes = 0;
- OSStatus rc = SecKeychainFindGenericPassword(0, 3, "foo", 3, "bar", &pwdLen, &pwdBytes, 0);
- SecKeychainItemFreeContent(0, pwdBytes);
-}
-
-//Example from bug 10797.
-__inline__ static
-const char *__WBASLLevelString(int level) {
- return "foo";
-}
-
-static int *bug10798(int *p, int columns, int prevRow) {
- int *row = 0;
- row = p + prevRow * columns;
- prevRow += 2;
- do {
- ++prevRow;
- row+=columns;
- } while(10 >= row[1]);
- return row;
-}
-
-// Test inter-procedural behaviour.
-
-void my_FreeParam(void *attrList, void* X) {
- SecKeychainItemFreeContent(attrList, X);
-}
-
-void *my_AllocateReturn(OSStatus *st) {
- unsigned int *ptr = 0;
- UInt32 length;
- void *outData;
- *st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData);
- return outData;
-}
-
-OSStatus my_Allocate_Param(void** password, UInt32* passwordLength) {
- OSStatus err;
- SecKeychainItemRef item;
- err = SecKeychainFindGenericPassword(0, 3, "xx", 3, "xx",
- passwordLength, password, &item);
- return err;
-}
-
-void allocAndFree1() {
- unsigned int *ptr = 0;
- OSStatus st = 0;
- UInt32 length;
- void *outData;
- st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData);
- if (st == noErr)
- my_FreeParam(ptr, outData);
-}
-
-void consumeChar(char);
-
-void allocNoFree2(int x) {
- OSStatus st = 0;
- void *outData = my_AllocateReturn(&st);
- if (x) {
- consumeChar(*(char*)outData); // expected-warning{{Allocated data is not released:}}
- return;
- } else {
- consumeChar(*(char*)outData);
- }
- return;
-}
-
-void allocAndFree2(void *attrList) {
- OSStatus st = 0;
- void *outData = my_AllocateReturn(&st);
- if (st == noErr)
- my_FreeParam(attrList, outData);
-}
-
-void allocNoFree3() {
- UInt32 length = 32;
- void *outData;
- void *outData2;
- OSStatus st = my_Allocate_Param(&outData, &length); // expected-warning{{Allocated data is not released}}
- st = my_Allocate_Param(&outData2, &length); // expected-warning{{Allocated data is not released}}
-}
-
-void allocAndFree3(void *attrList) {
- UInt32 length = 32;
- void *outData;
- OSStatus st = my_Allocate_Param(&outData, &length);
- if (st == noErr)
- SecKeychainItemFreeContent(attrList, outData);
-}
-
-typedef struct AuthorizationValue {
- int length;
- void *data;
-} AuthorizationValue;
-typedef struct AuthorizationCallback {
- OSStatus (*SetContextVal)(AuthorizationValue *inValue);
-} AuthorizationCallback;
-static AuthorizationCallback cb;
-int radar_19196494() {
- @autoreleasepool {
- AuthorizationValue login_password = {};
- UInt32 passwordLength;
- void *passwordData = 0;
- OSStatus err = SecKeychainFindGenericPassword(0, 0, "", 0, "", (UInt32 *)&login_password.length, (void**)&login_password.data, 0);
- cb.SetContextVal(&login_password);
- if (err == noErr) {
- SecKeychainItemFreeContent(0, login_password.data);
- }
- }
- return 0;
-}
-int radar_19196494_v2() {
- @autoreleasepool {
- AuthorizationValue login_password = {};
- OSStatus err = SecKeychainFindGenericPassword(0, 0, "", 0, "", (UInt32 *)&login_password.length, (void**)&login_password.data, 0);
- if (!login_password.data) return 0;
- cb.SetContextVal(&login_password);
- if (err == noErr) {
- SecKeychainItemFreeContent(0, login_password.data);
- }
- }
- return 0;
-}
diff --git a/test/Analysis/kmalloc-linux.c b/test/Analysis/kmalloc-linux.c
deleted file mode 100644
index bac71388a7a8..000000000000
--- a/test/Analysis/kmalloc-linux.c
+++ /dev/null
@@ -1,58 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux %s
-
-#include "Inputs/system-header-simulator.h"
-
-#define __GFP_ZERO 0x8000
-#define NULL ((void *)0)
-
-void *kmalloc(size_t, int);
-
-struct test {
-};
-
-void foo(struct test *);
-
-void test_zeroed() {
- struct test **list, *t;
- int i;
-
- list = kmalloc(sizeof(*list) * 10, __GFP_ZERO);
- if (list == NULL)
- return;
-
- for (i = 0; i < 10; i++) {
- t = list[i];
- foo(t);
- }
- free(list); // no-warning
-}
-
-void test_nonzero() {
- struct test **list, *t;
- int i;
-
- list = kmalloc(sizeof(*list) * 10, 0);
- if (list == NULL)
- return;
-
- for (i = 0; i < 10; i++) {
- t = list[i]; // expected-warning{{undefined}}
- foo(t);
- }
- free(list);
-}
-
-void test_indeterminate(int flags) {
- struct test **list, *t;
- int i;
-
- list = kmalloc(sizeof(*list) * 10, flags);
- if (list == NULL)
- return;
-
- for (i = 0; i < 10; i++) {
- t = list[i]; // expected-warning{{undefined}}
- foo(t);
- }
- free(list);
-}
diff --git a/test/Analysis/lambda-notes.cpp b/test/Analysis/lambda-notes.cpp
deleted file mode 100644
index c23ba7677879..000000000000
--- a/test/Analysis/lambda-notes.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core.DivideZero -analyzer-config inline-lambdas=true -analyzer-output plist -verify %s -o %t
-// RUN: tail -n +11 %t | diff -u -w -I "<string>/" -I "<string>.:" -I "version" - %S/Inputs/expected-plists/lambda-notes.cpp.plist
-
-
-// Diagnostic inside a lambda
-
-void diagnosticFromLambda() {
- int i = 0;
- [=] {
- int p = 5/i; // expected-warning{{Division by zero}}
- (void)p;
- }();
-}
diff --git a/test/Analysis/lambdas-generalized-capture.cpp b/test/Analysis/lambdas-generalized-capture.cpp
deleted file mode 100644
index feaf55d6c84e..000000000000
--- a/test/Analysis/lambdas-generalized-capture.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++14 -analyzer-checker=core,deadcode,debug.ExprInspection -verify %s
-
-int clang_analyzer_eval(int);
-
-void generalizedCapture() {
- int v = 7;
- auto lambda = [x=v]() {
- return x;
- };
-
- int result = lambda();
- clang_analyzer_eval(result == 7); // expected-warning {{TRUE}}
-}
-
-void sideEffectsInGeneralizedCapture() {
- int v = 7;
- auto lambda = [x=v++]() {
- return x;
- };
- clang_analyzer_eval(v == 8); // expected-warning {{TRUE}}
-
- int r1 = lambda();
- int r2 = lambda();
- clang_analyzer_eval(r1 == 7); // expected-warning {{TRUE}}
- clang_analyzer_eval(r2 == 7); // expected-warning {{TRUE}}
- clang_analyzer_eval(v == 8); // expected-warning {{TRUE}}
-}
-
-int addOne(int p) {
- return p + 1;
-}
-
-void inliningInGeneralizedCapture() {
- int v = 7;
- auto lambda = [x=addOne(v)]() {
- return x;
- };
-
- int result = lambda();
- clang_analyzer_eval(result == 8); // expected-warning {{TRUE}}
-}
-
-void caseSplitInGeneralizedCapture(bool p) {
- auto lambda = [x=(p ? 1 : 2)]() {
- return x;
- };
-
- int result = lambda();
- clang_analyzer_eval(result == 1); // expected-warning {{FALSE}} expected-warning {{TRUE}}
-}
diff --git a/test/Analysis/lambdas.cpp b/test/Analysis/lambdas.cpp
deleted file mode 100644
index fdd1c61164f4..000000000000
--- a/test/Analysis/lambdas.cpp
+++ /dev/null
@@ -1,411 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,deadcode,debug.ExprInspection -analyzer-config inline-lambdas=true -verify %s
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core -analyzer-config inline-lambdas=false -DNO_INLINING=1 -verify %s
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,debug.DumpCFG -analyzer-config inline-lambdas=true %s > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-
-void clang_analyzer_warnIfReached();
-void clang_analyzer_eval(int);
-
-#ifdef NO_INLINING
-
-// expected-no-diagnostics
-
-int& invalidate_static_on_unknown_lambda() {
- static int* z;
- auto f = [] {
- z = nullptr;
- }; // should invalidate "z" when inlining is disabled.
- f();
- return *z; // no-warning
-}
-
-#else
-
-struct X { X(const X&); };
-void f(X x) { (void) [x]{}; }
-
-
-// Lambda semantics tests.
-
-void basicCapture() {
- int i = 5;
- [i]() mutable {
- // clang_analyzer_eval does nothing in inlined functions.
- if (i != 5)
- clang_analyzer_warnIfReached();
- ++i;
- }();
- [&i] {
- if (i != 5)
- clang_analyzer_warnIfReached();
- }();
- [&i] {
- if (i != 5)
- clang_analyzer_warnIfReached();
- i++;
- }();
- clang_analyzer_eval(i == 6); // expected-warning{{TRUE}}
-}
-
-void deferredLambdaCall() {
- int i = 5;
- auto l1 = [i]() mutable {
- if (i != 5)
- clang_analyzer_warnIfReached();
- ++i;
- };
- auto l2 = [&i] {
- if (i != 5)
- clang_analyzer_warnIfReached();
- };
- auto l3 = [&i] {
- if (i != 5)
- clang_analyzer_warnIfReached();
- i++;
- };
- l1();
- l2();
- l3();
- clang_analyzer_eval(i == 6); // expected-warning{{TRUE}}
-}
-
-void multipleCaptures() {
- int i = 5, j = 5;
- [i, &j]() mutable {
- if (i != 5 && j != 5)
- clang_analyzer_warnIfReached();
- ++i;
- ++j;
- }();
- clang_analyzer_eval(i == 5); // expected-warning{{TRUE}}
- clang_analyzer_eval(j == 6); // expected-warning{{TRUE}}
- [=]() mutable {
- if (i != 5 && j != 6)
- clang_analyzer_warnIfReached();
- ++i;
- ++j;
- }();
- clang_analyzer_eval(i == 5); // expected-warning{{TRUE}}
- clang_analyzer_eval(j == 6); // expected-warning{{TRUE}}
- [&]() mutable {
- if (i != 5 && j != 6)
- clang_analyzer_warnIfReached();
- ++i;
- ++j;
- }();
- clang_analyzer_eval(i == 6); // expected-warning{{TRUE}}
- clang_analyzer_eval(j == 7); // expected-warning{{TRUE}}
-}
-
-void testReturnValue() {
- int i = 5;
- auto l = [i] (int a) {
- return i + a;
- };
- int b = l(3);
- clang_analyzer_eval(b == 8); // expected-warning{{TRUE}}
-}
-
-void testAliasingBetweenParameterAndCapture() {
- int i = 5;
-
- auto l = [&i](int &p) {
- i++;
- p++;
- };
- l(i);
- clang_analyzer_eval(i == 7); // expected-warning{{TRUE}}
-}
-
-// Nested lambdas.
-
-void testNestedLambdas() {
- int i = 5;
- auto l = [i]() mutable {
- [&i]() {
- ++i;
- }();
- if (i != 6)
- clang_analyzer_warnIfReached();
- };
- l();
- clang_analyzer_eval(i == 5); // expected-warning{{TRUE}}
-}
-
-// Captured this.
-
-class RandomClass {
- int i;
-
- void captureFields() {
- i = 5;
- [this]() {
- // clang_analyzer_eval does nothing in inlined functions.
- if (i != 5)
- clang_analyzer_warnIfReached();
- ++i;
- }();
- clang_analyzer_eval(i == 6); // expected-warning{{TRUE}}
- }
-};
-
-
-// Nested this capture.
-
-class RandomClass2 {
- int i;
-
- void captureFields() {
- i = 5;
- [this]() {
- // clang_analyzer_eval does nothing in inlined functions.
- if (i != 5)
- clang_analyzer_warnIfReached();
- ++i;
- [this]() {
- // clang_analyzer_eval does nothing in inlined functions.
- if (i != 6)
- clang_analyzer_warnIfReached();
- ++i;
- }();
- }();
- clang_analyzer_eval(i == 7); // expected-warning{{TRUE}}
- }
-};
-
-
-// Captured function pointers.
-
-void inc(int &x) {
- ++x;
-}
-
-void testFunctionPointerCapture() {
- void (*func)(int &) = inc;
- int i = 5;
- [&i, func] {
- func(i);
- }();
- clang_analyzer_eval(i == 6); // expected-warning{{TRUE}}
-}
-
-// Captured variable-length array.
-
-void testVariableLengthArrayCaptured() {
- int n = 2;
- int array[n];
- array[0] = 7;
-
- int i = [&]{
- return array[0];
- }();
-
- clang_analyzer_eval(i == 7); // expected-warning{{TRUE}}
-}
-
-// Test inline defensive checks
-int getNum();
-
-void inlineDefensiveChecks() {
- int i = getNum();
- [=]() {
- if (i == 0)
- ;
- }();
- int p = 5/i;
- (void)p;
-}
-
-
-template<typename T>
-void callLambda(T t) {
- t();
-}
-
-struct DontCrash {
- int x;
- void f() {
- callLambda([&](){ ++x; });
- callLambdaFromStatic([&](){ ++x; });
- }
-
- template<typename T>
- static void callLambdaFromStatic(T t) {
- t();
- }
-};
-
-
-// Capture constants
-
-void captureConstants() {
- const int i = 5;
- [=]() {
- if (i != 5)
- clang_analyzer_warnIfReached();
- }();
- [&] {
- if (i != 5)
- clang_analyzer_warnIfReached();
- }();
-}
-
-void captureReferenceByCopy(int &p) {
- int v = 7;
- p = 8;
-
- // p is a reference captured by copy
- [&v,p]() mutable {
- v = p;
- p = 22;
- }();
-
- clang_analyzer_eval(v == 8); // expected-warning{{TRUE}}
- clang_analyzer_eval(p == 8); // expected-warning{{TRUE}}
-}
-
-void captureReferenceByReference(int &p) {
- int v = 7;
- p = 8;
-
- // p is a reference captured by reference
- [&v,&p]() {
- v = p;
- p = 22;
- }();
-
- clang_analyzer_eval(v == 8); // expected-warning{{TRUE}}
- clang_analyzer_eval(p == 22); // expected-warning{{TRUE}}
-}
-
-void callMutableLambdaMultipleTimes(int &p) {
- int v = 0;
- p = 8;
-
- auto l = [&v, p]() mutable {
- v = p;
- p++;
- };
-
- l();
-
- clang_analyzer_eval(v == 8); // expected-warning{{TRUE}}
- clang_analyzer_eval(p == 8); // expected-warning{{TRUE}}
-
- l();
-
- clang_analyzer_eval(v == 9); // expected-warning{{TRUE}}
- clang_analyzer_eval(p == 8); // expected-warning{{TRUE}}
-}
-
-// PR 24914
-struct StructPR24914{
- int x;
-};
-
-void takesConstStructArgument(const StructPR24914&);
-void captureStructReference(const StructPR24914& s) {
- [s]() {
- takesConstStructArgument(s);
- }();
-}
-
-// Lambda capture counts as use for dead-store checking.
-
-int returnsValue();
-
-void captureByCopyCausesUse() {
- int local1 = returnsValue(); // no-warning
- int local2 = returnsValue(); // no-warning
- int local3 = returnsValue(); // expected-warning{{Value stored to 'local3' during its initialization is never read}}
-
- (void)[local1, local2]() { }; // Explicit capture by copy counts as use.
-
- int local4 = returnsValue(); // no-warning
- int local5 = returnsValue(); // expected-warning{{Value stored to 'local5' during its initialization is never read}}
-
- (void)[=]() {
- (void)local4; // Implicit capture by copy counts as use
- };
-}
-
-void captureByReference() {
- int local1 = returnsValue(); // no-warning
-
- auto lambda1 = [&local1]() { // Explicit capture by reference
- local1++;
- };
-
- // Don't treat as a dead store because local1 was was captured by reference.
- local1 = 7; // no-warning
-
- lambda1();
-
- int local2 = returnsValue(); // no-warning
-
- auto lambda2 = [&]() {
- local2++; // Implicit capture by reference
- };
-
- // Don't treat as a dead store because local2 was was captured by reference.
- local2 = 7; // no-warning
-
- lambda2();
-}
-
-void testCapturedConstExprFloat() {
- constexpr float localConstant = 4.0;
- auto lambda = []{
- // Don't treat localConstant as containing a garbage value
- float copy = localConstant; // no-warning
- (void)copy;
- };
-
- lambda();
-}
-
-void escape(void*);
-
-int& invalidate_static_on_unknown_lambda() {
- static int* z;
- auto lambda = [] {
- static float zz;
- z = new int(120);
- };
- escape(&lambda);
- return *z; // no-warning
-}
-
-
-static int b = 0;
-
-int f() {
- b = 0;
- auto &bm = b;
- [&] {
- bm++;
- bm++;
- }();
- if (bm != 2) {
- int *y = 0;
- return *y; // no-warning
- }
- return 0;
-}
-
-#endif
-
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: x
-// CHECK: 2: [B1.1] (ImplicitCastExpr, NoOp, const struct X)
-// CHECK: 3: [B1.2] (CXXConstructExpr, struct X)
-// CHECK: 4: [x] {
-// CHECK: }
-// CHECK: 5: (void)[B1.4] (CStyleCastExpr, ToVoid, void)
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-
diff --git a/test/Analysis/lambdas.mm b/test/Analysis/lambdas.mm
deleted file mode 100644
index d2b8e7b35356..000000000000
--- a/test/Analysis/lambdas.mm
+++ /dev/null
@@ -1,143 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -fblocks -Wno-objc-root-class -analyzer-checker=core,deadcode,debug.ExprInspection -analyzer-config inline-lambdas=true -verify %s
-
-int clang_analyzer_eval(int);
-
-@interface Super
-- (void)superMethod;
-@end
-
-@interface Sub : Super {
- int _ivar1;
- int _ivar2;
-}
-@end
-
-@implementation Sub
-- (void)callMethodOnSuperInCXXLambda; {
- // Explicit capture.
- [self]() {
- [super superMethod];
- }();
-
- // Implicit capture.
- [=]() {
- [super superMethod];
- }();
-}
-
-// Make sure to properly handle super-calls when a block captures
-// a local variable named 'self'.
-- (void)callMethodOnSuperInCXXLambdaWithRedefinedSelf; {
- /*__weak*/ Sub *weakSelf = self;
- // Implicit capture. (Sema outlaws explicit capture of a redefined self
- // and a call to super [which uses the original self]).
- [=]() {
- Sub *self = weakSelf;
- [=]() {
- [super superMethod];
- }();
- }();
-}
-
-- (void)swapIvars {
- int tmp = _ivar1;
- _ivar1 = _ivar2;
- _ivar2 = tmp;
-}
-
-- (void)callMethodOnSelfInCXXLambda; {
- _ivar1 = 7;
- _ivar2 = 8;
- [self]() {
- [self swapIvars];
- }();
-
- clang_analyzer_eval(_ivar1 == 8); // expected-warning{{TRUE}}
- clang_analyzer_eval(_ivar2 == 7); // expected-warning{{TRUE}}
-}
-
-@end
-
-int getValue();
-void useValue(int v);
-
-void castToBlockNoDeadStore() {
- int v = getValue(); // no-warning
-
- (void)(void(^)())[v]() { // This capture should count as a use, so no dead store warning above.
- };
-}
-
-void takesBlock(void(^block)());
-
-void passToFunctionTakingBlockNoDeadStore() {
- int v = 7; // no-warning
- int x = 8; // no-warning
- takesBlock([&v, x]() {
- (void)v;
- });
-}
-
-void castToBlockAndInline() {
- int result = ((int(^)(int))[](int p) {
- return p;
- })(7);
-
- clang_analyzer_eval(result == 7); // expected-warning{{TRUE}}
-}
-
-void castToBlockWithCaptureAndInline() {
- int y = 7;
-
- auto lambda = [y]{ return y; };
- int(^block)() = lambda;
-
- int result = block();
- clang_analyzer_eval(result == 7); // expected-warning{{TRUE}}
-}
-
-void castMutableLambdaToBlock() {
- int x = 0;
-
- auto lambda = [x]() mutable {
- x = x + 1;
- return x;
- };
-
- // The block should copy the lambda before capturing.
- int(^block)() = lambda;
-
- int r1 = block();
- clang_analyzer_eval(r1 == 1); // expected-warning{{TRUE}}
-
- int r2 = block();
- clang_analyzer_eval(r2 == 2); // expected-warning{{TRUE}}
-
- // Because block copied the lambda, r3 should be 1.
- int r3 = lambda();
- clang_analyzer_eval(r3 == 1); // expected-warning{{TRUE}}
-
- // Aliasing the block shouldn't copy the lambda.
- int(^blockAlias)() = block;
-
- int r4 = blockAlias();
- clang_analyzer_eval(r4 == 3); // expected-warning{{TRUE}}
-
- int r5 = block();
- clang_analyzer_eval(r5 == 4); // expected-warning{{TRUE}}
-
- // Another copy of lambda
- int(^blockSecondCopy)() = lambda;
- int r6 = blockSecondCopy();
- clang_analyzer_eval(r6 == 2); // expected-warning{{TRUE}}
-}
-
-void castLambdaInLocalBlock() {
- // Make sure we don't emit a spurious diagnostic about the address of a block
- // escaping in the implicit conversion operator method for lambda-to-block
- // conversions.
- auto lambda = []{ }; // no-warning
-
- void(^block)() = lambda;
- (void)block;
-}
diff --git a/test/Analysis/lifetime-cfg-output.cpp b/test/Analysis/lifetime-cfg-output.cpp
deleted file mode 100644
index dc2849db1b63..000000000000
--- a/test/Analysis/lifetime-cfg-output.cpp
+++ /dev/null
@@ -1,783 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -analyze -analyzer-checker=debug.DumpCFG -analyzer-config cfg-lifetime=true,cfg-temporary-dtors=false,cfg-rich-constructors=false -analyzer-config cfg-implicit-dtors=false %s > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-
-extern bool UV;
-class A {
-public:
- // CHECK: [B2 (ENTRY)]
- // CHECK-NEXT: Succs (1): B1
- // CHECK: [B1]
- // CHECK-NEXT: 1: true
- // CHECK-NEXT: 2: UV
- // CHECK-NEXT: 3: [B1.2] = [B1.1]
- // CHECK-NEXT: Preds (1): B2
- // CHECK-NEXT: Succs (1): B0
- // CHECK: [B0 (EXIT)]
- // CHECK-NEXT: Preds (1): B1
- A() {
- UV = true;
- }
- // CHECK: [B3 (ENTRY)]
- // CHECK-NEXT: Succs (1): B2
- // CHECK: [B1]
- // CHECK-NEXT: 1: 0
- // CHECK-NEXT: 2: this
- // CHECK-NEXT: 3: [B1.2]->p
- // CHECK-NEXT: 4: [B1.3] (ImplicitCastExpr, LValueToRValue, int *)
- // CHECK-NEXT: 5: *[B1.4]
- // CHECK-NEXT: 6: [B1.5] = [B1.1]
- // CHECK-NEXT: Preds (1): B2
- // CHECK-NEXT: Succs (1): B0
- // CHECK: [B2]
- // CHECK-NEXT: 1: this
- // CHECK-NEXT: 2: [B2.1]->p
- // CHECK-NEXT: 3: [B2.2] (ImplicitCastExpr, LValueToRValue, int *)
- // CHECK-NEXT: 4: [B2.3] (ImplicitCastExpr, PointerToBoolean, _Bool)
- // CHECK-NEXT: T: if [B2.4]
- // CHECK-NEXT: Preds (1): B3
- // CHECK-NEXT: Succs (2): B1 B0
- // CHECK: [B0 (EXIT)]
- // CHECK-NEXT: Preds (2): B1 B2
- ~A() {
- if (p)
- *p = 0;
- }
- // CHECK: [B2 (ENTRY)]
- // CHECK-NEXT: Succs (1): B1
- // CHECK: [B1]
- // CHECK-NEXT: 1: 1
- // CHECK-NEXT: 2: return [B1.1];
- // CHECK-NEXT: Preds (1): B2
- // CHECK-NEXT: Succs (1): B0
- // CHECK: [B0 (EXIT)]
- // CHECK-NEXT: Preds (1): B1
- operator int() const { return 1; }
- int *p;
-};
-
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: 3: a
-// CHECK-NEXT: 4: [B1.3] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 5: const A &b = a;
-// CHECK-NEXT: 6: A() (CXXConstructExpr, class A)
-// CHECK-NEXT: 7: [B1.6] (BindTemporary)
-// CHECK-NEXT: 8: [B1.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 9: [B1.8]
-// CHECK-NEXT: 10: const A &c = A();
-// CHECK-NEXT: 11: [B1.10] (Lifetime ends)
-// CHECK-NEXT: 12: [B1.2] (Lifetime ends)
-// CHECK-NEXT: 13: [B1.5] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_const_ref() {
- A a;
- const A &b = a;
- const A &c = A();
-}
-
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A [2])
-// CHECK-NEXT: 2: A a[2];
-// CHECK-NEXT: 3: (CXXConstructExpr, class A [0])
-// CHECK-NEXT: 4: A b[0];
-// lifetime of a ends when its destructors are run
-// CHECK-NEXT: 5: [B1.2] (Lifetime ends)
-// lifetime of b ends when its storage duration ends
-// CHECK-NEXT: 6: [B1.4] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_array() {
- A a[2];
- A b[0];
-}
-
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: 3: (CXXConstructExpr, class A)
-// CHECK-NEXT: 4: A c;
-// CHECK-NEXT: 5: (CXXConstructExpr, class A)
-// CHECK-NEXT: 6: A d;
-// CHECK-NEXT: 7: [B1.6] (Lifetime ends)
-// CHECK-NEXT: 8: [B1.4] (Lifetime ends)
-// CHECK-NEXT: 9: (CXXConstructExpr, class A)
-// CHECK-NEXT: 10: A b;
-// CHECK-NEXT: 11: [B1.10] (Lifetime ends)
-// CHECK-NEXT: 12: [B1.2] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_scope() {
- A a;
- {
- A c;
- A d;
- }
- A b;
-}
-
-// CHECK: [B4 (ENTRY)]
-// CHECK-NEXT: Succs (1): B3
-// CHECK: [B1]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B1.2] (Lifetime ends)
-// CHECK-NEXT: 4: [B3.4] (Lifetime ends)
-// CHECK-NEXT: 5: [B3.2] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B3.4] (Lifetime ends)
-// CHECK-NEXT: 3: [B3.2] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B3]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: 3: (CXXConstructExpr, class A)
-// CHECK-NEXT: 4: A b;
-// CHECK-NEXT: 5: UV
-// CHECK-NEXT: 6: [B3.5] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B3.6]
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (2): B2 B1
-
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (2): B1 B2
-void test_return() {
- A a;
- A b;
- if (UV)
- return;
- A c;
-}
-
-// CHECK: [B5 (ENTRY)]
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B4.6] (Lifetime ends)
-// CHECK-NEXT: 2: [B4.2] (Lifetime ends)
-// CHECK-NEXT: Preds (2): B2 B3
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B2.2] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B3]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B3.2] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B4]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: 3: a
-// CHECK-NEXT: 4: [B4.3] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 5: [B4.4] (CXXConstructExpr, class A)
-// CHECK-NEXT: 6: A b = a;
-// CHECK-NEXT: 7: b
-// CHECK-NEXT: 8: [B4.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 9: [B4.8].operator int
-// CHECK-NEXT: 10: [B4.8]
-// CHECK-NEXT: 11: [B4.10] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK-NEXT: 12: [B4.11] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: if [B4.12]
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (2): B3 B2
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_if_implicit_scope() {
- A a;
- if (A b = a)
- A c;
- else
- A c;
-}
-
-// CHECK: [B9 (ENTRY)]
-// CHECK-NEXT: Succs (1): B8
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B8.6] (Lifetime ends)
-// CHECK-NEXT: 2: (CXXConstructExpr, class A)
-// CHECK-NEXT: 3: A e;
-// CHECK-NEXT: 4: [B1.3] (Lifetime ends)
-// CHECK-NEXT: 5: [B8.2] (Lifetime ends)
-// CHECK-NEXT: Preds (2): B2 B5
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A d;
-// CHECK-NEXT: 3: [B2.2] (Lifetime ends)
-// CHECK-NEXT: 4: [B4.2] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B3]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B4.2] (Lifetime ends)
-// CHECK-NEXT: 3: [B8.6] (Lifetime ends)
-// CHECK-NEXT: 4: [B8.2] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B4]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: UV
-// CHECK-NEXT: 4: [B4.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B4.4]
-// CHECK-NEXT: Preds (1): B8
-// CHECK-NEXT: Succs (2): B3 B2
-// CHECK: [B5]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A d;
-// CHECK-NEXT: 3: [B5.2] (Lifetime ends)
-// CHECK-NEXT: 4: [B7.2] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B6]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B7.2] (Lifetime ends)
-// CHECK-NEXT: 3: [B8.6] (Lifetime ends)
-// CHECK-NEXT: 4: [B8.2] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B7]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: UV
-// CHECK-NEXT: 4: [B7.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B7.4]
-// CHECK-NEXT: Preds (1): B8
-// CHECK-NEXT: Succs (2): B6 B5
-// CHECK: [B8]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: 3: a
-// CHECK-NEXT: 4: [B8.3] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 5: [B8.4] (CXXConstructExpr, class A)
-// CHECK-NEXT: 6: A b = a;
-// CHECK-NEXT: 7: b
-// CHECK-NEXT: 8: [B8.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 9: [B8.8].operator int
-// CHECK-NEXT: 10: [B8.8]
-// CHECK-NEXT: 11: [B8.10] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK-NEXT: 12: [B8.11] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: if [B8.12]
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (2): B7 B4
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (3): B1 B3 B6
-void test_if_jumps() {
- A a;
- if (A b = a) {
- A c;
- if (UV)
- return;
- A d;
- } else {
- A c;
- if (UV)
- return;
- A d;
- }
- A e;
-}
-
-// CHECK: [B6 (ENTRY)]
-// CHECK-NEXT: Succs (1): B5
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B4.4] (Lifetime ends)
-// CHECK-NEXT: 2: [B5.2] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B3]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B3.2] (Lifetime ends)
-// CHECK-NEXT: 4: [B4.4] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: a
-// CHECK-NEXT: 2: [B4.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 3: [B4.2] (CXXConstructExpr, class A)
-// CHECK-NEXT: 4: A b = a;
-// CHECK-NEXT: 5: b
-// CHECK-NEXT: 6: [B4.5] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 7: [B4.6].operator int
-// CHECK-NEXT: 8: [B4.6]
-// CHECK-NEXT: 9: [B4.8] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK-NEXT: 10: [B4.9] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: while [B4.10]
-// CHECK-NEXT: Preds (2): B2 B5
-// CHECK-NEXT: Succs (2): B3 B1
-// CHECK: [B5]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_while_implicit_scope() {
- A a;
- while (A b = a)
- A c;
-}
-
-// CHECK: [B12 (ENTRY)]
-// CHECK-NEXT: Succs (1): B11
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B10.4] (Lifetime ends)
-// CHECK-NEXT: 2: (CXXConstructExpr, class A)
-// CHECK-NEXT: 3: A e;
-// CHECK-NEXT: 4: [B1.3] (Lifetime ends)
-// CHECK-NEXT: 5: [B11.2] (Lifetime ends)
-// CHECK-NEXT: Preds (2): B8 B10
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: Preds (2): B3 B6
-// CHECK-NEXT: Succs (1): B10
-// CHECK: [B3]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A d;
-// CHECK-NEXT: 3: [B3.2] (Lifetime ends)
-// CHECK-NEXT: 4: [B9.2] (Lifetime ends)
-// CHECK-NEXT: 5: [B10.4] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B9.2] (Lifetime ends)
-// CHECK-NEXT: 3: [B10.4] (Lifetime ends)
-// CHECK-NEXT: 4: [B11.2] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B5]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B5.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B5.2]
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (2): B4 B3
-// CHECK: [B6]
-// CHECK-NEXT: 1: [B9.2] (Lifetime ends)
-// CHECK-NEXT: 2: [B10.4] (Lifetime ends)
-// CHECK-NEXT: T: continue;
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B7]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B7.2]
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (2): B6 B5
-// CHECK: [B8]
-// CHECK-NEXT: 1: [B9.2] (Lifetime ends)
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B9]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: UV
-// CHECK-NEXT: 4: [B9.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B9.4]
-// CHECK-NEXT: Preds (1): B10
-// CHECK-NEXT: Succs (2): B8 B7
-// CHECK: [B10]
-// CHECK-NEXT: 1: a
-// CHECK-NEXT: 2: [B10.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 3: [B10.2] (CXXConstructExpr, class A)
-// CHECK-NEXT: 4: A b = a;
-// CHECK-NEXT: 5: b
-// CHECK-NEXT: 6: [B10.5] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 7: [B10.6].operator int
-// CHECK-NEXT: 8: [B10.6]
-// CHECK-NEXT: 9: [B10.8] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK-NEXT: 10: [B10.9] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: while [B10.10]
-// CHECK-NEXT: Preds (2): B2 B11
-// CHECK-NEXT: Succs (2): B9 B1
-// CHECK: [B11]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: Preds (1): B12
-// CHECK-NEXT: Succs (1): B10
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (2): B1 B4
-void test_while_jumps() {
- A a;
- while (A b = a) {
- A c;
- if (UV)
- break;
- if (UV)
- continue;
- if (UV)
- return;
- A d;
- }
- A e;
-}
-
-// CHECK: [B12 (ENTRY)]
-// CHECK-NEXT: Succs (1): B11
-// CHECK: [B1]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A d;
-// CHECK-NEXT: 3: [B1.2] (Lifetime ends)
-// CHECK-NEXT: 4: [B11.2] (Lifetime ends)
-// CHECK-NEXT: Preds (2): B8 B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B2.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: do ... while [B2.2]
-// CHECK-NEXT: Preds (2): B3 B6
-// CHECK-NEXT: Succs (2): B10 B1
-// CHECK: [B3]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B3.2] (Lifetime ends)
-// CHECK-NEXT: 4: [B9.2] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B9.2] (Lifetime ends)
-// CHECK-NEXT: 3: [B11.2] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B5]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B5.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B5.2]
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (2): B4 B3
-// CHECK: [B6]
-// CHECK-NEXT: 1: [B9.2] (Lifetime ends)
-// CHECK-NEXT: T: continue;
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B7]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B7.2]
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (2): B6 B5
-// CHECK: [B8]
-// CHECK-NEXT: 1: [B9.2] (Lifetime ends)
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B9]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A b;
-// CHECK-NEXT: 3: UV
-// CHECK-NEXT: 4: [B9.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B9.4]
-// CHECK-NEXT: Preds (2): B10 B11
-// CHECK-NEXT: Succs (2): B8 B7
-// CHECK: [B10]
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B9
-// CHECK: [B11]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: Preds (1): B12
-// CHECK-NEXT: Succs (1): B9
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (2): B1 B4
-void test_do_jumps() {
- A a;
- do {
- A b;
- if (UV)
- break;
- if (UV)
- continue;
- if (UV)
- return;
- A c;
- } while (UV);
- A d;
-}
-
-// CHECK: [B6 (ENTRY)]
-// CHECK-NEXT: Succs (1): B5
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B4.4] (Lifetime ends)
-// CHECK-NEXT: 2: [B5.2] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B3]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B3.2] (Lifetime ends)
-// CHECK-NEXT: 4: [B4.4] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: a
-// CHECK-NEXT: 2: [B4.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 3: [B4.2] (CXXConstructExpr, class A)
-// CHECK-NEXT: 4: A b = a;
-// CHECK-NEXT: 5: b
-// CHECK-NEXT: 6: [B4.5] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 7: [B4.6].operator int
-// CHECK-NEXT: 8: [B4.6]
-// CHECK-NEXT: 9: [B4.8] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK-NEXT: 10: [B4.9] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: for (...; [B4.10]; )
-// CHECK-NEXT: Preds (2): B2 B5
-// CHECK-NEXT: Succs (2): B3 B1
-// CHECK: [B5]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_for_implicit_scope() {
- for (A a; A b = a;)
- A c;
-}
-
-// CHECK: [B12 (ENTRY)]
-// CHECK-NEXT: Succs (1): B11
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B10.4] (Lifetime ends)
-// CHECK-NEXT: 2: [B11.4] (Lifetime ends)
-// CHECK-NEXT: 3: (CXXConstructExpr, class A)
-// CHECK-NEXT: 4: A f;
-// CHECK-NEXT: 5: [B1.4] (Lifetime ends)
-// CHECK-NEXT: 6: [B11.2] (Lifetime ends)
-// CHECK-NEXT: Preds (2): B8 B10
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: Preds (2): B3 B6
-// CHECK-NEXT: Succs (1): B10
-// CHECK: [B3]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A e;
-// CHECK-NEXT: 3: [B3.2] (Lifetime ends)
-// CHECK-NEXT: 4: [B9.2] (Lifetime ends)
-// CHECK-NEXT: 5: [B10.4] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B9.2] (Lifetime ends)
-// CHECK-NEXT: 3: [B10.4] (Lifetime ends)
-// CHECK-NEXT: 4: [B11.4] (Lifetime ends)
-// CHECK-NEXT: 5: [B11.2] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B5]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B5.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B5.2]
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (2): B4 B3
-// CHECK: [B6]
-// CHECK-NEXT: 1: [B9.2] (Lifetime ends)
-// CHECK-NEXT: T: continue;
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B7]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B7.2]
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (2): B6 B5
-// CHECK: [B8]
-// CHECK-NEXT: 1: [B9.2] (Lifetime ends)
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B9]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A d;
-// CHECK-NEXT: 3: UV
-// CHECK-NEXT: 4: [B9.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B9.4]
-// CHECK-NEXT: Preds (1): B10
-// CHECK-NEXT: Succs (2): B8 B7
-// CHECK: [B10]
-// CHECK-NEXT: 1: b
-// CHECK-NEXT: 2: [B10.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 3: [B10.2] (CXXConstructExpr, class A)
-// CHECK-NEXT: 4: A c = b;
-// CHECK-NEXT: 5: c
-// CHECK-NEXT: 6: [B10.5] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 7: [B10.6].operator int
-// CHECK-NEXT: 8: [B10.6]
-// CHECK-NEXT: 9: [B10.8] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK-NEXT: 10: [B10.9] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: for (...; [B10.10]; )
-// CHECK-NEXT: Preds (2): B2 B11
-// CHECK-NEXT: Succs (2): B9 B1
-// CHECK: [B11]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: 3: (CXXConstructExpr, class A)
-// CHECK-NEXT: 4: A b;
-// CHECK-NEXT: Preds (1): B12
-// CHECK-NEXT: Succs (1): B10
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (2): B1 B4
-void test_for_jumps() {
- A a;
- for (A b; A c = b;) {
- A d;
- if (UV)
- break;
- if (UV)
- continue;
- if (UV)
- return;
- A e;
- }
- A f;
-}
-
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: (CXXConstructExpr, class A)
-// CHECK-NEXT: 2: A a;
-// CHECK-NEXT: 3: int n;
-// CHECK-NEXT: 4: n
-// CHECK-NEXT: 5: &[B1.4]
-// CHECK-NEXT: 6: a
-// CHECK-NEXT: 7: [B1.6].p
-// CHECK-NEXT: 8: [B1.7] = [B1.5]
-// CHECK-NEXT: 9: [B1.2] (Lifetime ends)
-// CHECK-NEXT: 10: [B1.3] (Lifetime ends)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_trivial_vs_non_trivial_order() {
- A a;
- int n;
- a.p = &n;
-}
-
-// CHECK: [B4 (ENTRY)]
-// CHECK-NEXT: Succs (1): B3
-// CHECK: [B1]
-// CHECK-NEXT: a:
-// CHECK-NEXT: 1: 1
-// CHECK-NEXT: 2: i
-// CHECK-NEXT: 3: [B1.2] = [B1.1]
-// CHECK-NEXT: 4: [B2.1] (Lifetime ends)
-// CHECK-NEXT: Preds (2): B2 B3
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: int i;
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B3]
-// CHECK-NEXT: T: goto a;
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void goto_past_declaration() {
- goto a;
- int i;
-a:
- i = 1;
-}
-
-// CHECK: [B4 (ENTRY)]
-// CHECK-NEXT: Succs (1): B3
-// CHECK: [B1]
-// CHECK-NEXT: a:
-// CHECK-NEXT: 1: 1
-// CHECK-NEXT: 2: k
-// CHECK-NEXT: 3: [B1.2] = [B1.1]
-// CHECK-NEXT: 4: [B2.4] (Lifetime ends)
-// CHECK-NEXT: Preds (2): B2 B3
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: int j;
-// CHECK-NEXT: 2: [B2.1] (Lifetime ends)
-// CHECK-NEXT: 3: [B3.1] (Lifetime ends)
-// CHECK-NEXT: 4: int k;
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B3]
-// CHECK-NEXT: 1: int i;
-// CHECK-NEXT: 2: [B3.1] (Lifetime ends)
-// CHECK-NEXT: T: goto a;
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void goto_past_declaration2() {
- {
- int i;
- goto a;
- int j;
- }
- {
- int k;
- a:
- k = 1;
- }
-}
-
-struct B {
- ~B();
-};
-
-// CHECK: [B4 (ENTRY)]
-// CHECK-NEXT: Succs (1): B3
-// CHECK: [B1]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: [B1.1]++
-// CHECK-NEXT: 3: [B2.2] (Lifetime ends)
-// CHECK-NEXT: 4: [B3.1] (Lifetime ends)
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: label:
-// CHECK-NEXT: 1: (CXXConstructExpr, struct B)
-// CHECK-NEXT: 2: B b;
-// CHECK-NEXT: 3: [B2.2] (Lifetime ends)
-// CHECK-NEXT: T: goto label;
-// CHECK-NEXT: Preds (2): B3 B2
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B3]
-// CHECK-NEXT: 1: int i;
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-int backpatched_goto() {
- int i;
-label:
- B b;
- goto label;
- i++;
-}
diff --git a/test/Analysis/lifetime-extension.cpp b/test/Analysis/lifetime-extension.cpp
deleted file mode 100644
index 8ce2000787a7..000000000000
--- a/test/Analysis/lifetime-extension.cpp
+++ /dev/null
@@ -1,334 +0,0 @@
-// RUN: %clang_analyze_cc1 -Wno-unused -std=c++11 -analyzer-checker=core,debug.ExprInspection -analyzer-config cfg-temporary-dtors=false -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -Wno-unused -std=c++11 -analyzer-checker=core,debug.ExprInspection -analyzer-config cfg-temporary-dtors=true,c++-temp-dtor-inlining=true -DTEMPORARIES -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -Wno-unused -std=c++17 -analyzer-checker=core,debug.ExprInspection -analyzer-config cfg-temporary-dtors=true,c++-temp-dtor-inlining=true -DTEMPORARIES -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -Wno-unused -std=c++11 -analyzer-checker=core,debug.ExprInspection -analyzer-config cfg-temporary-dtors=false -DMOVES -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -Wno-unused -std=c++11 -analyzer-checker=core,debug.ExprInspection -analyzer-config cfg-temporary-dtors=true,c++-temp-dtor-inlining=true -DTEMPORARIES -DMOVES -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -Wno-unused -std=c++17 -analyzer-checker=core,debug.ExprInspection -analyzer-config cfg-temporary-dtors=true,c++-temp-dtor-inlining=true -DTEMPORARIES -DMOVES -analyzer-config eagerly-assume=false %s
-
-// Note: The C++17 run-lines don't -verify yet - it is a no-crash test.
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_checkInlined(bool);
-
-namespace pr17001_call_wrong_destructor {
-bool x;
-struct A {
- int *a;
- A() {}
- ~A() {}
-};
-struct B : public A {
- B() {}
- ~B() { x = true; }
-};
-
-void f() {
- {
- const A &a = B();
- }
- clang_analyzer_eval(x); // expected-warning{{TRUE}}
-}
-} // end namespace pr17001_call_wrong_destructor
-
-namespace pr19539_crash_on_destroying_an_integer {
-struct A {
- int i;
- int j[2];
- A() : i(1) {
- j[0] = 2;
- j[1] = 3;
- }
- ~A() {}
-};
-
-void f() {
- const int &x = A().i; // no-crash
- const int &y = A().j[1]; // no-crash
- const int &z = (A().j[1], A().j[0]); // no-crash
-
- clang_analyzer_eval(x == 1);
- clang_analyzer_eval(y == 3);
- clang_analyzer_eval(z == 2);
-#ifdef TEMPORARIES
- // expected-warning@-4{{TRUE}}
- // expected-warning@-4{{TRUE}}
- // expected-warning@-4{{TRUE}}
-#else
- // expected-warning@-8{{UNKNOWN}}
- // expected-warning@-8{{UNKNOWN}}
- // expected-warning@-8{{UNKNOWN}}
-#endif
-}
-} // end namespace pr19539_crash_on_destroying_an_integer
-
-namespace maintain_original_object_address_on_lifetime_extension {
-class C {
- C **after, **before;
-
-public:
- bool x;
-
- C(bool x, C **after, C **before) : x(x), after(after), before(before) {
- *before = this;
- }
-
- // Don't track copies in our tests.
- C(const C &c) : x(c.x), after(nullptr), before(nullptr) {}
-
- ~C() { if (after) *after = this; }
-
- operator bool() const { return x; }
-
- static C make(C **after, C **before) { return C(false, after, before); }
-};
-
-void f1() {
- C *after, *before;
- {
- const C &c = C(true, &after, &before);
- }
- clang_analyzer_eval(after == before);
-#ifdef TEMPORARIES
- // expected-warning@-2{{TRUE}}
-#else
- // expected-warning@-4{{UNKNOWN}}
-#endif
-}
-
-void f2() {
- C *after, *before;
- {
- C c = C(1, &after, &before);
- }
- clang_analyzer_eval(after == before); // expected-warning{{TRUE}}
-}
-
-void f3(bool coin) {
- C *after, *before;
- {
- const C &c = coin ? C(true, &after, &before) : C(false, &after, &before);
- }
- clang_analyzer_eval(after == before);
-#ifdef TEMPORARIES
- // expected-warning@-2{{TRUE}}
-#else
- // expected-warning@-4{{UNKNOWN}}
-#endif
-}
-
-void f4(bool coin) {
- C *after, *before;
- {
- // no-crash
- const C &c = C(coin, &after, &before) ?: C(false, &after, &before);
- }
- // FIXME: Add support for lifetime extension through binary conditional
- // operator. Ideally also add support for the binary conditional operator in
- // C++. Because for now it calls the constructor for the condition twice.
- if (coin) {
- // FIXME: Should not warn.
- clang_analyzer_eval(after == before);
-#ifdef TEMPORARIES
- // expected-warning@-2{{The left operand of '==' is a garbage value}}
-#else
- // expected-warning@-4{{UNKNOWN}}
-#endif
- } else {
- // FIXME: Should be TRUE.
- clang_analyzer_eval(after == before);
-#ifdef TEMPORARIES
- // expected-warning@-2{{FALSE}}
-#else
- // expected-warning@-4{{UNKNOWN}}
-#endif
- }
-}
-
-void f5() {
- C *after, *before;
- {
- const bool &x = C(true, &after, &before).x; // no-crash
- }
- clang_analyzer_eval(after == before);
-#ifdef TEMPORARIES
- // expected-warning@-2{{TRUE}}
-#else
- // expected-warning@-4{{UNKNOWN}}
-#endif
-}
-
-struct A { // A is an aggregate.
- const C &c;
-};
-
-void f6() {
- C *after, *before;
- {
- A a{C(true, &after, &before)};
- }
- // FIXME: Should be TRUE. Should not warn about garbage value.
- clang_analyzer_eval(after == before); // expected-warning{{UNKNOWN}}
-}
-
-void f7() {
- C *after, *before;
- {
- A a = {C(true, &after, &before)};
- }
- // FIXME: Should be TRUE. Should not warn about garbage value.
- clang_analyzer_eval(after == before); // expected-warning{{UNKNOWN}}
-}
-
-void f8() {
- C *after, *before;
- {
- A a[2] = {C(false, nullptr, nullptr), C(true, &after, &before)};
- }
- // FIXME: Should be TRUE. Should not warn about garbage value.
- clang_analyzer_eval(after == before); // expected-warning{{UNKNOWN}}
-}
-} // end namespace maintain_original_object_address_on_lifetime_extension
-
-namespace maintain_original_object_address_on_move {
-class C {
- int *x;
-
-public:
- C() : x(nullptr) {}
- C(int *x) : x(x) {}
- C(const C &c) = delete;
- C(C &&c) : x(c.x) { c.x = nullptr; }
- C &operator=(C &&c) {
- x = c.x;
- c.x = nullptr;
- return *this;
- }
- ~C() {
- // This was triggering the division by zero warning in f1() and f2():
- // Because move-elision materialization was incorrectly causing the object
- // to be relocated from one address to another before move, but destructor
- // was operating on the old address, it was still thinking that 'x' is set.
- if (x)
- *x = 0;
- }
-};
-
-void f1() {
- int x = 1;
- // &x is replaced with nullptr in move-constructor before the temporary dies.
- C c = C(&x);
- // Hence x was not set to 0 yet.
- 1 / x; // no-warning
-}
-void f2() {
- int x = 1;
- C c;
- // &x is replaced with nullptr in move-assignment before the temporary dies.
- c = C(&x);
- // Hence x was not set to 0 yet.
- 1 / x; // no-warning
-}
-} // end namespace maintain_original_object_address_on_move
-
-namespace maintain_address_of_copies {
-class C;
-
-struct AddressVector {
- C *buf[10];
- int len;
-
- AddressVector() : len(0) {}
-
- void push(C *c) {
- buf[len] = c;
- ++len;
- }
-};
-
-class C {
- AddressVector &v;
-
-public:
- C(AddressVector &v) : v(v) { v.push(this); }
- ~C() { v.push(this); }
-
-#ifdef MOVES
- C(C &&c) : v(c.v) { v.push(this); }
-#endif
-
- // Note how return-statements prefer move-constructors when available.
- C(const C &c) : v(c.v) {
-#ifdef MOVES
- clang_analyzer_checkInlined(false); // no-warning
-#else
- v.push(this);
-#endif
- } // no-warning
-
- static C make(AddressVector &v) { return C(v); }
-};
-
-void f1() {
- AddressVector v;
- {
- C c = C(v);
- }
- // 0. Construct variable 'c' (copy/move elided).
- // 1. Destroy variable 'c'.
- clang_analyzer_eval(v.len == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[0] == v.buf[1]); // expected-warning{{TRUE}}
-}
-
-void f2() {
- AddressVector v;
- {
- const C &c = C::make(v);
- }
- // 0. Construct the return value of make() (copy/move elided) and
- // lifetime-extend it directly via reference 'c',
- // 1. Destroy the temporary lifetime-extended by 'c'.
- clang_analyzer_eval(v.len == 2);
- clang_analyzer_eval(v.buf[0] == v.buf[1]);
-#ifdef TEMPORARIES
- // expected-warning@-3{{TRUE}}
- // expected-warning@-3{{TRUE}}
-#else
- // expected-warning@-6{{UNKNOWN}}
- // expected-warning@-6{{UNKNOWN}}
-#endif
-}
-
-void f3() {
- AddressVector v;
- {
- C &&c = C::make(v);
- }
- // 0. Construct the return value of make() (copy/move elided) and
- // lifetime-extend it directly via reference 'c',
- // 1. Destroy the temporary lifetime-extended by 'c'.
- clang_analyzer_eval(v.len == 2);
- clang_analyzer_eval(v.buf[0] == v.buf[1]);
-#ifdef TEMPORARIES
- // expected-warning@-3{{TRUE}}
- // expected-warning@-3{{TRUE}}
-#else
- // expected-warning@-6{{UNKNOWN}}
- // expected-warning@-6{{UNKNOWN}}
-#endif
-}
-
-C doubleMake(AddressVector &v) {
- return C::make(v);
-}
-
-void f4() {
- AddressVector v;
- {
- C c = doubleMake(v);
- }
- // 0. Construct variable 'c' (all copies/moves elided),
- // 1. Destroy variable 'c'.
- clang_analyzer_eval(v.len == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[0] == v.buf[1]); // expected-warning{{TRUE}}
-}
-} // end namespace maintain_address_of_copies
diff --git a/test/Analysis/lifetime-extension.mm b/test/Analysis/lifetime-extension.mm
deleted file mode 100644
index 6fb2e04f1018..000000000000
--- a/test/Analysis/lifetime-extension.mm
+++ /dev/null
@@ -1,64 +0,0 @@
-// RUN: %clang_analyze_cc1 -Wno-unused -std=c++11 -analyzer-checker=core,debug.ExprInspection -verify %s
-// RUN: %clang_analyze_cc1 -Wno-unused -std=c++17 -analyzer-checker=core,debug.ExprInspection -verify %s
-// RUN: %clang_analyze_cc1 -Wno-unused -std=c++11 -analyzer-checker=core,debug.ExprInspection -DMOVES -verify %s
-// RUN: %clang_analyze_cc1 -Wno-unused -std=c++17 -analyzer-checker=core,debug.ExprInspection -DMOVES -verify %s
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_checkInlined(bool);
-
-template <typename T> struct AddressVector {
- T *buf[10];
- int len;
-
- AddressVector() : len(0) {}
-
- void push(T *t) {
- buf[len] = t;
- ++len;
- }
-};
-
-class C {
- AddressVector<C> &v;
-
-public:
- C(AddressVector<C> &v) : v(v) { v.push(this); }
- ~C() { v.push(this); }
-
-#ifdef MOVES
- C(C &&c) : v(c.v) { v.push(this); }
-#endif
-
- // Note how return-statements prefer move-constructors when available.
- C(const C &c) : v(c.v) {
-#ifdef MOVES
- clang_analyzer_checkInlined(false); // no-warning
-#else
- v.push(this);
-#endif
- } // no-warning
-};
-
-@interface NSObject {}
-@end;
-@interface Foo: NSObject {}
- -(C) make: (AddressVector<C> &)v;
-@end
-
-@implementation Foo
--(C) make: (AddressVector<C> &)v {
- return C(v);
-}
-@end
-
-void testReturnByValueFromMessage(Foo *foo) {
- AddressVector<C> v;
- {
- const C &c = [foo make: v];
- }
- // 0. Construct the return value of -make (copy/move elided) and
- // lifetime-extend it directly via reference 'c',
- // 1. Destroy the temporary lifetime-extended by 'c'.
- clang_analyzer_eval(v.len == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(v.buf[0] == v.buf[1]); // expected-warning{{TRUE}}
-}
diff --git a/test/Analysis/lit.local.cfg b/test/Analysis/lit.local.cfg
deleted file mode 100644
index 84f7569152c9..000000000000
--- a/test/Analysis/lit.local.cfg
+++ /dev/null
@@ -1,22 +0,0 @@
-# -*- Python -*- vim: set ft=python ts=4 sw=4 expandtab tw=79:
-
-import site
-
-# Load the custom analyzer test format, which runs the test again with Z3 if it
-# is available.
-site.addsitedir(os.path.dirname(__file__))
-import analyzer_test
-config.test_format = analyzer_test.AnalyzerTest(
- config.test_format.execute_external, config.use_z3_solver)
-
-# Diff command used by Clang Analyzer tests (when comparing .plist files
-# with reference output)
-config.substitutions.append(('%diff_plist',
- 'diff -u -w -I "<string>/" -I "<string>.:" -I "version"'))
-
-# Diff command for testing SARIF output to reference output.
-config.substitutions.append(('%diff_sarif',
- '''diff -U1 -w -I ".*file:.*%basename_t" -I '"version":' -I "2\.0\.0\-csd\.[0-9]*\.beta\."'''))
-
-if not config.root.clang_staticanalyzer:
- config.unsupported = True
diff --git a/test/Analysis/live-bindings-test.cpp b/test/Analysis/live-bindings-test.cpp
deleted file mode 100644
index afbb1b399fcd..000000000000
--- a/test/Analysis/live-bindings-test.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++17 -analyzer-checker=core,deadcode -verify %s
-
-typedef unsigned long size_t;
-
-// Machinery required for custom structured bindings decomposition.
-namespace std {
-template <class T> class tuple_size;
-template <class T>
- constexpr size_t tuple_size_v = tuple_size<T>::value;
-template <size_t I, class T> class tuple_element;
-
-template<class T, T v>
-struct integral_constant {
- static constexpr T value = v;
- typedef T value_type;
- typedef integral_constant type;
- constexpr operator value_type() const noexcept { return value; }
-};
-}
-
-struct S {
- int a;
- double b;
- S(int a, double b) : a(a), b(b) {};
-};
-
-S GetNumbers();
-
-int used_binding() {
- const auto [a, b] = GetNumbers(); // no-warning
- return a + b;
-}
-
-void no_warning_on_copy(S s) {
- // Copy constructor might have side effects.
- const auto [a, b] = s; // no-warning
-}
-
-
-int unused_binding_ignored() {
- const auto [a, b] = GetNumbers(); // expected-warning{{Value stored to '[a, b]' during its initialization is never read}}
- return 0;
-}
-
-int unused_binding_liveness_required() {
- auto [a2, b2] = GetNumbers(); // expected-warning{{Value stored to '[a2, b2]' during its initialization is never read}}
- a2 = 10;
- b2 = 20;
- return a2 + b2;
-}
-
-int kill_one_binding() {
- auto [a, b] = GetNumbers(); // no-warning
- a = 100;
- return a + b;
-
-}
-
-int kill_one_binding2() {
- auto [a, b] = GetNumbers(); // expected-warning{{Value stored to '[a, b]' during its initialization is never read}}
- a = 100;
- return a;
-}
-
-void use_const_reference_bindings() {
- const auto &[a, b] = GetNumbers(); // no-warning
-}
-
-void use_reference_bindings() {
- S s(0, 0);
- auto &[a, b] = s; // no-warning
- a = 200;
-}
-
-int read_through_pointer() {
- auto [a, b] = GetNumbers(); // no-warning
- int *z = &a;
- return *z;
-}
-
-auto [globalA, globalB] = GetNumbers(); // no-warning, globals
-auto [globalC, globalD] = GetNumbers(); // no-warning, globals
-
-void use_globals() {
- globalA = 300; // no-warning
- globalB = 200;
-}
-
-struct Mytuple {
- int a;
- int b;
-
- template <size_t N>
- int get() const {
- if constexpr (N == 0) return a;
- else if constexpr (N == 1) return b;
- }
-};
-
-namespace std {
- template<>
- struct tuple_size<Mytuple>
- : std::integral_constant<size_t, 2> {};
-
- template<size_t N>
- struct tuple_element<N, Mytuple> {
- using type = int;
- };
-}
-
-void no_warning_on_tuple_types_copy(Mytuple t) {
- auto [a, b] = t; // no-warning
-}
-
-Mytuple getMytuple();
-
-void deconstruct_tuple_types_warning() {
- auto [a, b] = getMytuple(); // expected-warning{{Value stored to '[a, b]' during its initialization is never read}}
-}
-
-int deconstruct_tuple_types_no_warning() {
- auto [a, b] = getMytuple(); // no-warning
- return a + b;
-}
diff --git a/test/Analysis/live-stmts.cpp b/test/Analysis/live-stmts.cpp
deleted file mode 100644
index 1b8a750c5e5c..000000000000
--- a/test/Analysis/live-stmts.cpp
+++ /dev/null
@@ -1,167 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=debug.DumpLiveStmts %s 2>&1\
-// RUN: | FileCheck %s
-
-int coin();
-
-
-int testThatDumperWorks(int x, int y, int z) {
- return x ? y : z;
-}
-// CHECK: [ B0 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B1 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B2 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-NEXT: DeclRefExpr {{.*}} 'y' 'int'
-// CHECK-EMPTY:
-// CHECK-NEXT: DeclRefExpr {{.*}} 'z' 'int'
-// CHECK-EMPTY:
-// CHECK-NEXT: ImplicitCastExpr {{.*}} <IntegralToBoolean>
-// CHECK-NEXT: `-ImplicitCastExpr {{.*}} <LValueToRValue>
-// CHECK-NEXT: `-DeclRefExpr {{.*}} 'x' 'int'
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B3 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-NEXT: DeclRefExpr {{.*}} 'y' 'int'
-// CHECK-EMPTY:
-// CHECK-NEXT: DeclRefExpr {{.*}} 'z' 'int'
-// CHECK-EMPTY:
-// CHECK-NEXT: ImplicitCastExpr {{.*}} <IntegralToBoolean>
-// CHECK-NEXT: `-ImplicitCastExpr {{.*}} <LValueToRValue>
-// CHECK-NEXT: `-DeclRefExpr {{.*}} 'x' 'int'
-// CHECK: [ B4 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-NEXT: DeclRefExpr {{.*}} 'y' 'int'
-// CHECK-EMPTY:
-// CHECK-NEXT: DeclRefExpr {{.*}} 'z' 'int'
-// CHECK-EMPTY:
-// CHECK-NEXT: ImplicitCastExpr {{.*}} <IntegralToBoolean>
-// CHECK-NEXT: `-ImplicitCastExpr {{.*}} <LValueToRValue>
-// CHECK-NEXT: `-DeclRefExpr {{.*}} 'x' 'int'
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B5 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-NEXT: DeclRefExpr {{.*}} 'y' 'int'
-// CHECK-EMPTY:
-// CHECK-NEXT: DeclRefExpr {{.*}} 'z' 'int'
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-
-
-void testIfBranchExpression(bool flag) {
- // No expressions should be carried over from one block to another here.
- while (flag) {
- int e = 1;
- if (true)
- e;
- }
-}
-// CHECK: [ B0 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B1 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B2 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B3 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B4 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B5 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-
-
-void testWhileBodyExpression(bool flag) {
- // No expressions should be carried over from one block to another here.
- while (flag) {
- int e = 1;
- while (coin())
- e;
- }
-}
-// CHECK: [ B0 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B1 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B2 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B3 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B4 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B5 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-
-
-void testDoWhileBodyExpression(bool flag) {
- // No expressions should be carried over from one block to another here.
- while (flag) {
- int e = 1;
- do
- e;
- while (coin());
- }
-}
-// CHECK: [ B0 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B1 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B2 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B3 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B4 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B5 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-
-
-void testForBodyExpression(bool flag) {
- // No expressions should be carried over from one block to another here.
- while (flag) {
- int e = 1;
- for (; coin();)
- e;
- }
-}
-// CHECK: [ B0 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B1 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B2 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B3 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B4 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-// CHECK: [ B5 (live statements at block exit) ]
-// CHECK-EMPTY:
-// CHECK-EMPTY:
-
diff --git a/test/Analysis/live-variables.cpp b/test/Analysis/live-variables.cpp
deleted file mode 100644
index 2c38b8bd7134..000000000000
--- a/test/Analysis/live-variables.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-// expected-no-diagnostics
-class B {
-public:
- bool m;
- ~B() {} // The destructor ensures that the binary logical operator below is wrapped in the ExprWithCleanups.
-};
-B foo();
-int getBool();
-int *getPtr();
-int test() {
- int r = 0;
- for (int x = 0; x< 10; x++) {
- int *p = getPtr();
- // Liveness info is not computed correctly due to the following expression.
- // This happens due to CFG being special cased for short circuit operators.
- // PR18159
- if (p != 0 && getBool() && foo().m && getBool()) {
- r = *p; // no warning
- }
- }
- return r;
-}
diff --git a/test/Analysis/live-variables.m b/test/Analysis/live-variables.m
deleted file mode 100644
index d2390f3f8787..000000000000
--- a/test/Analysis/live-variables.m
+++ /dev/null
@@ -1,24 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -fobjc-arc -verify %s
-// expected-no-diagnostics
-@interface NSObject
-@end
-@interface NSString : NSObject
-- (id)lastPathComponent;
-@end
-int getBool();
-int *getPtr();
-int foo() {
- int r = 0;
- NSString *filename = @"filename";
- for (int x = 0; x< 10; x++) {
- int *p = getPtr();
- // Liveness info is not computed correctly due to the following expression.
- // This happens due to CFG being special cased for short circuit operators.
- // Note, due to ObjC method call, the outermost logical operator is wrapped in ExprWithCleanups.
- // PR18159
- if ((p != 0) && (getBool()) && ([filename lastPathComponent]) && (getBool())) {
- r = *p; // no-warning
- }
- }
- return r;
-} \ No newline at end of file
diff --git a/test/Analysis/llvm-conventions.cpp b/test/Analysis/llvm-conventions.cpp
deleted file mode 100644
index 49bdc6380bc8..000000000000
--- a/test/Analysis/llvm-conventions.cpp
+++ /dev/null
@@ -1,225 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.llvm.Conventions \
-// RUN: -std=c++14 -verify %s
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-//===----------------------------------------------------------------------===//
-// Forward declarations for StringRef tests.
-//===----------------------------------------------------------------------===//
-
-using size_type = size_t;
-
-namespace std {
-
-template <class T>
-struct numeric_limits { const static bool is_signed; };
-
-} // end of namespace std
-
-namespace llvm {
-
-template <class T>
-struct iterator_range;
-
-template <class Func>
-struct function_ref;
-
-struct hash_code;
-
-template <class T>
-struct SmallVectorImpl;
-
-struct APInt;
-
-class StringRef {
-public:
- static const size_t npos = ~size_t(0);
- using iterator = const char *;
- using const_iterator = const char *;
- using size_type = size_t;
-
- /*implicit*/ StringRef() = default;
- StringRef(std::nullptr_t) = delete;
- /*implicit*/ StringRef(const char *Str);
- /*implicit*/ constexpr StringRef(const char *data, size_t length);
- /*implicit*/ StringRef(const std::string &Str);
-
- static StringRef withNullAsEmpty(const char *data);
- iterator begin() const;
- iterator end() const;
- const unsigned char *bytes_begin() const;
- const unsigned char *bytes_end() const;
- iterator_range<const unsigned char *> bytes() const;
- const char *data() const;
- bool empty() const;
- size_t size() const;
- char front() const;
- char back() const;
- template <typename Allocator>
- StringRef copy(Allocator &A) const;
- bool equals(StringRef RHS) const;
- bool equals_lower(StringRef RHS) const;
- int compare(StringRef RHS) const;
- int compare_lower(StringRef RHS) const;
- int compare_numeric(StringRef RHS) const;
- unsigned edit_distance(StringRef Other, bool AllowReplacements = true,
- unsigned MaxEditDistance = 0) const;
- std::string str() const;
- char operator[](size_t Index) const;
- template <typename T>
- typename std::enable_if<std::is_same<T, std::string>::value,
- StringRef>::type &
- operator=(T &&Str) = delete;
- operator std::string() const;
- bool startswith(StringRef Prefix) const;
- bool startswith_lower(StringRef Prefix) const;
- bool endswith(StringRef Suffix) const;
- bool endswith_lower(StringRef Suffix) const;
- size_t find(char C, size_t From = 0) const;
- size_t find_lower(char C, size_t From = 0) const;
- size_t find_if(function_ref<bool(char)> F, size_t From = 0) const;
- size_t find_if_not(function_ref<bool(char)> F, size_t From = 0) const;
- size_t find(StringRef Str, size_t From = 0) const;
- size_t find_lower(StringRef Str, size_t From = 0) const;
- size_t rfind(char C, size_t From = npos) const;
- size_t rfind_lower(char C, size_t From = npos) const;
- size_t rfind(StringRef Str) const;
- size_t rfind_lower(StringRef Str) const;
- size_t find_first_of(char C, size_t From = 0) const;
- size_t find_first_of(StringRef Chars, size_t From = 0) const;
- size_t find_first_not_of(char C, size_t From = 0) const;
- size_t find_first_not_of(StringRef Chars, size_t From = 0) const;
- size_t find_last_of(char C, size_t From = npos) const;
- size_t find_last_of(StringRef Chars, size_t From = npos) const;
- size_t find_last_not_of(char C, size_t From = npos) const;
- size_t find_last_not_of(StringRef Chars, size_t From = npos) const;
- bool contains(StringRef Other) const;
- bool contains(char C) const;
- bool contains_lower(StringRef Other) const;
- bool contains_lower(char C) const;
- size_t count(char C) const;
- size_t count(StringRef Str) const;
- template <typename T>
- typename std::enable_if<std::numeric_limits<T>::is_signed, bool>::type
- getAsInteger(unsigned Radix, T &Result) const;
- template <typename T>
- typename std::enable_if<!std::numeric_limits<T>::is_signed, bool>::type
- getAsInteger(unsigned Radix, T &Result) const;
- template <typename T>
- typename std::enable_if<std::numeric_limits<T>::is_signed, bool>::type
- consumeInteger(unsigned Radix, T &Result);
- template <typename T>
- typename std::enable_if<!std::numeric_limits<T>::is_signed, bool>::type
- consumeInteger(unsigned Radix, T &Result);
- bool getAsInteger(unsigned Radix, APInt &Result) const;
- bool getAsDouble(double &Result, bool AllowInexact = true) const;
- std::string lower() const;
- std::string upper() const;
- StringRef substr(size_t Start, size_t N = npos) const;
- StringRef take_front(size_t N = 1) const;
- StringRef take_back(size_t N = 1) const;
- StringRef take_while(function_ref<bool(char)> F) const;
- StringRef take_until(function_ref<bool(char)> F) const;
- StringRef drop_front(size_t N = 1) const;
- StringRef drop_back(size_t N = 1) const;
- StringRef drop_while(function_ref<bool(char)> F) const;
- StringRef drop_until(function_ref<bool(char)> F) const;
- bool consume_front(StringRef Prefix);
- bool consume_back(StringRef Suffix);
- StringRef slice(size_t Start, size_t End) const;
- std::pair<StringRef, StringRef> split(char Separator) const;
- std::pair<StringRef, StringRef> split(StringRef Separator) const;
- std::pair<StringRef, StringRef> rsplit(StringRef Separator) const;
- void split(SmallVectorImpl<StringRef> &A,
- StringRef Separator, int MaxSplit = -1,
- bool KeepEmpty = true) const;
- void split(SmallVectorImpl<StringRef> &A, char Separator, int MaxSplit = -1,
- bool KeepEmpty = true) const;
- std::pair<StringRef, StringRef> rsplit(char Separator) const;
- StringRef ltrim(char Char) const;
- StringRef ltrim(StringRef Chars = " \t\n\v\f\r") const;
- StringRef rtrim(char Char) const;
- StringRef rtrim(StringRef Chars = " \t\n\v\f\r") const;
- StringRef trim(char Char) const;
- StringRef trim(StringRef Chars = " \t\n\v\f\r") const;
-};
-
-inline bool operator==(StringRef LHS, StringRef RHS);
-inline bool operator!=(StringRef LHS, StringRef RHS);
-inline bool operator<(StringRef LHS, StringRef RHS);
-inline bool operator<=(StringRef LHS, StringRef RHS);
-inline bool operator>(StringRef LHS, StringRef RHS);
-inline bool operator>=(StringRef LHS, StringRef RHS);
-inline std::string &operator+=(std::string &buffer, StringRef string);
-hash_code hash_value(StringRef S);
-template <typename T> struct isPodLike;
-template <> struct isPodLike<StringRef> { static const bool value = true; };
-
-} // end of namespace llvm
-
-//===----------------------------------------------------------------------===//
-// Tests for StringRef.
-//===----------------------------------------------------------------------===//
-
-void temporarayStringToStringRefAssignmentTest() {
- // TODO: Emit a warning.
- llvm::StringRef Ref = std::string("Yimmy yummy test.");
-}
-
-void assigningStringToStringRefWithLongerLifetimeTest() {
- llvm::StringRef Ref;
- {
- // TODO: Emit a warning.
- std::string TmpStr("This is a fine string.");
- Ref = TmpStr;
- }
-}
-
-std::string getTemporaryString() {
- return "One two three.";
-}
-
-void assigningTempStringFromFunctionToStringRefTest() {
- // TODO: Emit a warning.
- llvm::StringRef Ref = getTemporaryString();
-}
-
-//===----------------------------------------------------------------------===//
-// Forward declaration for Clang AST nodes.
-//===----------------------------------------------------------------------===//
-
-namespace llvm {
-
-template <class T, int Size>
-struct SmallVector {};
-
-} // end of namespace llvm
-
-namespace clang {
-
-struct Type;
-struct Decl;
-struct Stmt;
-struct Attr;
-
-} // end of namespace clang
-
-//===----------------------------------------------------------------------===//
-// Tests for Clang AST nodes.
-//===----------------------------------------------------------------------===//
-
-namespace clang {
-
-struct Type {
- std::string str; // expected-warning{{AST class 'Type' has a field 'str' that allocates heap memory (type std::string)}}
-};
-
-} // end of namespace clang
-
-namespace clang {
-
-struct Decl {
- llvm::SmallVector<int, 5> Vec; // expected-warning{{AST class 'Decl' has a field 'Vec' that allocates heap memory (type llvm::SmallVector<int, 5>)}}
-};
-
-} // end of namespace clang
diff --git a/test/Analysis/localization-aggressive.m b/test/Analysis/localization-aggressive.m
deleted file mode 100644
index 2e273e0c4821..000000000000
--- a/test/Analysis/localization-aggressive.m
+++ /dev/null
@@ -1,295 +0,0 @@
-// RUN: %clang_cc1 -fblocks -x objective-c-header -emit-pch -o %t.pch %S/Inputs/localization-pch.h
-
-// RUN: %clang_analyze_cc1 -fblocks -analyzer-store=region \
-// RUN: -analyzer-config optin.osx.cocoa.localizability.NonLocalizedStringChecker:AggressiveReport=true \
-// RUN: -analyzer-checker=optin.osx.cocoa.localizability.NonLocalizedStringChecker \
-// RUN: -analyzer-checker=optin.osx.cocoa.localizability.EmptyLocalizationContextChecker \
-// RUN: -include-pch %t.pch -verify %s
-
-// These declarations were reduced using Delta-Debugging from Foundation.h
-// on Mac OS X.
-
-#define nil ((id)0)
-#define NSLocalizedString(key, comment) \
- [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
-#define NSLocalizedStringFromTable(key, tbl, comment) \
- [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:(tbl)]
-#define NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) \
- [bundle localizedStringForKey:(key) value:@"" table:(tbl)]
-#define NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment) \
- [bundle localizedStringForKey:(key) value:(val) table:(tbl)]
-#define CGFLOAT_TYPE double
-typedef CGFLOAT_TYPE CGFloat;
-struct CGPoint {
- CGFloat x;
- CGFloat y;
-};
-typedef struct CGPoint CGPoint;
-@interface NSObject
-+ (id)alloc;
-- (id)init;
-@end
-@class NSDictionary;
-@interface NSString : NSObject
-- (void)drawAtPoint:(CGPoint)point withAttributes:(NSDictionary *)attrs;
-+ (instancetype)localizedStringWithFormat:(NSString *)format, ...;
-@end
-@interface NSBundle : NSObject
-+ (NSBundle *)mainBundle;
-- (NSString *)localizedStringForKey:(NSString *)key
- value:(NSString *)value
- table:(NSString *)tableName;
-@end
-@protocol UIAccessibility
-- (void)accessibilitySetIdentification:(NSString *)ident;
-- (void)setAccessibilityLabel:(NSString *)label;
-@end
-@interface UILabel : NSObject <UIAccessibility>
-@property(nullable, nonatomic, copy) NSString *text;
-@end
-@interface TestObject : NSObject
-@property(strong) NSString *text;
-@end
-@interface NSView : NSObject
-@property (strong) NSString *toolTip;
-@end
-@interface NSViewSubclass : NSView
-@end
-
-@interface LocalizationTestSuite : NSObject
-NSString *ForceLocalized(NSString *str)
- __attribute__((annotate("returns_localized_nsstring")));
-CGPoint CGPointMake(CGFloat x, CGFloat y);
-int random();
-// This next one is a made up API
-NSString *CFNumberFormatterCreateStringWithNumber(float x);
-+ (NSString *)forceLocalized:(NSString *)str
- __attribute__((annotate("returns_localized_nsstring")));
-+ (NSString *)takesLocalizedString:
- (NSString *)__attribute__((annotate("takes_localized_nsstring")))str;
-@end
-
-NSString *
-takesLocalizedString(NSString *str
- __attribute__((annotate("takes_localized_nsstring")))) {
- return str;
-}
-
-// Test cases begin here
-@implementation LocalizationTestSuite
-
-// A C-Funtion that returns a localized string because it has the
-// "returns_localized_nsstring" annotation
-NSString *ForceLocalized(NSString *str) { return str; }
-// An ObjC method that returns a localized string because it has the
-// "returns_localized_nsstring" annotation
-+ (NSString *)forceLocalized:(NSString *)str {
- return str;
-}
-
-+ (NSString *) takesLocalizedString:(NSString *)str { return str; }
-
-// An ObjC method that returns a localized string
-+ (NSString *)unLocalizedStringMethod {
- return @"UnlocalizedString";
-}
-
-- (void)testLocalizationErrorDetectedOnPathway {
- UILabel *testLabel = [[UILabel alloc] init];
- NSString *bar = NSLocalizedString(@"Hello", @"Comment");
-
- if (random()) {
- bar = @"Unlocalized string";
- }
-
- [testLabel setText:bar]; // expected-warning {{User-facing text should use localized string macro}}
-}
-
-- (void)testLocalizationErrorDetectedOnNSString {
- NSString *bar = NSLocalizedString(@"Hello", @"Comment");
-
- if (random()) {
- bar = @"Unlocalized string";
- }
-
- [bar drawAtPoint:CGPointMake(0, 0) withAttributes:nil]; // expected-warning {{User-facing text should use localized string macro}}
-}
-
-- (void)testNoLocalizationErrorDetectedFromCFunction {
- UILabel *testLabel = [[UILabel alloc] init];
- NSString *bar = CFNumberFormatterCreateStringWithNumber(1);
-
- [testLabel setText:bar]; // no-warning
-}
-
-- (void)testAnnotationAddsLocalizedStateForCFunction {
- UILabel *testLabel = [[UILabel alloc] init];
- NSString *bar = NSLocalizedString(@"Hello", @"Comment");
-
- if (random()) {
- bar = @"Unlocalized string";
- }
-
- [testLabel setText:ForceLocalized(bar)]; // no-warning
-}
-
-- (void)testAnnotationAddsLocalizedStateForObjCMethod {
- UILabel *testLabel = [[UILabel alloc] init];
- NSString *bar = NSLocalizedString(@"Hello", @"Comment");
-
- if (random()) {
- bar = @"Unlocalized string";
- }
-
- [testLabel setText:[LocalizationTestSuite forceLocalized:bar]]; // no-warning
-}
-
-// An empty string literal @"" should not raise an error
-- (void)testEmptyStringLiteralHasLocalizedState {
- UILabel *testLabel = [[UILabel alloc] init];
- NSString *bar = @"";
-
- [testLabel setText:bar]; // no-warning
-}
-
-// An empty string literal @"" inline should not raise an error
-- (void)testInlineEmptyStringLiteralHasLocalizedState {
- UILabel *testLabel = [[UILabel alloc] init];
- [testLabel setText:@""]; // no-warning
-}
-
-// An string literal @"Hello" inline should raise an error
-- (void)testInlineStringLiteralHasLocalizedState {
- UILabel *testLabel = [[UILabel alloc] init];
- [testLabel setText:@"Hello"]; // expected-warning {{User-facing text should use localized string macro}}
-}
-
-// A nil string should not raise an error
-- (void)testNilStringIsNotMarkedAsUnlocalized {
- UILabel *testLabel = [[UILabel alloc] init];
- [testLabel setText:nil]; // no-warning
-}
-
-// A method that takes in a localized string and returns a string
-// most likely that string is localized.
-- (void)testLocalizedStringArgument {
- UILabel *testLabel = [[UILabel alloc] init];
- NSString *localizedString = NSLocalizedString(@"Hello", @"Comment");
-
- NSString *combinedString =
- [NSString localizedStringWithFormat:@"%@", localizedString];
-
- [testLabel setText:combinedString]; // no-warning
-}
-
-// A String passed in as a an parameter should not be considered
-// unlocalized
-- (void)testLocalizedStringAsArgument:(NSString *)argumentString {
- UILabel *testLabel = [[UILabel alloc] init];
-
- [testLabel setText:argumentString]; // no-warning
-}
-
-// The warning is expected to be seen in localizedStringAsArgument: body
-- (void)testLocalizedStringAsArgumentOtherMethod:(NSString *)argumentString {
- [self localizedStringAsArgument:@"UnlocalizedString"];
-}
-
-// A String passed into another method that calls a method that
-// requires a localized string should give an error
-- (void)localizedStringAsArgument:(NSString *)argumentString {
- UILabel *testLabel = [[UILabel alloc] init];
-
- [testLabel setText:argumentString]; // expected-warning {{User-facing text should use localized string macro}}
-}
-
-// [LocalizationTestSuite unLocalizedStringMethod] returns an unlocalized string
-// so we expect an error. Unfrtunately, it probably doesn't make a difference
-// what [LocalizationTestSuite unLocalizedStringMethod] returns since all
-// string values returned are marked as Unlocalized in aggressive reporting.
-- (void)testUnLocalizedStringMethod {
- UILabel *testLabel = [[UILabel alloc] init];
- NSString *bar = NSLocalizedString(@"Hello", @"Comment");
-
- [testLabel setText:[LocalizationTestSuite unLocalizedStringMethod]]; // expected-warning {{User-facing text should use localized string macro}}
-}
-
-// This is the reverse situation: accessibilitySetIdentification: doesn't care
-// about localization so we don't expect a warning
-- (void)testMethodNotInRequiresLocalizedStringMethods {
- UILabel *testLabel = [[UILabel alloc] init];
-
- [testLabel accessibilitySetIdentification:@"UnlocalizedString"]; // no-warning
-}
-
-// An NSView subclass should raise a warning for methods in NSView that
-// require localized strings
-- (void)testRequiresLocalizationMethodFromSuperclass {
- NSViewSubclass *s = [[NSViewSubclass alloc] init];
- NSString *bar = @"UnlocalizedString";
-
- [s setToolTip:bar]; // expected-warning {{User-facing text should use localized string macro}}
-}
-
-- (void)testRequiresLocalizationMethodFromProtocol {
- UILabel *testLabel = [[UILabel alloc] init];
-
- [testLabel setAccessibilityLabel:@"UnlocalizedString"]; // expected-warning {{User-facing text should use localized string macro}}
-}
-
-// EmptyLocalizationContextChecker tests
-#define HOM(s) YOLOC(s)
-#define YOLOC(x) NSLocalizedString(x, nil)
-
-- (void)testNilLocalizationContext {
- NSString *string = NSLocalizedString(@"LocalizedString", nil); // expected-warning {{Localized string macro should include a non-empty comment for translators}}
- NSString *string2 = NSLocalizedString(@"LocalizedString", nil); // expected-warning {{Localized string macro should include a non-empty comment for translators}}
- NSString *string3 = NSLocalizedString(@"LocalizedString", nil); // expected-warning {{Localized string macro should include a non-empty comment for translators}}
-}
-
-- (void)testEmptyLocalizationContext {
- NSString *string = NSLocalizedString(@"LocalizedString", @""); // expected-warning {{Localized string macro should include a non-empty comment for translators}}
- NSString *string2 = NSLocalizedString(@"LocalizedString", @" "); // expected-warning {{Localized string macro should include a non-empty comment for translators}}
- NSString *string3 = NSLocalizedString(@"LocalizedString", @" "); // expected-warning {{Localized string macro should include a non-empty comment for translators}}
-}
-
-- (void)testNSLocalizedStringVariants {
- NSString *string = NSLocalizedStringFromTable(@"LocalizedString", nil, @""); // expected-warning {{Localized string macro should include a non-empty comment for translators}}
- NSString *string2 = NSLocalizedStringFromTableInBundle(@"LocalizedString", nil, [[NSBundle alloc] init],@""); // expected-warning {{Localized string macro should include a non-empty comment for translators}}
- NSString *string3 = NSLocalizedStringWithDefaultValue(@"LocalizedString", nil, [[NSBundle alloc] init], nil,@""); // expected-warning {{Localized string macro should include a non-empty comment for translators}}
-}
-
-- (void)testMacroExpansionNilString {
- NSString *string = YOLOC(@"Hello"); // expected-warning {{Localized string macro should include a non-empty comment for translators}}
- NSString *string2 = HOM(@"Hello"); // expected-warning {{Localized string macro should include a non-empty comment for translators}}
- NSString *string3 = NSLocalizedString((0 ? @"Critical" : @"Current"),nil); // expected-warning {{Localized string macro should include a non-empty comment for translators}}
-}
-
-- (void)testMacroExpansionDefinedInPCH {
- NSString *string = MyLocalizedStringInPCH(@"Hello"); // expected-warning {{Localized string macro should include a non-empty comment for translators}}
-}
-
-#define KCLocalizedString(x,comment) NSLocalizedString(x, comment)
-#define POSSIBLE_FALSE_POSITIVE(s,other) KCLocalizedString(s,@"Comment")
-
-- (void)testNoWarningForNilCommentPassedIntoOtherMacro {
- NSString *string = KCLocalizedString(@"Hello",@""); // no-warning
- NSString *string2 = KCLocalizedString(@"Hello",nil); // no-warning
- NSString *string3 = KCLocalizedString(@"Hello",@"Comment"); // no-warning
-}
-
-- (void)testPossibleFalsePositiveSituationAbove {
- NSString *string = POSSIBLE_FALSE_POSITIVE(@"Hello", nil); // no-warning
- NSString *string2 = POSSIBLE_FALSE_POSITIVE(@"Hello", @"Hello"); // no-warning
-}
-
-- (void)testTakesLocalizedString {
- NSString *localized = NSLocalizedString(@"Hello", @"World");
- NSString *alsoLocalized = [LocalizationTestSuite takesLocalizedString:localized]; // no-warning
- NSString *stillLocalized = [LocalizationTestSuite takesLocalizedString:alsoLocalized]; // no-warning
- takesLocalizedString(stillLocalized); // no-warning
-
- [LocalizationTestSuite takesLocalizedString:@"not localized"]; // expected-warning {{User-facing text should use localized string macro}}
- takesLocalizedString(@"not localized"); // expected-warning {{User-facing text should use localized string macro}}
-}
-@end
diff --git a/test/Analysis/localization.m b/test/Analysis/localization.m
deleted file mode 100644
index a9fd2445eb15..000000000000
--- a/test/Analysis/localization.m
+++ /dev/null
@@ -1,241 +0,0 @@
-// RUN: %clang_analyze_cc1 -fblocks -analyzer-store=region -analyzer-output=text -analyzer-checker=optin.osx.cocoa.localizability.NonLocalizedStringChecker -analyzer-checker=alpha.osx.cocoa.localizability.PluralMisuseChecker -verify %s
-
-// The larger set of tests in located in localization.m. These are tests
-// specific for non-aggressive reporting.
-
-// These declarations were reduced using Delta-Debugging from Foundation.h
-// on Mac OS X.
-
-#define nil ((id)0)
-#define NSLocalizedString(key, comment) \
- [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
-#define NSLocalizedStringFromTable(key, tbl, comment) \
- [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:(tbl)]
-#define NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) \
- [bundle localizedStringForKey:(key) value:@"" table:(tbl)]
-#define NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment) \
- [bundle localizedStringForKey:(key) value:(val) table:(tbl)]
-@interface NSObject
-+ (id)alloc;
-- (id)init;
-@end
-@interface NSString : NSObject
-- (NSString *)stringByAppendingFormat:(NSString *)format, ...;
-+ (instancetype)stringWithFormat:(NSString *)format, ...;
-@end
-@interface NSBundle : NSObject
-+ (NSBundle *)mainBundle;
-- (NSString *)localizedStringForKey:(NSString *)key
- value:(NSString *)value
- table:(NSString *)tableName;
-@end
-@interface UILabel : NSObject
-@property(nullable, nonatomic, copy) NSString *text;
-@end
-@interface TestObject : NSObject
-@property(strong) NSString *text;
-@end
-
-@interface LocalizationTestSuite : NSObject
-int random();
-@property (assign) int unreadArticlesCount;
-@end
-#define MCLocalizedString(s) NSLocalizedString(s,nil);
-// Test cases begin here
-@implementation LocalizationTestSuite
-
-NSString *KHLocalizedString(NSString* key, NSString* comment) {
- return NSLocalizedString(key, comment);
-}
-
-// An object passed in as an parameter's string member
-// should not be considered unlocalized
-- (void)testObjectAsArgument:(TestObject *)argumentObject {
- UILabel *testLabel = [[UILabel alloc] init];
-
- [testLabel setText:[argumentObject text]]; // no-warning
- [testLabel setText:argumentObject.text]; // no-warning
-}
-
-- (void)testLocalizationErrorDetectedOnPathway {
- UILabel *testLabel = [[UILabel alloc] init];
- NSString *bar = NSLocalizedString(@"Hello", @"Comment");
-
- if (random()) { // expected-note {{Assuming the condition is true}} expected-note {{Taking true branch}}
- bar = @"Unlocalized string"; // expected-note {{Non-localized string literal here}}
- }
-
- [testLabel setText:bar]; // expected-warning {{User-facing text should use localized string macro}} expected-note {{User-facing}}
-}
-
-- (void)testMultipleUnlocalizedStringsInSamePath {
- UILabel *testLabel = [[UILabel alloc] init];
- NSString *bar = @"Unlocalized string"; // no-note
-
- bar = @"Unlocalized string"; // expected-note {{Non-localized string literal here}}
-
- NSString *other = @"Other unlocalized string."; // no-note
- (void)other;
-
- NSString *same = @"Unlocalized string"; // no-note
- (void)same;
-
- [testLabel setText:bar]; // expected-warning {{User-facing text should use localized string macro}} expected-note {{User-facing}}
-}
-
-- (void)testOneCharacterStringsDoNotGiveAWarning {
- UILabel *testLabel = [[UILabel alloc] init];
- NSString *bar = NSLocalizedString(@"Hello", @"Comment");
-
- if (random()) {
- bar = @"-";
- }
-
- [testLabel setText:bar]; // no-warning
-}
-
-- (void)testOneCharacterUTFStringsDoNotGiveAWarning {
- UILabel *testLabel = [[UILabel alloc] init];
- NSString *bar = NSLocalizedString(@"Hello", @"Comment");
-
- if (random()) {
- bar = @"\u2014";
- }
-
- [testLabel setText:bar]; // no-warning
-}
-
-
-// Suppress diagnostic about user-facing string constants when the method name
-// contains the term "Debug".
-- (void)debugScreen:(UILabel *)label {
- label.text = @"Unlocalized";
-}
-
-// Plural Misuse Checker Tests
-// These tests are modeled off incorrect uses of the many-one pattern
-// from real projects.
-
-- (NSString *)test1:(int)plural {
- if (plural) {
- return MCLocalizedString(@"TYPE_PLURAL"); // expected-warning {{Plural cases are not supported across all languages. Use a .stringsdict file}} expected-note {{Plural}}
- }
- return MCLocalizedString(@"TYPE");
-}
-
-- (NSString *)test2:(int)numOfReminders {
- if (numOfReminders > 0) {
- return [NSString stringWithFormat:@"%@, %@", @"Test", (numOfReminders != 1) ? [NSString stringWithFormat:NSLocalizedString(@"%@ Reminders", @"Plural count of reminders"), numOfReminders] : [NSString stringWithFormat:NSLocalizedString(@"1 reminder", @"One reminder")]]; // expected-warning 2 {{Plural cases are not supported across all languages. Use a .stringsdict file}} expected-note 2 {{Plural}}
- }
- return nil;
-}
-
-- (void)test3 {
- NSString *count;
- if (self.unreadArticlesCount > 1)
- {
- count = [count stringByAppendingFormat:@"%@", KHLocalizedString(@"New Stories", @"Plural count for new stories")]; // expected-warning {{Plural cases are not supported across all languages. Use a .stringsdict file}} expected-note {{Plural}}
- } else {
- count = [count stringByAppendingFormat:@"%@", KHLocalizedString(@"New Story", @"One new story")]; // expected-warning {{Plural cases are not supported across all languages. Use a .stringsdict file}} expected-note {{Plural}}
- }
-}
-
-- (NSString *)test4:(int)count {
- if ( count == 1 )
- {
- return [NSString stringWithFormat:KHLocalizedString(@"value.singular",nil), count]; // expected-warning {{Plural cases are not supported across all languages. Use a .stringsdict file}} expected-note {{Plural}}
- } else {
- return [NSString stringWithFormat:KHLocalizedString(@"value.plural",nil), count]; // expected-warning {{Plural cases are not supported across all languages. Use a .stringsdict file}} expected-note {{Plural}}
- }
-}
-
-- (NSString *)test5:(int)count {
- int test = count == 1;
- if (test)
- {
- return [NSString stringWithFormat:KHLocalizedString(@"value.singular",nil), count]; // expected-warning {{Plural cases are not supported across all languages. Use a .stringsdict file}} expected-note {{Plural}}
- } else {
- return [NSString stringWithFormat:KHLocalizedString(@"value.plural",nil), count]; // expected-warning {{Plural cases are not supported across all languages. Use a .stringsdict file}} expected-note {{Plural}}
- }
-}
-
-// This tests the heuristic that the direct parent IfStmt must match the isCheckingPlurality confition to avoid false positives generated from complex code (generally the pattern we're looking for is simple If-Else)
-
-- (NSString *)test6:(int)sectionIndex {
- int someOtherVariable = 0;
- if (sectionIndex == 1)
- {
- // Do some other crazy stuff
- if (someOtherVariable)
- return KHLocalizedString(@"OK",nil); // no-warning
- } else {
- return KHLocalizedString(@"value.plural",nil); // expected-warning {{Plural cases are not supported across all languages. Use a .stringsdict file}} expected-note {{Plural}}
- }
- return nil;
-}
-
-// False positives that we are not accounting for involve matching the heuristic
-// of having 1 or 2 in the RHS of a BinaryOperator and having a localized string
-// in the body of the IfStmt. This is seen a lot when checking for the section
-// indexpath of something like a UITableView
-
-// - (NSString *)testNotAccountedFor:(int)sectionIndex {
-// if (sectionIndex == 1)
-// {
-// return KHLocalizedString(@"1",nil); // false-positive
-// } else if (sectionIndex == 2) {
-// return KHLocalizedString(@"2",nil); // false-positive
-// } else if (sectionIndex == 3) {
-// return KHLocalizedString(@"3",nil); // no-false-positive
-// }
-// }
-
-// Potential test-cases to support in the future
-
-// - (NSString *)test7:(int)count {
-// BOOL plural = count != 1;
-// return KHLocalizedString(plural ? @"PluralString" : @"SingularString", @"");
-// }
-//
-// - (NSString *)test8:(BOOL)plural {
-// return KHLocalizedString(([NSString stringWithFormat:@"RELATIVE_DATE_%@_%@", ((1 == 1) ? @"FUTURE" : @"PAST"), plural ? @"PLURAL" : @"SINGULAR"]));
-// }
-//
-//
-//
-// - (void)test9:(int)numberOfTimesEarned {
-// NSString* localizedDescriptionKey;
-// if (numberOfTimesEarned == 1) {
-// localizedDescriptionKey = @"SINGULAR_%@";
-// } else {
-// localizedDescriptionKey = @"PLURAL_%@_%@";
-// }
-// NSLocalizedString(localizedDescriptionKey, nil);
-// }
-//
-// - (NSString *)test10 {
-// NSInteger count = self.problems.count;
-// NSString *title = [NSString stringWithFormat:@"%ld Problems", (long) count];
-// if (count < 2) {
-// if (count == 0) {
-// title = [NSString stringWithFormat:@"No Problems Found"];
-// } else {
-// title = [NSString stringWithFormat:@"%ld Problem", (long) count];
-// }
-// }
-// return title;
-// }
-
-@end
-
-
-// Suppress diagnostic about user-facing string constants when the class name
-// contains "Debug"
-@interface MyDebugView : NSObject
-@end
-
-@implementation MyDebugView
-- (void)setupScreen:(UILabel *)label {
- label.text = @"Unlocalized"; // no-warning
-}
-@end
diff --git a/test/Analysis/logical-ops.c b/test/Analysis/logical-ops.c
deleted file mode 100644
index f839b1bf22bd..000000000000
--- a/test/Analysis/logical-ops.c
+++ /dev/null
@@ -1,39 +0,0 @@
-// RUN: %clang_analyze_cc1 -Wno-pointer-bool-conversion -analyzer-checker=core,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(int);
-
-void testAnd(int i, int *p) {
- int *nullP = 0;
- int *knownP = &i;
- clang_analyzer_eval((knownP && knownP) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval((knownP && nullP) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval((knownP && p) == 1); // expected-warning{{UNKNOWN}}
-}
-
-void testOr(int i, int *p) {
- int *nullP = 0;
- int *knownP = &i;
- clang_analyzer_eval((nullP || knownP) == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval((nullP || nullP) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval((nullP || p) == 1); // expected-warning{{UNKNOWN}}
-}
-
-
-// PR13461
-int testTypeIsInt(int i, void *p) {
- if (i | (p && p))
- return 1;
- return 0;
-}
-
-// These crashed the analyzer at some point.
-int between(char *x) {
- extern char start[];
- extern char end[];
- return x >= start && x < end;
-}
-
-int undef(void) {} // expected-warning{{control reaches end of non-void function}}
-void useUndef(void) { 0 || undef(); }
-
-void testPointer(void) { (void) (1 && testPointer && 0); }
diff --git a/test/Analysis/loop-block-counts.c b/test/Analysis/loop-block-counts.c
deleted file mode 100644
index 04a3f747c2ee..000000000000
--- a/test/Analysis/loop-block-counts.c
+++ /dev/null
@@ -1,26 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-
-void callee(void **p) {
- int x;
- *p = &x;
-}
-
-void loop() {
- void *arr[2];
- for (int i = 0; i < 2; ++i)
- callee(&arr[i]);
- // FIXME: Should be UNKNOWN.
- clang_analyzer_eval(arr[0] == arr[1]); // expected-warning{{TRUE}}
-}
-
-void loopWithCall() {
- void *arr[2];
- for (int i = 0; i < 2; ++i) {
- int x;
- arr[i] = &x;
- }
- // FIXME: Should be UNKNOWN.
- clang_analyzer_eval(arr[0] == arr[1]); // expected-warning{{TRUE}}
-}
diff --git a/test/Analysis/loop-unrolling.cpp b/test/Analysis/loop-unrolling.cpp
deleted file mode 100644
index b7375df38b69..000000000000
--- a/test/Analysis/loop-unrolling.cpp
+++ /dev/null
@@ -1,501 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config unroll-loops=true,cfg-loopexit=true -verify -std=c++11 -analyzer-config exploration_strategy=unexplored_first_queue %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config unroll-loops=true,cfg-loopexit=true,exploration_strategy=dfs -verify -std=c++11 -DDFS=1 %s
-
-void clang_analyzer_numTimesReached();
-void clang_analyzer_warnIfReached();
-
-int getNum();
-void foo(int &);
-
-int simple_unroll1() {
- int a[9];
- int k = 42;
- for (int i = 0; i < 9; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{9}}
- a[i] = 42;
- }
- int b = 22 / (k - 42); // expected-warning {{Division by zero}}
- return 0;
-}
-
-int simple_unroll2() {
- int a[9];
- int k = 42;
- int i;
- for (i = 0; i < 9; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{9}}
- a[i] = 42;
- }
-
- for (int j = 0; j <= 9; ++j) {
- clang_analyzer_numTimesReached(); // expected-warning {{10}}
- a[j] = 42;
- }
-
- int b = 22 / (k - 42); // expected-warning {{Division by zero}}
- return 0;
-}
-
-int simple_unroll3_unsigned() {
- int a[9];
- int k = 42;
- for (unsigned i = 0; i < 9; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{9}}
- a[i] = 42;
- }
- int b = 22 / (k - 42); // expected-warning {{Division by zero}}
- return 0;
-}
-
-int simple_unroll4_unsigned() {
- int a[9];
- int k = 42;
- unsigned i;
- for (i = (0); i < 9; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{9}}
- a[i] = 42;
- }
- int b = 22 / (k - 42); // expected-warning {{Division by zero}}
- return 0;
-}
-
-int simple_no_unroll1() {
- int a[9];
- int k = 42;
- for (int i = 0; i < 9; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- a[i] = 42;
- foo(i);
- }
- int b = 22 / (k - 42); // expected-warning {{Division by zero}}
- return 0;
-}
-
-int simple_no_unroll2() {
- int a[9];
- int k = 42;
- int i;
- for (i = 0; i < 9; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- a[i] = 42;
- i += getNum();
- }
- int b = 22 / (k - 42); // expected-warning {{Division by zero}}
- return 0;
-}
-
-int simple_no_unroll3() {
- int a[9];
- int k = 42;
- for (int i = 0; i < 9; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- a[i] = 42;
- (void)&i;
- }
- int b = 22 / (k - 42); // no-warning
- return 0;
-}
-
-int simple_no_unroll4() {
- int a[9];
- int k = 42;
- int i;
- for (i = 0; i < 9; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- a[i] = 42;
- int &j = i;
- }
- int b = 22 / (k - 42); // no-warning
- return 0;
-}
-
-int simple_no_unroll5() {
- int a[9];
- int k = 42;
- int i;
- for (i = 0; i < 9; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- a[i] = 42;
- int &j{i};
- }
- int b = 22 / (k - 42); // no-warning
- return 0;
-}
-
-int no_unroll_assignment() {
- for (int i = 0; i < 9; i++) {
- i = i + 1;
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- }
- return 0;
-}
-
-int no_unroll_assignment2() {
- for (int i = 0; i < 9; i++) {
- i *= 2;
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- }
- return 0;
-}
-
-int no_unroll_assignment3() {
- for (int i = 128; i > 0; i--) {
- i /= 2;
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- }
- return 0;
-}
-
-int no_unroll_assignment4() {
- for (int i = 0; i < 9; i++) {
- i -= 2;
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- }
- return 0;
-}
-
-int no_unroll_assignment5() {
- for (int i = 0; i < 9; i++) {
- i += 1;
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- }
- return 0;
-}
-
-int no_unroll_assignment6() {
- for (int i = 128; i > 0; i--) {
- i >>= 1;
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- }
- return 0;
-}
-
-int no_unroll_assignment7() {
- for (int i = 0; i < 512; i++) {
- i <<= 1;
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- }
- return 0;
-}
-
-int no_unroll_assignment8() {
- for (int i = 0; i < 9; i++) {
- i %= 8;
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- }
- return 0;
-}
-
-int no_unroll_assignment9() {
- for (int i = 0; i < 9; i++) {
- i &= 31;
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- }
- return 0;
-}
-
-int no_unroll_assignment10() {
- for (int i = 0; i < 9; i++) {
- i |= 2;
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- }
- return 0;
-}
-
-int no_unroll_assignment11() {
- for (int i = 0; i < 9; i++) {
- i ^= 2;
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- }
- return 0;
-}
-
-int make_new_branches_loop_cached() {
- for (int i = 0; i < 8; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- if (getNum()) {
- (void)i; // Since this Stmt does not change the State the analyzer
- // won't make a new execution path but reuse the earlier nodes.
- }
- }
- clang_analyzer_warnIfReached(); // no-warning
- return 0;
-}
-
-int make_new_branches_loop_uncached() {
- int l = 2;
- for (int i = 0; i < 8; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{10}}
- if (getNum()) {
- ++l;
- }
- }
- clang_analyzer_warnIfReached(); // no-warning
- return 0;
-}
-
-int make_new_branches_loop_uncached2() {
- int l = 2;
- for (int i = 0; i < 8; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{10}}
- if (getNum()) {
- ++l;
- }
- (void)&i; // This ensures that the loop won't be unrolled.
- }
- clang_analyzer_warnIfReached(); // no-warning
- return 0;
-}
-
-
-int escape_before_loop_no_unroll1() {
- int a[9];
- int k = 42;
- int i;
- int &j = i;
- for (i = 0; i < 9; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- a[i] = 42;
- }
- int b = 22 / (k - 42); // no-warning
- return 0;
-}
-
-int escape_before_loop_no_unroll2() {
- int a[9];
- int k = 42;
- int i;
- int *p = &i;
- for (i = 0; i < 9; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- a[i] = 42;
- }
- int b = 22 / (k - 42); // no-warning
- return 0;
-}
-
-int escape_before_loop_no_unroll3() {
- int a[9];
- int k = 42;
- int i;
- foo(i);
- for (i = 0; i < 9; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- a[i] = 42;
- }
- int b = 22 / (k - 42); // no-warning
- return 0;
-}
-
-int nested_outer_unrolled() {
- int a[9];
- int k = 42;
- int j = 0;
- for (int i = 0; i < 9; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{1}}
- for (j = 0; j < 9; ++j) {
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- a[j] = 22;
- (void)&j; // ensures that the inner loop won't be unrolled
- }
- a[i] = 42;
- }
- int b = 22 / (k - 42); // no-warning
- return 0;
-}
-
-int nested_inner_unrolled() {
- int a[9];
- int k = 42;
- int j = 0;
- for (int i = 0; i < getNum(); i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- for (j = 0; j < 8; ++j) {
- clang_analyzer_numTimesReached(); // expected-warning {{32}}
- a[j] = 22;
- }
- a[i] = 42;
- }
- int b = 22 / (k - 42); // expected-warning {{Division by zero}}
- return 0;
-}
-
-int nested_both_unrolled() {
- int a[9];
- int k = 42;
- int j = 0;
- for (int i = 0; i < 7; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{7}}
- for (j = 0; j < 6; ++j) {
- clang_analyzer_numTimesReached(); // expected-warning {{42}}
- a[j] = 22;
- }
- a[i] = 42;
- }
- int b = 22 / (k - 42); // expected-warning {{Division by zero}}
- return 0;
-}
-
-int simple_known_bound_loop() {
- for (int i = 2; i < 12; i++) {
- // This function is inlined in nested_inlined_unroll1()
- clang_analyzer_numTimesReached(); // expected-warning {{90}}
- }
- return 0;
-}
-
-int simple_unknown_bound_loop() {
- for (int i = 2; i < getNum(); i++) {
-#ifdef DFS
- clang_analyzer_numTimesReached(); // expected-warning {{10}}
-#else
- clang_analyzer_numTimesReached(); // expected-warning {{13}}
-#endif
- }
- return 0;
-}
-
-int nested_inlined_unroll1() {
- int k;
- for (int i = 0; i < 9; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{9}}
- k = simple_known_bound_loop(); // no reevaluation without inlining
- }
- int a = 22 / k; // expected-warning {{Division by zero}}
- return 0;
-}
-
-int nested_inlined_no_unroll1() {
- int k;
- for (int i = 0; i < 9; i++) {
-#ifdef ANALYZER_CM_Z3
- clang_analyzer_numTimesReached(); // expected-warning {{13}}
-#else
- clang_analyzer_numTimesReached(); // expected-warning {{15}}
-#endif
- k = simple_unknown_bound_loop(); // reevaluation without inlining, splits the state as well
- }
- int a = 22 / k; // no-warning
- return 0;
-}
-
-int recursion_unroll1(bool b) {
- int k = 2;
- for (int i = 0; i < 5; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{13}}
- if (i == 0 && b) // Splits the state in the first iteration but the recursion
- // call will be unrolled anyway since the condition is known there.
- recursion_unroll1(false);
- clang_analyzer_numTimesReached(); // expected-warning {{14}}
- }
- int a = 22 / k; // no-warning
- return 0;
-}
-
-int recursion_unroll2(bool b) {
- int k = 0;
- for (int i = 0; i < 5; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{9}}
- if (i == 0 && b)
- recursion_unroll2(false);
- clang_analyzer_numTimesReached(); // expected-warning {{9}}
- }
- int a = 22 / k; // expected-warning {{Division by zero}}
- return 0;
-}
-
-int recursion_unroll3(bool b) {
- int k = 2;
- for (int i = 0; i < 5; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{10}}
- if (i == 4 && b) {
- recursion_unroll3(false);
- break;
- }
- clang_analyzer_numTimesReached(); // expected-warning {{10}}
- }
- int a = 22 / k;
- return 0;
-}
-
-int recursion_unroll4(bool b) {
- int k = 2;
- for (int i = 0; i < 5; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{13}}
- if (i == 0 && b) {
- recursion_unroll4(false);
- continue;
- }
- clang_analyzer_numTimesReached(); // expected-warning {{13}}
- }
- int a = 22 / k;
- return 0;
-}
-
-int loop_exit_while_empty_loop_stack() {
- if (getNum())
- for (int i = 1; i < 8; i++)
- ;
- return 0;
-}
-
-int num_steps_on_limit() {
- for (int i = 0; i < 128; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{128}}
- }
- clang_analyzer_numTimesReached(); // expected-warning {{1}}
- return 0;
-}
-
-int num_steps_over_limit1() {
- for (int i = 0; i < 129; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- }
- return 0;
-}
-
-int num_steps_on_limit2() {
- for (int i = 0; i < 2; i++) {
- for (int j = 0; j < 64; j++) {
- clang_analyzer_numTimesReached(); // expected-warning {{128}}
- }
- }
- return 0;
-}
-
-int num_steps_over_limit2() {
- for (int i = 0; i < 2; i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{1}}
- for (int j = 0; j <= 64; j++) {
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- }
- }
- return 0;
-}
-
-int num_steps_on_limit3() {
- for (int i = 0; i < getNum(); i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- for (int j = 0; j < 32; j++) {
- clang_analyzer_numTimesReached(); // expected-warning {{128}}
- }
- }
- return 0;
-}
-
-int num_steps_over_limit3() {
- for (int i = 0; i < getNum(); i++) {
- clang_analyzer_numTimesReached(); // expected-warning {{1}}
- for (int j = 0; j < 33; j++) {
- clang_analyzer_numTimesReached(); // expected-warning {{4}}
- }
- }
- return 0;
-}
-
-
-void pr34943() {
- for (int i = 0; i < 6L; ++i) {
- clang_analyzer_numTimesReached(); // expected-warning {{6}}
- }
-}
diff --git a/test/Analysis/loop-widening-ignore-static-methods.cpp b/test/Analysis/loop-widening-ignore-static-methods.cpp
deleted file mode 100644
index bcf4f8b23a60..000000000000
--- a/test/Analysis/loop-widening-ignore-static-methods.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-config widen-loops=true -analyzer-max-loop 2 %s
-// REQUIRES: asserts
-// expected-no-diagnostics
-//
-// This test checks that the loop-widening code ignores static methods. If that is not the
-// case, then an assertion will trigger.
-
-class Test {
- static void foo() {
- for (;;) {}
- }
-};
diff --git a/test/Analysis/loop-widening-notes.cpp b/test/Analysis/loop-widening-notes.cpp
deleted file mode 100644
index 2c26a1490e5c..000000000000
--- a/test/Analysis/loop-widening-notes.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha -analyzer-max-loop 2 -analyzer-config widen-loops=true -analyzer-output=text -verify -analyzer-config eagerly-assume=false %s
-
-int *p_a;
-int bar();
-int flag_a;
-int test_for_bug_25609() {
- if (p_a == 0) // expected-note {{Assuming 'p_a' is equal to null}}
- // expected-note@-1 {{Taking true branch}}
- bar();
- for (int i = 0; // expected-note {{Loop condition is true. Entering loop body}}
- // expected-note@-1 {{Loop condition is false. Execution continues on line 16}}
- ++i, // expected-note {{Value assigned to 'p_a'}}
- i < flag_a;
- ++i) {}
-
- *p_a = 25609; // no-crash expected-warning {{Dereference of null pointer (loaded from variable 'p_a')}}
- // expected-note@-1 {{Dereference of null pointer (loaded from variable 'p_a')}}
- return *p_a;
-}
-
-int flag_b;
-int while_analyzer_output() {
- flag_b = 100;
- int num = 10;
- while (flag_b-- > 0) { // expected-note {{Loop condition is true. Entering loop body}}
- // expected-note@-1 {{Value assigned to 'num'}}
- // expected-note@-2 {{Loop condition is false. Execution continues on line 30}}
- num = flag_b;
- }
- if (num < 0) // expected-note {{Assuming 'num' is >= 0}}
- // expected-note@-1 {{Taking false branch}}
- flag_b = 0;
- else if (num >= 1) // expected-note {{Assuming 'num' is < 1}}
- // expected-note@-1 {{Taking false branch}}
- flag_b = 50;
- else
- flag_b = 100;
- return flag_b / num; // no-crash expected-warning {{Division by zero}}
- // expected-note@-1 {{Division by zero}}
-}
-
-int flag_c;
-int do_while_analyzer_output() {
- int num = 10;
- do { // expected-note {{Loop condition is true. Execution continues on line 47}}
- // expected-note@-1 {{Loop condition is false. Exiting loop}}
- num--;
- } while (flag_c-- > 0); //expected-note {{Value assigned to 'num'}}
- int local = 0;
- if (num == 0) // expected-note {{Assuming 'num' is equal to 0}}
- // expected-note@-1 {{Taking true branch}}
- local = 10 / num; // no-crash expected-warning {{Division by zero}}
- // expected-note@-1 {{Division by zero}}
- return local;
-}
-
-int flag_d;
-int test_for_loop() {
- int num = 10;
- for (int i = 0; // expected-note {{Loop condition is true. Entering loop body}}
- // expected-note@-1 {{Loop condition is false. Execution continues on line 67}}
- new int(10), // expected-note {{Value assigned to 'num'}}
- i < flag_d;
- ++i) {
- ++num;
- }
- if (num == 0) // expected-note {{Assuming 'num' is equal to 0}}
- // expected-note@-1 {{Taking true branch}}
- flag_d += 10;
- return flag_d / num; // no-crash expected-warning {{Division by zero}}
- // expected-note@-1 {{Division by zero}}
-}
diff --git a/test/Analysis/loop-widening-preserve-reference-type.cpp b/test/Analysis/loop-widening-preserve-reference-type.cpp
deleted file mode 100644
index b5746d1fe767..000000000000
--- a/test/Analysis/loop-widening-preserve-reference-type.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-max-loop 4 -analyzer-config widen-loops=true -verify %s
-
-void clang_analyzer_eval(int);
-
-struct A {
- ~A() {}
-};
-struct B : public A {};
-
-void invalid_type_region_access() {
- const A &x = B();
- for (int i = 0; i < 10; ++i) { }
- clang_analyzer_eval(&x != 0); // expected-warning{{TRUE}}
-} // expected-warning@-1{{reference cannot be bound to dereferenced null pointer in well-defined C++ code; comparison may be assumed to always evaluate to true}}
diff --git a/test/Analysis/loop-widening.c b/test/Analysis/loop-widening.c
deleted file mode 100644
index edaabfb28e97..000000000000
--- a/test/Analysis/loop-widening.c
+++ /dev/null
@@ -1,204 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-max-loop 4 -analyzer-config widen-loops=true -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -DTEST_NULL_TERM -analyzer-checker=core,unix.Malloc,debug.ExprInspection,alpha.cplusplus.IteratorRange -analyzer-max-loop 4 -analyzer-config widen-loops=true -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(int);
-void clang_analyzer_warnIfReached();
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-void loop_which_iterates_limit_times_not_widened() {
- int i;
- int x = 1;
- // Check loop isn't widened by checking x isn't invalidated
- for (i = 0; i < 1; ++i) {}
- clang_analyzer_eval(x == 1); // expected-warning {{TRUE}}
- for (i = 0; i < 2; ++i) {}
- clang_analyzer_eval(x == 1); // expected-warning {{TRUE}}
- for (i = 0; i < 3; ++i) {}
- // FIXME loss of precision as a result of evaluating the widened loop body
- // *instead* of the last iteration.
- clang_analyzer_eval(x == 1); // expected-warning {{UNKNOWN}}
-}
-
-int a_global;
-
-void loop_evaluated_before_widening() {
- int i;
- a_global = 1;
- for (i = 0; i < 10; ++i) {
- if (i == 2) {
- // True before widening then unknown after.
- clang_analyzer_eval(a_global == 1); // expected-warning{{TRUE}} expected-warning{{UNKNOWN}}
- }
- }
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void warnings_after_loop() {
- int i;
- for (i = 0; i < 10; ++i) {}
- char *m = (char*)malloc(12);
-} // expected-warning {{Potential leak of memory pointed to by 'm'}}
-
-void for_loop_exits() {
- int i;
- for (i = 0; i < 10; ++i) {}
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void while_loop_exits() {
- int i = 0;
- while (i < 10) {++i;}
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void do_while_loop_exits() {
- int i = 0;
- do {++i;} while (i < 10);
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void loop_body_is_widened() {
- int i = 0;
- while (i < 100) {
- if (i > 10) {
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
- ++i;
- }
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void invariably_infinite_loop() {
- int i = 0;
- while (1) { ++i; }
- clang_analyzer_warnIfReached(); // no-warning
-}
-
-void invariably_infinite_break_loop() {
- int i = 0;
- while (1) {
- ++i;
- int x = 1;
- if (!x) break;
- }
- clang_analyzer_warnIfReached(); // no-warning
-}
-
-void reachable_break_loop() {
- int i = 0;
- while (1) {
- ++i;
- if (i == 100) break;
- }
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void condition_constrained_true_in_loop() {
- int i = 0;
- while (i < 50) {
- clang_analyzer_eval(i < 50); // expected-warning {{TRUE}}
- ++i;
- }
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void condition_constrained_false_after_loop() {
- int i = 0;
- while (i < 50) {
- ++i;
- }
- clang_analyzer_eval(i >= 50); // expected-warning {{TRUE}}
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void multiple_exit_test() {
- int x = 0;
- int i = 0;
- while (i < 50) {
- if (x) {
- i = 10;
- break;
- }
- ++i;
- }
- // Reachable by 'normal' exit
- if (i == 50) clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- // Reachable by break point
- if (i == 10) clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- // Not reachable
- if (i < 10) clang_analyzer_warnIfReached(); // no-warning
- if (i > 10 && i < 50) clang_analyzer_warnIfReached(); // no-warning
-}
-
-void pointer_doesnt_leak_from_loop() {
- int *h_ptr = (int *) malloc(sizeof(int));
- for (int i = 0; i < 2; ++i) {}
- for (int i = 0; i < 10; ++i) {} // no-warning
- free(h_ptr);
-}
-
-int g_global;
-
-void unknown_after_loop(int s_arg) {
- g_global = 0;
- s_arg = 1;
- int s_local = 2;
- int *h_ptr = malloc(sizeof(int));
-
- for (int i = 0; i < 10; ++i) {}
-
- clang_analyzer_eval(g_global); // expected-warning {{UNKNOWN}}
- clang_analyzer_eval(s_arg); // expected-warning {{UNKNOWN}}
- clang_analyzer_eval(s_local); // expected-warning {{UNKNOWN}}
- clang_analyzer_eval(h_ptr == 0); // expected-warning {{UNKNOWN}}
- free(h_ptr);
-}
-
-void variable_bound_exiting_loops_widened(int x) {
- int i = 0;
- int t = 1;
- while (i < x) {
- ++i;
- }
- clang_analyzer_eval(t == 1); // expected-warning {{TRUE}} // expected-warning {{UNKNOWN}}
-}
-
-void nested_loop_outer_widen() {
- int i = 0, j = 0;
- for (i = 0; i < 10; i++) {
- clang_analyzer_eval(i < 10); // expected-warning {{TRUE}}
- for (j = 0; j < 2; j++) {
- clang_analyzer_eval(j < 2); // expected-warning {{TRUE}}
- }
- clang_analyzer_eval(j >= 2); // expected-warning {{TRUE}}
- }
- clang_analyzer_eval(i >= 10); // expected-warning {{TRUE}}
-}
-
-void nested_loop_inner_widen() {
- int i = 0, j = 0;
- for (i = 0; i < 2; i++) {
- clang_analyzer_eval(i < 2); // expected-warning {{TRUE}}
- for (j = 0; j < 10; j++) {
- clang_analyzer_eval(j < 10); // expected-warning {{TRUE}}
- }
- clang_analyzer_eval(j >= 10); // expected-warning {{TRUE}}
- }
- clang_analyzer_eval(i >= 2); // expected-warning {{TRUE}}
-}
-
-#ifdef TEST_NULL_TERM
-void null_terminator_loop_widen(int *a) {
- int c;
- // Loop widening will call 'invalidateRegions()' and 'invalidateRegions()'
- // will construct the SymbolConjured with null Stmt because of the null
- // terminator statement. Accessing the null Stmt will cause a crash.
- for (;;) {
- c = *a; // no-crash
- a++;
- }
-}
-#endif
diff --git a/test/Analysis/loopexit-cfg-output.cpp b/test/Analysis/loopexit-cfg-output.cpp
deleted file mode 100644
index 8e53ce3066b7..000000000000
--- a/test/Analysis/loopexit-cfg-output.cpp
+++ /dev/null
@@ -1,476 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCFG -analyzer-config cfg-loopexit=true %s > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-
-// CHECK: [B6 (ENTRY)]
-// CHECK-NEXT: Succs (1): B5
-
-// CHECK: [B1]
-// CHECK-NEXT: 1: ForStmt (LoopExit)
-// CHECK-NEXT: 2: return;
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B0
-
-// CHECK: [B2]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: [B2.1]++
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B4
-
-// CHECK: [B3]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: [B3.1]++
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B2
-
-// CHECK: [B4]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: [B4.1] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: 3: 12
-// CHECK-NEXT: 4: [B4.2] < [B4.3]
-// CHECK-NEXT: T: for (...; [B4.4]; ...)
-// CHECK-NEXT: Preds (2): B2 B5
-// CHECK-NEXT: Succs (2): B3 B1
-
-// CHECK: [B5]
-// CHECK-NEXT: 1: 0
-// CHECK-NEXT: 2: int i = 0;
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (1): B4
-
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void check_forloop1() {
- for (int i = 0; i < 12; i++) {
- i++;
- }
- return;
-}
-
-// CHECK: [B4 (ENTRY)]
-// CHECK-NEXT: Succs (1): B3
-
-// CHECK: [B1]
-// CHECK-NEXT: 1: ForStmt (LoopExit)
-// CHECK-NEXT: Succs (1): B0
-
-// CHECK: [B2]
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B3
-
-// CHECK: [B3]
-// CHECK-NEXT: T: for (; ; )
-// CHECK-NEXT: Preds (2): B2 B4
-// CHECK-NEXT: Succs (2): B2 NULL
-
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void check_forloop2() {
- for (;;)
- ;
-}
-
-// CHECK: [B5 (ENTRY)]
-// CHECK-NEXT: Succs (1): B4
-
-// CHECK: [B1]
-// CHECK-NEXT: 1: WhileStmt (LoopExit)
-// CHECK-NEXT: Succs (1): B0
-
-// CHECK: [B2]
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B4
-
-// CHECK: [B3]
-// CHECK-NEXT: 1: int i;
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B2
-
-// CHECK: [B4]
-// CHECK-NEXT: 1: true
-// CHECK-NEXT: T: while [B4.1]
-// CHECK-NEXT: Preds (2): B2 B5
-// CHECK-NEXT: Succs (2): B3 NULL
-
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void check_while1() {
- while (true) {
- int i;
- }
-}
-
-// CHECK: [B5 (ENTRY)]
-// CHECK-NEXT: Succs (1): B4
-
-// CHECK: [B1]
-// CHECK-NEXT: 1: WhileStmt (LoopExit)
-// CHECK-NEXT: 2: 2
-// CHECK-NEXT: 3: int k = 2;
-// CHECK-NEXT: 4: return;
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B0
-
-// CHECK: [B2]
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B3
-
-// CHECK: [B3]
-// CHECK-NEXT: 1: l
-// CHECK-NEXT: 2: [B3.1] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: 3: 42
-// CHECK-NEXT: 4: [B3.2] < [B3.3]
-// CHECK-NEXT: T: while [B3.4]
-// CHECK-NEXT: Preds (2): B2 B4
-// CHECK-NEXT: Succs (2): B2 B1
-
-// CHECK: [B4]
-// CHECK-NEXT: 1: int l;
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B3
-
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void check_while2() {
- int l;
- while (l < 42)
- ;
- int k = 2;
- return;
-}
-
-// CHECK: [B4 (ENTRY)]
-// CHECK-NEXT: Succs (1): B3
-
-// CHECK: [B1]
-// CHECK-NEXT: 1: WhileStmt (LoopExit)
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B0
-
-// CHECK: [B2]
-// CHECK-NEXT: Succs (1): B3
-
-// CHECK: [B3]
-// CHECK-NEXT: 1: false
-// CHECK-NEXT: T: while [B3.1]
-// CHECK-NEXT: Preds (2): B2 B4
-// CHECK-NEXT: Succs (2): NULL B1
-
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void check_while3() {
- while (false) {
- ;
- }
-}
-
-// CHECK: [B4 (ENTRY)]
-// CHECK-NEXT: Succs (1): B2
-
-// CHECK: [B1]
-// CHECK-NEXT: 1: DoStmt (LoopExit)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-
-// CHECK: [B2]
-// CHECK-NEXT: 1: false
-// CHECK-NEXT: T: do ... while [B2.1]
-// CHECK-NEXT: Preds (2): B3 B4
-// CHECK-NEXT: Succs (2): NULL B1
-
-// CHECK: [B3]
-// CHECK-NEXT: Succs (1): B2
-
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void check_dowhile1() {
- do {
- } while (false);
-}
-
-// CHECK: [B6 (ENTRY)]
-// CHECK-NEXT: Succs (1): B5
-
-// CHECK: [B1]
-// CHECK-NEXT: 1: DoStmt (LoopExit)
-// CHECK-NEXT: 2: j
-// CHECK-NEXT: 3: [B1.2]--
-// CHECK-NEXT: 4: return;
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-
-// CHECK: [B2]
-// CHECK-NEXT: 1: j
-// CHECK-NEXT: 2: [B2.1] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: 3: 20
-// CHECK-NEXT: 4: [B2.2] < [B2.3]
-// CHECK-NEXT: T: do ... while [B2.4]
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (2): B4 B1
-
-// CHECK: [B3]
-// CHECK-NEXT: 1: j
-// CHECK-NEXT: 2: 2
-// CHECK-NEXT: 3: [B3.1] += [B3.2]
-// CHECK-NEXT: Preds (2): B4 B5
-// CHECK-NEXT: Succs (1): B2
-
-// CHECK: [B4]
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B3
-
-// CHECK: [B5]
-// CHECK-NEXT: 1: 2
-// CHECK-NEXT: 2: int j = 2;
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (1): B3
-
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void check_dowhile2() {
- int j = 2;
- do {
- j += 2;
- } while (j < 20);
- j--;
- return;
-}
-
-// CHECK: [B10 (ENTRY)]
-// CHECK-NEXT: Succs (1): B9
-
-// CHECK: [B1]
-// CHECK-NEXT: 1: WhileStmt (LoopExit)
-// CHECK-NEXT: Preds (1): B8
-// CHECK-NEXT: Succs (1): B0
-
-// CHECK: [B2]
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B8
-
-// CHECK: [B3]
-// CHECK-NEXT: 1: ForStmt (LoopExit)
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (1): B2
-
-// CHECK: [B4]
-// CHECK-NEXT: 1: j
-// CHECK-NEXT: 2: [B4.1]++
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B6
-
-// CHECK: [B5]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: [B5.1]++
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (1): B4
-
-// CHECK: [B6]
-// CHECK-NEXT: 1: j
-// CHECK-NEXT: 2: [B6.1] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: 3: 6
-// CHECK-NEXT: 4: [B6.2] < [B6.3]
-// CHECK-NEXT: T: for (...; [B6.4]; ...)
-// CHECK-NEXT: Preds (2): B4 B7
-// CHECK-NEXT: Succs (2): B5 B3
-
-// CHECK: [B7]
-// CHECK-NEXT: 1: 1
-// CHECK-NEXT: 2: int j = 1;
-// CHECK-NEXT: Preds (1): B8
-// CHECK-NEXT: Succs (1): B6
-
-// CHECK: [B8]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: [B8.1] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: 3: 2
-// CHECK-NEXT: 4: [B8.2] < [B8.3]
-// CHECK-NEXT: T: while [B8.4]
-// CHECK-NEXT: Preds (2): B2 B9
-// CHECK-NEXT: Succs (2): B7 B1
-
-// CHECK: [B9]
-// CHECK-NEXT: 1: 40
-// CHECK-NEXT: 2: -[B9.1]
-// CHECK-NEXT: 3: int i = -40;
-// CHECK-NEXT: Preds (1): B10
-// CHECK-NEXT: Succs (1): B8
-
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void nested_loops1() {
- int i = -40;
- while (i < 2) {
- for (int j = 1; j < 6; j++)
- i++;
- }
-}
-
-// CHECK: [B9 (ENTRY)]
-// CHECK-NEXT: Succs (1): B8
-
-// CHECK: [B1]
-// CHECK-NEXT: 1: ForStmt (LoopExit)
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (1): B0
-
-// CHECK: [B2]
-// CHECK-NEXT: 1: j
-// CHECK-NEXT: 2: [B2.1]++
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B7
-
-// CHECK: [B3]
-// CHECK-NEXT: 1: DoStmt (LoopExit)
-// CHECK-NEXT: 2: i
-// CHECK-NEXT: 3: [B3.2]--
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B2
-
-// CHECK: [B4]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: [B4.1] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: 3: 2
-// CHECK-NEXT: 4: [B4.2] < [B4.3]
-// CHECK-NEXT: T: do ... while [B4.4]
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (2): B6 B3
-
-// CHECK: [B5]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: [B5.1]++
-// CHECK-NEXT: Preds (2): B6 B7
-// CHECK-NEXT: Succs (1): B4
-
-// CHECK: [B6]
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B5
-
-// CHECK: [B7]
-// CHECK-NEXT: 1: j
-// CHECK-NEXT: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: 3: 6
-// CHECK-NEXT: 4: [B7.2] < [B7.3]
-// CHECK-NEXT: T: for (...; [B7.4]; ...)
-// CHECK-NEXT: Preds (2): B2 B8
-// CHECK-NEXT: Succs (2): B5 B1
-
-// CHECK: [B8]
-// CHECK-NEXT: 1: 40
-// CHECK-NEXT: 2: -[B8.1]
-// CHECK-NEXT: 3: int i = -40;
-// CHECK-NEXT: 4: 1
-// CHECK-NEXT: 5: int j = 1;
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (1): B7
-
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void nested_loops2() {
- int i = -40;
- for (int j = 1; j < 6; j++) {
- do {
- i++;
- } while (i < 2);
- i--;
- }
-}
-
-// CHECK: [B12 (ENTRY)]
-// CHECK-NEXT: Succs (1): B11
-
-// CHECK: [B1]
-// CHECK-NEXT: 1: WhileStmt (LoopExit)
-// CHECK-NEXT: 2: return;
-// CHECK-NEXT: Preds (2): B3 B5
-// CHECK-NEXT: Succs (1): B0
-
-// CHECK: [B2]
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B5
-
-// CHECK: [B3]
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-
-// CHECK: [B4]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: [B4.1]++
-// CHECK-NEXT: 3: i
-// CHECK-NEXT: 4: [B4.3] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: 5: 2
-// CHECK-NEXT: 6: [B4.4] % [B4.5]
-// CHECK-NEXT: 7: [B4.6] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: if [B4.7]
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (2): B3 B2
-
-// CHECK: [B5]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: [B5.1] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: 3: 5
-// CHECK-NEXT: 4: [B5.2] < [B5.3]
-// CHECK-NEXT: T: while [B5.4]
-// CHECK-NEXT: Preds (2): B2 B6
-// CHECK-NEXT: Succs (2): B4 B1
-
-// CHECK: [B6]
-// CHECK-NEXT: 1: ForStmt (LoopExit)
-// CHECK-NEXT: 2: 1
-// CHECK-NEXT: 3: int i = 1;
-// CHECK-NEXT: Preds (2): B8 B10
-// CHECK-NEXT: Succs (1): B5
-
-// CHECK: [B7]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: [B7.1]++
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (1): B10
-
-// CHECK: [B8]
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (1): B6
-
-// CHECK: [B9]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: [B9.1] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: 3: 4
-// CHECK-NEXT: 4: [B9.2] == [B9.3]
-// CHECK-NEXT: T: if [B9.4]
-// CHECK-NEXT: Preds (1): B10
-// CHECK-NEXT: Succs (2): B8 B7
-
-// CHECK: [B10]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: [B10.1] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: 3: 6
-// CHECK-NEXT: 4: [B10.2] < [B10.3]
-// CHECK-NEXT: T: for (...; [B10.4]; ...)
-// CHECK-NEXT: Preds (2): B7 B11
-// CHECK-NEXT: Succs (2): B9 B6
-
-// CHECK: [B11]
-// CHECK-NEXT: 1: 2
-// CHECK-NEXT: 2: int i = 2;
-// CHECK-NEXT: Preds (1): B12
-// CHECK-NEXT: Succs (1): B10
-
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void check_break()
-{
- for(int i = 2; i < 6; i++) {
- if(i == 4)
- break;
- }
-
- int i = 1;
- while(i<5){
- i++;
- if(i%2)
- break;
- }
-
- return;
-}
diff --git a/test/Analysis/lvalue.cpp b/test/Analysis/lvalue.cpp
deleted file mode 100644
index 762113987663..000000000000
--- a/test/Analysis/lvalue.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-int f1() {
- int x = 0, y = 1;
- return x += y; // Should bind a location to 'x += y'. No crash.
-}
diff --git a/test/Analysis/malloc-annotations.c b/test/Analysis/malloc-annotations.c
deleted file mode 100644
index 50a18c5b9616..000000000000
--- a/test/Analysis/malloc-annotations.c
+++ /dev/null
@@ -1,273 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-store=region -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-checker=alpha.deadcode.UnreachableCode \
-// RUN: -analyzer-checker=alpha.core.CastSize,unix.Malloc \
-// RUN: -analyzer-config unix.Malloc:Optimistic=true
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-void *realloc(void *ptr, size_t size);
-void *calloc(size_t nmemb, size_t size);
-void __attribute((ownership_returns(malloc))) *my_malloc(size_t);
-void __attribute((ownership_takes(malloc, 1))) my_free(void *);
-void my_freeBoth(void *, void *)
- __attribute((ownership_holds(malloc, 1, 2)));
-void __attribute((ownership_returns(malloc, 1))) *my_malloc2(size_t);
-void __attribute((ownership_holds(malloc, 1))) my_hold(void *);
-
-// Duplicate attributes are silly, but not an error.
-// Duplicate attribute has no extra effect.
-// If two are of different kinds, that is an error and reported as such.
-void __attribute((ownership_holds(malloc, 1)))
-__attribute((ownership_holds(malloc, 1)))
-__attribute((ownership_holds(malloc, 3))) my_hold2(void *, void *, void *);
-void *my_malloc3(size_t);
-void *myglobalpointer;
-struct stuff {
- void *somefield;
-};
-struct stuff myglobalstuff;
-
-void f1() {
- int *p = malloc(12);
- return; // expected-warning{{Potential leak of memory pointed to by}}
-}
-
-void f2() {
- int *p = malloc(12);
- free(p);
- free(p); // expected-warning{{Attempt to free released memory}}
-}
-
-void f2_realloc_0() {
- int *p = malloc(12);
- realloc(p,0);
- realloc(p,0); // expected-warning{{Attempt to free released memory}}
-}
-
-void f2_realloc_1() {
- int *p = malloc(12);
- int *q = realloc(p,0); // no-warning
-}
-
-// ownership attributes tests
-void naf1() {
- int *p = my_malloc3(12);
- return; // no-warning
-}
-
-void n2af1() {
- int *p = my_malloc2(12);
- return; // expected-warning{{Potential leak of memory pointed to by}}
-}
-
-void af1() {
- int *p = my_malloc(12);
- return; // expected-warning{{Potential leak of memory pointed to by}}
-}
-
-void af1_b() {
- int *p = my_malloc(12);
-} // expected-warning{{Potential leak of memory pointed to by}}
-
-void af1_c() {
- myglobalpointer = my_malloc(12); // no-warning
-}
-
-void af1_d() {
- struct stuff mystuff;
- mystuff.somefield = my_malloc(12);
-} // expected-warning{{Potential leak of memory pointed to by}}
-
-// Test that we can pass out allocated memory via pointer-to-pointer.
-void af1_e(void **pp) {
- *pp = my_malloc(42); // no-warning
-}
-
-void af1_f(struct stuff *somestuff) {
- somestuff->somefield = my_malloc(12); // no-warning
-}
-
-// Allocating memory for a field via multiple indirections to our arguments is OK.
-void af1_g(struct stuff **pps) {
- *pps = my_malloc(sizeof(struct stuff)); // no-warning
- (*pps)->somefield = my_malloc(42); // no-warning
-}
-
-void af2() {
- int *p = my_malloc(12);
- my_free(p);
- free(p); // expected-warning{{Attempt to free released memory}}
-}
-
-void af2b() {
- int *p = my_malloc(12);
- free(p);
- my_free(p); // expected-warning{{Attempt to free released memory}}
-}
-
-void af2c() {
- int *p = my_malloc(12);
- free(p);
- my_hold(p); // expected-warning{{Attempt to free released memory}}
-}
-
-void af2d() {
- int *p = my_malloc(12);
- free(p);
- my_hold2(0, 0, p); // expected-warning{{Attempt to free released memory}}
-}
-
-// No leak if malloc returns null.
-void af2e() {
- int *p = my_malloc(12);
- if (!p)
- return; // no-warning
- free(p); // no-warning
-}
-
-// This case inflicts a possible double-free.
-void af3() {
- int *p = my_malloc(12);
- my_hold(p);
- free(p); // expected-warning{{Attempt to free non-owned memory}}
-}
-
-int * af4() {
- int *p = my_malloc(12);
- my_free(p);
- return p; // expected-warning{{Use of memory after it is freed}}
-}
-
-// This case is (possibly) ok, be conservative
-int * af5() {
- int *p = my_malloc(12);
- my_hold(p);
- return p; // no-warning
-}
-
-
-
-// This case tests that storing malloc'ed memory to a static variable which is
-// then returned is not leaked. In the absence of known contracts for functions
-// or inter-procedural analysis, this is a conservative answer.
-int *f3() {
- static int *p = 0;
- p = malloc(12);
- return p; // no-warning
-}
-
-// This case tests that storing malloc'ed memory to a static global variable
-// which is then returned is not leaked. In the absence of known contracts for
-// functions or inter-procedural analysis, this is a conservative answer.
-static int *p_f4 = 0;
-int *f4() {
- p_f4 = malloc(12);
- return p_f4; // no-warning
-}
-
-int *f5() {
- int *q = malloc(12);
- q = realloc(q, 20);
- return q; // no-warning
-}
-
-void f6() {
- int *p = malloc(12);
- if (!p)
- return; // no-warning
- else
- free(p);
-}
-
-void f6_realloc() {
- int *p = malloc(12);
- if (!p)
- return; // no-warning
- else
- realloc(p,0);
-}
-
-
-char *doit2();
-void pr6069() {
- char *buf = doit2();
- free(buf);
-}
-
-void pr6293() {
- free(0);
-}
-
-void f7() {
- char *x = (char*) malloc(4);
- free(x);
- x[0] = 'a'; // expected-warning{{Use of memory after it is freed}}
-}
-
-void f7_realloc() {
- char *x = (char*) malloc(4);
- realloc(x,0);
- x[0] = 'a'; // expected-warning{{Use of memory after it is freed}}
-}
-
-void PR6123() {
- int *x = malloc(11); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}}
-}
-
-void PR7217() {
- int *buf = malloc(2); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}}
- buf[1] = 'c'; // not crash
-}
-
-void mallocCastToVoid() {
- void *p = malloc(2);
- const void *cp = p; // not crash
- free(p);
-}
-
-void mallocCastToFP() {
- void *p = malloc(2);
- void (*fp)() = p; // not crash
- free(p);
-}
-
-// This tests that malloc() buffers are undefined by default
-char mallocGarbage () {
- char *buf = malloc(2);
- char result = buf[1]; // expected-warning{{undefined}}
- free(buf);
- return result;
-}
-
-// This tests that calloc() buffers need to be freed
-void callocNoFree () {
- char *buf = calloc(2,2);
- return; // expected-warning{{Potential leak of memory pointed to by}}
-}
-
-// These test that calloc() buffers are zeroed by default
-char callocZeroesGood () {
- char *buf = calloc(2,2);
- char result = buf[3]; // no-warning
- if (buf[1] == 0) {
- free(buf);
- }
- return result; // no-warning
-}
-
-char callocZeroesBad () {
- char *buf = calloc(2,2);
- char result = buf[3]; // no-warning
- if (buf[1] != 0) {
- free(buf); // expected-warning{{never executed}}
- }
- return result; // expected-warning{{Potential leak of memory pointed to by}}
-}
-
-void testMultipleFreeAnnotations() {
- int *p = malloc(12);
- int *q = malloc(12);
- my_freeBoth(p, q);
-}
-
diff --git a/test/Analysis/malloc-custom.c b/test/Analysis/malloc-custom.c
deleted file mode 100644
index 053d0ee31ca8..000000000000
--- a/test/Analysis/malloc-custom.c
+++ /dev/null
@@ -1,32 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc -Wno-incompatible-library-redeclaration -verify %s
-
-// Various tests to make the analyzer is robust against custom
-// redeclarations of memory routines.
-//
-// You wouldn't expect to see much of this in normal code, but, for example,
-// CMake tests can generate these.
-
-// expected-no-diagnostics
-
-char alloca();
-char malloc();
-char realloc();
-char kmalloc();
-char valloc();
-char calloc();
-
-char free();
-char kfree();
-
-void testCustomArgumentlessAllocation() {
- alloca(); // no-crash
- malloc(); // no-crash
- realloc(); // no-crash
- kmalloc(); // no-crash
- valloc(); // no-crash
- calloc(); // no-crash
-
- free(); // no-crash
- kfree(); // no-crash
-}
-
diff --git a/test/Analysis/malloc-fnptr-plist.c b/test/Analysis/malloc-fnptr-plist.c
deleted file mode 100644
index 6490eeb1cc03..000000000000
--- a/test/Analysis/malloc-fnptr-plist.c
+++ /dev/null
@@ -1,11 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker core,unix.Malloc -analyzer-output=plist -o %t.plist -verify %s
-// RUN: FileCheck --input-file=%t.plist %s
-
-void free(void *);
-void (*fnptr)(int);
-void foo() {
- free((void *)fnptr); // expected-warning{{Argument to free() is a function pointer}}
-}
-
-// Make sure the bug category is correct.
-// CHECK: <key>category</key><string>Memory error</string>
diff --git a/test/Analysis/malloc-free-after-return.cpp b/test/Analysis/malloc-free-after-return.cpp
deleted file mode 100644
index cebd79a1a15e..000000000000
--- a/test/Analysis/malloc-free-after-return.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=cplusplus.NewDelete -verify %s
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-struct S {
- S() : Data(new int) {}
- ~S() { delete Data; }
- int *getData() { return Data; }
-
-private:
- int *Data;
-};
-
-int *freeAfterReturnTemp() {
- return S().getData(); // expected-warning {{Use of memory after it is freed}}
-}
-
-int *freeAfterReturnLocal() {
- S X;
- return X.getData(); // expected-warning {{Use of memory after it is freed}}
-}
diff --git a/test/Analysis/malloc-interprocedural.c b/test/Analysis/malloc-interprocedural.c
deleted file mode 100644
index 4f7daec1b5bc..000000000000
--- a/test/Analysis/malloc-interprocedural.c
+++ /dev/null
@@ -1,135 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=unix.Malloc -analyzer-inline-max-stack-depth=5 -verify %s
-
-#include "Inputs/system-header-simulator.h"
-
-void *malloc(size_t);
-void *valloc(size_t);
-void free(void *);
-void *realloc(void *ptr, size_t size);
-void *reallocf(void *ptr, size_t size);
-void *calloc(size_t nmemb, size_t size);
-
-void exit(int) __attribute__ ((__noreturn__));
-void *memcpy(void * restrict s1, const void * restrict s2, size_t n);
-size_t strlen(const char *);
-
-static void my_malloc1(void **d, size_t size) {
- *d = malloc(size);
-}
-
-static void *my_malloc2(int elevel, size_t size) {
- void *data;
- data = malloc(size);
- if (data == 0)
- exit(0);
- return data;
-}
-
-static void my_free1(void *p) {
- free(p);
-}
-
-static void test1() {
- void *data = 0;
- my_malloc1(&data, 4);
-} // expected-warning {{Potential leak of memory pointed to by 'data'}}
-
-static void test11() {
- void *data = 0;
- my_malloc1(&data, 4);
- my_free1(data);
-}
-
-static void testUniqueingByallocationSiteInTopLevelFunction() {
- void *data = my_malloc2(1, 4);
- data = 0;
- int x = 5;// expected-warning {{Potential leak of memory pointed to by 'data'}}
- data = my_malloc2(1, 4);
-} // expected-warning {{Potential leak of memory pointed to by 'data'}}
-
-static void test3() {
- void *data = my_malloc2(1, 4);
- free(data);
- data = my_malloc2(1, 4);
- free(data);
-}
-
-int test4() {
- int *data = (int*)my_malloc2(1, 4);
- my_free1(data);
- data = (int *)my_malloc2(1, 4);
- my_free1(data);
- return *data; // expected-warning {{Use of memory after it is freed}}
-}
-
-void test6() {
- int *data = (int *)my_malloc2(1, 4);
- my_free1((int*)data);
- my_free1((int*)data); // expected-warning{{Use of memory after it is freed}}
-}
-
-// TODO: We should warn here.
-void test5() {
- int *data;
- my_free1((int*)data);
-}
-
-static char *reshape(char *in) {
- return 0;
-}
-
-void testThatRemoveDeadBindingsRunBeforeEachCall() {
- char *v = malloc(12);
- v = reshape(v);
- v = reshape(v);// expected-warning {{Potential leak of memory pointed to by 'v'}}
-}
-
-// Test that we keep processing after 'return;'
-void fooWithEmptyReturn(int x) {
- if (x)
- return;
- x++;
- return;
-}
-
-int uafAndCallsFooWithEmptyReturn() {
- int *x = (int*)malloc(12);
- free(x);
- fooWithEmptyReturn(12);
- return *x; // expected-warning {{Use of memory after it is freed}}
-}
-
-
-// If we inline any of the malloc-family functions, the checker shouldn't also
-// try to do additional modeling. <rdar://problem/12317671>
-char *strndup(const char *str, size_t n) {
- if (!str)
- return 0;
-
- // DO NOT FIX. This is to test that we are actually using the inlined
- // behavior!
- if (n < 5)
- return 0;
-
- size_t length = strlen(str);
- if (length < n)
- n = length;
-
- char *result = malloc(n + 1);
- memcpy(result, str, n);
- result[n] = '\0';
- return result;
-}
-
-void useStrndup(size_t n) {
- if (n == 0) {
- (void)strndup(0, 20); // no-warning
- return;
- } else if (n < 5) {
- (void)strndup("hi there", n); // no-warning
- return;
- } else {
- (void)strndup("hi there", n);
- return; // expected-warning{{leak}}
- }
-}
diff --git a/test/Analysis/malloc-overflow.c b/test/Analysis/malloc-overflow.c
deleted file mode 100644
index d8ad062840d5..000000000000
--- a/test/Analysis/malloc-overflow.c
+++ /dev/null
@@ -1,113 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.security.MallocOverflow -verify %s
-
-#define NULL ((void *) 0)
-typedef __typeof__(sizeof(int)) size_t;
-extern void * malloc(size_t);
-
-void * f1(int n)
-{
- return malloc(n * sizeof(int)); // expected-warning {{the computation of the size of the memory allocation may overflow}}
-}
-
-void * f2(int n)
-{
- return malloc(sizeof(int) * n); // // expected-warning {{the computation of the size of the memory allocation may overflow}}
-}
-
-void * f3()
-{
- return malloc(4 * sizeof(int)); // no-warning
-}
-
-struct s4
-{
- int n;
-};
-
-void * f4(struct s4 *s)
-{
- return malloc(s->n * sizeof(int)); // expected-warning {{the computation of the size of the memory allocation may overflow}}
-}
-
-void * f5(struct s4 *s)
-{
- struct s4 s2 = *s;
- return malloc(s2.n * sizeof(int)); // expected-warning {{the computation of the size of the memory allocation may overflow}}
-}
-
-void * f6(int n)
-{
- return malloc((n + 1) * sizeof(int)); // expected-warning {{the computation of the size of the memory allocation may overflow}}
-}
-
-extern void * malloc (size_t);
-
-void * f7(int n)
-{
- if (n > 10)
- return NULL;
- return malloc(n * sizeof(int)); // no-warning
-}
-
-void * f8(int n)
-{
- if (n < 10)
- return malloc(n * sizeof(int)); // no-warning
- else
- return NULL;
-}
-
-void * f9(int n)
-{
- int * x = malloc(n * sizeof(int)); // expected-warning {{the computation of the size of the memory allocation may overflow}}
- for (int i = 0; i < n; i++)
- x[i] = i;
- return x;
-}
-
-void * f10(int n)
-{
- int * x = malloc(n * sizeof(int)); // expected-warning {{the computation of the size of the memory allocation may overflow}}
- int i = 0;
- while (i < n)
- x[i++] = 0;
- return x;
-}
-
-void * f11(int n)
-{
- int * x = malloc(n * sizeof(int)); // expected-warning {{the computation of the size of the memory allocation may overflow}}
- int i = 0;
- do {
- x[i++] = 0;
- } while (i < n);
- return x;
-}
-
-void * f12(int n)
-{
- n = (n > 10 ? 10 : n);
- int * x = malloc(n * sizeof(int)); // no-warning
- for (int i = 0; i < n; i++)
- x[i] = i;
- return x;
-}
-
-struct s13
-{
- int n;
-};
-
-void * f13(struct s13 *s)
-{
- if (s->n > 10)
- return NULL;
- return malloc(s->n * sizeof(int)); // no-warning
-}
-
-void * f14(int n)
-{
- if (n < 0)
- return NULL;
- return malloc(n * sizeof(int)); // expected-warning {{the computation of the size of the memory allocation may overflow}}
-}
diff --git a/test/Analysis/malloc-overflow.cpp b/test/Analysis/malloc-overflow.cpp
deleted file mode 100644
index e070217cf7d8..000000000000
--- a/test/Analysis/malloc-overflow.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.security.MallocOverflow -verify %s
-// expected-no-diagnostics
-
-class A {
-public:
- A& operator<<(const A &a);
-};
-
-void f() {
- A a = A(), b = A();
- a << b;
-}
diff --git a/test/Analysis/malloc-overflow2.c b/test/Analysis/malloc-overflow2.c
deleted file mode 100644
index 7c580602e682..000000000000
--- a/test/Analysis/malloc-overflow2.c
+++ /dev/null
@@ -1,40 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-unknown -analyzer-checker=alpha.security.MallocOverflow,unix -verify %s
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-unknown -analyzer-checker=alpha.security.MallocOverflow,unix,optin.portability -DPORTABILITY -verify %s
-
-typedef __typeof__(sizeof(int)) size_t;
-extern void *malloc(size_t);
-extern void free(void *ptr);
-
-void *malloc(unsigned long s);
-
-struct table {
- int nentry;
- unsigned *table;
- unsigned offset_max;
-};
-
-static int table_build(struct table *t) {
-
- t->nentry = ((t->offset_max >> 2) + 31) / 32;
- t->table = (unsigned *)malloc(sizeof(unsigned) * t->nentry); // expected-warning {{the computation of the size of the memory allocation may overflow}}
-
- int n;
- n = 10000;
- int *p = malloc(sizeof(int) * n); // no-warning
-
- free(p);
- return t->nentry;
-}
-
-static int table_build_1(struct table *t) {
- t->nentry = (sizeof(struct table) * 2 + 31) / 32;
- t->table = (unsigned *)malloc(sizeof(unsigned) * t->nentry); // no-warning
- return t->nentry;
-}
-
-void *f(int n) {
- return malloc(n * 0 * sizeof(int));
-#ifdef PORTABILITY
- // expected-warning@-2{{Call to 'malloc' has an allocation size of 0 bytes}}
-#endif
-}
diff --git a/test/Analysis/malloc-plist.c b/test/Analysis/malloc-plist.c
deleted file mode 100644
index 3338a63c69d1..000000000000
--- a/test/Analysis/malloc-plist.c
+++ /dev/null
@@ -1,209 +0,0 @@
-// RUN: rm -f %t
-// RUN: %clang_analyze_cc1 -fblocks -analyzer-checker=core,unix.Malloc -analyzer-output=plist -verify -o %t -analyzer-config eagerly-assume=false %s
-// RUN: tail -n +11 %t | diff -u -w -I "<string>/" -I "<string>.:" -I "version" - %S/Inputs/expected-plists/malloc-plist.c.plist
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-void *realloc(void *ptr, size_t size);
-
-void diagnosticTest(int in) {
- if (in > 5) {
- int *p = malloc(12);
- *p = 0;
- (*p)++;
- }
- in++; // expected-warning {{leak}}
-}
-
-void myArrayAllocation() {
- int **A;
- A = malloc(2*sizeof(int*));
- A[0] = 0;
-}//expected-warning{{Potential leak}}
-
-void reallocDiagnostics() {
- char * buf = malloc(100);
- char * tmp;
- tmp = (char*)realloc(buf, 0x1000000);
- if (!tmp) {
- return;// expected-warning {{leak}}
- }
- buf = tmp;
- free(buf);
-}
-
-void *wrapper() {
- void *x = malloc(100);
- // This is intentionally done to test diagnostic emission.
- if (x)
- return x;
- return 0;
-}
-
-void test_wrapper() {
- void *buf = wrapper();
- (void) buf;
-}//expected-warning{{Potential leak}}
-
-// Test what happens when the same call frees and allocated memory.
-// Also tests the stack hint for parameters, when they are passed directly or via pointer.
-void my_free(void *x) {
- free(x);
-}
-void my_malloc_and_free(void **x) {
- *x = malloc(100);
- if (*x)
- my_free(*x);
- return;
-}
-void *test_double_action_call() {
- void *buf;
- my_malloc_and_free(&buf);
- return buf; //expected-warning{{Use of memory after it is freed}}
-}
-
-// Test stack hint for 'reallocation failed'.
-char *my_realloc(char *buf) {
- char *tmp;
- tmp = (char*)realloc(buf, 0x1000000);
- if (!tmp) {
- return tmp;
- }
- return tmp;
-}
-void reallocIntra() {
- char *buf = (char *)malloc(100);
- buf = my_realloc(buf);
- free(buf);//expected-warning{{Potential leak}}
-}
-
-// Test stack hint when returning a result.
-static char *malloc_wrapper_ret() {
- return (char*)malloc(12);
-}
-void use_ret() {
- char *v;
- v = malloc_wrapper_ret();
-}//expected-warning{{Potential leak}}
-
-// Passing a block as a parameter to an inlined call for which we generate
-// a stack hint message caused crashes.
-// rdar://problem/21291971
-void myfree_takingblock(void (^ignored)(void), int *p) {
- free(p);
-}
-
-void call_myfree_takingblock() {
- void (^some_block)(void) = ^void(void) { };
-
- int *p = malloc(sizeof(int));
- myfree_takingblock(some_block, p);
- *p = 3;//expected-warning{{Use of memory after it is freed}}
-}
-
-// Test that we refer to the last symbol used in the leak diagnostic.
-void LeakedSymbol(int in) {
- int *m = 0;
- int *p;
- p = (int*)malloc(12);
- *p = 0;
- (*p)++;
- m = p;
- p = 0;
- (*m)++;
- in++;//expected-warning{{Potential leak}}
-}
-
-// Tests that exercise running remove dead bindings at Call exit.
-static void function_with_leak1() {
- char *x = (char*)malloc(12);
-} //expected-warning{{Potential leak}}
-void use_function_with_leak1() {
- function_with_leak1();
- int y = 0;
-}
-
-static void function_with_leak2() {
- char *x = (char*)malloc(12);
- int m = 0; //expected-warning{{Potential leak}}
-}
-void use_function_with_leak2() {
- function_with_leak2();
-}
-
-static void function_with_leak3(int y) {
- char *x = (char*)malloc(12);
- if (y)
- y++;
-}//expected-warning{{Potential leak}}
-void use_function_with_leak3(int y) {
- function_with_leak3(y);
-}
-
-static void function_with_leak4(int y) {
- char *x = (char*)malloc(12);
- if (y)
- y++;
- else
- y--;//expected-warning{{Potential leak}}
-}
-void use_function_with_leak4(int y) {
- function_with_leak4(y);
-}
-
-int anotherFunction5() {
- return 5;
-}
-static int function_with_leak5() {
- char *x = (char*)malloc(12);
- return anotherFunction5();//expected-warning{{Potential leak}}
-}
-void use_function_with_leak5() {
- function_with_leak5();
-}
-
-void anotherFunction6(int m) {
- m++;
-}
-static void function_with_leak6() {
- char *x = (char*)malloc(12);
- anotherFunction6(3);//expected-warning{{Potential leak}}
-}
-void use_function_with_leak6() {
- function_with_leak6();
-}
-
-static void empty_function(){
-}
-void use_empty_function() {
- empty_function();
-}
-static char *function_with_leak7() {
- return (char*)malloc(12);
-}
-void use_function_with_leak7() {
- function_with_leak7();
-}//expected-warning{{Potential memory leak}}
-
-// Test that we do not print the name of a variable not visible from where
-// the issue is reported.
-int *my_malloc() {
- int *p = malloc(12);
- return p;
-}
-void testOnlyRefferToVisibleVariables() {
- my_malloc();
-} // expected-warning{{Potential memory leak}}
-
-struct PointerWrapper{
- int*p;
-};
-int *my_malloc_into_struct() {
- struct PointerWrapper w;
- w.p = malloc(12);
- return w.p;
-}
-void testMyMalloc() {
- my_malloc_into_struct();
-} // expected-warning{{Potential memory leak}}
diff --git a/test/Analysis/malloc-protoype.c b/test/Analysis/malloc-protoype.c
deleted file mode 100644
index 0b8c0f9f28df..000000000000
--- a/test/Analysis/malloc-protoype.c
+++ /dev/null
@@ -1,17 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core,unix.Malloc -verify %s
-// expected-no-diagnostics
-
-// Test that strange prototypes doesn't crash the analyzer
-
-void malloc(int i);
-void valloc(int i);
-
-void test1()
-{
- malloc(1);
-}
-
-void test2()
-{
- valloc(1);
-}
diff --git a/test/Analysis/malloc-sizeof.c b/test/Analysis/malloc-sizeof.c
deleted file mode 100644
index ee104245b819..000000000000
--- a/test/Analysis/malloc-sizeof.c
+++ /dev/null
@@ -1,52 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=unix.MallocSizeof -verify %s
-
-#include <stddef.h>
-
-void *malloc(size_t size);
-void *calloc(size_t nmemb, size_t size);
-void *realloc(void *ptr, size_t size);
-void free(void *ptr);
-
-struct A {};
-struct B {};
-
-void foo(unsigned int unsignedInt, unsigned int readSize) {
- int *ip1 = malloc(sizeof(1));
- int *ip2 = malloc(4 * sizeof(int));
-
- long *lp1 = malloc(sizeof(short)); // expected-warning {{Result of 'malloc' is converted to a pointer of type 'long', which is incompatible with sizeof operand type 'short'}}
- long *lp2 = malloc(5 * sizeof(double)); // expected-warning {{Result of 'malloc' is converted to a pointer of type 'long', which is incompatible with sizeof operand type 'double'}}
- char *cp3 = malloc(5 * sizeof(char) + 2); // no warning
- unsigned char *buf = malloc(readSize + sizeof(unsignedInt)); // no warning
-
- struct A *ap1 = calloc(1, sizeof(struct A));
- struct A *ap2 = calloc(2, sizeof(*ap1));
- struct A *ap3 = calloc(2, sizeof(ap1)); // expected-warning {{Result of 'calloc' is converted to a pointer of type 'struct A', which is incompatible with sizeof operand type 'struct A *'}}
- struct A *ap4 = calloc(3, sizeof(struct A*)); // expected-warning {{Result of 'calloc' is converted to a pointer of type 'struct A', which is incompatible with sizeof operand type 'struct A *'}}
- struct A *ap5 = calloc(4, sizeof(struct B)); // expected-warning {{Result of 'calloc' is converted to a pointer of type 'struct A', which is incompatible with sizeof operand type 'struct B'}}
- struct A *ap6 = realloc(ap5, sizeof(struct A));
- struct A *ap7 = realloc(ap5, sizeof(struct B)); // expected-warning {{Result of 'realloc' is converted to a pointer of type 'struct A', which is incompatible with sizeof operand type 'struct B'}}
-}
-
-// Don't warn when the types differ only by constness.
-void ignore_const() {
- const char **x = (const char **)malloc(1 * sizeof(char *)); // no-warning
- const char ***y = (const char ***)malloc(1 * sizeof(char *)); // expected-warning {{Result of 'malloc' is converted to a pointer of type 'const char **', which is incompatible with sizeof operand type 'char *'}}
- free(x);
-}
-
-int *mallocArraySize() {
- static const int sTable[10];
- static const int nestedTable[10][2];
- int *table = malloc(sizeof sTable);
- int *table1 = malloc(sizeof nestedTable);
- int (*table2)[2] = malloc(sizeof nestedTable);
- int (*table3)[10][2] = malloc(sizeof nestedTable);
- return table;
-}
-
-int *mallocWrongArraySize() {
- static const double sTable[10];
- int *table = malloc(sizeof sTable); // expected-warning {{Result of 'malloc' is converted to a pointer of type 'int', which is incompatible with sizeof operand type 'const double [10]'}}
- return table;
-}
diff --git a/test/Analysis/malloc-sizeof.cpp b/test/Analysis/malloc-sizeof.cpp
deleted file mode 100644
index 30227a9cbc80..000000000000
--- a/test/Analysis/malloc-sizeof.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=unix.MallocSizeof -verify %s
-
-#include <stddef.h>
-
-void *malloc(size_t size);
-void *calloc(size_t nmemb, size_t size);
-void *realloc(void *ptr, size_t size);
-void free(void *ptr);
-
-struct A {};
-struct B {};
-
-void foo(unsigned int unsignedInt, unsigned int readSize) {
- // Sanity check the checker is working as expected.
- A* a = static_cast<A*>(malloc(sizeof(int))); // expected-warning {{Result of 'malloc' is converted to a pointer of type 'struct A', which is incompatible with sizeof operand type 'int'}}
- free(a);
-}
-
-void bar() {
- A *x = static_cast<A*>(calloc(10, sizeof(void*))); // expected-warning {{Result of 'calloc' is converted to a pointer of type 'struct A', which is incompatible with sizeof operand type 'void *'}}
- // sizeof(void*) is compatible with any pointer.
- A **y = static_cast<A**>(calloc(10, sizeof(void*))); // no-warning
- free(x);
- free(y);
-}
-
diff --git a/test/Analysis/malloc-three-arg.c b/test/Analysis/malloc-three-arg.c
deleted file mode 100644
index a2103376e348..000000000000
--- a/test/Analysis/malloc-three-arg.c
+++ /dev/null
@@ -1,58 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-freebsd %s
-
-#include "Inputs/system-header-simulator.h"
-
-#define M_ZERO 0x0100
-#define NULL ((void *)0)
-
-void *malloc(size_t, void *, int);
-
-struct test {
-};
-
-void foo(struct test *);
-
-void test_zeroed() {
- struct test **list, *t;
- int i;
-
- list = malloc(sizeof(*list) * 10, NULL, M_ZERO);
- if (list == NULL)
- return;
-
- for (i = 0; i < 10; i++) {
- t = list[i];
- foo(t);
- }
- free(list); // no-warning
-}
-
-void test_nonzero() {
- struct test **list, *t;
- int i;
-
- list = malloc(sizeof(*list) * 10, NULL, 0);
- if (list == NULL)
- return;
-
- for (i = 0; i < 10; i++) {
- t = list[i]; // expected-warning{{undefined}}
- foo(t);
- }
- free(list);
-}
-
-void test_indeterminate(int flags) {
- struct test **list, *t;
- int i;
-
- list = malloc(sizeof(*list) * 10, NULL, flags);
- if (list == NULL)
- return;
-
- for (i = 0; i < 10; i++) {
- t = list[i]; // expected-warning{{undefined}}
- foo(t);
- }
- free(list);
-}
diff --git a/test/Analysis/malloc.c b/test/Analysis/malloc.c
deleted file mode 100644
index 8e0f5c04ca2d..000000000000
--- a/test/Analysis/malloc.c
+++ /dev/null
@@ -1,1821 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-store=region -verify %s \
-// RUN: -analyzer-checker=core \
-// RUN: -analyzer-checker=alpha.deadcode.UnreachableCode \
-// RUN: -analyzer-checker=alpha.core.CastSize \
-// RUN: -analyzer-checker=unix.Malloc \
-// RUN: -analyzer-checker=debug.ExprInspection
-
-#include "Inputs/system-header-simulator.h"
-
-void clang_analyzer_eval(int);
-
-// Without -fms-compatibility, wchar_t isn't a builtin type. MSVC defines
-// _WCHAR_T_DEFINED if wchar_t is available. Microsoft recommends that you use
-// the builtin type: "Using the typedef version can cause portability
-// problems", but we're ok here because we're not actually running anything.
-// Also of note is this cryptic warning: "The wchar_t type is not supported
-// when you compile C code".
-//
-// See the docs for more:
-// https://msdn.microsoft.com/en-us/library/dh8che7s.aspx
-#if !defined(_WCHAR_T_DEFINED)
-// "Microsoft implements wchar_t as a two-byte unsigned value"
-typedef unsigned short wchar_t;
-#define _WCHAR_T_DEFINED
-#endif // !defined(_WCHAR_T_DEFINED)
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void *alloca(size_t);
-void *valloc(size_t);
-void free(void *);
-void *realloc(void *ptr, size_t size);
-void *reallocf(void *ptr, size_t size);
-void *calloc(size_t nmemb, size_t size);
-char *strdup(const char *s);
-wchar_t *wcsdup(const wchar_t *s);
-char *strndup(const char *s, size_t n);
-int memcmp(const void *s1, const void *s2, size_t n);
-
-// Windows variants
-char *_strdup(const char *strSource);
-wchar_t *_wcsdup(const wchar_t *strSource);
-void *_alloca(size_t size);
-
-void myfoo(int *p);
-void myfooint(int p);
-char *fooRetPtr();
-
-void f1() {
- int *p = malloc(12);
- return; // expected-warning{{Potential leak of memory pointed to by 'p'}}
-}
-
-void f2() {
- int *p = malloc(12);
- free(p);
- free(p); // expected-warning{{Attempt to free released memory}}
-}
-
-void f2_realloc_0() {
- int *p = malloc(12);
- realloc(p,0);
- realloc(p,0); // expected-warning{{Attempt to free released memory}}
-}
-
-void f2_realloc_1() {
- int *p = malloc(12);
- int *q = realloc(p,0); // no-warning
-}
-
-void reallocNotNullPtr(unsigned sizeIn) {
- unsigned size = 12;
- char *p = (char*)malloc(size);
- if (p) {
- char *q = (char*)realloc(p, sizeIn);
- char x = *q; // expected-warning {{Potential leak of memory pointed to by 'q'}}
- }
-}
-
-void allocaTest() {
- int *p = alloca(sizeof(int));
-} // no warn
-
-void winAllocaTest() {
- int *p = _alloca(sizeof(int));
-} // no warn
-
-void allocaBuiltinTest() {
- int *p = __builtin_alloca(sizeof(int));
-} // no warn
-
-int *realloctest1() {
- int *q = malloc(12);
- q = realloc(q, 20);
- return q; // no warning - returning the allocated value
-}
-
-// p should be freed if realloc fails.
-void reallocFails() {
- char *p = malloc(12);
- char *r = realloc(p, 12+1);
- if (!r) {
- free(p);
- } else {
- free(r);
- }
-}
-
-void reallocSizeZero1() {
- char *p = malloc(12);
- char *r = realloc(p, 0);
- if (!r) {
- free(p); // expected-warning {{Attempt to free released memory}}
- } else {
- free(r);
- }
-}
-
-void reallocSizeZero2() {
- char *p = malloc(12);
- char *r = realloc(p, 0);
- if (!r) {
- free(p); // expected-warning {{Attempt to free released memory}}
- } else {
- free(r);
- }
- free(p); // expected-warning {{Attempt to free released memory}}
-}
-
-void reallocSizeZero3() {
- char *p = malloc(12);
- char *r = realloc(p, 0);
- free(r);
-}
-
-void reallocSizeZero4() {
- char *r = realloc(0, 0);
- free(r);
-}
-
-void reallocSizeZero5() {
- char *r = realloc(0, 0);
-}
-
-void reallocPtrZero1() {
- char *r = realloc(0, 12);
-} // expected-warning {{Potential leak of memory pointed to by 'r'}}
-
-void reallocPtrZero2() {
- char *r = realloc(0, 12);
- if (r)
- free(r);
-}
-
-void reallocPtrZero3() {
- char *r = realloc(0, 12);
- free(r);
-}
-
-void reallocRadar6337483_1() {
- char *buf = malloc(100);
- buf = (char*)realloc(buf, 0x1000000);
- if (!buf) {
- return;// expected-warning {{Potential leak of memory pointed to by}}
- }
- free(buf);
-}
-
-void reallocRadar6337483_2() {
- char *buf = malloc(100);
- char *buf2 = (char*)realloc(buf, 0x1000000);
- if (!buf2) {
- ;
- } else {
- free(buf2);
- }
-} // expected-warning {{Potential leak of memory pointed to by}}
-
-void reallocRadar6337483_3() {
- char * buf = malloc(100);
- char * tmp;
- tmp = (char*)realloc(buf, 0x1000000);
- if (!tmp) {
- free(buf);
- return;
- }
- buf = tmp;
- free(buf);
-}
-
-void reallocRadar6337483_4() {
- char *buf = malloc(100);
- char *buf2 = (char*)realloc(buf, 0x1000000);
- if (!buf2) {
- return; // expected-warning {{Potential leak of memory pointed to by}}
- } else {
- free(buf2);
- }
-}
-
-int *reallocfTest1() {
- int *q = malloc(12);
- q = reallocf(q, 20);
- return q; // no warning - returning the allocated value
-}
-
-void reallocfRadar6337483_4() {
- char *buf = malloc(100);
- char *buf2 = (char*)reallocf(buf, 0x1000000);
- if (!buf2) {
- return; // no warning - reallocf frees even on failure
- } else {
- free(buf2);
- }
-}
-
-void reallocfRadar6337483_3() {
- char * buf = malloc(100);
- char * tmp;
- tmp = (char*)reallocf(buf, 0x1000000);
- if (!tmp) {
- free(buf); // expected-warning {{Attempt to free released memory}}
- return;
- }
- buf = tmp;
- free(buf);
-}
-
-void reallocfPtrZero1() {
- char *r = reallocf(0, 12);
-} // expected-warning {{Potential leak of memory pointed to by}}
-
-//------------------- Check usage of zero-allocated memory ---------------------
-void CheckUseZeroAllocatedNoWarn1() {
- int *p = malloc(0);
- free(p); // no warning
-}
-
-void CheckUseZeroAllocatedNoWarn2() {
- int *p = alloca(0); // no warning
-}
-
-void CheckUseZeroWinAllocatedNoWarn2() {
- int *p = _alloca(0); // no warning
-}
-
-
-void CheckUseZeroAllocatedNoWarn3() {
- int *p = malloc(0);
- int *q = realloc(p, 8); // no warning
- free(q);
-}
-
-void CheckUseZeroAllocatedNoWarn4() {
- int *p = realloc(0, 8);
- *p = 1; // no warning
- free(p);
-}
-
-void CheckUseZeroAllocated1() {
- int *p = malloc(0);
- *p = 1; // expected-warning {{Use of zero-allocated memory}}
- free(p);
-}
-
-char CheckUseZeroAllocated2() {
- char *p = alloca(0);
- return *p; // expected-warning {{Use of zero-allocated memory}}
-}
-
-char CheckUseZeroWinAllocated2() {
- char *p = _alloca(0);
- return *p; // expected-warning {{Use of zero-allocated memory}}
-}
-
-void UseZeroAllocated(int *p) {
- if (p)
- *p = 7; // expected-warning {{Use of zero-allocated memory}}
-}
-void CheckUseZeroAllocated3() {
- int *p = malloc(0);
- UseZeroAllocated(p);
-}
-
-void f(char);
-void CheckUseZeroAllocated4() {
- char *p = valloc(0);
- f(*p); // expected-warning {{Use of zero-allocated memory}}
- free(p);
-}
-
-void CheckUseZeroAllocated5() {
- int *p = calloc(0, 2);
- *p = 1; // expected-warning {{Use of zero-allocated memory}}
- free(p);
-}
-
-void CheckUseZeroAllocated6() {
- int *p = calloc(2, 0);
- *p = 1; // expected-warning {{Use of zero-allocated memory}}
- free(p);
-}
-
-void CheckUseZeroAllocated7() {
- int *p = realloc(0, 0);
- *p = 1; // expected-warning {{Use of zero-allocated memory}}
- free(p);
-}
-
-void CheckUseZeroAllocated8() {
- int *p = malloc(8);
- int *q = realloc(p, 0);
- *q = 1; // expected-warning {{Use of zero-allocated memory}}
- free(q);
-}
-
-void CheckUseZeroAllocated9() {
- int *p = realloc(0, 0);
- int *q = realloc(p, 0);
- *q = 1; // expected-warning {{Use of zero-allocated memory}}
- free(q);
-}
-
-void CheckUseZeroAllocatedPathNoWarn(_Bool b) {
- int s = 0;
- if (b)
- s= 10;
-
- char *p = malloc(s);
-
- if (b)
- *p = 1; // no warning
-
- free(p);
-}
-
-void CheckUseZeroAllocatedPathWarn(_Bool b) {
- int s = 10;
- if (b)
- s= 0;
-
- char *p = malloc(s);
-
- if (b)
- *p = 1; // expected-warning {{Use of zero-allocated memory}}
-
- free(p);
-}
-
-void CheckUseZeroReallocatedPathNoWarn(_Bool b) {
- int s = 0;
- if (b)
- s= 10;
-
- char *p = malloc(8);
- char *q = realloc(p, s);
-
- if (b)
- *q = 1; // no warning
-
- free(q);
-}
-
-void CheckUseZeroReallocatedPathWarn(_Bool b) {
- int s = 10;
- if (b)
- s= 0;
-
- char *p = malloc(8);
- char *q = realloc(p, s);
-
- if (b)
- *q = 1; // expected-warning {{Use of zero-allocated memory}}
-
- free(q);
-}
-
-// This case tests that storing malloc'ed memory to a static variable which is
-// then returned is not leaked. In the absence of known contracts for functions
-// or inter-procedural analysis, this is a conservative answer.
-int *f3() {
- static int *p = 0;
- p = malloc(12);
- return p; // no-warning
-}
-
-// This case tests that storing malloc'ed memory to a static global variable
-// which is then returned is not leaked. In the absence of known contracts for
-// functions or inter-procedural analysis, this is a conservative answer.
-static int *p_f4 = 0;
-int *f4() {
- p_f4 = malloc(12);
- return p_f4; // no-warning
-}
-
-int *f5() {
- int *q = malloc(12);
- q = realloc(q, 20);
- return q; // no-warning
-}
-
-void f6() {
- int *p = malloc(12);
- if (!p)
- return; // no-warning
- else
- free(p);
-}
-
-void f6_realloc() {
- int *p = malloc(12);
- if (!p)
- return; // no-warning
- else
- realloc(p,0);
-}
-
-
-char *doit2();
-void pr6069() {
- char *buf = doit2();
- free(buf);
-}
-
-void pr6293() {
- free(0);
-}
-
-void f7() {
- char *x = (char*) malloc(4);
- free(x);
- x[0] = 'a'; // expected-warning{{Use of memory after it is freed}}
-}
-
-void f8() {
- char *x = (char*) malloc(4);
- free(x);
- char *y = strndup(x, 4); // expected-warning{{Use of memory after it is freed}}
-}
-
-void f7_realloc() {
- char *x = (char*) malloc(4);
- realloc(x,0);
- x[0] = 'a'; // expected-warning{{Use of memory after it is freed}}
-}
-
-void PR6123() {
- int *x = malloc(11); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}}
-}
-
-void PR7217() {
- int *buf = malloc(2); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}}
- buf[1] = 'c'; // not crash
-}
-
-void cast_emtpy_struct() {
- struct st {
- };
-
- struct st *s = malloc(sizeof(struct st)); // no-warning
- free(s);
-}
-
-void cast_struct_1() {
- struct st {
- int i[100];
- char j[];
- };
-
- struct st *s = malloc(sizeof(struct st)); // no-warning
- free(s);
-}
-
-void cast_struct_2() {
- struct st {
- int i[100];
- char j[0];
- };
-
- struct st *s = malloc(sizeof(struct st)); // no-warning
- free(s);
-}
-
-void cast_struct_3() {
- struct st {
- int i[100];
- char j[1];
- };
-
- struct st *s = malloc(sizeof(struct st)); // no-warning
- free(s);
-}
-
-void cast_struct_4() {
- struct st {
- int i[100];
- char j[2];
- };
-
- struct st *s = malloc(sizeof(struct st)); // no-warning
- free(s);
-}
-
-void cast_struct_5() {
- struct st {
- char i[200];
- char j[1];
- };
-
- struct st *s = malloc(sizeof(struct st) - sizeof(char)); // no-warning
- free(s);
-}
-
-void cast_struct_warn_1() {
- struct st {
- int i[100];
- char j[2];
- };
-
- struct st *s = malloc(sizeof(struct st) + 2); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}}
- free(s);
-}
-
-void cast_struct_warn_2() {
- struct st {
- int i[100];
- char j[2];
- };
-
- struct st *s = malloc(2); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}}
- free(s);
-}
-
-void cast_struct_flex_array_1() {
- struct st {
- int i[100];
- char j[];
- };
-
- struct st *s = malloc(sizeof(struct st) + 3); // no-warning
- free(s);
-}
-
-void cast_struct_flex_array_2() {
- struct st {
- int i[100];
- char j[0];
- };
-
- struct st *s = malloc(sizeof(struct st) + 3); // no-warning
- free(s);
-}
-
-void cast_struct_flex_array_3() {
- struct st {
- int i[100];
- char j[1];
- };
-
- struct st *s = malloc(sizeof(struct st) + 3); // no-warning
- free(s);
-}
-
-void cast_struct_flex_array_4() {
- struct foo {
- char f[32];
- };
- struct st {
- char i[100];
- struct foo data[];
- };
-
- struct st *s = malloc(sizeof(struct st) + 3 * sizeof(struct foo)); // no-warning
- free(s);
-}
-
-void cast_struct_flex_array_5() {
- struct foo {
- char f[32];
- };
- struct st {
- char i[100];
- struct foo data[0];
- };
-
- struct st *s = malloc(sizeof(struct st) + 3 * sizeof(struct foo)); // no-warning
- free(s);
-}
-
-void cast_struct_flex_array_6() {
- struct foo {
- char f[32];
- };
- struct st {
- char i[100];
- struct foo data[1];
- };
-
- struct st *s = malloc(sizeof(struct st) + 3 * sizeof(struct foo)); // no-warning
- free(s);
-}
-
-void cast_struct_flex_array_warn_1() {
- struct foo {
- char f[32];
- };
- struct st {
- char i[100];
- struct foo data[];
- };
-
- struct st *s = malloc(3 * sizeof(struct st) + 3 * sizeof(struct foo)); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}}
- free(s);
-}
-
-void cast_struct_flex_array_warn_2() {
- struct foo {
- char f[32];
- };
- struct st {
- char i[100];
- struct foo data[0];
- };
-
- struct st *s = malloc(3 * sizeof(struct st) + 3 * sizeof(struct foo)); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}}
- free(s);
-}
-
-void cast_struct_flex_array_warn_3() {
- struct foo {
- char f[32];
- };
- struct st {
- char i[100];
- struct foo data[1];
- };
-
- struct st *s = malloc(3 * sizeof(struct st) + 3 * sizeof(struct foo)); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}}
- free(s);
-}
-
-void cast_struct_flex_array_warn_4() {
- struct st {
- int i[100];
- int j[];
- };
-
- struct st *s = malloc(sizeof(struct st) + 3); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}}
- free(s);
-}
-
-void cast_struct_flex_array_warn_5() {
- struct st {
- int i[100];
- int j[0];
- };
-
- struct st *s = malloc(sizeof(struct st) + 3); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}}
- free(s);
-}
-
-void cast_struct_flex_array_warn_6() {
- struct st {
- int i[100];
- int j[1];
- };
-
- struct st *s = malloc(sizeof(struct st) + 3); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}}
- free(s);
-}
-
-void mallocCastToVoid() {
- void *p = malloc(2);
- const void *cp = p; // not crash
- free(p);
-}
-
-void mallocCastToFP() {
- void *p = malloc(2);
- void (*fp)() = p; // not crash
- free(p);
-}
-
-// This tests that malloc() buffers are undefined by default
-char mallocGarbage () {
- char *buf = malloc(2);
- char result = buf[1]; // expected-warning{{undefined}}
- free(buf);
- return result;
-}
-
-// This tests that calloc() buffers need to be freed
-void callocNoFree () {
- char *buf = calloc(2,2);
- return; // expected-warning{{Potential leak of memory pointed to by 'buf'}}
-}
-
-// These test that calloc() buffers are zeroed by default
-char callocZeroesGood () {
- char *buf = calloc(2,2);
- char result = buf[3]; // no-warning
- if (buf[1] == 0) {
- free(buf);
- }
- return result; // no-warning
-}
-
-char callocZeroesBad () {
- char *buf = calloc(2,2);
- char result = buf[3]; // no-warning
- if (buf[1] != 0) {
- free(buf); // expected-warning{{never executed}}
- }
- return result; // expected-warning{{Potential leak of memory pointed to by 'buf'}}
-}
-
-void nullFree() {
- int *p = 0;
- free(p); // no warning - a nop
-}
-
-void paramFree(int *p) {
- myfoo(p);
- free(p); // no warning
- myfoo(p); // expected-warning {{Use of memory after it is freed}}
-}
-
-int* mallocEscapeRet() {
- int *p = malloc(12);
- return p; // no warning
-}
-
-void mallocEscapeFoo() {
- int *p = malloc(12);
- myfoo(p);
- return; // no warning
-}
-
-void mallocEscapeFree() {
- int *p = malloc(12);
- myfoo(p);
- free(p);
-}
-
-void mallocEscapeFreeFree() {
- int *p = malloc(12);
- myfoo(p);
- free(p);
- free(p); // expected-warning{{Attempt to free released memory}}
-}
-
-void mallocEscapeFreeUse() {
- int *p = malloc(12);
- myfoo(p);
- free(p);
- myfoo(p); // expected-warning{{Use of memory after it is freed}}
-}
-
-int *myalloc();
-void myalloc2(int **p);
-
-void mallocEscapeFreeCustomAlloc() {
- int *p = malloc(12);
- myfoo(p);
- free(p);
- p = myalloc();
- free(p); // no warning
-}
-
-void mallocEscapeFreeCustomAlloc2() {
- int *p = malloc(12);
- myfoo(p);
- free(p);
- myalloc2(&p);
- free(p); // no warning
-}
-
-void mallocBindFreeUse() {
- int *x = malloc(12);
- int *y = x;
- free(y);
- myfoo(x); // expected-warning{{Use of memory after it is freed}}
-}
-
-void mallocEscapeMalloc() {
- int *p = malloc(12);
- myfoo(p);
- p = malloc(12);
-} // expected-warning{{Potential leak of memory pointed to by}}
-
-void mallocMalloc() {
- int *p = malloc(12);
- p = malloc(12);
-} // expected-warning {{Potential leak of memory pointed to by}}
-
-void mallocFreeMalloc() {
- int *p = malloc(12);
- free(p);
- p = malloc(12);
- free(p);
-}
-
-void mallocFreeUse_params() {
- int *p = malloc(12);
- free(p);
- myfoo(p); //expected-warning{{Use of memory after it is freed}}
-}
-
-void mallocFreeUse_params2() {
- int *p = malloc(12);
- free(p);
- myfooint(*p); //expected-warning{{Use of memory after it is freed}}
-}
-
-void mallocFailedOrNot() {
- int *p = malloc(12);
- if (!p)
- free(p);
- else
- free(p);
-}
-
-struct StructWithInt {
- int g;
-};
-
-int *mallocReturnFreed() {
- int *p = malloc(12);
- free(p);
- return p; // expected-warning {{Use of memory after it is freed}}
-}
-
-int useAfterFreeStruct() {
- struct StructWithInt *px= malloc(sizeof(struct StructWithInt));
- px->g = 5;
- free(px);
- return px->g; // expected-warning {{Use of memory after it is freed}}
-}
-
-void nonSymbolAsFirstArg(int *pp, struct StructWithInt *p);
-
-void mallocEscapeFooNonSymbolArg() {
- struct StructWithInt *p = malloc(sizeof(struct StructWithInt));
- nonSymbolAsFirstArg(&p->g, p);
- return; // no warning
-}
-
-void mallocFailedOrNotLeak() {
- int *p = malloc(12);
- if (p == 0)
- return; // no warning
- else
- return; // expected-warning {{Potential leak of memory pointed to by}}
-}
-
-void mallocAssignment() {
- char *p = malloc(12);
- p = fooRetPtr();
-} // expected-warning {{leak}}
-
-int vallocTest() {
- char *mem = valloc(12);
- return 0; // expected-warning {{Potential leak of memory pointed to by}}
-}
-
-void vallocEscapeFreeUse() {
- int *p = valloc(12);
- myfoo(p);
- free(p);
- myfoo(p); // expected-warning{{Use of memory after it is freed}}
-}
-
-int *Gl;
-struct GlStTy {
- int *x;
-};
-
-struct GlStTy GlS = {0};
-
-void GlobalFree() {
- free(Gl);
-}
-
-void GlobalMalloc() {
- Gl = malloc(12);
-}
-
-void GlobalStructMalloc() {
- int *a = malloc(12);
- GlS.x = a;
-}
-
-void GlobalStructMallocFree() {
- int *a = malloc(12);
- GlS.x = a;
- free(GlS.x);
-}
-
-char *ArrayG[12];
-
-void globalArrayTest() {
- char *p = (char*)malloc(12);
- ArrayG[0] = p;
-}
-
-// Make sure that we properly handle a pointer stored into a local struct/array.
-typedef struct _StructWithPtr {
- int *memP;
-} StructWithPtr;
-
-static StructWithPtr arrOfStructs[10];
-
-void testMalloc() {
- int *x = malloc(12);
- StructWithPtr St;
- St.memP = x;
- arrOfStructs[0] = St; // no-warning
-}
-
-StructWithPtr testMalloc2() {
- int *x = malloc(12);
- StructWithPtr St;
- St.memP = x;
- return St; // no-warning
-}
-
-int *testMalloc3() {
- int *x = malloc(12);
- int *y = x;
- return y; // no-warning
-}
-
-void testStructLeak() {
- StructWithPtr St;
- St.memP = malloc(12);
- return; // expected-warning {{Potential leak of memory pointed to by 'St.memP'}}
-}
-
-void testElemRegion1() {
- char *x = (void*)malloc(2);
- int *ix = (int*)x;
- free(&(x[0]));
-}
-
-void testElemRegion2(int **pp) {
- int *p = malloc(12);
- *pp = p;
- free(pp[0]);
-}
-
-void testElemRegion3(int **pp) {
- int *p = malloc(12);
- *pp = p;
- free(*pp);
-}
-// Region escape testing.
-
-unsigned takePtrToPtr(int **p);
-void PassTheAddrOfAllocatedData(int f) {
- int *p = malloc(12);
- // We don't know what happens after the call. Should stop tracking here.
- if (takePtrToPtr(&p))
- f++;
- free(p); // no warning
-}
-
-struct X {
- int *p;
-};
-unsigned takePtrToStruct(struct X *s);
-int ** foo2(int *g, int f) {
- int *p = malloc(12);
- struct X *px= malloc(sizeof(struct X));
- px->p = p;
- // We don't know what happens after this call. Should not track px nor p.
- if (takePtrToStruct(px))
- f++;
- free(p);
- return 0;
-}
-
-struct X* RegInvalidationDetect1(struct X *s2) {
- struct X *px= malloc(sizeof(struct X));
- px->p = 0;
- px = s2;
- return px; // expected-warning {{Potential leak of memory pointed to by}}
-}
-
-struct X* RegInvalidationGiveUp1() {
- int *p = malloc(12);
- struct X *px= malloc(sizeof(struct X));
- px->p = p;
- return px;
-}
-
-int **RegInvalidationDetect2(int **pp) {
- int *p = malloc(12);
- pp = &p;
- pp++;
- return 0;// expected-warning {{Potential leak of memory pointed to by}}
-}
-
-extern void exit(int) __attribute__ ((__noreturn__));
-void mallocExit(int *g) {
- struct xx *p = malloc(12);
- if (g != 0)
- exit(1);
- free(p);
- return;
-}
-
-extern void __assert_fail (__const char *__assertion, __const char *__file,
- unsigned int __line, __const char *__function)
- __attribute__ ((__noreturn__));
-#define assert(expr) \
- ((expr) ? (void)(0) : __assert_fail (#expr, __FILE__, __LINE__, __func__))
-void mallocAssert(int *g) {
- struct xx *p = malloc(12);
-
- assert(g != 0);
- free(p);
- return;
-}
-
-void doNotInvalidateWhenPassedToSystemCalls(char *s) {
- char *p = malloc(12);
- strlen(p);
- strcpy(p, s);
- strcpy(s, p);
- strcpy(p, p);
- memcpy(p, s, 1);
- memcpy(s, p, 1);
- memcpy(p, p, 1);
-} // expected-warning {{leak}}
-
-// Treat source buffer contents as escaped.
-void escapeSourceContents(char *s) {
- char *p = malloc(12);
- memcpy(s, &p, 12); // no warning
-
- void *p1 = malloc(7);
- char *a;
- memcpy(&a, &p1, sizeof a);
- // FIXME: No warning due to limitations imposed by current modelling of
- // 'memcpy' (regions metadata is not copied).
-
- int *ptrs[2];
- int *allocated = (int *)malloc(4);
- memcpy(&ptrs[0], &allocated, sizeof(int *));
- // FIXME: No warning due to limitations imposed by current modelling of
- // 'memcpy' (regions metadata is not copied).
-}
-
-void invalidateDestinationContents() {
- int *null = 0;
- int *p = (int *)malloc(4);
- memcpy(&p, &null, sizeof(int *));
-
- int *ptrs1[2]; // expected-warning {{Potential leak of memory pointed to by}}
- ptrs1[0] = (int *)malloc(4);
- memcpy(ptrs1, &null, sizeof(int *));
-
- int *ptrs2[2]; // expected-warning {{Potential memory leak}}
- ptrs2[0] = (int *)malloc(4);
- memcpy(&ptrs2[1], &null, sizeof(int *));
-
- int *ptrs3[2]; // expected-warning {{Potential memory leak}}
- ptrs3[0] = (int *)malloc(4);
- memcpy(&ptrs3[0], &null, sizeof(int *));
-} // expected-warning {{Potential memory leak}}
-
-// Rely on the CString checker evaluation of the strcpy API to convey that the result of strcpy is equal to p.
-void symbolLostWithStrcpy(char *s) {
- char *p = malloc(12);
- p = strcpy(p, s);
- free(p);
-}
-
-
-// The same test as the one above, but with what is actually generated on a mac.
-static __inline char *
-__inline_strcpy_chk (char *restrict __dest, const char *restrict __src)
-{
- return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
-}
-
-void symbolLostWithStrcpy_InlineStrcpyVersion(char *s) {
- char *p = malloc(12);
- p = ((__builtin_object_size (p, 0) != (size_t) -1) ? __builtin___strcpy_chk (p, s, __builtin_object_size (p, 2 > 1)) : __inline_strcpy_chk (p, s));
- free(p);
-}
-
-// Here we are returning a pointer one past the allocated value. An idiom which
-// can be used for implementing special malloc. The correct uses of this might
-// be rare enough so that we could keep this as a warning.
-static void *specialMalloc(int n){
- int *p;
- p = malloc( n+8 );
- if( p ){
- p[0] = n;
- p++;
- }
- return p;
-}
-
-// Potentially, the user could free the struct by performing pointer arithmetic on the return value.
-// This is a variation of the specialMalloc issue, though probably would be more rare in correct code.
-int *specialMallocWithStruct() {
- struct StructWithInt *px= malloc(sizeof(struct StructWithInt));
- return &(px->g);
-}
-
-// Test various allocation/deallocation functions.
-void testStrdup(const char *s, unsigned validIndex) {
- char *s2 = strdup(s);
- s2[validIndex + 1] = 'b';
-} // expected-warning {{Potential leak of memory pointed to by}}
-
-void testWinStrdup(const char *s, unsigned validIndex) {
- char *s2 = _strdup(s);
- s2[validIndex + 1] = 'b';
-} // expected-warning {{Potential leak of memory pointed to by}}
-
-void testWcsdup(const wchar_t *s, unsigned validIndex) {
- wchar_t *s2 = wcsdup(s);
- s2[validIndex + 1] = 'b';
-} // expected-warning {{Potential leak of memory pointed to by}}
-
-void testWinWcsdup(const wchar_t *s, unsigned validIndex) {
- wchar_t *s2 = _wcsdup(s);
- s2[validIndex + 1] = 'b';
-} // expected-warning {{Potential leak of memory pointed to by}}
-
-int testStrndup(const char *s, unsigned validIndex, unsigned size) {
- char *s2 = strndup(s, size);
- s2 [validIndex + 1] = 'b';
- if (s2[validIndex] != 'a')
- return 0;
- else
- return 1;// expected-warning {{Potential leak of memory pointed to by}}
-}
-
-void testStrdupContentIsDefined(const char *s, unsigned validIndex) {
- char *s2 = strdup(s);
- char result = s2[1];// no warning
- free(s2);
-}
-
-void testWinStrdupContentIsDefined(const char *s, unsigned validIndex) {
- char *s2 = _strdup(s);
- char result = s2[1];// no warning
- free(s2);
-}
-
-void testWcsdupContentIsDefined(const wchar_t *s, unsigned validIndex) {
- wchar_t *s2 = wcsdup(s);
- wchar_t result = s2[1];// no warning
- free(s2);
-}
-
-void testWinWcsdupContentIsDefined(const wchar_t *s, unsigned validIndex) {
- wchar_t *s2 = _wcsdup(s);
- wchar_t result = s2[1];// no warning
- free(s2);
-}
-
-// ----------------------------------------------------------------------------
-// Test the system library functions to which the pointer can escape.
-// This tests false positive suppression.
-
-// For now, we assume memory passed to pthread_specific escapes.
-// TODO: We could check that if a new pthread binding is set, the existing
-// binding must be freed; otherwise, a memory leak can occur.
-void testPthereadSpecificEscape(pthread_key_t key) {
- void *buf = malloc(12);
- pthread_setspecific(key, buf); // no warning
-}
-
-// PR12101: Test funopen().
-static int releasePtr(void *_ctx) {
- free(_ctx);
- return 0;
-}
-FILE *useFunOpen() {
- void *ctx = malloc(sizeof(int));
- FILE *f = funopen(ctx, 0, 0, 0, releasePtr); // no warning
- if (f == 0) {
- free(ctx);
- }
- return f;
-}
-FILE *useFunOpenNoReleaseFunction() {
- void *ctx = malloc(sizeof(int));
- FILE *f = funopen(ctx, 0, 0, 0, 0);
- if (f == 0) {
- free(ctx);
- }
- return f; // expected-warning{{leak}}
-}
-
-static int readNothing(void *_ctx, char *buf, int size) {
- return 0;
-}
-FILE *useFunOpenReadNoRelease() {
- void *ctx = malloc(sizeof(int));
- FILE *f = funopen(ctx, readNothing, 0, 0, 0);
- if (f == 0) {
- free(ctx);
- }
- return f; // expected-warning{{leak}}
-}
-
-// Test setbuf, setvbuf.
-int my_main_no_warning() {
- char *p = malloc(100);
- setvbuf(stdout, p, 0, 100);
- return 0;
-}
-int my_main_no_warning2() {
- char *p = malloc(100);
- setbuf(__stdoutp, p);
- return 0;
-}
-int my_main_warn(FILE *f) {
- char *p = malloc(100);
- setvbuf(f, p, 0, 100);
- return 0;// expected-warning {{leak}}
-}
-
-// <rdar://problem/10978247>.
-// some people use stack allocated memory as an optimization to avoid
-// a heap allocation for small work sizes. This tests the analyzer's
-// understanding that the malloc'ed memory is not the same as stackBuffer.
-void radar10978247(int myValueSize) {
- char stackBuffer[128];
- char *buffer;
-
- if (myValueSize <= sizeof(stackBuffer))
- buffer = stackBuffer;
- else
- buffer = malloc(myValueSize);
-
- // do stuff with the buffer
- if (buffer != stackBuffer)
- free(buffer);
-}
-
-void radar10978247_positive(int myValueSize) {
- char stackBuffer[128];
- char *buffer;
-
- if (myValueSize <= sizeof(stackBuffer))
- buffer = stackBuffer;
- else
- buffer = malloc(myValueSize);
-
- // do stuff with the buffer
- if (buffer == stackBuffer)
- return;
- else
- return; // expected-warning {{leak}}
-}
-// <rdar://problem/11269741> Previously this triggered a false positive
-// because malloc() is known to return uninitialized memory and the binding
-// of 'o' to 'p->n' was not getting propertly handled. Now we report a leak.
-struct rdar11269741_a_t {
- struct rdar11269741_b_t {
- int m;
- } n;
-};
-
-int rdar11269741(struct rdar11269741_b_t o)
-{
- struct rdar11269741_a_t *p = (struct rdar11269741_a_t *) malloc(sizeof(*p));
- p->n = o;
- return p->n.m; // expected-warning {{leak}}
-}
-
-// Pointer arithmetic, returning an ElementRegion.
-void *radar11329382(unsigned bl) {
- void *ptr = malloc (16);
- ptr = ptr + (2 - bl);
- return ptr; // no warning
-}
-
-void __assert_rtn(const char *, const char *, int, const char *) __attribute__((__noreturn__));
-int strcmp(const char *, const char *);
-char *a (void);
-void radar11270219(void) {
- char *x = a(), *y = a();
- (__builtin_expect(!(x && y), 0) ? __assert_rtn(__func__, "/Users/zaks/tmp/ex.c", 24, "x && y") : (void)0);
- strcmp(x, y); // no warning
-}
-
-void radar_11358224_test_double_assign_ints_positive_2()
-{
- void *ptr = malloc(16);
- ptr = ptr;
-} // expected-warning {{leak}}
-
-// Assume that functions which take a function pointer can free memory even if
-// they are defined in system headers and take the const pointer to the
-// allocated memory. (radar://11160612)
-int const_ptr_and_callback(int, const char*, int n, void(*)(void*));
-void r11160612_1() {
- char *x = malloc(12);
- const_ptr_and_callback(0, x, 12, free); // no - warning
-}
-
-// Null is passed as callback.
-void r11160612_2() {
- char *x = malloc(12);
- const_ptr_and_callback(0, x, 12, 0);
-} // expected-warning {{leak}}
-
-// Callback is passed to a function defined in a system header.
-void r11160612_4() {
- char *x = malloc(12);
- sqlite3_bind_text_my(0, x, 12, free); // no - warning
-}
-
-// Passing callbacks in a struct.
-void r11160612_5(StWithCallback St) {
- void *x = malloc(12);
- dealocateMemWhenDoneByVal(x, St);
-}
-void r11160612_6(StWithCallback St) {
- void *x = malloc(12);
- dealocateMemWhenDoneByRef(&St, x);
-}
-
-int mySub(int, int);
-int myAdd(int, int);
-int fPtr(unsigned cond, int x) {
- return (cond ? mySub : myAdd)(x, x);
-}
-
-// Test anti-aliasing.
-
-void dependsOnValueOfPtr(int *g, unsigned f) {
- int *p;
-
- if (f) {
- p = g;
- } else {
- p = malloc(12);
- }
-
- if (p != g)
- free(p);
- else
- return; // no warning
- return;
-}
-
-int CMPRegionHeapToStack() {
- int x = 0;
- int *x1 = malloc(8);
- int *x2 = &x;
- clang_analyzer_eval(x1 == x2); // expected-warning{{FALSE}}
- free(x1);
- return x;
-}
-
-int CMPRegionHeapToHeap2() {
- int x = 0;
- int *x1 = malloc(8);
- int *x2 = malloc(8);
- int *x4 = x1;
- int *x5 = x2;
- clang_analyzer_eval(x4 == x5); // expected-warning{{FALSE}}
- free(x1);
- free(x2);
- return x;
-}
-
-int CMPRegionHeapToHeap() {
- int x = 0;
- int *x1 = malloc(8);
- int *x4 = x1;
- if (x1 == x4) {
- free(x1);
- return 5/x; // expected-warning{{Division by zero}}
- }
- return x;// expected-warning{{This statement is never executed}}
-}
-
-int HeapAssignment() {
- int m = 0;
- int *x = malloc(4);
- int *y = x;
- *x = 5;
- clang_analyzer_eval(*x != *y); // expected-warning{{FALSE}}
- free(x);
- return 0;
-}
-
-int *retPtr();
-int *retPtrMightAlias(int *x);
-int cmpHeapAllocationToUnknown() {
- int zero = 0;
- int *yBefore = retPtr();
- int *m = malloc(8);
- int *yAfter = retPtrMightAlias(m);
- clang_analyzer_eval(yBefore == m); // expected-warning{{FALSE}}
- clang_analyzer_eval(yAfter == m); // expected-warning{{FALSE}}
- free(m);
- return 0;
-}
-
-void localArrayTest() {
- char *p = (char*)malloc(12);
- char *ArrayL[12];
- ArrayL[0] = p;
-} // expected-warning {{leak}}
-
-void localStructTest() {
- StructWithPtr St;
- StructWithPtr *pSt = &St;
- pSt->memP = malloc(12);
-} // expected-warning{{Potential leak of memory pointed to by}}
-
-#ifdef __INTPTR_TYPE__
-// Test double assignment through integers.
-typedef __INTPTR_TYPE__ intptr_t;
-typedef unsigned __INTPTR_TYPE__ uintptr_t;
-
-static intptr_t glob;
-void test_double_assign_ints()
-{
- void *ptr = malloc (16); // no-warning
- glob = (intptr_t)(uintptr_t)ptr;
-}
-
-void test_double_assign_ints_positive()
-{
- void *ptr = malloc(16);
- (void*)(intptr_t)(uintptr_t)ptr; // expected-warning {{unused}}
-} // expected-warning {{leak}}
-#endif
-
-void testCGContextNoLeak()
-{
- void *ptr = malloc(16);
- CGContextRef context = CGBitmapContextCreate(ptr);
-
- // Because you can get the data back out like this, even much later,
- // CGBitmapContextCreate is one of our "stop-tracking" exceptions.
- free(CGBitmapContextGetData(context));
-}
-
-void testCGContextLeak()
-{
- void *ptr = malloc(16);
- CGContextRef context = CGBitmapContextCreate(ptr);
- // However, this time we're just leaking the data, because the context
- // object doesn't escape and it hasn't been freed in this function.
-}
-
-// Allow xpc context to escape. radar://11635258
-// TODO: Would be great if we checked that the finalize_connection_context actually releases it.
-static void finalize_connection_context(void *ctx) {
- int *context = ctx;
- free(context);
-}
-void foo (xpc_connection_t peer) {
- int *ctx = calloc(1, sizeof(int));
- xpc_connection_set_context(peer, ctx);
- xpc_connection_set_finalizer_f(peer, finalize_connection_context);
- xpc_connection_resume(peer);
-}
-
-// Make sure we catch errors when we free in a function which does not allocate memory.
-void freeButNoMalloc(int *p, int x){
- if (x) {
- free(p);
- //user forgot a return here.
- }
- free(p); // expected-warning {{Attempt to free released memory}}
-}
-
-struct HasPtr {
- char *p;
-};
-
-char* reallocButNoMalloc(struct HasPtr *a, int c, int size) {
- int *s;
- char *b = realloc(a->p, size);
- char *m = realloc(a->p, size); // expected-warning {{Attempt to free released memory}}
- // We don't expect a use-after-free for a->P here because the warning above
- // is a sink.
- return a->p; // no-warning
-}
-
-// We should not warn in this case since the caller will presumably free a->p in all cases.
-int reallocButNoMallocPR13674(struct HasPtr *a, int c, int size) {
- int *s;
- char *b = realloc(a->p, size);
- if (b == 0)
- return -1;
- a->p = b;
- return 0;
-}
-
-// Test realloc with no visible malloc.
-void *test(void *ptr) {
- void *newPtr = realloc(ptr, 4);
- if (newPtr == 0) {
- if (ptr)
- free(ptr); // no-warning
- }
- return newPtr;
-}
-
-
-char *testLeakWithinReturn(char *str) {
- return strdup(strdup(str)); // expected-warning{{leak}}
-}
-
-char *testWinLeakWithinReturn(char *str) {
- return _strdup(_strdup(str)); // expected-warning{{leak}}
-}
-
-wchar_t *testWinWideLeakWithinReturn(wchar_t *str) {
- return _wcsdup(_wcsdup(str)); // expected-warning{{leak}}
-}
-
-void passConstPtr(const char * ptr);
-
-void testPassConstPointer() {
- char * string = malloc(sizeof(char)*10);
- passConstPtr(string);
- return; // expected-warning {{leak}}
-}
-
-void testPassConstPointerIndirectly() {
- char *p = malloc(1);
- p++;
- memcmp(p, p, sizeof(&p));
- return; // expected-warning {{leak}}
-}
-
-void testPassConstPointerIndirectlyStruct() {
- struct HasPtr hp;
- hp.p = malloc(10);
- memcmp(&hp, &hp, sizeof(hp));
- return; // expected-warning {{Potential leak of memory pointed to by 'hp.p'}}
-}
-
-void testPassToSystemHeaderFunctionIndirectlyStruct() {
- SomeStruct ss;
- ss.p = malloc(1);
- fakeSystemHeaderCall(&ss); // invalidates ss, making ss.p unreachable
- // Technically a false negative here -- we know the system function won't free
- // ss.p, but nothing else will either!
-} // no-warning
-
-void testPassToSystemHeaderFunctionIndirectlyStructFree() {
- SomeStruct ss;
- ss.p = malloc(1);
- fakeSystemHeaderCall(&ss); // invalidates ss, making ss.p unreachable
- free(ss.p);
-} // no-warning
-
-void testPassToSystemHeaderFunctionIndirectlyArray() {
- int *p[1];
- p[0] = malloc(sizeof(int));
- fakeSystemHeaderCallIntPtr(p); // invalidates p, making p[0] unreachable
- // Technically a false negative here -- we know the system function won't free
- // p[0], but nothing else will either!
-} // no-warning
-
-void testPassToSystemHeaderFunctionIndirectlyArrayFree() {
- int *p[1];
- p[0] = malloc(sizeof(int));
- fakeSystemHeaderCallIntPtr(p); // invalidates p, making p[0] unreachable
- free(p[0]);
-} // no-warning
-
-int *testOffsetAllocate(size_t size) {
- int *memoryBlock = (int *)malloc(size + sizeof(int));
- return &memoryBlock[1]; // no-warning
-}
-
-void testOffsetDeallocate(int *memoryBlock) {
- free(&memoryBlock[-1]); // no-warning
-}
-
-void testOffsetOfRegionFreed() {
- __int64_t * array = malloc(sizeof(__int64_t)*2);
- array += 1;
- free(&array[0]); // expected-warning{{Argument to free() is offset by 8 bytes from the start of memory allocated by malloc()}}
-}
-
-void testOffsetOfRegionFreed2() {
- __int64_t *p = malloc(sizeof(__int64_t)*2);
- p += 1;
- free(p); // expected-warning{{Argument to free() is offset by 8 bytes from the start of memory allocated by malloc()}}
-}
-
-void testOffsetOfRegionFreed3() {
- char *r = malloc(sizeof(char));
- r = r - 10;
- free(r); // expected-warning {{Argument to free() is offset by -10 bytes from the start of memory allocated by malloc()}}
-}
-
-void testOffsetOfRegionFreedAfterFunctionCall() {
- int *p = malloc(sizeof(int)*2);
- p += 1;
- myfoo(p);
- free(p); // expected-warning{{Argument to free() is offset by 4 bytes from the start of memory allocated by malloc()}}
-}
-
-void testFixManipulatedPointerBeforeFree() {
- int * array = malloc(sizeof(int)*2);
- array += 1;
- free(&array[-1]); // no-warning
-}
-
-void testFixManipulatedPointerBeforeFree2() {
- char *r = malloc(sizeof(char));
- r = r + 10;
- free(r-10); // no-warning
-}
-
-void freeOffsetPointerPassedToFunction() {
- __int64_t *p = malloc(sizeof(__int64_t)*2);
- p[1] = 0;
- p += 1;
- myfooint(*p); // not passing the pointer, only a value pointed by pointer
- free(p); // expected-warning {{Argument to free() is offset by 8 bytes from the start of memory allocated by malloc()}}
-}
-
-int arbitraryInt();
-void freeUnknownOffsetPointer() {
- char *r = malloc(sizeof(char));
- r = r + arbitraryInt(); // unable to reason about what the offset might be
- free(r); // no-warning
-}
-
-void testFreeNonMallocPointerWithNoOffset() {
- char c;
- char *r = &c;
- r = r + 10;
- free(r-10); // expected-warning {{Argument to free() is the address of the local variable 'c', which is not memory allocated by malloc()}}
-}
-
-void testFreeNonMallocPointerWithOffset() {
- char c;
- char *r = &c;
- free(r+1); // expected-warning {{Argument to free() is the address of the local variable 'c', which is not memory allocated by malloc()}}
-}
-
-void testOffsetZeroDoubleFree() {
- int *array = malloc(sizeof(int)*2);
- int *p = &array[0];
- free(p);
- free(&array[0]); // expected-warning{{Attempt to free released memory}}
-}
-
-void testOffsetPassedToStrlen() {
- char * string = malloc(sizeof(char)*10);
- string += 1;
- int length = strlen(string); // expected-warning {{Potential leak of memory pointed to by 'string'}}
-}
-
-void testOffsetPassedToStrlenThenFree() {
- char * string = malloc(sizeof(char)*10);
- string += 1;
- int length = strlen(string);
- free(string); // expected-warning {{Argument to free() is offset by 1 byte from the start of memory allocated by malloc()}}
-}
-
-void testOffsetPassedAsConst() {
- char * string = malloc(sizeof(char)*10);
- string += 1;
- passConstPtr(string);
- free(string); // expected-warning {{Argument to free() is offset by 1 byte from the start of memory allocated by malloc()}}
-}
-
-char **_vectorSegments;
-int _nVectorSegments;
-
-void poolFreeC(void* s) {
- free(s); // no-warning
-}
-void freeMemory() {
- while (_nVectorSegments) {
- poolFreeC(_vectorSegments[_nVectorSegments++]);
- }
-}
-
-// PR16730
-void testReallocEscaped(void **memory) {
- *memory = malloc(47);
- char *new_memory = realloc(*memory, 47);
- if (new_memory != 0) {
- *memory = new_memory;
- }
-}
-
-// PR16558
-void *smallocNoWarn(size_t size) {
- if (size == 0) {
- return malloc(1); // this branch is never called
- }
- else {
- return malloc(size);
- }
-}
-
-char *dupstrNoWarn(const char *s) {
- const int len = strlen(s);
- char *p = (char*) smallocNoWarn(len + 1);
- strcpy(p, s); // no-warning
- return p;
-}
-
-void *smallocWarn(size_t size) {
- if (size == 2) {
- return malloc(1);
- }
- else {
- return malloc(size);
- }
-}
-
-int *radar15580979() {
- int *data = (int *)malloc(32);
- int *p = data ?: (int*)malloc(32); // no warning
- return p;
-}
-
-// Some data structures may hold onto the pointer and free it later.
-void testEscapeThroughSystemCallTakingVoidPointer1(void *queue) {
- int *data = (int *)malloc(32);
- fake_insque(queue, data); // no warning
-}
-
-void testEscapeThroughSystemCallTakingVoidPointer2(fake_rb_tree_t *rbt) {
- int *data = (int *)malloc(32);
- fake_rb_tree_init(rbt, data);
-} //expected-warning{{Potential leak}}
-
-void testEscapeThroughSystemCallTakingVoidPointer3(fake_rb_tree_t *rbt) {
- int *data = (int *)malloc(32);
- fake_rb_tree_init(rbt, data);
- fake_rb_tree_insert_node(rbt, data); // no warning
-}
-
-struct IntAndPtr {
- int x;
- int *p;
-};
-
-void constEscape(const void *ptr);
-
-void testConstEscapeThroughAnotherField() {
- struct IntAndPtr s;
- s.p = malloc(sizeof(int));
- constEscape(&(s.x)); // could free s->p!
-} // no-warning
-
-// PR15623
-int testNoCheckerDataPropogationFromLogicalOpOperandToOpResult(void) {
- char *param = malloc(10);
- char *value = malloc(10);
- int ok = (param && value);
- free(param);
- free(value);
- // Previously we ended up with 'Use of memory after it is freed' on return.
- return ok; // no warning
-}
-
-void (*fnptr)(int);
-void freeIndirectFunctionPtr() {
- void *p = (void *)fnptr;
- free(p); // expected-warning {{Argument to free() is a function pointer}}
-}
-
-void freeFunctionPtr() {
- free((void *)fnptr); // expected-warning {{Argument to free() is a function pointer}}
-}
-
-void allocateSomeMemory(void *offendingParameter, void **ptr) {
- *ptr = malloc(1);
-}
-
-void testNoCrashOnOffendingParameter() {
- // "extern" is necessary to avoid unrelated warnings
- // on passing uninitialized value.
- extern void *offendingParameter;
- void* ptr;
- allocateSomeMemory(offendingParameter, &ptr);
-} // expected-warning {{Potential leak of memory pointed to by 'ptr'}}
-
-// ----------------------------------------------------------------------------
-// False negatives.
-
-void testMallocWithParam(int **p) {
- *p = (int*) malloc(sizeof(int));
- *p = 0; // FIXME: should warn here
-}
-
-void testMallocWithParam_2(int **p) {
- *p = (int*) malloc(sizeof(int)); // no-warning
-}
-
-void testPassToSystemHeaderFunctionIndirectly() {
- int *p = malloc(4);
- p++;
- fakeSystemHeaderCallInt(p);
- // FIXME: This is a leak: if we think a system function won't free p, it
- // won't free (p-1) either.
-}
-
-void testMallocIntoMalloc() {
- StructWithPtr *s = malloc(sizeof(StructWithPtr));
- s->memP = malloc(sizeof(int));
- free(s);
-} // FIXME: should warn here
diff --git a/test/Analysis/malloc.cpp b/test/Analysis/malloc.cpp
deleted file mode 100644
index b93c73e591cd..000000000000
--- a/test/Analysis/malloc.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core,alpha.deadcode.UnreachableCode,alpha.core.CastSize,unix.Malloc,cplusplus.NewDelete -analyzer-store=region -verify %s
-// RUN: %clang_analyze_cc1 -triple i386-unknown-linux-gnu -w -analyzer-checker=core,alpha.deadcode.UnreachableCode,alpha.core.CastSize,unix.Malloc,cplusplus.NewDelete -analyzer-store=region -verify %s
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core,alpha.deadcode.UnreachableCode,alpha.core.CastSize,unix.Malloc,cplusplus.NewDelete -analyzer-store=region -DTEST_INLINABLE_ALLOCATORS -verify %s
-// RUN: %clang_analyze_cc1 -triple i386-unknown-linux-gnu -w -analyzer-checker=core,alpha.deadcode.UnreachableCode,alpha.core.CastSize,unix.Malloc,cplusplus.NewDelete -analyzer-store=region -DTEST_INLINABLE_ALLOCATORS -verify %s
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-void *realloc(void *ptr, size_t size);
-void *calloc(size_t nmemb, size_t size);
-char *strdup(const char *s);
-
-void checkThatMallocCheckerIsRunning() {
- malloc(4);
-} // expected-warning{{leak}}
-
-// Test for radar://11110132.
-struct Foo {
- mutable void* m_data;
- Foo(void* data) : m_data(data) {}
-};
-Foo aFunction() {
- return malloc(10);
-}
-
-// Assume that functions which take a function pointer can free memory even if
-// they are defined in system headers and take the const pointer to the
-// allocated memory. (radar://11160612)
-// Test default parameter.
-int const_ptr_and_callback_def_param(int, const char*, int n, void(*)(void*) = free);
-void r11160612_3() {
- char *x = (char*)malloc(12);
- const_ptr_and_callback_def_param(0, x, 12);
-}
-
-int const_ptr_and_callback_def_param_null(int, const char*, int n, void(*)(void*) = 0);
-void r11160612_no_callback() {
- char *x = (char*)malloc(12);
- const_ptr_and_callback_def_param_null(0, x, 12);
-} // expected-warning{{leak}}
-
-// Test member function pointer.
-struct CanFreeMemory {
- static void myFree(void*);
-};
-//This is handled because we look at the type of the parameter(not argument).
-void r11160612_3(CanFreeMemory* p) {
- char *x = (char*)malloc(12);
- const_ptr_and_callback_def_param(0, x, 12, p->myFree);
-}
-
-
-namespace PR13751 {
- class OwningVector {
- void **storage;
- size_t length;
- public:
- OwningVector();
- ~OwningVector();
- void push_back(void *Item) {
- storage[length++] = Item;
- }
- };
-
- void testDestructors() {
- OwningVector v;
- v.push_back(malloc(4));
- // no leak warning; freed in destructor
- }
-}
-
-struct X { void *a; };
-
-struct X get() {
- struct X result;
- result.a = malloc(4);
- return result; // no-warning
-}
-
-// Ensure that regions accessible through a LazyCompoundVal trigger region escape.
-// Malloc checker used to report leaks for the following two test cases.
-struct Property {
- char* getterName;
- Property(char* n)
- : getterName(n) {}
-
-};
-void append(Property x);
-
-void appendWrapper(char *getterName) {
- append(Property(getterName));
-}
-void foo(const char* name) {
- char* getterName = strdup(name);
- appendWrapper(getterName); // no-warning
-}
-
-struct NestedProperty {
- Property prop;
- NestedProperty(Property p)
- : prop(p) {}
-};
-void appendNested(NestedProperty x);
-
-void appendWrapperNested(char *getterName) {
- appendNested(NestedProperty(Property(getterName)));
-}
-void fooNested(const char* name) {
- char* getterName = strdup(name);
- appendWrapperNested(getterName); // no-warning
-}
-
-namespace PR31226 {
- struct b2 {
- int f;
- };
-
- struct b1 : virtual b2 {
- void m();
- };
-
- struct d : b1, b2 {
- };
-
- void f() {
- d *p = new d();
- p->m(); // no-crash // no-warning
- }
-}
-
-// Allow __cxa_demangle to escape.
-char* test_cxa_demangle(const char* sym) {
- size_t funcnamesize = 256;
- char* funcname = (char*)malloc(funcnamesize);
- int status;
- char* ret = abi::__cxa_demangle(sym, funcname, &funcnamesize, &status);
- if (status == 0) {
- funcname = ret;
- }
- return funcname; // no-warning
-}
diff --git a/test/Analysis/malloc.m b/test/Analysis/malloc.m
deleted file mode 100644
index 1f67daba55ec..000000000000
--- a/test/Analysis/malloc.m
+++ /dev/null
@@ -1,57 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc -analyzer-store=region -verify -Wno-objc-root-class -fblocks %s
-#include "Inputs/system-header-simulator-objc.h"
-
-@class NSString;
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-// RDar10579586 - Test use of malloc() with Objective-C string literal as a
-// test condition. Not really a malloc() issue, but this also exercises
-// the check that malloc() returns uninitialized memory.
-@interface RDar10579586
-struct rdar0579586_str {
- char str_c;
-};
-@end
-
-void rdar10579586(char x);
-
-@implementation RDar10579586
-+ (NSString *)foobar
-{
- struct rdar0579586_str *buffer = ((void*)0);
- NSString *error = ((void*)0);
-
- if ((buffer = malloc(sizeof(struct rdar0579586_str))) == ((void*)0))
- error = @"buffer allocation failure";
-
- if (error != ((void*)0))
- return error;
-
- rdar10579586(buffer->str_c); // expected-warning {{1st function call argument is an uninitialized value}}
- free(buffer);
- return ((void*)0);
-}
-@end
-
-@interface MyArray : NSObject {
- id * objects;
-}
-@end
-
-void _ArrayCreate() {
- MyArray *array = (MyArray *)malloc(12);
- array = [array init];
- free(array); // no-warning
-}
-
-void testNSDataTruePositiveLeak() {
- char *b = (char *)malloc(12);
- NSData *d = [[NSData alloc] initWithBytes: b length: 12]; // expected-warning {{Potential leak of memory pointed to by 'b'}}
-}
-
-id wrapInNSValue() {
- void *buffer = malloc(4);
- return [NSValue valueWithPointer:buffer]; // no-warning
-} \ No newline at end of file
diff --git a/test/Analysis/malloc.mm b/test/Analysis/malloc.mm
deleted file mode 100644
index d7bfbf3f34f3..000000000000
--- a/test/Analysis/malloc.mm
+++ /dev/null
@@ -1,332 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc -analyzer-store=region -verify -fblocks %s
-#import "Inputs/system-header-simulator-objc.h"
-#import "Inputs/system-header-simulator-for-malloc.h"
-
-// Done with headers. Start testing.
-void testNSDatafFreeWhenDoneNoError(NSUInteger dataLength) {
- unsigned char *data = (unsigned char *)malloc(42);
- NSData *nsdata = [NSData dataWithBytesNoCopy:data length:dataLength];
-}
-
-void testNSDataFreeWhenDoneYES(NSUInteger dataLength) {
- unsigned char *data = (unsigned char *)malloc(42);
- NSData *nsdata = [NSData dataWithBytesNoCopy:data length:dataLength freeWhenDone:1]; // no-warning
-}
-
-void testNSDataFreeWhenDoneYES2(NSUInteger dataLength) {
- unsigned char *data = (unsigned char *)malloc(42);
- NSData *nsdata = [[NSData alloc] initWithBytesNoCopy:data length:dataLength freeWhenDone:1]; // no-warning
-}
-
-void testNSDataFreeWhenDoneYES2_with_wrapper(NSUInteger dataLength) {
- unsigned char *data = (unsigned char *)malloc(42);
- Wrapper *nsdata = [[Wrapper alloc] initWithBytesNoCopy:data length:dataLength]; // no-warning
-}
-
-void testNSStringFreeWhenDoneYES3(NSUInteger dataLength) {
- unsigned char *data = (unsigned char *)malloc(42);
- NSString *nsstr = [[NSString alloc] initWithBytesNoCopy:data length:dataLength encoding:NSUTF8StringEncoding freeWhenDone:1];
-}
-
-void testNSStringFreeWhenDoneYES4(NSUInteger dataLength) {
- unichar *data = (unichar*)malloc(42);
- NSString *nsstr = [[NSString alloc] initWithCharactersNoCopy:data length:dataLength freeWhenDone:1];
- free(data); //expected-warning {{Attempt to free non-owned memory}}
-}
-
-void testNSStringFreeWhenDoneYES(NSUInteger dataLength) {
- unsigned char *data = (unsigned char *)malloc(42);
- NSString *nsstr = [[NSString alloc] initWithBytesNoCopy:data length:dataLength encoding:NSUTF8StringEncoding freeWhenDone:1]; // no-warning
-}
-
-void testNSStringFreeWhenDoneYES2(NSUInteger dataLength) {
- unichar *data = (unichar*)malloc(42);
- NSString *nsstr = [[NSString alloc] initWithCharactersNoCopy:data length:dataLength freeWhenDone:1]; // no-warning
-}
-
-
-void testNSDataFreeWhenDoneNO(NSUInteger dataLength) {
- unsigned char *data = (unsigned char *)malloc(42);
- NSData *nsdata = [NSData dataWithBytesNoCopy:data length:dataLength freeWhenDone:0]; // expected-warning{{leak}}
-}
-
-void testNSDataFreeWhenDoneNO2(NSUInteger dataLength) {
- unsigned char *data = (unsigned char *)malloc(42);
- NSData *nsdata = [[NSData alloc] initWithBytesNoCopy:data length:dataLength freeWhenDone:0]; // expected-warning{{leak}}
-}
-
-
-void testNSStringFreeWhenDoneNO(NSUInteger dataLength) {
- unsigned char *data = (unsigned char *)malloc(42);
- NSString *nsstr = [[NSString alloc] initWithBytesNoCopy:data length:dataLength encoding:NSUTF8StringEncoding freeWhenDone:0]; // expected-warning{{leak}}
-}
-
-void testNSStringFreeWhenDoneNO2(NSUInteger dataLength) {
- unichar *data = (unichar*)malloc(42);
- NSString *nsstr = [[NSString alloc] initWithCharactersNoCopy:data length:dataLength freeWhenDone:0]; // expected-warning{{leak}}
-}
-
-void testOffsetFree() {
- int *p = (int *)malloc(sizeof(int));
- NSData *nsdata = [NSData dataWithBytesNoCopy:++p length:sizeof(int) freeWhenDone:1]; // expected-warning{{Argument to +dataWithBytesNoCopy:length:freeWhenDone: is offset by 4 bytes from the start of memory allocated by malloc()}}
-}
-
-void testRelinquished1() {
- void *data = malloc(42);
- NSData *nsdata = [NSData dataWithBytesNoCopy:data length:42 freeWhenDone:1];
- free(data); // expected-warning {{Attempt to free non-owned memory}}
-}
-
-void testRelinquished2() {
- void *data = malloc(42);
- NSData *nsdata;
- free(data);
- [NSData dataWithBytesNoCopy:data length:42]; // expected-warning {{Use of memory after it is freed}}
-}
-
-@interface My
-+ (void)param:(void *)p;
-@end
-
-void testUseAfterFree() {
- int *p = (int *)malloc(sizeof(int));
- free(p);
- [My param:p]; // expected-warning{{Use of memory after it is freed}}
-}
-
-void testNoCopy() {
- char *p = (char *)calloc(sizeof(int), 1);
- CustomData *w = [CustomData somethingNoCopy:p]; // no-warning
-}
-
-void testFreeWhenDone() {
- char *p = (char *)calloc(sizeof(int), 1);
- CustomData *w = [CustomData something:p freeWhenDone:1]; // no-warning
-}
-
-void testFreeWhenDonePositive() {
- char *p = (char *)calloc(sizeof(int), 1);
- CustomData *w = [CustomData something:p freeWhenDone:0]; // expected-warning{{leak}}
-}
-
-void testFreeWhenDoneNoCopy() {
- int *p = (int *)malloc(sizeof(int));
- CustomData *w = [CustomData somethingNoCopy:p length:sizeof(int) freeWhenDone:1]; // no-warning
-}
-
-void testFreeWhenDoneNoCopyPositive() {
- int *p = (int *)malloc(sizeof(int));
- CustomData *w = [CustomData somethingNoCopy:p length:sizeof(int) freeWhenDone:0]; // expected-warning{{leak}}
-}
-
-// Test CF/NS...NoCopy. PR12100: Pointers can escape when custom deallocators are provided.
-void testNSDatafFreeWhenDone(NSUInteger dataLength) {
- CFStringRef str;
- char *bytes = (char*)malloc(12);
- str = CFStringCreateWithCStringNoCopy(0, bytes, NSNEXTSTEPStringEncoding, 0); // no warning
- CFRelease(str); // default allocator also frees bytes
-}
-
-void stringWithExternalContentsExample(void) {
-#define BufferSize 1000
- CFMutableStringRef mutStr;
- UniChar *myBuffer;
-
- myBuffer = (UniChar *)malloc(BufferSize * sizeof(UniChar));
-
- mutStr = CFStringCreateMutableWithExternalCharactersNoCopy(0, myBuffer, 0, BufferSize, kCFAllocatorNull); // expected-warning{{leak}}
-
- CFRelease(mutStr);
- //free(myBuffer);
-}
-
-// PR12101 : pointers can escape through custom deallocators set on creation of a container.
-void TestCallbackReleasesMemory(CFDictionaryKeyCallBacks keyCallbacks) {
- void *key = malloc(12);
- void *val = malloc(12);
- CFMutableDictionaryRef x = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &keyCallbacks, &kCFTypeDictionaryValueCallBacks);
- CFDictionarySetValue(x, key, val);
- return;// no-warning
-}
-
-NSData *radar10976702() {
- void *bytes = malloc(10);
- return [NSData dataWithBytesNoCopy:bytes length:10]; // no-warning
-}
-
-void testBlocks() {
- int *x= (int*)malloc(sizeof(int));
- int (^myBlock)(int) = ^(int num) {
- free(x);
- return num;
- };
- myBlock(3);
-}
-
-// Test NSMapInsert.
-@interface NSMapTable : NSObject <NSCopying, NSCoding, NSFastEnumeration>
-@end
-extern void *NSMapGet(NSMapTable *table, const void *key);
-extern void NSMapInsert(NSMapTable *table, const void *key, const void *value);
-extern void NSMapInsertKnownAbsent(NSMapTable *table, const void *key, const void *value);
-char *strdup(const char *s);
-
-NSString * radar11152419(NSString *string1, NSMapTable *map) {
- const char *strkey = "key";
- NSString *string = ( NSString *)NSMapGet(map, strkey);
- if (!string) {
- string = [string1 copy];
- NSMapInsert(map, strdup(strkey), (void*)string); // no warning
- NSMapInsertKnownAbsent(map, strdup(strkey), (void*)string); // no warning
- }
- return string;
-}
-
-// Test that we handle pointer escaping through OSAtomicEnqueue.
-typedef volatile struct {
- void *opaque1;
- long opaque2;
-} OSQueueHead;
-extern "C" void OSAtomicEnqueue( OSQueueHead *__list, void *__new, size_t __offset) __attribute__((weak_import));
-static inline void radar11111210(OSQueueHead *pool) {
- void *newItem = malloc(4);
- OSAtomicEnqueue(pool, newItem, 4);
-}
-
-// Pointer might escape through CGDataProviderCreateWithData (radar://11187558).
-typedef struct CGDataProvider *CGDataProviderRef;
-typedef void (*CGDataProviderReleaseDataCallback)(void *info, const void *data,
- size_t size);
-extern CGDataProviderRef CGDataProviderCreateWithData(void *info,
- const void *data, size_t size,
- CGDataProviderReleaseDataCallback releaseData)
- __attribute__((visibility("default")));
-void *calloc(size_t, size_t);
-
-static void releaseDataCallback (void *info, const void *data, size_t size) {
-#pragma unused (info, size)
- free((void*)data);
-}
-void testCGDataProviderCreateWithData() {
- void* b = calloc(8, 8);
- CGDataProviderRef p = CGDataProviderCreateWithData(0, b, 8*8, releaseDataCallback);
-}
-
-// Assume that functions which take a function pointer can free memory even if
-// they are defined in system headers and take the const pointer to the
-// allocated memory. (radar://11160612)
-extern CGDataProviderRef UnknownFunWithCallback(void *info,
- const void *data, size_t size,
- CGDataProviderReleaseDataCallback releaseData)
- __attribute__((visibility("default")));
-void testUnknownFunWithCallBack() {
- void* b = calloc(8, 8);
- CGDataProviderRef p = UnknownFunWithCallback(0, b, 8*8, releaseDataCallback);
-}
-
-// Test blocks.
-void acceptBlockParam(void *, void (^block)(void *), unsigned);
-void testCallWithBlockCallback() {
- void *l = malloc(12);
- acceptBlockParam(l, ^(void *i) { free(i); }, sizeof(char *));
-}
-
-// Test blocks in system headers.
-void testCallWithBlockCallbackInSystem() {
- void *l = malloc(12);
- SystemHeaderFunctionWithBlockParam(l, ^(void *i) { free(i); }, sizeof(char *));
-}
-
-// Test escape into NSPointerArray. radar://11691035, PR13140
-void foo(NSPointerArray* pointerArray) {
-
- void* p1 = malloc (1024);
- if (p1) {
- [pointerArray addPointer:p1];
- }
-
- void* p2 = malloc (1024);
- if (p2) {
- [pointerArray insertPointer:p2 atIndex:1];
- }
-
- void* p3 = malloc (1024);
- if (p3) {
- [pointerArray replacePointerAtIndex:1 withPointer:p3];
- }
-
- // Freeing the buffer is allowed.
- void* buffer = [pointerArray pointerAtIndex:0];
- free(buffer);
-}
-
-void noCrashOnVariableArgumentSelector() {
- NSMutableString *myString = [NSMutableString stringWithString:@"some text"];
- [myString appendFormat:@"some text = %d", 3];
-}
-
-void test12365078_check() {
- unichar *characters = (unichar*)malloc(12);
- NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
- if (!string) free(characters); // no-warning
-}
-
-void test12365078_nocheck() {
- unichar *characters = (unichar*)malloc(12);
- NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
-}
-
-void test12365078_false_negative() {
- unichar *characters = (unichar*)malloc(12);
- NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
- if (!string) {;}
-}
-
-void test12365078_no_malloc(unichar *characters) {
- NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
- if (!string) {free(characters);}
-}
-
-NSString *test12365078_no_malloc_returnValue(unichar *characters) {
- NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
- if (!string) {
- return 0; // no-warning
- }
- return string;
-}
-
-void test12365078_nocheck_nomalloc(unichar *characters) {
- NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
- free(characters); // expected-warning {{Attempt to free non-owned memory}}
-}
-
-void test12365078_nested(unichar *characters) {
- NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
- if (!string) {
- NSString *string2 = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
- if (!string2) {
- NSString *string3 = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
- if (!string3) {
- NSString *string4 = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
- if (!string4)
- free(characters);
- }
- }
- }
-}
-
-void test12365078_check_positive() {
- unichar *characters = (unichar*)malloc(12);
- NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
- if (string) free(characters); // expected-warning{{Attempt to free non-owned memory}}
-}
-
-void *test_reinterpret_cast_to_block() {
- // Used to leak because the pointer was disappearing
- // during the reinterpret_cast.
- using BlockPtrTy = void (^)();
- struct Block {};
- Block* block = static_cast<Block*>(malloc(sizeof(Block)));
- BlockPtrTy blockPtr = reinterpret_cast<BlockPtrTy>(block); // no-warning
- return blockPtr;
-}
diff --git a/test/Analysis/max-nodes-suppress-on-sink.c b/test/Analysis/max-nodes-suppress-on-sink.c
deleted file mode 100644
index da1e7bf02284..000000000000
--- a/test/Analysis/max-nodes-suppress-on-sink.c
+++ /dev/null
@@ -1,83 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config max-nodes=12 -verify %s
-
-// Here we test how "suppress on sink" feature of certain bugtypes interacts
-// with reaching analysis limits.
-
-// If we report a warning of a bug-type with "suppress on sink" attribute set
-// (such as MallocChecker's memory leak warning), then failing to reach the
-// reason for the sink (eg. no-return function such as "exit()") due to analysis
-// limits (eg. max-nodes option), we may produce a false positive.
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-
-extern void exit(int) __attribute__ ((__noreturn__));
-
-void clang_analyzer_warnIfReached(void);
-
-int coin();
-
-void test_single_cfg_block_sink() {
- void *p = malloc(1); // no-warning (wherever the leak warning may occur here)
-
- // Due to max-nodes option in the run line, we should reach the first call
- // but bail out before the second call.
- // If the test on these two lines starts failing, see if modifying
- // the max-nodes run-line helps.
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- clang_analyzer_warnIfReached(); // no-warning
-
- // Even though we do not reach this line, we should still suppress
- // the leak report.
- exit(0);
-}
-
-// A similar test with more complicated control flow before the no-return thing,
-// so that the no-return thing wasn't in the same CFG block.
-void test_more_complex_control_flow_before_sink() {
- void *p = malloc(1); // no-warning
-
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- clang_analyzer_warnIfReached(); // no-warning
-
- if (coin())
- exit(0);
- else
- exit(1);
-}
-
-// A loop before the no-return function, to make sure that
-// the dominated-by-sink analysis doesn't hang.
-void test_loop_before_sink(int n) {
- void *p = malloc(1); // no-warning
-
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- clang_analyzer_warnIfReached(); // no-warning
-
- for (int i = 0; i < n; ++i) {
- }
- exit(1);
-}
-
-// We're not sure if this is no-return.
-void test_loop_with_sink(int n) {
- void *p = malloc(1); // expected-warning@+2{{Potential leak of memory}}
-
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- clang_analyzer_warnIfReached(); // no-warning
-
- for (int i = 0; i < n; ++i)
- if (i == 0)
- exit(1);
-}
-
-// Handle unreachable blocks correctly.
-void test_unreachable_successor_blocks() {
- void *p = malloc(1); // no-warning
-
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- clang_analyzer_warnIfReached(); // no-warning
-
- if (1) // no-crash
- exit(1);
-}
diff --git a/test/Analysis/max-nodes-suppress-on-sink.cpp b/test/Analysis/max-nodes-suppress-on-sink.cpp
deleted file mode 100644
index 814b302789d9..000000000000
--- a/test/Analysis/max-nodes-suppress-on-sink.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// RUN: %clang_analyze_cc1 -x c++ -fcxx-exceptions -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config max-nodes=12 -verify %s
-
-// Here we test how "suppress on sink" feature of certain bugtypes interacts
-// with reaching analysis limits. See comments in max-nodes-suppress-on-sink.c
-// for more discussion.
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-
-void clang_analyzer_warnIfReached(void);
-
-// Because we don't have a better approach, we currently treat throw as
-// noreturn.
-void test_throw_treated_as_noreturn() {
- void *p = malloc(1); // no-warning
-
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- clang_analyzer_warnIfReached(); // no-warning
-
- throw 0;
-}
-
-// FIXME: Handled throws shouldn't be suppressing us!
-void test_handled_throw_treated_as_noreturn() {
- void *p = malloc(1); // no-warning
-
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- clang_analyzer_warnIfReached(); // no-warning
-
- try {
- throw 0;
- } catch (int i) {
- }
-}
diff --git a/test/Analysis/member-expr.cpp b/test/Analysis/member-expr.cpp
deleted file mode 100644
index 8fb6fe48f01c..000000000000
--- a/test/Analysis/member-expr.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++14 -analyzer-checker=core,debug.ExprInspection %s -verify
-
-void clang_analyzer_checkInlined(bool);
-void clang_analyzer_eval(int);
-
-namespace EnumsViaMemberExpr {
- struct Foo {
- enum E {
- Bar = 1
- };
- };
-
- void testEnumVal(Foo Baz) {
- clang_analyzer_eval(Baz.Bar == Foo::Bar); // expected-warning{{TRUE}}
- }
-
- void testEnumRef(Foo &Baz) {
- clang_analyzer_eval(Baz.Bar == Foo::Bar); // expected-warning{{TRUE}}
- }
-
- void testEnumPtr(Foo *Baz) {
- clang_analyzer_eval(Baz->Bar == Foo::Bar); // expected-warning{{TRUE}}
- }
-}
-
-namespace PR19531 {
- struct A {
- A() : x(0) {}
- bool h() const;
- int x;
- };
-
- struct B {
- void g(bool (A::*mp_f)() const) {
- // This used to trigger an assertion because the 'this' pointer is a
- // temporary.
- (A().*mp_f)();
- }
- void f() { g(&A::h); }
- };
-}
diff --git a/test/Analysis/method-arg-decay.m b/test/Analysis/method-arg-decay.m
deleted file mode 100644
index a222346861a5..000000000000
--- a/test/Analysis/method-arg-decay.m
+++ /dev/null
@@ -1,97 +0,0 @@
-// RUN: %clang_cc1 -analyzer-checker=core -verify %s -Wno-incomplete-implementation
-typedef signed char BOOL;
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject - (BOOL)isEqual:(id)object;
-@end @protocol NSCopying - (id)copyWithZone:(NSZone *)zone;
-@end @protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone;
-@end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
-@end @interface NSObject <NSObject> {
-}
-@end extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-@interface NSValue : NSObject <NSCopying, NSCoding> - (void)getValue:(void *)value;
-@end @class NSString, NSData, NSMutableData, NSMutableDictionary, NSMutableArray;
-typedef struct {
-}
- NSFastEnumerationState;
-@protocol NSFastEnumeration - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
-@end @class NSString;
-typedef struct _NSRange {
-}
- NSRange;
-@interface NSValue (NSValueRangeExtensions) + (NSValue *)valueWithRange:(NSRange)range;
-- (id)objectAtIndex:(NSUInteger)index;
-@end typedef unsigned short unichar;
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding> - (NSUInteger)length;
-@end @class NSArray, NSDictionary, NSString, NSError;
-@interface NSSet : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration> - (NSUInteger)count;
-@end extern NSString *NSAccessibilityRoleDescription(NSString *role, NSString *subrole) ;
-@interface NSResponder : NSObject <NSCoding> {
-}
-@end @protocol NSAnimatablePropertyContainer - (id)animator;
-@end extern NSString *NSAnimationTriggerOrderIn ;
-@interface NSView : NSResponder <NSAnimatablePropertyContainer> {
-}
-@end @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView;
-@interface NSWindowController : NSResponder <NSCoding> {
-}
-@end @class NSArray, NSFont, NSTabViewItem;
-@interface NSTabView : NSView {
-}
-- (NSArray *)tabViewItems;
-- (NSString *)label;
-@end typedef enum {
-PBXNoItemChanged = 0x00, PBXProjectItemChanged = 0x01, PBXReferenceChanged = 0x02, PBXGroupChanged = 0x04, PBXTargetChanged = 0x08, PBXBuildPhaseChanged = 0x10, PBXBuildFileChanged = 0x20, PBXBreakpointChanged = 0x40, }
- PBXArchiveMask;
-@interface PBXModule : NSWindowController {
-}
-@end typedef enum {
-PBXFindMatchContains, PBXFindMatchStartsWith, PBXFindMatchWholeWords, PBXFindMatchEndsWith }
- PBXFindMatchStyle;
-@protocol PBXSelectableText - (NSString *)selectedString;
-@end @protocol PBXFindableText <PBXSelectableText> - (BOOL)findText:(NSString *)string ignoreCase:(BOOL)ignoreCase matchStyle:(PBXFindMatchStyle)matchStyle backwards:(BOOL)backwards wrap:(BOOL)wrap;
-@end @class PBXProjectDocument, PBXProject, PBXAttributedStatusView;
-@interface PBXProjectModule : PBXModule <PBXFindableText> {
-}
-@end @class PBXBookmark;
-@protocol PBXSelectionTarget - (NSObject <PBXSelectionTarget> *) performAction:(id)action withSelection:(NSArray *)selection; // expected-note {{method 'performAction:withSelection:' declared here}}
-@end @class XCPropertyDictionary, XCPropertyCondition, XCPropertyConditionSet, XCMutablePropertyConditionSet;
-extern NSMutableArray *XCFindPossibleKeyModules(PBXModule *module, BOOL useExposedModulesOnly);
-@interface NSString (StringUtilities) - (NSString *) trimToLength:(NSInteger)length preserveRange:(NSRange)range;
-- (id) objectOfType:(Class)type matchingFunction:(BOOL (void *, void *))comparator usingData:(void *)data;
-@end @class XCControlView;
-@protocol XCDockViewHeader - (NSImage *) headerImage;
-@end @class XCDockableTabModule;
-@interface XCExtendedTabView : NSTabView <XCDockViewHeader> {
-}
-@end @class PBXProjectDocument, PBXFileReference, PBXModule, XCWindowTool;
-@interface XCPerspectiveModule : PBXProjectModule <PBXSelectionTarget> {
- XCExtendedTabView *_perspectivesTabView;
-}
-- (PBXModule *) moduleForTab:(NSTabViewItem *)item;
-@end
-@implementation XCPerspectiveModule // expected-warning {{method 'performAction:withSelection:' in protocol 'PBXSelectionTarget' not implemented}}}
-+ (void) openForProjectDocument:(PBXProjectDocument *)projectDocument {
-}
-- (PBXModule *) type:(Class)type inPerspective:(id)perspectiveIdentifer matchingFunction:(BOOL (void *, void *))comparator usingData:(void *)data {
- NSArray *allItems = [_perspectivesTabView tabViewItems];
- NSInteger i, c = [allItems count];
- for (i = 0;
- i < c;
- i++) {
- NSTabViewItem *item = [allItems objectAtIndex:i];
- if ([[item label] isEqual:perspectiveIdentifer]) {
- PBXProjectModule *pModule = (PBXProjectModule *)[self moduleForTab:item];
- PBXModule *obj = [XCFindPossibleKeyModules(pModule, (BOOL)0) objectOfType:type matchingFunction:comparator usingData:data];
- }
- }
- return 0;
-}
-- (BOOL)buffer:(char *)buf containsAnyPrompts:(char *[])prompts
-{
- prompts++;
- return (BOOL)0;
-}
-@end
diff --git a/test/Analysis/method-call-intra-p.cpp b/test/Analysis/method-call-intra-p.cpp
deleted file mode 100644
index bead20fecd54..000000000000
--- a/test/Analysis/method-call-intra-p.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-store region -verify %s
-// expected-no-diagnostics
-
-// Intra-procedural C++ tests.
-
-// Test relaxing function call arguments invalidation to be aware of const
-// arguments. radar://10595327
-struct InvalidateArgs {
- void ttt(const int &nptr);
- virtual void vttt(const int *nptr);
-};
-struct ChildOfInvalidateArgs: public InvalidateArgs {
- virtual void vttt(const int *nptr);
-};
-void declarationFun(int x) {
- InvalidateArgs t;
- x = 3;
- int y = x + 1;
- int *p = 0;
- t.ttt(y);
- if (x == y)
- y = *p; // no-warning
-}
-void virtualFun(int x) {
- ChildOfInvalidateArgs t;
- InvalidateArgs *pt = &t;
- x = 3;
- int y = x + 1;
- int *p = 0;
- pt->vttt(&y);
- if (x == y)
- y = *p; // no-warning
-}
diff --git a/test/Analysis/method-call-path-notes.cpp b/test/Analysis/method-call-path-notes.cpp
deleted file mode 100644
index 0da25117b067..000000000000
--- a/test/Analysis/method-call-path-notes.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=plist-multi-file %s -o %t.plist
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/method-call-path-notes.cpp.plist -
-
-// Test warning about null or uninitialized pointer values used as instance member
-// calls.
-class TestInstanceCall {
-public:
- void foo() {}
-};
-
-void test_ic() {
- TestInstanceCall *p; // expected-note {{'p' declared without an initial value}}
- p->foo(); // expected-warning {{Called C++ object pointer is uninitialized}} expected-note {{Called C++ object pointer is uninitialized}}
-}
-
-void test_ic_null() {
- TestInstanceCall *p = 0; // expected-note {{'p' initialized to a null pointer value}}
- p->foo(); // expected-warning {{Called C++ object pointer is null}} expected-note {{Called C++ object pointer is null}}
-}
-
-void test_ic_set_to_null() {
- TestInstanceCall *p;
- p = 0; // expected-note {{Null pointer value stored to 'p'}}
- p->foo(); // expected-warning {{Called C++ object pointer is null}} expected-note {{Called C++ object pointer is null}}
-}
-
-void test_ic_null(TestInstanceCall *p) {
- if (!p) // expected-note {{Assuming 'p' is null}} expected-note {{Taking true branch}}
- p->foo(); // expected-warning {{Called C++ object pointer is null}} expected-note{{Called C++ object pointer is null}}
-}
-
-void test_ic_member_ptr() {
- TestInstanceCall *p = 0; // expected-note {{'p' initialized to a null pointer value}}
- typedef void (TestInstanceCall::*IC_Ptr)();
- IC_Ptr bar = &TestInstanceCall::foo;
- (p->*bar)(); // expected-warning {{Called C++ object pointer is null}} expected-note{{Called C++ object pointer is null}}
-}
-
-void test_cast(const TestInstanceCall *p) {
- if (!p) // expected-note {{Assuming 'p' is null}} expected-note {{Taking true branch}}
- const_cast<TestInstanceCall *>(p)->foo(); // expected-warning {{Called C++ object pointer is null}} expected-note {{Called C++ object pointer is null}}
-}
-
diff --git a/test/Analysis/method-call.cpp b/test/Analysis/method-call.cpp
deleted file mode 100644
index 4f6a9a430a78..000000000000
--- a/test/Analysis/method-call.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config c++-inlining=constructors -verify %s
-
-void clang_analyzer_eval(bool);
-
-
-struct A {
- int x;
- A(int a) { x = a; }
- int getx() const { return x; }
-};
-
-struct B{
- int x;
-};
-
-void testNullObject(A *a) {
- clang_analyzer_eval(a); // expected-warning{{UNKNOWN}}
- (void)a->getx(); // assume we know what we're doing
- clang_analyzer_eval(a); // expected-warning{{TRUE}}
-}
-
-void f1() {
- A x(3);
- clang_analyzer_eval(x.getx() == 3); // expected-warning{{TRUE}}
-}
-
-void f2() {
- const A &x = A(3);
- clang_analyzer_eval(x.getx() == 3); // expected-warning{{TRUE}}
-}
-
-void f3() {
- const A &x = (A)3;
- clang_analyzer_eval(x.getx() == 3); // expected-warning{{TRUE}}
-}
-
-void f4() {
- A x = 3;
- clang_analyzer_eval(x.getx() == 3); // expected-warning{{TRUE}}
-}
-
-void checkThatCopyConstructorDoesNotInvalidateObjectBeingCopied() {
- B t;
- t.x = 0;
- B t2(t);
- clang_analyzer_eval(t.x == 0); // expected-warning{{TRUE}}
-}
diff --git a/test/Analysis/misc-ps-64.m b/test/Analysis/misc-ps-64.m
deleted file mode 100644
index 50c0e9795d86..000000000000
--- a/test/Analysis/misc-ps-64.m
+++ /dev/null
@@ -1,47 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin9 -analyzer-checker=core,alpha.core -analyzer-store=region -verify -fblocks %s
-// expected-no-diagnostics
-
-// <rdar://problem/6440393> - A bunch of misc. failures involving evaluating
-// these expressions and building CFGs. These tests are here to prevent
-// regressions.
-typedef long long int64_t;
-@class NSString, NSDictionary;
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-typedef unsigned char Boolean;
-typedef const struct __CFDictionary * CFDictionaryRef;
-
-extern Boolean CFDictionaryGetValueIfPresent(CFDictionaryRef theDict, const void *key, const void **value);
-void shazam(NSUInteger i, unsigned char **out);
-
-void rdar_6440393_1(NSDictionary *dict) {
- NSInteger x = 0;
- unsigned char buf[10], *bufptr = buf;
- if (!CFDictionaryGetValueIfPresent(0, dict, (void *)&x))
- return;
- shazam(x, &bufptr);
-}
-
-// <rdar://problem/6845148> - In this example we got a signedness
-// mismatch between the literal '0' and the value of 'scrooge'. The
-// trick is to have the evaluator convert the literal to an unsigned
-// integer when doing a comparison with the pointer. This happens
-// because of the transfer function logic of
-// OSAtomicCompareAndSwap64Barrier, which doesn't have special casts
-// in place to do this for us.
-_Bool OSAtomicCompareAndSwap64Barrier( int64_t __oldValue, int64_t __newValue, volatile int64_t *__theValue );
-extern id objc_lookUpClass(const char *name);
-void rdar_6845148(id debug_yourself) {
- if (!debug_yourself) {
- const char *wacky = ((void *)0);
- Class scrooge = wacky ? (Class)objc_lookUpClass(wacky) : ((void *)0);
- OSAtomicCompareAndSwap64Barrier(0, (int64_t)scrooge, (int64_t*)&debug_yourself);
- }
-}
-void rdar_6845148_b(id debug_yourself) {
- if (!debug_yourself) {
- const char *wacky = ((void *)0);
- Class scrooge = wacky ? (Class)objc_lookUpClass(wacky) : ((void *)0);
- OSAtomicCompareAndSwap64Barrier((int64_t)scrooge, 0, (int64_t*)&debug_yourself);
- }
-}
diff --git a/test/Analysis/misc-ps-arm.m b/test/Analysis/misc-ps-arm.m
deleted file mode 100644
index 9cb7bb202fef..000000000000
--- a/test/Analysis/misc-ps-arm.m
+++ /dev/null
@@ -1,19 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple thumbv7-apple-ios0.0.0 -target-feature +neon -analyzer-checker=core -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-// <rdar://problem/11405978> - Handle casts of vectors to structs, and loading
-// a value.
-typedef float float32_t;
-typedef __attribute__((neon_vector_type(2))) float32_t float32x2_t;
-
-typedef struct
-{
- float x, y;
-} Rdar11405978Vec;
-
-float32x2_t rdar11405978_bar();
-float32_t rdar11405978() {
- float32x2_t v = rdar11405978_bar();
- Rdar11405978Vec w = *(Rdar11405978Vec *)&v;
- return w.x; // no-warning
-}
diff --git a/test/Analysis/misc-ps-cxx0x.cpp b/test/Analysis/misc-ps-cxx0x.cpp
deleted file mode 100644
index 1b4516af7880..000000000000
--- a/test/Analysis/misc-ps-cxx0x.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core.NullDereference,core.uninitialized.UndefReturn -std=c++11 %s -verify -o /dev/null
-
-void test_static_assert() {
- static_assert(sizeof(void *) == sizeof(void*), "test_static_assert");
-}
-
-void test_analyzer_working() {
- int *p = 0;
- *p = 0xDEADBEEF; // expected-warning {{null}}
-}
-
-// Test that pointer-to-member functions don't cause the analyzer
-// to crash.
-struct RDar10243398 {
- void bar(int x);
-};
-
-typedef void (RDar10243398::*RDar10243398MemberFn)(int x);
-
-void test_rdar10243398(RDar10243398 *p) {
- RDar10243398MemberFn q = &RDar10243398::bar;
- ((*p).*(q))(1);
-}
-
-// Tests for CXXTemporaryObjectExpr.
-struct X {
- X( int *ip, int );
-};
-
-// Test to see if CXXTemporaryObjectExpr is being handled.
-int tempobj1()
-{
- int j;
- int i;
- X a = X( &j, 1 );
-
- return i; // expected-warning {{Undefined or garbage value returned to caller}}
-}
-
-// Test to see if CXXTemporaryObjectExpr invalidates arguments.
-int tempobj2()
-{
- int j;
- X a = X( &j, 1 );
-
- return j; // no-warning
-}
-
-
-// Test for correct handling of C++ ForRange statement.
-void test1() {
- int array[2] = { 1, 2 };
- int j = 0;
- for ( int i : array )
- j += i;
- int *p = 0;
- *p = 0xDEADBEEF; // expected-warning {{null}}
-}
-
-void test2() {
- int array[2] = { 1, 2 };
- int j = 0;
- for (int i : array)
- j += i;
- if (j == 3)
- return;
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
-}
-
-// Do not crash on the following when constructing the
-// callgraph.
-struct RDar11178609 {
- ~RDar11178609() = delete;
-};
-
-// Tests that dynamic_cast handles references to C++ classes. Previously
-// this crashed.
-class rdar11817693_BaseBase {};
-class rdar11817693_BaseInterface {};
-class rdar11817693_Base : public rdar11817693_BaseBase, public rdar11817693_BaseInterface {};
-class rdar11817693 : public rdar11817693_Base {
- virtual void operator=(const rdar11817693_BaseBase& src);
- void operator=(const rdar11817693& src);
-};
-void rdar11817693::operator=(const rdar11817693& src) {
- operator=(dynamic_cast<const rdar11817693_BaseBase&>(src));
-}
-
diff --git a/test/Analysis/misc-ps-eager-assume.m b/test/Analysis/misc-ps-eager-assume.m
deleted file mode 100644
index f61e0ae9f808..000000000000
--- a/test/Analysis/misc-ps-eager-assume.m
+++ /dev/null
@@ -1,147 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-store=region -verify -fblocks %s
-// expected-no-diagnostics
-
-// Delta-reduced header stuff (needed for test cases).
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject - (BOOL)isEqual:(id)object;
-- (oneway void)release;
-@end @protocol NSCopying - (id)copyWithZone:(NSZone *)zone;
-@end @protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone;
-@end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
-@end @interface NSObject <NSObject> {}
-+ (id)alloc;
-- (id)init;
-@end typedef struct {}
-NSFastEnumerationState;
-@protocol NSFastEnumeration - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
-@end @interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration> - (NSUInteger)count;
-@end @interface NSMutableArray : NSArray - (void)addObject:(id)anObject;
-- (BOOL)isEqualToString:(NSString *)aString;
-@end @interface NSAutoreleasePool : NSObject {}
-- (void)drain;
-- (id)init;
-@end
-
-// This test case tests that (x != 0) is eagerly evaluated before stored to
-// 'y'. This test case complements recoverCastedSymbol (see below) because
-// the symbolic expression is stored to 'y' (which is a short instead of an
-// int). recoverCastedSymbol() only recovers path-sensitivity when the
-// symbolic expression is literally the branch condition.
-//
-void handle_assign_of_condition(int x) {
- // The cast to 'short' causes us to lose symbolic constraint.
- short y = (x != 0);
- char *p = 0;
- if (y) {
- // This should be infeasible.
- if (!(x != 0)) {
- *p = 1; // no-warning
- }
- }
-}
-
-// From <rdar://problem/6619921>
-//
-// In this test case, 'needsAnArray' is a signed char. The analyzer tracks
-// a symbolic value for this variable, but in the branch condition it is
-// promoted to 'int'. Currently the analyzer doesn't reason well about
-// promotions of symbolic values, so this test case tests the logic in
-// 'recoverCastedSymbol()' (GRExprEngine.cpp) to test that we recover
-// path-sensitivity and use the symbol for 'needsAnArray' in the branch
-// condition.
-//
-void handle_symbolic_cast_in_condition(void) {
- NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
-
- BOOL needsAnArray = [@"aString" isEqualToString:@"anotherString"];
- NSMutableArray* array = needsAnArray ? [[NSMutableArray alloc] init] : 0;
- if(needsAnArray)
- [array release];
-
- [pool drain];
-}
-
-// From PR 3836 (http://llvm.org/bugs/show_bug.cgi?id=3836)
-//
-// In this test case, the double '!' works fine with our symbolic constraints,
-// but we don't support comparing SymConstraint != SymConstraint. By eagerly
-// assuming the truth of !!a or !!b, we can compare these values directly.
-//
-void pr3836(int *a, int *b) {
- if (!!a != !!b) /* one of them is NULL */
- return;
- if (!a && !b) /* both are NULL */
- return;
-
- *a = 1; // no-warning
- *b = 1; // no-warning
-}
-
-
-//===---------------------------------------------------------------------===//
-// <rdar://problem/7342806>
-// This false positive occurred because the symbolic constraint on a short was
-// not maintained via sign extension. The analyzer doesn't properly handle
-// the sign extension, but now tracks the constraint. This particular
-// case relies on -analyzer-options eagerly-assume=true because of the expression
-// 'Flag1 != Count > 0'.
-//===---------------------------------------------------------------------===//
-
-void rdar7342806_aux(short x);
-
-void rdar7342806() {
- extern short Count;
- extern short Flag1;
-
- short *Pointer = 0;
- short Flag2 = !!Pointer; // Flag2 is false (0).
- short Ok = 1;
- short Which;
-
- if( Flag1 != Count > 0 )
- // Static analyzer skips this so either
- // Flag1 is true and Count > 0
- // or
- // Flag1 is false and Count <= 0
- Ok = 0;
-
- if( Flag1 != Flag2 )
- // Analyzer skips this so Flag1 and Flag2 have the
- // same value, both are false because Flag2 is false. And
- // from that we know Count must be <= 0.
- Ok = 0;
-
- for( Which = 0;
- Which < Count && Ok;
- Which++ )
- // This statement can only execute if Count > 0 which can only
- // happen when Flag1 and Flag2 are both true and Flag2 will only
- // be true when Pointer is not NULL.
- rdar7342806_aux(*Pointer); // no-warning
-}
-
-//===---------------------------------------------------------------------===//
-// PR 5627 - http://llvm.org/bugs/show_bug.cgi?id=5627
-// This test case depends on using -analyzer-config eagerly-assume=true and
-// -analyzer-store=region. The 'eagerly-assume=true' causes the path
-// to bifurcate when evaluating the function call argument, and a state
-// caching bug in GRExprEngine::CheckerVisit (and friends) caused the store
-// to 'p' to not be evaluated along one path, but then an autotransition caused
-// the path to keep on propagating with 'p' still set to an undefined value.
-// We would then get a bogus report of returning uninitialized memory.
-// Note: CheckerVisit mistakenly cleared an existing node, and the cleared
-// node was resurrected by GRStmtNodeBuilder::~GRStmtNodeBuilder(), where
-// 'p' was not assigned.
-//===---------------------------------------------------------------------===//
-
-float *pr5627_f(int y);
-
-float *pr5627_g(int x) {
- float *p;
- p = pr5627_f(!x);
- return p; // no-warning
-}
-
diff --git a/test/Analysis/misc-ps-ranges.m b/test/Analysis/misc-ps-ranges.m
deleted file mode 100644
index 161d9817bcf1..000000000000
--- a/test/Analysis/misc-ps-ranges.m
+++ /dev/null
@@ -1,59 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-store=region -verify -fblocks %s
-
-// <rdar://problem/6776949>
-// main's 'argc' argument is always > 0
-int main(int argc, char* argv[]) {
- int *p = 0;
-
- if (argc == 0)
- *p = 1;
-
- if (argc == 1)
- return 1;
-
- int x = 1;
- int i;
-
- for(i=1;i<argc;i++){
- p = &x;
- }
-
- return *p; // no-warning
-}
-
-// PR 5969: the comparison of argc < 3 || argc > 4 should constraint the switch
-// statement from having the 'default' branch taken. This previously reported a false
-// positive with the use of 'v'.
-
-int pr5969(int argc, char *argv[]) {
-
- int v;
-
- if ((argc < 3) || (argc > 4)) return 0;
-
- switch(argc) {
- case 3:
- v = 33;
- break;
- case 4:
- v = 44;
- break;
- }
-
- return v; // no-warning
-}
-
-int pr5969_positive(int argc, char *argv[]) {
-
- int v;
-
- if ((argc < 3) || (argc > 4)) return 0;
-
- switch(argc) {
- case 3:
- v = 33;
- break;
- }
-
- return v; // expected-warning{{Undefined or garbage value returned to caller}}
-}
diff --git a/test/Analysis/misc-ps-region-store-i386.m b/test/Analysis/misc-ps-region-store-i386.m
deleted file mode 100644
index 269a8155b12a..000000000000
--- a/test/Analysis/misc-ps-region-store-i386.m
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin9 -analyzer-checker=core,alpha.core -analyzer-store=region -verify -fblocks %s
-// expected-no-diagnostics
-
-// Here is a case where a pointer is treated as integer, invalidated as an
-// integer, and then used again as a pointer. This test just makes sure
-// we don't crash.
-typedef unsigned uintptr_t;
-void test_pointer_invalidated_as_int_aux(uintptr_t* ptr);
-void test_pointer_invalidated_as_int() {
- void *x;
- test_pointer_invalidated_as_int_aux((uintptr_t*) &x);
- // Here we have a pointer to integer cast.
- uintptr_t y = (uintptr_t) x;
-}
-
diff --git a/test/Analysis/misc-ps-region-store-x86_64.m b/test/Analysis/misc-ps-region-store-x86_64.m
deleted file mode 100644
index 0bdc5a2b6a26..000000000000
--- a/test/Analysis/misc-ps-region-store-x86_64.m
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin9 -analyzer-checker=core,alpha.core -analyzer-store=region -verify -fblocks %s
-// expected-no-diagnostics
-
-// Here is a case where a pointer is treated as integer, invalidated as an
-// integer, and then used again as a pointer. This test just makes sure
-// we don't crash.
-typedef unsigned long uintptr_t;
-void test_pointer_invalidated_as_int_aux(uintptr_t* ptr);
-void test_pointer_invalidated_as_int() {
- void *x;
- test_pointer_invalidated_as_int_aux((uintptr_t*) &x);
- // Here we have a pointer to integer cast.
- uintptr_t y = (uintptr_t) x;
-}
-
diff --git a/test/Analysis/misc-ps-region-store.cpp b/test/Analysis/misc-ps-region-store.cpp
deleted file mode 100644
index c6dad5dd9d6e..000000000000
--- a/test/Analysis/misc-ps-region-store.cpp
+++ /dev/null
@@ -1,728 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin9 -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s -fexceptions -fcxx-exceptions -Wno-tautological-undefined-compare
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin9 -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s -fexceptions -fcxx-exceptions -Wno-tautological-undefined-compare
-
-void clang_analyzer_warnIfReached();
-
-// Test basic handling of references.
-char &test1_aux();
-char *test1() {
- return &test1_aux();
-}
-
-// Test test1_aux() evaluates to char &.
-char test1_as_rvalue() {
- return test1_aux();
-}
-
-// Test passing a value as a reference. The 'const' in test2_aux() adds
-// an ImplicitCastExpr, which is evaluated as an lvalue.
-int test2_aux(const int &n);
-int test2(int n) {
- return test2_aux(n);
-}
-
-int test2_b_aux(const short &n);
-int test2_b(int n) {
- return test2_b_aux(n);
-}
-
-// Test getting the lvalue of a derived and converting it to a base. This
-// previously crashed.
-class Test3_Base {};
-class Test3_Derived : public Test3_Base {};
-
-int test3_aux(Test3_Base &x);
-int test3(Test3_Derived x) {
- return test3_aux(x);
-}
-
-//===---------------------------------------------------------------------===//
-// Test CFG support for C++ condition variables.
-//===---------------------------------------------------------------------===//
-
-int test_init_in_condition_aux();
-int test_init_in_condition() {
- if (int x = test_init_in_condition_aux()) { // no-warning
- return 1;
- }
- return 0;
-}
-
-int test_init_in_condition_switch() {
- switch (int x = test_init_in_condition_aux()) { // no-warning
- case 1:
- return 0;
- case 2:
- if (x == 2)
- return 0;
- else {
- clang_analyzer_warnIfReached(); // unreachable
- }
- default:
- break;
- }
- return 0;
-}
-
-int test_init_in_condition_while() {
- int z = 0;
- while (int x = ++z) { // no-warning
- if (x == 2)
- break;
- }
-
- if (z == 2)
- return 0;
-
- clang_analyzer_warnIfReached(); // unreachable
- return 0;
-}
-
-
-int test_init_in_condition_for() {
- int z = 0;
- for (int x = 0; int y = ++z; ++x) {
- if (x == y) // no-warning
- break;
- }
- if (z == 1)
- return 0;
-
- clang_analyzer_warnIfReached(); // unreachable
- return 0;
-}
-
-//===---------------------------------------------------------------------===//
-// Test handling of 'this' pointer.
-//===---------------------------------------------------------------------===//
-
-class TestHandleThis {
- int x;
-
- TestHandleThis();
- int foo();
- int null_deref_negative();
- int null_deref_positive();
-};
-
-int TestHandleThis::foo() {
- // Assume that 'x' is initialized.
- return x + 1; // no-warning
-}
-
-int TestHandleThis::null_deref_negative() {
- x = 10;
- if (x == 10) {
- return 1;
- }
- clang_analyzer_warnIfReached(); // unreachable
- return 0;
-}
-
-int TestHandleThis::null_deref_positive() {
- x = 10;
- if (x == 9) {
- return 1;
- }
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- return 0;
-}
-
-// PR 7675 - passing literals by-reference
-void pr7675(const double &a);
-void pr7675(const int &a);
-void pr7675(const char &a);
-void pr7675_i(const _Complex double &a);
-
-void pr7675_test() {
- pr7675(10.0);
- pr7675(10);
- pr7675('c');
- pr7675_i(4.0j);
-
- // Add check to ensure we are analyzing the code up to this point.
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-// <rdar://problem/8375510> - CFGBuilder should handle temporaries.
-struct R8375510 {
- R8375510();
- ~R8375510();
- R8375510 operator++(int);
-};
-
-int r8375510(R8375510 x, R8375510 y) {
- for (; ; x++) { }
-}
-
-// PR8419 -- this used to crash.
-
-class String8419 {
- public:
- char& get(int n);
- char& operator[](int n);
-};
-
-char& get8419();
-
-void Test8419() {
- String8419 s;
- ++(s.get(0));
- get8419()--; // used to crash
- --s[0]; // used to crash
- s[0] &= 1; // used to crash
- s[0]++; // used to crash
-}
-
-// PR8426 -- this used to crash.
-
-void Use(void* to);
-
-template <class T> class Foo {
- ~Foo();
- struct Bar;
- Bar* bar_;
-};
-
-template <class T> Foo<T>::~Foo() {
- Use(bar_);
- T::DoSomething();
- bar_->Work();
-}
-
-// PR8427 -- this used to crash.
-
-class Dummy {};
-
-bool operator==(Dummy, int);
-
-template <typename T>
-class Foo2 {
- bool Bar();
-};
-
-template <typename T>
-bool Foo2<T>::Bar() {
- return 0 == T();
-}
-
-// PR8433 -- this used to crash.
-
-template <typename T>
-class Foo3 {
- public:
- void Bar();
- void Baz();
- T value_;
-};
-
-template <typename T>
-void Foo3<T>::Bar() {
- Baz();
- value_();
-}
-
-//===---------------------------------------------------------------------===//
-// Handle misc. C++ constructs.
-//===---------------------------------------------------------------------===//
-
-namespace fum {
- int i = 3;
-};
-
-void test_namespace() {
- // Previously triggered a crash.
- using namespace fum;
- int x = i;
-}
-
-// Test handling methods that accept references as parameters, and that
-// variables are properly invalidated.
-class RDar9203355 {
- bool foo(unsigned valA, long long &result) const;
- bool foo(unsigned valA, int &result) const;
-};
-bool RDar9203355::foo(unsigned valA, int &result) const {
- long long val;
- if (foo(valA, val) ||
- (int)val != val) // no-warning
- return true;
- result = val; // no-warning
- return false;
-}
-
-// Test handling of new[].
-void rdar9212512() {
- int *x = new int[10];
- for (unsigned i = 0 ; i < 2 ; ++i) {
- // This previously triggered an uninitialized values warning.
- x[i] = 1; // no-warning
- }
-}
-
-// Test basic support for dynamic_cast<>.
-struct Rdar9212495_C { virtual void bar() const; };
-class Rdar9212495_B : public Rdar9212495_C {};
-class Rdar9212495_A : public Rdar9212495_B {};
-const Rdar9212495_A& rdar9212495(const Rdar9212495_C* ptr) {
- const Rdar9212495_A& val = dynamic_cast<const Rdar9212495_A&>(*ptr);
-
- // This is not valid C++; dynamic_cast with a reference type will throw an
- // exception if the pointer does not match the expected type. However, our
- // implementation of dynamic_cast will pass through a null pointer...or a
- // "null reference"! So this branch is actually possible.
- if (&val == 0) {
- val.bar(); // expected-warning{{Called C++ object pointer is null}}
- }
-
- return val;
-}
-
-const Rdar9212495_A* rdar9212495_ptr(const Rdar9212495_C* ptr) {
- const Rdar9212495_A* val = dynamic_cast<const Rdar9212495_A*>(ptr);
-
- if (val == 0) {
- val->bar(); // expected-warning{{Called C++ object pointer is null}}
- }
-
- return val;
-}
-
-// Test constructors invalidating arguments. Previously this raised
-// an uninitialized value warning.
-extern "C" void __attribute__((noreturn)) PR9645_exit(int i);
-
-class PR9645_SideEffect
-{
-public:
- PR9645_SideEffect(int *pi); // caches pi in i_
- void Read(int *pi); // copies *pi into *i_
-private:
- int *i_;
-};
-
-void PR9645() {
- int i;
-
- PR9645_SideEffect se(&i);
- int j = 1;
- se.Read(&j); // this has a side-effect of initializing i.
-
- PR9645_exit(i); // no-warning
-}
-
-PR9645_SideEffect::PR9645_SideEffect(int *pi) : i_(pi) {}
-void PR9645_SideEffect::Read(int *pi) { *i_ = *pi; }
-
-// Invalidate fields during C++ method calls.
-class RDar9267815 {
- int x;
- void test();
- void test_pos();
- void test2();
- void invalidate();
-};
-
-void RDar9267815::test_pos() {
- if (x == 42)
- return;
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-void RDar9267815::test() {
- if (x == 42)
- return;
- if (x == 42)
- clang_analyzer_warnIfReached(); // no-warning
-}
-
-void RDar9267815::test2() {
- if (x == 42)
- return;
- invalidate();
- if (x == 42)
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-// Test reference parameters.
-void test_ref_double_aux(double &Value);
-float test_ref_double() {
- double dVal;
- test_ref_double_aux(dVal);
- // This previously warned because 'dVal' was thought to be uninitialized.
- float Val = (float)dVal; // no-warning
- return Val;
-}
-
-// Test invalidation of class fields.
-class TestInvalidateClass {
-public:
- int x;
-};
-
-void test_invalidate_class_aux(TestInvalidateClass &x);
-
-int test_invalidate_class() {
- TestInvalidateClass y;
- test_invalidate_class_aux(y);
- return y.x; // no-warning
-}
-
-// Test correct pointer arithmetic using 'p--'. This is to warn that we
-// were loading beyond the written characters in buf.
-char *RDar9269695(char *dst, unsigned int n)
-{
- char buff[40], *p;
-
- p = buff;
- do
- *p++ = '0' + n % 10;
- while (n /= 10);
-
- do
- *dst++ = *--p; // no-warning
- while (p != buff);
-
- return dst;
-}
-
-// Test that we invalidate byref arguments passed to constructors.
-class TestInvalidateInCtor {
-public:
- TestInvalidateInCtor(unsigned &x);
-};
-
-unsigned test_invalidate_in_ctor() {
- unsigned x;
- TestInvalidateInCtor foo(x);
- return x; // no-warning
-}
-unsigned test_invalidate_in_ctor_new() {
- unsigned x;
- delete (new TestInvalidateInCtor(x));
- return x; // no-warning
-}
-
-// Test assigning into a symbolic offset.
-struct TestAssignIntoSymbolicOffset {
- int **stuff[100];
- void test(int x, int y);
-};
-
-void TestAssignIntoSymbolicOffset::test(int x, int y) {
- x--;
- if (x > 8 || x < 0)
- return;
- if (stuff[x])
- return;
- if (!stuff[x]) {
- stuff[x] = new int*[y+1];
- // Previously triggered a null dereference.
- stuff[x][y] = 0; // no-warning
- }
-}
-
-// Test loads from static fields. This previously triggered an uninitialized
-// value warning.
-class ClassWithStatic {
-public:
- static const unsigned value = 1;
-};
-
-int rdar9948787_negative() {
- ClassWithStatic classWithStatic;
- unsigned value = classWithStatic.value;
- if (value == 1)
- return 1;
- clang_analyzer_warnIfReached(); // no-warning
- return 0;
-}
-
-int rdar9948787_positive() {
- ClassWithStatic classWithStatic;
- unsigned value = classWithStatic.value;
- if (value == 0)
- return 1;
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- return 0;
-}
-
-// Regression test against global constants and switches.
-enum rdar10202899_ValT { rdar10202899_ValTA, rdar10202899_ValTB, rdar10202899_ValTC };
-const rdar10202899_ValT val = rdar10202899_ValTA;
-void rdar10202899_test1() {
- switch (val) {
- case rdar10202899_ValTA: {}
- };
-}
-
-void rdar10202899_test2() {
- if (val == rdar10202899_ValTA)
- return;
- clang_analyzer_warnIfReached(); // no-warning
-}
-
-void rdar10202899_test3() {
- switch (val) {
- case rdar10202899_ValTA: return;
- default: ;
- };
- clang_analyzer_warnIfReached(); // no-warning
-}
-
-// This used to crash the analyzer because of the unnamed bitfield.
-void PR11249()
-{
- struct {
- char f1:4;
- char :4;
- char f2[1];
- char f3;
- } V = { 1, {2}, 3 };
- if (V.f1 != 1)
- clang_analyzer_warnIfReached(); // no-warning
- if (V.f2[0] != 2)
- clang_analyzer_warnIfReached(); // no-warning
- if (V.f3 != 3)
- clang_analyzer_warnIfReached(); // no-warning
-}
-
-// Handle doing a load from the memory associated with the code for
-// a function.
-extern double nan( const char * );
-double PR11450() {
- double NaN = *(double*) nan;
- return NaN;
-}
-
-// Test that 'this' is assumed non-null upon analyzing the entry to a "top-level"
-// function (i.e., when not analyzing from a specific caller).
-struct TestNullThis {
- int field;
- void test();
-};
-
-void TestNullThis::test() {
- int *p = &field;
- if (p)
- return;
- field = 2; // no-warning
-}
-
-// Test handling of 'catch' exception variables, and not warning
-// about uninitialized values.
-enum MyEnum { MyEnumValue };
-MyEnum rdar10892489() {
- try {
- throw MyEnumValue;
- } catch (MyEnum e) {
- return e; // no-warning
- }
- return MyEnumValue;
-}
-
-MyEnum rdar10892489_positive() {
- try {
- throw MyEnumValue;
- } catch (MyEnum e) {
- int *p = 0;
- // FALSE NEGATIVE
- *p = 0xDEADBEEF; // {{null}}
- return e;
- }
- return MyEnumValue;
-}
-
-// Test handling of catch with no condition variable.
-void PR11545() {
- try
- {
- throw;
- }
- catch (...)
- {
- }
-}
-
-void PR11545_positive() {
- try
- {
- throw;
- }
- catch (...)
- {
- int *p = 0;
- // FALSE NEGATIVE
- *p = 0xDEADBEEF; // {{null}}
- }
-}
-
-// Test handling taking the address of a field. While the analyzer
-// currently doesn't do anything intelligent here, this previously
-// resulted in a crash.
-class PR11146 {
-public:
- struct Entry;
- void baz();
-};
-
-struct PR11146::Entry {
- int x;
-};
-
-void PR11146::baz() {
- (void) &Entry::x;
-}
-
-// Test symbolicating a reference. In this example, the
-// analyzer (originally) didn't know how to handle x[index - index2],
-// returning an UnknownVal. The conjured symbol wasn't a location,
-// and would result in a crash.
-void rdar10924675(unsigned short x[], int index, int index2) {
- unsigned short &y = x[index - index2];
- if (y == 0)
- return;
-}
-
-// Test handling CXXScalarValueInitExprs.
-void rdar11401827() {
- int x = int();
- if (!x) {
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- ; // Suppress warning that both branches are identical
- }
- else {
- clang_analyzer_warnIfReached(); // no-warning
- }
-}
-
-//===---------------------------------------------------------------------===//
-// Handle inlining of C++ method calls.
-//===---------------------------------------------------------------------===//
-
-struct A {
- int *p;
- void foo(int *q) {
- p = q;
- }
- void bar() {
- *p = 0; // expected-warning {{null pointer}}
- }
-};
-
-void test_inline() {
- A a;
- a.foo(0);
- a.bar();
-}
-
-void test_alloca_in_a_recursive_function(int p1) {
- __builtin_alloca (p1);
- test_alloca_in_a_recursive_function(1);
- test_alloca_in_a_recursive_function(2);
-}
-
-//===---------------------------------------------------------------------===//
-// Random tests.
-//===---------------------------------------------------------------------===//
-
-// Tests assigning using a C-style initializer to a struct
-// variable whose sub-field is also a struct. This currently
-// results in a CXXTempObjectRegion being created, but not
-// properly handled. For now, we just ignore that value
-// to avoid a crash (<rdar://problem/12753384>).
-struct RDar12753384_ClassA {
- unsigned z;
-};
-struct RDar12753384_ClassB {
- unsigned x;
- RDar12753384_ClassA y[ 8 ] ;
-};
-unsigned RDar12753384() {
- RDar12753384_ClassB w = { 0x00 };
- RDar12753384_ClassA y[8];
- return w.x;
-}
-
-// This testcase tests whether we treat the anonymous union and union
-// the same way. This previously resulted in a "return of stack address"
-// warning because the anonymous union resulting in a temporary object
-// getting put into the initializer. We still aren't handling this correctly,
-// but now if a temporary object appears in an initializer we just ignore it.
-// Fixes <rdar://problem/12755044>.
-
-struct Rdar12755044_foo
-{
- struct Rdar12755044_bar
- {
- union baz
- {
- int i;
- };
- } aBar;
-};
-
-struct Rdar12755044_foo_anon
-{
- struct Rdar12755044_bar
- {
- union
- {
- int i;
- };
- } aBar;
-};
-
-const Rdar12755044_foo_anon *radar12755044_anon() {
- static const Rdar12755044_foo_anon Rdar12755044_foo_list[] = { { { } } };
- return Rdar12755044_foo_list; // no-warning
-}
-
-const Rdar12755044_foo *radar12755044() {
- static const Rdar12755044_foo Rdar12755044_foo_list[] = { { { } } };
- return Rdar12755044_foo_list; // no-warning
-}
-
-// Test the correct handling of integer to bool conversions. Previously
-// this resulted in a false positive because integers were being truncated
-// and not tested for non-zero.
-void rdar12759044() {
- int flag = 512;
- if (!(flag & 512)) {
- clang_analyzer_warnIfReached(); // no-warning
- }
-}
-
-// The analyzer currently does not model complex types. Test that the load
-// from 'x' is not flagged as being uninitialized.
-typedef __complex__ float _ComplexT;
-void rdar12964481(_ComplexT *y) {
- _ComplexT x;
- __real__ x = 1.0;
- __imag__ x = 1.0;
- *y *= x; // no-warning
-}
-void rdar12964481_b(_ComplexT *y) {
- _ComplexT x;
- // Eventually this should be a warning.
- *y *= x; // no-warning
-}
-
-// Test case for PR 12921. This previously produced
-// a bogus warning.
-static const int pr12921_arr[] = { 0, 1 };
-static const int pr12921_arrcount = sizeof(pr12921_arr)/sizeof(int);
-
-int pr12921(int argc, char **argv) {
- int i, retval;
- for (i = 0; i < pr12921_arrcount; i++) {
- if (argc == i) {
- retval = i;
- break;
- }
- }
-
- // No match
- if (i == pr12921_arrcount) return 66;
- return pr12921_arr[retval];
-}
-
diff --git a/test/Analysis/misc-ps-region-store.m b/test/Analysis/misc-ps-region-store.m
deleted file mode 100644
index 1ef100563126..000000000000
--- a/test/Analysis/misc-ps-region-store.m
+++ /dev/null
@@ -1,1366 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin9 -analyzer-checker=core,alpha.core.CastToStruct,alpha.security.ReturnPtrRange,alpha.security.ArrayBound -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks -Wno-objc-root-class %s
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin9 -DTEST_64 -analyzer-checker=core,alpha.core.CastToStruct,alpha.security.ReturnPtrRange,alpha.security.ArrayBound -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks -Wno-objc-root-class %s
-
-typedef long unsigned int size_t;
-void *memcpy(void *, const void *, size_t);
-void *alloca(size_t);
-
-typedef struct objc_selector *SEL;
-typedef signed char BOOL;
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@protocol NSCopying - (id)copyWithZone:(NSZone *)zone; @end
-@protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone; @end
-@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; @end
-@interface NSObject <NSObject> {} - (id)init; @end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
-@end extern NSString * const NSBundleDidLoadNotification;
-@interface NSAssertionHandler : NSObject {}
-+ (NSAssertionHandler *)currentHandler;
-- (void)handleFailureInMethod:(SEL)selector object:(id)object file:(NSString *)fileName lineNumber:(NSInteger)line description:(NSString *)format,...;
-@end
-extern NSString * const NSConnectionReplyMode;
-
-#ifdef TEST_64
-typedef long long int64_t;
-typedef int64_t intptr_t;
-#else
-typedef int int32_t;
-typedef int32_t intptr_t;
-#endif
-
-//---------------------------------------------------------------------------
-// Test case 'checkaccess_union' differs for region store and basic store.
-// The basic store doesn't reason about compound literals, so the code
-// below won't fire an "uninitialized value" warning.
-//---------------------------------------------------------------------------
-
-// PR 2948 (testcase; crash on VisitLValue for union types)
-// http://llvm.org/bugs/show_bug.cgi?id=2948
-void checkaccess_union() {
- int ret = 0, status;
- // Since RegionStore doesn't handle unions yet,
- // this branch condition won't be triggered
- // as involving an uninitialized value.
- if (((((__extension__ (((union { // no-warning
- __typeof (status) __in; int __i;}
- )
- {
- .__in = (status)}
- ).__i))) & 0xff00) >> 8) == 1)
- ret = 1;
-}
-
-// Check our handling of fields being invalidated by function calls.
-struct test2_struct { int x; int y; char* s; };
-void test2_help(struct test2_struct* p);
-
-char test2() {
- struct test2_struct s;
- test2_help(&s);
- char *p = 0;
-
- if (s.x > 1) {
- if (s.s != 0) {
- p = "hello";
- }
- }
-
- if (s.x > 1) {
- if (s.s != 0) {
- return *p;
- }
- }
-
- return 'a';
-}
-
-// BasicStore handles this case incorrectly because it doesn't reason about
-// the value pointed to by 'x' and thus creates different symbolic values
-// at the declarations of 'a' and 'b' respectively. RegionStore handles
-// it correctly. See the companion test in 'misc-ps-basic-store.m'.
-void test_trivial_symbolic_comparison_pointer_parameter(int *x) {
- int a = *x;
- int b = *x;
- if (a != b) {
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
- }
-}
-
-// This is a modified test from 'misc-ps.m'. Here we have the extra
-// NULL dereferences which are pruned out by RegionStore's symbolic reasoning
-// of fields.
-typedef struct _BStruct { void *grue; } BStruct;
-void testB_aux(void *ptr);
-
-void testB(BStruct *b) {
- {
- int *__gruep__ = ((int *)&((b)->grue));
- int __gruev__ = *__gruep__;
- int __gruev2__ = *__gruep__;
- if (__gruev__ != __gruev2__) {
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
- }
-
- testB_aux(__gruep__);
- }
- {
- int *__gruep__ = ((int *)&((b)->grue));
- int __gruev__ = *__gruep__;
- int __gruev2__ = *__gruep__;
- if (__gruev__ != __gruev2__) {
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
- }
-
- if (~0 != __gruev__) {}
- }
-}
-
-void testB_2(BStruct *b) {
- {
- int **__gruep__ = ((int **)&((b)->grue));
- int *__gruev__ = *__gruep__;
- testB_aux(__gruep__);
- }
- {
- int **__gruep__ = ((int **)&((b)->grue));
- int *__gruev__ = *__gruep__;
- if ((int*)~0 != __gruev__) {}
- }
-}
-
-// This test case is a reduced case of a caching bug discovered by an
-// assertion failure in RegionStoreManager::BindArray. Essentially the
-// DeclStmt is evaluated twice, but on the second loop iteration the
-// engine caches out. Previously a false transition would cause UnknownVal
-// to bind to the variable, firing an assertion failure. This bug was fixed
-// in r76262.
-void test_declstmt_caching() {
-again:
- {
- const char a[] = "I like to crash";
- goto again;
- }
-}
-
-//===----------------------------------------------------------------------===//
-// Reduced test case from <rdar://problem/7114618>.
-// Basically a null check is performed on the field value, which is then
-// assigned to a variable and then checked again.
-//===----------------------------------------------------------------------===//
-struct s_7114618 { int *p; };
-void test_rdar_7114618(struct s_7114618 *s) {
- if (s->p) {
- int *p = s->p;
- if (!p) {
- // Infeasible
- int *dead = 0;
- *dead = 0xDEADBEEF; // no-warning
- }
- }
-}
-
-// Test pointers increment correctly.
-void f() {
- int a[2];
- a[1] = 3;
- int *p = a;
- p++;
- if (*p != 3) {
- int *q = 0;
- *q = 3; // no-warning
- }
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7185607>
-// Bit-fields of a struct should be invalidated when blasting the entire
-// struct with an integer constant.
-//===----------------------------------------------------------------------===//
-struct test_7185607 {
- int x : 10;
- int y : 22;
-};
-int rdar_test_7185607() {
- struct test_7185607 s; // Uninitialized.
- *((unsigned *) &s) = 0U;
- return s.x; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7242006> [RegionStore] compound literal assignment with
-// floats not honored
-// This test case is mirrored in misc-ps.m, but this case is a negative.
-//===----------------------------------------------------------------------===//
-typedef float CGFloat;
-typedef struct _NSSize {
- CGFloat width;
- CGFloat height;
-} NSSize;
-
-CGFloat rdar7242006_negative(CGFloat x) {
- NSSize y;
- return y.width; // expected-warning{{garbage}}
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7249340> - Allow binding of values to symbolic regions.
-// This test case shows how RegionStore tracks the value bound to 'x'
-// after the assignment.
-//===----------------------------------------------------------------------===//
-typedef int* ptr_rdar_7249340;
-void rdar_7249340(ptr_rdar_7249340 x) {
- *x = 1;
- if (*x)
- return;
- int *p = 0; // This is unreachable.
- *p = 0xDEADBEEF; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7249327> - This test case tests both value tracking of
-// array values and that we handle symbolic values that are casted
-// between different integer types. Note the assignment 'n = *a++'; here
-// 'n' is and 'int' and '*a' is 'unsigned'. Previously we got a false positive
-// at 'x += *b++' (undefined value) because we got a false path.
-//===----------------------------------------------------------------------===//
-int rdar_7249327_aux(void);
-
-void rdar_7249327(unsigned int A[2*32]) {
- int B[2*32];
- int *b;
- unsigned int *a;
- int x = 0;
-
- int n;
-
- a = A;
- b = B;
-
- n = *a++;
- if (n)
- *b++ = rdar_7249327_aux();
-
- a = A;
- b = B;
-
- n = *a++;
- if (n)
- x += *b++; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6914474> - Check that 'x' is invalidated because its
-// address is passed in as a value to a struct.
-//===----------------------------------------------------------------------===//
-struct doodad_6914474 { int *v; };
-extern void prod_6914474(struct doodad_6914474 *d);
-int rdar_6914474(void) {
- int x;
- struct doodad_6914474 d;
- d.v = &x;
- prod_6914474(&d);
- return x; // no-warning
-}
-
-// Test invalidation of a single field.
-struct s_test_field_invalidate {
- int x;
-};
-extern void test_invalidate_field(int *x);
-int test_invalidate_field_test() {
- struct s_test_field_invalidate y;
- test_invalidate_field(&y.x);
- return y.x; // no-warning
-}
-int test_invalidate_field_test_positive() {
- struct s_test_field_invalidate y;
- return y.x; // expected-warning{{garbage}}
-}
-
-// This test case illustrates how a typeless array of bytes casted to a
-// struct should be treated as initialized. RemoveDeadBindings previously
-// had a bug that caused 'x' to lose its default symbolic value after the
-// assignment to 'p', thus causing 'p->z' to evaluate to "undefined".
-struct ArrayWrapper { unsigned char y[16]; };
-struct WrappedStruct { unsigned z; };
-
-void test_handle_array_wrapper_helper();
-
-int test_handle_array_wrapper() {
- struct ArrayWrapper x;
- test_handle_array_wrapper_helper(&x);
- struct WrappedStruct *p = (struct WrappedStruct*) x.y; // expected-warning{{Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption}}
- return p->z; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7261075> [RegionStore] crash when
-// handling load: '*((unsigned int *)"????")'
-//===----------------------------------------------------------------------===//
-
-int rdar_7261075(void) {
- unsigned int var = 0;
- if (var == *((unsigned int *)"????"))
- return 1;
- return 0;
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7275774> false path due to limited pointer
-// arithmetic constraints
-//===----------------------------------------------------------------------===//
-
-void rdar_7275774(void *data, unsigned n) {
- if (!(data || n == 0))
- return;
-
- unsigned short *p = (unsigned short*) data;
- unsigned short *q = p + (n / 2);
-
- if (p < q) {
- // If we reach here, 'p' cannot be null. If 'p' is null, then 'n' must
- // be '0', meaning that this branch is not feasible.
- *p = *q; // no-warning
- }
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7312221>
-//
-// Test that Objective-C instance variables aren't prematurely pruned
-// from the analysis state.
-//===----------------------------------------------------------------------===//
-
-struct rdar_7312221_value { int x; };
-
-@interface RDar7312221
-{
- struct rdar_7312221_value *y;
-}
-- (void) doSomething_7312221;
-@end
-
-extern struct rdar_7312221_value *rdar_7312221_helper();
-extern int rdar_7312221_helper_2(id o);
-extern void rdar_7312221_helper_3(int z);
-
-@implementation RDar7312221
-- (void) doSomething_7312221 {
- if (y == 0) {
- y = rdar_7312221_helper();
- if (y != 0) {
- y->x = rdar_7312221_helper_2(self);
- // The following use of 'y->x' previously triggered a null dereference, as the value of 'y'
- // before 'y = rdar_7312221_helper()' would be used.
- rdar_7312221_helper_3(y->x); // no-warning
- }
- }
-}
-@end
-
-struct rdar_7312221_container {
- struct rdar_7312221_value *y;
-};
-
-extern int rdar_7312221_helper_4(struct rdar_7312221_container *s);
-
-// This test case essentially matches the one in [RDar7312221 doSomething_7312221].
-void doSomething_7312221_with_struct(struct rdar_7312221_container *Self) {
- if (Self->y == 0) {
- Self->y = rdar_7312221_helper();
- if (Self->y != 0) {
- Self->y->x = rdar_7312221_helper_4(Self);
- rdar_7312221_helper_3(Self->y->x); // no-warning
- }
- }
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7332673> - Just more tests cases for regions
-//===----------------------------------------------------------------------===//
-
-void rdar_7332673_test1() {
- char value[1];
- if ( *(value) != 1 ) {} // expected-warning{{The left operand of '!=' is a garbage value}}
-}
-int rdar_7332673_test2_aux(char *x);
-void rdar_7332673_test2() {
- char *value;
- if ( rdar_7332673_test2_aux(value) != 1 ) {} // expected-warning{{1st function call argument is an uninitialized value}}
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7347252>: Because of a bug in
-// RegionStoreManager::RemoveDeadBindings(), the symbol for s->session->p
-// would incorrectly be pruned from the state after the call to
-// rdar7347252_malloc1(), and would incorrectly result in a warning about
-// passing a null pointer to rdar7347252_memcpy().
-//===----------------------------------------------------------------------===//
-
-struct rdar7347252_AA { char *p;};
-typedef struct {
- struct rdar7347252_AA *session;
- int t;
- char *q;
-} rdar7347252_SSL1;
-
-int rdar7347252_f(rdar7347252_SSL1 *s);
-char *rdar7347252_malloc1(int);
-char *rdar7347252_memcpy1(char *d, char *s, int n) __attribute__((nonnull (1,2)));
-
-int rdar7347252(rdar7347252_SSL1 *s) {
- rdar7347252_f(s); // the SymbolicRegion of 's' is set a default binding of conjured symbol
- if (s->session->p == ((void*)0)) {
- if ((s->session->p = rdar7347252_malloc1(10)) == ((void*)0)) {
- return 0;
- }
- rdar7347252_memcpy1(s->session->p, "aa", 2); // no-warning
- }
- return 0;
-}
-
-//===----------------------------------------------------------------------===//
-// PR 5316 - "crash when accessing field of lazy compound value"
-// Previously this caused a crash at the MemberExpr '.chr' when loading
-// a field value from a LazyCompoundVal
-//===----------------------------------------------------------------------===//
-
-typedef unsigned int pr5316_wint_t;
-typedef pr5316_wint_t pr5316_REFRESH_CHAR;
-typedef struct {
- pr5316_REFRESH_CHAR chr;
-}
-pr5316_REFRESH_ELEMENT;
-static void pr5316(pr5316_REFRESH_ELEMENT *dst, const pr5316_REFRESH_ELEMENT *src) {
- while ((*dst++ = *src++).chr != L'\0') ;
-}
-
-//===----------------------------------------------------------------------===//
-// Exercise creating ElementRegion with symbolic super region.
-//===----------------------------------------------------------------------===//
-void element_region_with_symbolic_superregion(int* p) {
- int *x;
- int a;
- if (p[0] == 1)
- x = &a;
- if (p[0] == 1)
- (void)*x; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// Test returning an out-of-bounds pointer (CWE-466)
-//===----------------------------------------------------------------------===//
-
-static int test_cwe466_return_outofbounds_pointer_a[10];
-int *test_cwe466_return_outofbounds_pointer() {
- int *p = test_cwe466_return_outofbounds_pointer_a+10;
- return p; // expected-warning{{Returned pointer value points outside the original object}}
-}
-
-//===----------------------------------------------------------------------===//
-// PR 3135 - Test case that shows that a variable may get invalidated when its
-// address is included in a structure that is passed-by-value to an unknown function.
-//===----------------------------------------------------------------------===//
-
-typedef struct { int *a; } pr3135_structure;
-int pr3135_bar(pr3135_structure *x);
-int pr3135() {
- int x;
- pr3135_structure y = { &x };
- // the call to pr3135_bar may initialize x
- if (pr3135_bar(&y) && x) // no-warning
- return 1;
- return 0;
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7403269> - Test that we handle compound initializers with
-// partially unspecified array values. Previously this caused a crash.
-//===----------------------------------------------------------------------===//
-
-typedef struct RDar7403269 {
- unsigned x[10];
- unsigned y;
-} RDar7403269;
-
-void rdar7403269() {
- RDar7403269 z = { .y = 0 };
- if (z.x[4] == 0)
- return;
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
-}
-
-typedef struct RDar7403269_b {
- struct zorg { int w; int k; } x[10];
- unsigned y;
-} RDar7403269_b;
-
-void rdar7403269_b() {
- RDar7403269_b z = { .y = 0 };
- if (z.x[5].w == 0)
- return;
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
-}
-
-void rdar7403269_b_pos() {
- RDar7403269_b z = { .y = 0 };
- if (z.x[5].w == 1)
- return;
- int *p = 0;
- *p = 0xDEADBEEF; // expected-warning{{Dereference of null pointer}}
-}
-
-
-//===----------------------------------------------------------------------===//
-// Test that incrementing a non-null pointer results in a non-null pointer.
-// (<rdar://problem/7191542>)
-//===----------------------------------------------------------------------===//
-
-void test_increment_nonnull_rdar_7191542(const char *path) {
- const char *alf = 0;
-
- for (;;) {
- // When using basic-store, we get a null dereference here because we lose information
- // about path after the pointer increment.
- char c = *path++; // no-warning
- if (c == 'a') {
- alf = path;
- }
-
- if (alf)
- return;
- }
-}
-
-//===----------------------------------------------------------------------===//
-// Test that the store (implicitly) tracks values for doubles/floats that are
-// uninitialized (<rdar://problem/6811085>)
-//===----------------------------------------------------------------------===//
-
-double rdar_6811085(void) {
- double u;
- return u + 10; // expected-warning{{The left operand of '+' is a garbage value}}
-}
-
-//===----------------------------------------------------------------------===//
-// Path-sensitive tests for blocks.
-//===----------------------------------------------------------------------===//
-
-void indirect_block_call(void (^f)());
-
-int blocks_1(int *p, int z) {
- __block int *q = 0;
- void (^bar)() = ^{ q = p; };
-
- if (z == 1) {
- // The call to 'bar' might cause 'q' to be invalidated.
- bar();
- *q = 0x1; // no-warning
- }
- else if (z == 2) {
- // The function 'indirect_block_call' might invoke bar, thus causing
- // 'q' to possibly be invalidated.
- indirect_block_call(bar);
- *q = 0x1; // no-warning
- }
- else {
- *q = 0xDEADBEEF; // expected-warning{{Dereference of null pointer}}
- }
- return z;
-}
-
-int blocks_2(int *p, int z) {
- int *q = 0;
- void (^bar)(int **) = ^(int **r){ *r = p; };
-
- if (z) {
- // The call to 'bar' might cause 'q' to be invalidated.
- bar(&q);
- *q = 0x1; // no-warning
- }
- else {
- *q = 0xDEADBEEF; // expected-warning{{Dereference of null pointer}}
- }
- return z;
-}
-
-// Test that the value of 'x' is considered invalidated after the block
-// is passed as an argument to the message expression.
-typedef void (^RDar7582031CB)(void);
-@interface RDar7582031
-- rdar7582031:RDar7582031CB;
-- rdar7582031_b:RDar7582031CB;
-@end
-
-// Test with one block.
-unsigned rdar7582031(RDar7582031 *o) {
- __block unsigned x;
- [o rdar7582031:^{ x = 1; }];
- return x; // no-warning
-}
-
-// Test with two blocks.
-unsigned long rdar7582031_b(RDar7582031 *o) {
- __block unsigned y;
- __block unsigned long x;
- [o rdar7582031:^{ y = 1; }];
- [o rdar7582031_b:^{ x = 1LL; }];
- return x + (unsigned long) y; // no-warning
-}
-
-// Show we get an error when 'o' is null because the message
-// expression has no effect.
-unsigned long rdar7582031_b2(RDar7582031 *o) {
- __block unsigned y;
- __block unsigned long x;
- if (o)
- return 1;
- [o rdar7582031:^{ y = 1; }];
- [o rdar7582031_b:^{ x = 1LL; }];
- return x + (unsigned long) y; // expected-warning{{The left operand of '+' is a garbage value}}
-}
-
-// Show that we handle static variables also getting invalidated.
-void rdar7582031_aux(void (^)(void));
-RDar7582031 *rdar7582031_aux_2();
-
-unsigned rdar7582031_static() {
- static RDar7582031 *o = 0;
- rdar7582031_aux(^{ o = rdar7582031_aux_2(); });
-
- __block unsigned x;
- [o rdar7582031:^{ x = 1; }];
- return x; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7462324> - Test that variables passed using __blocks
-// are not treated as being uninitialized.
-//===----------------------------------------------------------------------===//
-
-typedef void (^RDar_7462324_Callback)(id obj);
-
-@interface RDar7462324
-- (void) foo:(id)target;
-- (void) foo_positive:(id)target;
-
-@end
-
-@implementation RDar7462324
-- (void) foo:(id)target {
- __block RDar_7462324_Callback builder = ((void*) 0);
- builder = ^(id object) {
- if (object) {
- builder(self); // no-warning
- }
- };
- builder(target);
-}
-- (void) foo_positive:(id)target {
- __block RDar_7462324_Callback builder = ((void*) 0);
- builder = ^(id object) {
- id x;
- if (object) {
- builder(x); // expected-warning{{1st block call argument is an uninitialized value}}
- }
- };
- builder(target);
-}
-@end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7468209> - Scanning for live variables within a block should
-// not crash on variables passed by reference via __block.
-//===----------------------------------------------------------------------===//
-
-int rdar7468209_aux();
-void rdar7468209_aux_2();
-
-void rdar7468209() {
- __block int x = 0;
- ^{
- x = rdar7468209_aux();
- // We need a second statement so that 'x' would be removed from the store if it wasn't
- // passed by reference.
- rdar7468209_aux_2();
- }();
-}
-
-//===----------------------------------------------------------------------===//
-// PR 5857 - Test loading an integer from a byte array that has also been
-// reinterpreted to be loaded as a field.
-//===----------------------------------------------------------------------===//
-
-typedef struct { int x; } TestFieldLoad;
-int pr5857(char *src) {
- TestFieldLoad *tfl = (TestFieldLoad *) (intptr_t) src;
- int y = tfl->x;
- long long *z = (long long *) (intptr_t) src;
- long long w = 0;
- int n = 0;
- for (n = 0; n < y; ++n) {
- // Previously we crashed analyzing this statement.
- w = *z++;
- }
- return 1;
-}
-
-//===----------------------------------------------------------------------===//
-// PR 4358 - Without field-sensitivity, this code previously triggered
-// a false positive that 'uninit' could be uninitialized at the call
-// to pr4358_aux().
-//===----------------------------------------------------------------------===//
-
-struct pr4358 {
- int bar;
- int baz;
-};
-void pr4358_aux(int x);
-void pr4358(struct pr4358 *pnt) {
- int uninit;
- if (pnt->bar < 3) {
- uninit = 1;
- } else if (pnt->baz > 2) {
- uninit = 3;
- } else if (pnt->baz <= 2) {
- uninit = 2;
- }
- pr4358_aux(uninit); // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7526777>
-// Test handling fields of values returned from function calls or
-// message expressions.
-//===----------------------------------------------------------------------===//
-
-typedef struct testReturn_rdar_7526777 {
- int x;
- int y;
-} testReturn_rdar_7526777;
-
-@interface TestReturnStruct_rdar_7526777
-- (testReturn_rdar_7526777) foo;
-@end
-
-int test_return_struct(TestReturnStruct_rdar_7526777 *x) {
- return [x foo].x;
-}
-
-testReturn_rdar_7526777 test_return_struct_2_aux_rdar_7526777();
-
-int test_return_struct_2_rdar_7526777() {
- return test_return_struct_2_aux_rdar_7526777().x;
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7527292> Assertion failed: (Op == BinaryOperator::Add ||
-// Op == BinaryOperator::Sub)
-// This test case previously triggered an assertion failure due to a discrepancy
-// been the loaded/stored value in the array
-//===----------------------------------------------------------------------===//
-
-_Bool OSAtomicCompareAndSwapPtrBarrier( void *__oldValue, void *__newValue, void * volatile *__theValue );
-
-void rdar_7527292() {
- static id Cache7527292[32];
- for (signed long idx = 0;
- idx < 32;
- idx++) {
- id v = Cache7527292[idx];
- if (v && OSAtomicCompareAndSwapPtrBarrier(v, ((void*)0), (void * volatile *)(Cache7527292 + idx))) {
- }
- }
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7515938> - Handle initialization of incomplete arrays
-// in structures using a compound value. Previously this crashed.
-//===----------------------------------------------------------------------===//
-
-struct rdar_7515938 {
- int x;
- int y[];
-};
-
-const struct rdar_7515938 *rdar_7515938() {
- static const struct rdar_7515938 z = { 0, { 1, 2 } };
- if (z.y[0] != 1) {
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
- }
- return &z;
-}
-
-struct rdar_7515938_str {
- int x;
- char y[];
-};
-
-const struct rdar_7515938_str *rdar_7515938_str() {
- static const struct rdar_7515938_str z = { 0, "hello" };
- return &z;
-}
-
-//===----------------------------------------------------------------------===//
-// Assorted test cases from PR 4172.
-//===----------------------------------------------------------------------===//
-
-struct PR4172A_s { int *a; };
-
-void PR4172A_f2(struct PR4172A_s *p);
-
-int PR4172A_f1(void) {
- struct PR4172A_s m;
- int b[4];
- m.a = b;
- PR4172A_f2(&m);
- return b[3]; // no-warning
-}
-
-struct PR4172B_s { int *a; };
-
-void PR4172B_f2(struct PR4172B_s *p);
-
-int PR4172B_f1(void) {
- struct PR4172B_s m;
- int x;
- m.a = &x;
- PR4172B_f2(&m);
- return x; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// Test invalidation of values in struct literals.
-//===----------------------------------------------------------------------===//
-
-struct s_rev96062 { int *x; int *y; };
-struct s_rev96062_nested { struct s_rev96062 z; };
-
-void test_a_rev96062_aux(struct s_rev96062 *s);
-void test_a_rev96062_aux2(struct s_rev96062_nested *s);
-
-int test_a_rev96062() {
- int a, b;
- struct s_rev96062 x = { &a, &b };
- test_a_rev96062_aux(&x);
- return a + b; // no-warning
-}
-int test_b_rev96062() {
- int a, b;
- struct s_rev96062 x = { &a, &b };
- struct s_rev96062 z = x;
- test_a_rev96062_aux(&z);
- return a + b; // no-warning
-}
-int test_c_rev96062() {
- int a, b;
- struct s_rev96062 x = { &a, &b };
- struct s_rev96062_nested w = { x };
- struct s_rev96062_nested z = w;
- test_a_rev96062_aux2(&z);
- return a + b; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7242010> - The access to y[0] at the bottom previously
-// was reported as an uninitialized value.
-//===----------------------------------------------------------------------===//
-
-char *rdar_7242010(int count, char **y) {
- char **x = alloca((count + 4) * sizeof(*x));
- x[0] = "hi";
- x[1] = "there";
- x[2] = "every";
- x[3] = "body";
- memcpy(x + 4, y, count * sizeof(*x));
- y = x;
- return y[0]; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7770737>
-//===----------------------------------------------------------------------===//
-
-struct rdar_7770737_s { intptr_t p; };
-void rdar_7770737_aux(struct rdar_7770737_s *p);
-int rdar_7770737(void)
-{
- int x;
-
- // Previously 'f' was not properly invalidated, causing the use of
- // an uninitailized value below.
- struct rdar_7770737_s f = { .p = (intptr_t)&x };
- rdar_7770737_aux(&f);
- return x; // no-warning
-}
-int rdar_7770737_pos(void)
-{
- int x;
- struct rdar_7770737_s f = { .p = (intptr_t)&x };
- return x; // expected-warning{{Undefined or garbage value returned to caller}}
-}
-
-//===----------------------------------------------------------------------===//
-// Test handling of the implicit 'isa' field. For now we don't do anything
-// interesting.
-//===----------------------------------------------------------------------===//
-
-void pr6302(id x, Class y) {
- // This previously crashed the analyzer (reported in PR 6302)
- x->isa = y; // expected-warning {{assignment to Objective-C's isa is deprecated in favor of object_setClass()}}
-}
-
-//===----------------------------------------------------------------------===//
-// Specially handle global variables that are declared constant. In the
-// example below, this forces the loop to take exactly 2 iterations.
-//===----------------------------------------------------------------------===//
-
-const int pr6288_L_N = 2;
-void pr6288_(void) {
- int x[2];
- int *px[2];
- int i;
- for (i = 0; i < pr6288_L_N; i++)
- px[i] = &x[i];
- *(px[0]) = 0; // no-warning
-}
-
-void pr6288_pos(int z) {
- int x[2];
- int *px[2];
- int i;
- for (i = 0; i < z; i++)
- px[i] = &x[i]; // expected-warning{{Access out-of-bound array element (buffer overflow)}}
- *(px[0]) = 0; // expected-warning{{Dereference of undefined pointer value}}
-}
-
-void pr6288_b(void) {
- const int L_N = 2;
- int x[2];
- int *px[2];
- int i;
- for (i = 0; i < L_N; i++)
- px[i] = &x[i];
- *(px[0]) = 0; // no-warning
-}
-
-// <rdar://problem/7817800> - A bug in RemoveDeadBindings was causing instance variable bindings
-// to get prematurely pruned from the state.
-@interface Rdar7817800 {
- char *x;
-}
-- (void) rdar7817800_baz;
-@end
-
-char *rdar7817800_foobar();
-void rdar7817800_qux(void*);
-
-@implementation Rdar7817800
-- (void) rdar7817800_baz {
- if (x)
- rdar7817800_qux(x);
- x = rdar7817800_foobar();
- // Previously this triggered a bogus null dereference warning.
- x[1] = 'a'; // no-warning
-}
-@end
-
-// PR 6036 - This test case triggered a crash inside StoreManager::CastRegion because the size
-// of 'unsigned long (*)[0]' is 0.
-struct pr6036_a { int pr6036_b; };
-struct pr6036_c;
-void u132monitk (struct pr6036_c *pr6036_d) {
- (void) ((struct pr6036_a *) (unsigned long (*)[0]) ((char *) pr6036_d - 1))->pr6036_b; // expected-warning{{Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption}}
-}
-
-// <rdar://problem/7813989> - ?-expressions used as a base of a member expression should be treated as an lvalue
-typedef struct rdar7813989_NestedVal { int w; } rdar7813989_NestedVal;
-typedef struct rdar7813989_Val { rdar7813989_NestedVal nv; } rdar7813989_Val;
-
-int rdar7813989(int x, rdar7813989_Val *a, rdar7813989_Val *b) {
- // This previously crashed with an assertion failure.
- int z = (x ? a->nv : b->nv).w;
- return z + 1;
-}
-
-// PR 6844 - Don't crash on vaarg expression.
-typedef __builtin_va_list va_list;
-void map(int srcID, ...) {
- va_list ap;
- int i;
- for (i = 0; i < srcID; i++) {
- int v = __builtin_va_arg(ap, int);
- }
-}
-
-// PR 6854 - crash when casting symbolic memory address to a float
-// Handle casting from a symbolic region to a 'float'. This isn't
-// really all that intelligent, but previously this caused a crash
-// in SimpleSValuator.
-void pr6854(void * arg) {
- void * a = arg;
- *(void**)a = arg;
- float f = *(float*) a;
-}
-
-// <rdar://problem/8032791> False positive due to symbolic store not find
-// value because of 'const' qualifier
-double rdar_8032791_2();
-double rdar_8032791_1() {
- struct R8032791 { double x[2]; double y; }
- data[3] = {
- {{1.0, 3.0}, 3.0}, // 1 2 3
- {{1.0, 1.0}, 0.0}, // 1 1 2 2 3 3
- {{1.0, 3.0}, 1.0} // 1 2 3
- };
-
- double x = 0.0;
- for (unsigned i = 0 ; i < 3; i++) {
- const struct R8032791 *p = &data[i];
- x += p->y + rdar_8032791_2(); // no-warning
- }
- return x;
-}
-
-// PR 7450 - Handle pointer arithmetic with __builtin_alloca
-void pr_7450_aux(void *x);
-void pr_7450() {
- void *p = __builtin_alloca(10);
- // Don't crash when analyzing the following statement.
- pr_7450_aux(p + 8);
-}
-
-// <rdar://problem/8243408> - Symbolicate struct values returned by value.
-struct s_rdar_8243408 { int x; };
-extern struct s_rdar_8243408 rdar_8243408_aux(void);
-void rdar_8243408(void) {
- struct s_rdar_8243408 a = { 1 }, *b = 0;
- while (a.x && !b)
- a = rdar_8243408_aux();
-
- // Previously there was a false error here with 'b' being null.
- (void) (a.x && b->x); // no-warning
-
- // Introduce a null deref to ensure we are checking this path.
- int *p = 0;
- *p = 0xDEADBEEF; // expected-warning{{Dereference of null pointer}}
-}
-
-// <rdar://problem/8258814>
-int r8258814()
-{
- int foo;
- int * a = &foo;
- a[0] = 10;
- // Do not warn that the value of 'foo' is uninitialized.
- return foo; // no-warning
-}
-
-// PR 8052 - Don't crash when reasoning about loads from a function address.\n
-typedef unsigned int __uint32_t;
-typedef unsigned long vm_offset_t;
-typedef __uint32_t pd_entry_t;
-typedef unsigned char u_char;
-typedef unsigned int u_int;
-typedef unsigned long u_long;
-extern int bootMP_size;
-void bootMP(void);
-static void
-pr8052(u_int boot_addr)
-{
- int x;
- int size = *(int *) ((u_long) & bootMP_size);
- u_char *src = (u_char *) ((u_long) bootMP);
- u_char *dst = (u_char *) boot_addr + ((vm_offset_t) ((((((((1 <<
-12) / (sizeof(pd_entry_t))) - 1) - 1) - (260 - 2))) << 22) | ((0) << 12)));
-#ifdef TEST_64
-// expected-warning@-3 {{cast to 'u_char *' (aka 'unsigned char *') from smaller integer type 'u_int' (aka 'unsigned int')}}
-#endif
- for (x = 0;
- x < size;
- ++x)
- *dst++ = *src++;
-}
-
-// PR 8015 - don't return undefined values for arrays when using a valid
-// symbolic index
-int pr8015_A();
-void pr8015_B(const char *);
-
-void pr8015_C() {
- int number = pr8015_A();
- const char *numbers[] = { "zero" };
- if (number == 0) {
- pr8015_B(numbers[number]); // no-warning
- }
-}
-
-// Tests that we correctly handle that 'number' is perfectly constrained
-// after 'if (number == 0)', allowing us to resolve that
-// numbers[number] == numbers[0].
-void pr8015_D_FIXME() {
- int number = pr8015_A();
- const char *numbers[] = { "zero" };
- if (number == 0) {
- if (numbers[number] == numbers[0])
- return;
- // Unreachable.
- int *p = 0;
- *p = 0xDEADBEEF; // no-warnng
- }
-}
-
-void pr8015_E() {
- // Similar to pr8015_C, but number is allowed to be a valid range.
- unsigned number = pr8015_A();
- const char *numbers[] = { "zero", "one", "two" };
- if (number < 3) {
- pr8015_B(numbers[number]); // no-warning
- }
-}
-
-void pr8015_F_FIXME() {
- // Similar to pr8015_E, but like pr8015_D we check if the pointer
- // is the same as one of the string literals. The null dereference
- // here is not feasible in practice, so this is a false positive.
- int number = pr8015_A();
- const char *numbers[] = { "zero", "one", "two" };
- if (number < 3) {
- const char *p = numbers[number];
- if (p == numbers[0] || p == numbers[1] || p == numbers[2])
- return;
- int *q = 0;
- *q = 0xDEADBEEF; // expected-warning{{Dereference of null pointer}}
- }
-}
-
-// PR 8141. Previously the statement expression in the for loop caused
-// the CFG builder to crash.
-struct list_pr8141
-{
- struct list_pr8141 *tail;
-};
-
-struct list_pr8141 *
-pr8141 (void) {
- struct list_pr8141 *items;
- for (;; items = ({ do { } while (0); items->tail; })) // expected-warning{{Dereference of undefined pointer value}}
- {
- }
-}
-
-// Don't crash when building the CFG.
-void do_not_crash(int x) {
- while (x - ({do {} while (0); x; })) {
- }
-}
-
-// <rdar://problem/8424269> - Handle looking at the size of a VLA in
-// ArrayBoundChecker. Nothing intelligent (yet); just don't crash.
-typedef struct RDar8424269_A {
- int RDar8424269_C;
-} RDar8424269_A;
-static void RDar8424269_B(RDar8424269_A *p, unsigned char *RDar8424269_D,
- const unsigned char *RDar8424269_E, int RDar8424269_F,
- int b_w, int b_h, int dx, int dy) {
- int x, y, b, r, l;
- unsigned char tmp2t[3][RDar8424269_F * (32 + 8)];
- unsigned char *tmp2 = tmp2t[0];
- if (p && !p->RDar8424269_C)
- b = 15;
- tmp2 = tmp2t[1];
- if (b & 2) { // expected-warning{{The left operand of '&' is a garbage value}}
- for (y = 0; y < b_h; y++) {
- for (x = 0; x < b_w + 1; x++) {
- int am = 0;
- tmp2[x] = am;
- }
- }
- }
- tmp2 = tmp2t[2];
-}
-
-// <rdar://problem/8642434> - Handle transparent unions with the NonNullParamChecker.
-typedef union {
- struct rdar_8642434_typeA *_dq;
-}
-rdar_8642434_typeB __attribute__((transparent_union));
-
-__attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__))
-void rdar_8642434_funcA(rdar_8642434_typeB object);
-
-void rdar_8642434_funcB(struct rdar_8642434_typeA *x, struct rdar_8642434_typeA *y) {
- rdar_8642434_funcA(x);
- if (!y)
- rdar_8642434_funcA(y); // expected-warning{{Null pointer passed as an argument to a 'nonnull' parameter}}
-}
-
-// <rdar://problem/8848957> - Handle loads and stores from a symbolic index
-// into array without warning about an uninitialized value being returned.
-// While RegionStore can't fully reason about this example, it shouldn't
-// warn here either.
-typedef struct s_test_rdar8848957 {
- int x, y, z;
-} s_test_rdar8848957;
-
-s_test_rdar8848957 foo_rdar8848957();
-int rdar8848957(int index) {
- s_test_rdar8848957 vals[10];
- vals[index] = foo_rdar8848957();
- return vals[index].x; // no-warning
-}
-
-// PR 9049 - crash on symbolicating unions. This test exists solely to
-// test that the analyzer doesn't crash.
-typedef struct pr9048_cdev *pr9048_cdev_t;
-typedef union pr9048_abstracted_disklabel { void *opaque; } pr9048_disklabel_t;
-struct pr9048_diskslice { pr9048_disklabel_t ds_label; };
-struct pr9048_diskslices {
- int dss_secmult;
- struct pr9048_diskslice dss_slices[16];
-};
-void pr9048(pr9048_cdev_t dev, struct pr9048_diskslices * ssp, unsigned int slice)
-{
- pr9048_disklabel_t lp;
- struct pr9048_diskslice *sp;
- sp = &ssp->dss_slices[slice];
- if (ssp->dss_secmult == 1) {
- } else if ((lp = sp->ds_label).opaque != ((void *) 0)) {
- }
-}
-
-// Test Store reference counting in the presence of Lazy compound values.
-// This previously caused an infinite recursion.
-typedef struct {} Rdar_9103310_A;
-typedef struct Rdar_9103310_B Rdar_9103310_B_t;
-struct Rdar_9103310_B {
- unsigned char Rdar_9103310_C[101];
-};
-void Rdar_9103310_E(Rdar_9103310_A * x, struct Rdar_9103310_C * b) { // expected-warning {{declaration of 'struct Rdar_9103310_C' will not be visible outside of this function}}
- char Rdar_9103310_D[4][4] = { "a", "b", "c", "d"};
- int i;
- Rdar_9103310_B_t *y = (Rdar_9103310_B_t *) x;
- for (i = 0; i < 101; i++) {
- Rdar_9103310_F(b, "%2d%s ", (y->Rdar_9103310_C[i]) / 4, Rdar_9103310_D[(y->Rdar_9103310_C[i]) % 4]); // expected-warning {{implicit declaration of function 'Rdar_9103310_F' is invalid in C99}}
- }
-}
-
-// Test handling binding lazy compound values to a region and then have
-// specific elements have other bindings.
-int PR9455() {
- char arr[4] = "000";
- arr[0] = '1';
- if (arr[1] == '0')
- return 1;
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
- return 1;
-}
-int PR9455_2() {
- char arr[4] = "000";
- arr[0] = '1';
- if (arr[1] == '0') {
- int *p = 0;
- *p = 0xDEADBEEF; // expected-warning {{null}}
- }
- return 1;
-}
-
-// Test initialization of substructs via lazy compound values.
-typedef float RDar9163742_Float;
-
-typedef struct {
- RDar9163742_Float x, y;
-} RDar9163742_Point;
-typedef struct {
- RDar9163742_Float width, height;
-} RDar9163742_Size;
-typedef struct {
- RDar9163742_Point origin;
- RDar9163742_Size size;
-} RDar9163742_Rect;
-
-extern RDar9163742_Rect RDar9163742_RectIntegral(RDar9163742_Rect);
-
-RDar9163742_Rect RDar9163742_IntegralRect(RDar9163742_Rect frame)
-{
- RDar9163742_Rect integralFrame;
- integralFrame.origin.x = frame.origin.x;
- integralFrame.origin.y = frame.origin.y;
- integralFrame.size = frame.size;
- return RDar9163742_RectIntegral(integralFrame); // no-warning; all fields initialized
-}
-
-// Test correct handling of prefix '--' operator.
-void rdar9444714() {
- int x;
- char str[ 32 ];
- char buf[ 32 ];
- char * dst;
- char * ptr;
-
- x = 1234;
- dst = str;
- ptr = buf;
- do
- {
- *ptr++ = (char)( '0' + ( x % 10 ) );
- x /= 10;
- } while( x > 0 );
-
- while( ptr > buf )
- {
- *dst++ = *( --( ptr ) ); // no-warning
- }
- *dst = '\0';
-}
-
-// Test handling symbolic elements with field accesses.
-// <rdar://problem/11127008>
-typedef struct {
- unsigned value;
-} RDar11127008;
-
-signed rdar_11127008_index();
-
-static unsigned rdar_11127008(void) {
- RDar11127008 values[] = {{.value = 0}, {.value = 1}};
- signed index = rdar_11127008_index();
- if (index < 0) return 0;
- if (index >= 2) return 0;
- return values[index].value;
-}
-
-// Test handling invalidating arrays passed to a block via captured
-// pointer value (not a __block variable).
-typedef void (^radar11125868_cb)(int *, unsigned);
-
-void rdar11125868_aux(radar11125868_cb cb);
-
-int rdar11125868() {
- int integersStackArray[1];
- int *integers = integersStackArray;
- rdar11125868_aux(^(int *integerValue, unsigned index) {
- integers[index] = integerValue[index];
- });
- return integers[0] == 0; // no-warning
-}
-
-int rdar11125868_positive() {
- int integersStackArray[1];
- int *integers = integersStackArray;
- return integers[0] == 0; // expected-warning {{The left operand of '==' is a}}
-}
diff --git a/test/Analysis/misc-ps-region-store.mm b/test/Analysis/misc-ps-region-store.mm
deleted file mode 100644
index 4b271c4512dc..000000000000
--- a/test/Analysis/misc-ps-region-store.mm
+++ /dev/null
@@ -1,49 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin9 -analyzer-checker=core,alpha.core -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin9 -analyzer-checker=core,alpha.core -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s
-// expected-no-diagnostics
-
-//===------------------------------------------------------------------------------------------===//
-// This files tests our path-sensitive handling of Objective-c++ files.
-//===------------------------------------------------------------------------------------------===//
-
-// Test basic handling of references.
-char &test1_aux();
-char *test1() {
- return &test1_aux();
-}
-
-// Test test1_aux() evaluates to char &.
-char test1_as_rvalue() {
- return test1_aux();
-}
-
-// Test basic handling of references with Objective-C classes.
-@interface Test1
-- (char&) foo;
-@end
-
-char* Test1_harness(Test1 *p) {
- return &[p foo];
-}
-
-char Test1_harness_b(Test1 *p) {
- return [p foo];
-}
-
-// Basic test of C++ references with Objective-C pointers.
-@interface RDar10569024
-@property(readonly) int x;
-@end
-
-typedef RDar10569024* RDar10569024Ref;
-
-void rdar10569024_aux(RDar10569024Ref o);
-
-int rdar10569024(id p, id collection) {
- for (id elem in collection) {
- const RDar10569024Ref &o = (RDar10569024Ref) elem;
- rdar10569024_aux(o); // no-warning
- return o.x; // no-warning
- }
- return 0;
-}
diff --git a/test/Analysis/misc-ps.c b/test/Analysis/misc-ps.c
deleted file mode 100644
index 68704a6b1eb2..000000000000
--- a/test/Analysis/misc-ps.c
+++ /dev/null
@@ -1,203 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -disable-free -analyzer-checker=core,deadcode,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-
-int size_rdar9373039 = 1;
-int foo_rdar9373039(const char *);
-
-int rdar93730392() {
- int x;
- int j = 0;
-
- for (int i = 0 ; i < size_rdar9373039 ; ++i)
- x = 1;
-
- int extra = (2 + foo_rdar9373039 ("Clang") + ((4 - ((unsigned int) (2 + foo_rdar9373039 ("Clang")) % 4)) % 4)) + (2 + foo_rdar9373039 ("1.0") + ((4 - ((unsigned int) (2 + foo_rdar9373039 ("1.0")) % 4)) % 4)); // expected-warning {{never read}}
-
- for (int i = 0 ; i < size_rdar9373039 ; ++i)
- j += x; // expected-warning {{garbage}}
-
- return j;
-}
-
-
-int PR8962 (int *t) {
- // This should look through the __extension__ no-op.
- if (__extension__ (t)) return 0;
- return *t; // expected-warning {{null pointer}}
-}
-
-int PR8962_b (int *t) {
- // This should still ignore the nested casts
- // which aren't handled by a single IgnoreParens()
- if (((int)((int)t))) return 0;
- return *t; // expected-warning {{null pointer}}
-}
-
-int PR8962_c (int *t) {
- // If the last element in a StmtExpr was a ParenExpr, it's still live
- if (({ (t ? (_Bool)0 : (_Bool)1); })) return 0;
- return *t; // no-warning
-}
-
-int PR8962_d (int *t) {
- // If the last element in a StmtExpr is an __extension__, it's still live
- if (({ __extension__(t ? (_Bool)0 : (_Bool)1); })) return 0;
- return *t; // no-warning
-}
-
-int PR8962_e (int *t) {
- // Redundant casts can mess things up!
- // Environment used to skip through NoOp casts, but LiveVariables didn't!
- if (({ (t ? (int)(int)0L : (int)(int)1L); })) return 0;
- return *t; // no-warning
-}
-
-int PR8962_f (int *t) {
- // The StmtExpr isn't a block-level expression here,
- // the __extension__ is. But the value should be attached to the StmtExpr
- // anyway. Make sure the block-level check is /before/ IgnoreParens.
- if ( __extension__({
- _Bool r;
- if (t) r = 0;
- else r = 1;
- r;
- }) ) return 0;
- return *t; // no-warning
-}
-
-// This previously crashed logic in the analyzer engine when evaluating locations.
-void rdar10308201_aux(unsigned val);
-void rdar10308201 (int valA, void *valB, unsigned valC) {
- unsigned actual_base, lines;
- if (valC == 0) {
- actual_base = (unsigned)valB;
- for (;;) {
- if (valA & (1<<0))
- rdar10308201_aux(actual_base);
- }
- }
-}
-
-typedef struct Struct103 {
- unsigned i;
-} Struct103;
-typedef unsigned int size_t;
-void __my_memset_chk(char*, int, size_t);
-static int radar10367606(int t) {
- Struct103 overall;
- ((__builtin_object_size ((char *) &overall, 0) != (size_t) -1) ? __builtin___memset_chk ((char *) &overall, 0, sizeof(Struct103), __builtin_object_size ((char *) &overall, 0)) : __my_memset_chk ((char *) &overall, 0, sizeof(Struct103)));
- return 0;
-}
-
-/* Caching out on a sink node. */
-extern int fooR10376675();
-extern int* bazR10376675();
-extern int nR10376675;
-void barR10376675(int *x) {
- int *pm;
- if (nR10376675 * 2) {
- int *pk = bazR10376675();
- pm = pk; //expected-warning {{never read}}
- }
- do {
- *x = fooR10376675();
- } while (0);
-}
-
-// Test accesses to wide character strings doesn't break the analyzer.
-typedef int wchar_t;
-struct rdar10385775 {
- wchar_t *name;
-};
-void RDar10385775(struct rdar10385775* p) {
- p->name = L"a";
-}
-
-// Test double loop of array and array literals. Previously this
-// resulted in a false positive uninitailized value warning.
-void rdar10686586() {
- int array1[] = { 1, 2, 3, 0 };
- int array2[] = { 1, 2, 3, 0 };
- int *array[] = { array1, array2 };
- int sum = 0;
- for (int i = 0; i < 2; i++) {
- for (int j = 0; j < 4; j++) {
- sum += array[i][j]; // no-warning
- }
- }
-}
-
-// This example tests CFG handling of '||' nested in a ternary expression,
-// and seeing that the analyzer doesn't crash.
-int isctype(char c, unsigned long f)
-{
- return (c < 1 || c > 10) ? 0 : !!(c & f);
-}
-
-// Test that symbolic array offsets are modeled conservatively.
-// This was triggering a false "use of uninitialized value" warning.
-void rdar_12075238__aux(unsigned long y);
-int rdar_12075238_(unsigned long count) {
- if ((count < 3) || (count > 6))
- return 0;
-
- unsigned long array[6];
- unsigned long i = 0;
- for (; i <= count - 2; i++)
- {
- array[i] = i;
- }
- array[count - 1] = i;
- rdar_12075238__aux(array[2]); // no-warning
- return 0;
-}
-
-// Test that we handle an uninitialized value within a logical expression.
-void PR14635(int *p) {
- int a = 0, b;
- *p = a || b; // expected-warning {{Assigned value is garbage or undefined}}
-}
-
-// Test handling floating point values with unary '!'.
-int PR14634(int x) {
- double y = (double)x;
- return !y;
-}
-
-
-// PR15684: If a checker generates a sink node after generating a regular node
-// and no state changes between the two, graph trimming would consider the two
-// the same node, forming a loop.
-struct PR15684 {
- void (*callback)(int);
-};
-void sinkAfterRegularNode(struct PR15684 *context) {
- int uninitialized;
- context->callback(uninitialized); // expected-warning {{uninitialized}}
-}
-
-
-// PR16131: C permits variables to be declared extern void.
-static void PR16131(int x) {
- extern void v;
-
- int *ip = (int *)&v;
- char *cp = (char *)&v;
- clang_analyzer_eval(ip == cp); // expected-warning{{TRUE}}
- // expected-warning@-1 {{comparison of distinct pointer types}}
-
- *ip = 42;
- clang_analyzer_eval(*ip == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(*(int *)&v == 42); // expected-warning{{TRUE}}
-}
-
-// PR15623: Currently the analyzer doesn't handle symbolic expressions of the
-// form "(exp comparison_op expr) != 0" very well. We perform a simplification
-// translating an assume of a constraint of the form "(exp comparison_op expr)
-// != 0" to true into an assume of "exp comparison_op expr" to true.
-void PR15623(int n) {
- if ((n == 0) != 0) {
- clang_analyzer_eval(n == 0); // expected-warning{{TRUE}}
- }
-}
diff --git a/test/Analysis/misc-ps.m b/test/Analysis/misc-ps.m
deleted file mode 100644
index 9a75cfd87b62..000000000000
--- a/test/Analysis/misc-ps.m
+++ /dev/null
@@ -1,1360 +0,0 @@
-// NOTE: Use '-fobjc-gc' to test the analysis being run twice, and multiple reports are not issued.
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -analyzer-checker=core,alpha.core,osx.cocoa.AtSync -analyzer-store=region -verify -fblocks -Wno-unreachable-code -Wno-null-dereference -Wno-objc-root-class %s
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,alpha.core,osx.cocoa.AtSync -analyzer-store=region -verify -fblocks -Wno-unreachable-code -Wno-null-dereference -Wno-objc-root-class %s
-
-#ifndef __clang_analyzer__
-#error __clang_analyzer__ not defined
-#endif
-
-typedef struct objc_ivar *Ivar;
-typedef struct objc_selector *SEL;
-typedef signed char BOOL;
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSArray, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)autorelease;
-@end
-@protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
-@end
-@protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone; @end
-@protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@interface NSObject <NSObject> {}
-- (id)init;
-+ (id)allocWithZone:(NSZone *)zone;
-@end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
-@end extern NSString * const NSBundleDidLoadNotification;
-@interface NSValue : NSObject <NSCopying, NSCoding>
-- (void)getValue:(void *)value;
-@end
-@interface NSNumber : NSValue
-- (char)charValue;
-- (id)initWithBool:(BOOL)value;
-@end
-@interface NSAssertionHandler : NSObject {}
-+ (NSAssertionHandler *)currentHandler;
-- (void)handleFailureInMethod:(SEL)selector object:(id)object file:(NSString *)fileName lineNumber:(NSInteger)line description:(NSString *)format,...;
-@end
-extern NSString * const NSConnectionReplyMode;
-typedef float CGFloat;
-typedef struct _NSPoint {
- CGFloat x;
- CGFloat y;
-} NSPoint;
-typedef struct _NSSize {
- CGFloat width;
- CGFloat height;
-} NSSize;
-typedef struct _NSRect {
- NSPoint origin;
- NSSize size;
-} NSRect;
-
-// Reduced test case from crash in <rdar://problem/6253157>
-@interface A @end
-@implementation A
-- (void)foo:(void (^)(NSObject *x))block {
- if (!((block != ((void *)0)))) {}
-}
-@end
-
-// Reduced test case from crash in PR 2796;
-// http://llvm.org/bugs/show_bug.cgi?id=2796
-
-unsigned foo(unsigned x) { return __alignof__((x)) + sizeof(x); }
-
-// Improvement to path-sensitivity involving compound assignments.
-// Addresses false positive in <rdar://problem/6268365>
-//
-
-unsigned r6268365Aux();
-
-void r6268365() {
- unsigned x = 0;
- x &= r6268365Aux();
- unsigned j = 0;
-
- if (x == 0) ++j;
- if (x == 0) x = x / j;
-}
-
-void divzeroassume(unsigned x, unsigned j) {
- x /= j;
- if (j == 0) x /= 0; // no static-analyzer warning expected-warning {{division by zero is undefined}}
- if (j == 0) x /= j; // no static-analyzer warning
- if (j == 0) x = x / 0; // no static-analyzer warning expected-warning {{division by zero is undefined}}
-}
-
-void divzeroassumeB(unsigned x, unsigned j) {
- x = x / j;
- if (j == 0) x /= 0; // no static-analyzer warning expected-warning {{division by zero is undefined}}
- if (j == 0) x /= j; // no static-analyzer warning
- if (j == 0) x = x / 0; // no static-analyzer warning expected-warning {{division by zero is undefined}}
-}
-
-// InitListExpr processing
-
-typedef float __m128 __attribute__((__vector_size__(16), __may_alias__));
-__m128 return128() {
- // This compound literal has a Vector type. We currently just
- // return UnknownVal.
- return __extension__(__m128) { 0.0f, 0.0f, 0.0f, 0.0f };
-}
-
-typedef long long __v2di __attribute__ ((__vector_size__ (16)));
-typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
-__m128i vec128i(long long __q1, long long __q0) {
- // This compound literal returns true for both isVectorType() and
- // isIntegerType().
- return __extension__ (__m128i)(__v2di){ __q0, __q1 };
-}
-
-// sizeof(void)
-// - Tests a regression reported in PR 3211: http://llvm.org/bugs/show_bug.cgi?id=3211
-void handle_sizeof_void(unsigned flag) {
- int* p = 0;
-
- if (flag) {
- if (sizeof(void) == 1)
- return;
- // Infeasible.
- *p = 1; // no-warning
- }
-
- void* q;
-
- if (!flag) {
- if (sizeof(*q) == 1)
- return;
- // Infeasibe.
- *p = 1; // no-warning
- }
-
- // Infeasible.
- *p = 1; // no-warning
-}
-
-// check deference of undefined values
-void check_deref_undef(void) {
- int *p;
- *p = 0xDEADBEEF; // expected-warning{{Dereference of undefined pointer value}}
-}
-
-// PR 3422
-void pr3422_helper(char *p);
-void pr3422() {
- char buf[100];
- char *q = &buf[10];
- pr3422_helper(&q[1]);
-}
-
-// PR 3543 (handle empty statement expressions)
-void pr_3543(void) {
- ({});
-}
-
-// <rdar://problem/6611677>
-// This test case test the use of a vector type within an array subscript
-// expression.
-typedef long long __a64vector __attribute__((__vector_size__(8)));
-typedef long long __a128vector __attribute__((__vector_size__(16)));
-static inline __a64vector __attribute__((__always_inline__, __nodebug__))
-my_test_mm_movepi64_pi64(__a128vector a) {
- return (__a64vector)a[0];
-}
-
-// Test basic tracking of ivars associated with 'self'.
-@interface SelfIvarTest : NSObject {
- int flag;
-}
-- (void)test_self_tracking;
-@end
-
-@implementation SelfIvarTest
-- (void)test_self_tracking {
- char *p = 0;
- char c;
-
- if (flag)
- p = "hello";
-
- if (flag)
- c = *p; // no-warning
-}
-@end
-
-// PR 3770
-char pr3770(int x) {
- int y = x & 0x2;
- char *p = 0;
- if (y == 1)
- p = "hello";
-
- if (y == 1)
- return p[0]; // no-warning
-
- return 'a';
-}
-
-// PR 3772
-// - We just want to test that this doesn't crash the analyzer.
-typedef struct st ST;
-struct st { char *name; };
-extern ST *Cur_Pu;
-
-void pr3772(void)
-{
- static ST *last_Cur_Pu;
- if (last_Cur_Pu == Cur_Pu) {
- return;
- }
-}
-
-// PR 3780 - This tests that StmtIterator isn't broken for VLAs in DeclGroups.
-void pr3780(int sz) { typedef double MAT[sz][sz]; }
-
-// <rdar://problem/6695527> - Test that we don't symbolicate doubles before
-// we are ready to do something with them.
-int rdar6695527(double x) {
- if (!x) { return 0; }
- return 1;
-}
-
-// <rdar://problem/6708148> - Test that we properly invalidate structs
-// passed-by-reference to a function.
-void pr6708148_invalidate(NSRect *x);
-void pr6708148_use(NSRect x);
-void pr6708148_test(void) {
- NSRect x;
- pr6708148_invalidate(&x);
- pr6708148_use(x); // no-warning
-}
-
-// Handle both kinds of noreturn attributes for pruning paths.
-void rdar_6777003_noret() __attribute__((noreturn));
-void rdar_6777003_analyzer_noret() __attribute__((analyzer_noreturn));
-
-void rdar_6777003(int x) {
- int *p = 0;
-
- if (x == 1) {
- rdar_6777003_noret();
- *p = 1; // no-warning;
- }
-
- if (x == 2) {
- rdar_6777003_analyzer_noret();
- *p = 1; // no-warning;
- }
-
- *p = 1; // expected-warning{{Dereference of null pointer}}
-}
-
-// Check that the pointer-to-conts arguments do not get invalidated by Obj C
-// interfaces. radar://10595327
-int rdar_10595327(char *str) {
- char fl = str[0];
- int *p = 0;
- NSString *s = [NSString stringWithUTF8String:str];
- if (str[0] != fl)
- return *p; // no-warning
- return 0;
-}
-
-// For pointer arithmetic, --/++ should be treated as preserving non-nullness,
-// regardless of how well the underlying StoreManager reasons about pointer
-// arithmetic.
-// <rdar://problem/6777209>
-void rdar_6777209(char *p) {
- if (p == 0)
- return;
-
- ++p;
-
- // This branch should always be infeasible.
- if (p == 0)
- *p = 'c'; // no-warning
-}
-
-// PR 4033. A symbolic 'void *' pointer can be used as the address for a
-// computed goto.
-typedef void *Opcode;
-Opcode pr_4033_getOpcode();
-void pr_4033(void) {
- void *lbl = &&next_opcode;
-next_opcode:
- {
- Opcode op = pr_4033_getOpcode();
- if (op) goto *op;
- }
-}
-
-// Test invalidating pointers-to-pointers with slightly different types. This
-// example came from a recent false positive due to a regression where the
-// branch condition was falsely reported as being uninitialized.
-void invalidate_by_ref(char **x);
-int test_invalidate_by_ref() {
- unsigned short y;
- invalidate_by_ref((char**) &y);
- if (y) // no-warning
- return 1;
- return 0;
-}
-
-// Test for <rdar://problem/7027684>. This just tests that the CFG is
-// constructed correctly. Previously, the successor block of the entrance
-// was the block containing the merge for '?', which would trigger an
-// assertion failure.
-int rdar_7027684_aux();
-int rdar_7027684_aux_2() __attribute__((noreturn));
-void rdar_7027684(int x, int y) {
- {}; // this empty compound statement is critical.
- (rdar_7027684_aux() ? rdar_7027684_aux_2() : (void) 0);
-}
-
-// Test that we handle casts of string literals to arbitrary types.
-unsigned const char *string_literal_test1() {
- return (const unsigned char*) "hello";
-}
-
-const float *string_literal_test2() {
- return (const float*) "hello";
-}
-
-// Test that we handle casts *from* incomplete struct types.
-extern const struct _FooAssertStruct _cmd;
-void test_cast_from_incomplete_struct_aux(volatile const void *x);
-void test_cast_from_incomplete_struct() {
- test_cast_from_incomplete_struct_aux(&_cmd);
-}
-
-// Test for <rdar://problem/7034511>
-// "ValueManager::makeIntVal(uint64_t X, QualType T) should return a 'Loc'
-// when 'T' is a pointer"
-//
-// Previously this case would crash.
-void test_rdar_7034511(NSArray *y) {
- NSObject *x;
- for (x in y) {}
- if (x == ((void*) 0)) {}
-}
-
-// Handle casts of function pointers (CodeTextRegions) to arbitrary pointer
-// types. This was previously causing a crash in CastRegion.
-void handle_funcptr_voidptr_casts() {
- void **ptr;
- typedef void *PVOID;
- typedef void *PCHAR;
- typedef long INT_PTR, *PINT_PTR;
- typedef INT_PTR (*FARPROC)();
- FARPROC handle_funcptr_voidptr_casts_aux();
- PVOID handle_funcptr_voidptr_casts_aux_2(PVOID volatile *x);
- PVOID handle_funcptr_voidptr_casts_aux_3(PCHAR volatile *x);
-
- ptr = (void**) handle_funcptr_voidptr_casts_aux();
- handle_funcptr_voidptr_casts_aux_2(ptr);
- handle_funcptr_voidptr_casts_aux_3(ptr);
-}
-
-// RegionStore::Retrieve previously crashed on this example. This example
-// was previously in the test file 'xfail_regionstore_wine_crash.c'.
-void testA() {
- long x = 0;
- char *y = (char *) &x;
- if (!*y)
- return;
-}
-
-// RegionStoreManager previously crashed on this example. The problem is that
-// the value bound to the field of b->grue after the call to testB_aux is
-// a symbolic region. The second '*__gruep__' involves performing a load
-// from a 'int*' that really is a 'void**'. The loaded location must be
-// implicitly converted to an integer that wraps a location. Previosly we would
-// get a crash here due to an assertion failure.
-typedef struct _BStruct { void *grue; } BStruct;
-void testB_aux(void *ptr);
-void testB(BStruct *b) {
- {
- int *__gruep__ = ((int *)&((b)->grue));
- int __gruev__ = *__gruep__;
- testB_aux(__gruep__);
- }
- {
- int *__gruep__ = ((int *)&((b)->grue));
- int __gruev__ = *__gruep__;
- if (~0 != __gruev__) {}
- }
-}
-
-void test_trivial_symbolic_comparison(int *x) {
- int test_trivial_symbolic_comparison_aux();
- int a = test_trivial_symbolic_comparison_aux();
- int b = a;
- if (a != b) {
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
- }
-
- a = a == 1;
- b = b == 1;
- if (a != b) {
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
- }
-}
-
-// Test for:
-// <rdar://problem/7062158> false positive null dereference due to
-// BasicStoreManager not tracking *static* globals
-//
-// This just tests the proper tracking of symbolic values for globals (both
-// static and non-static).
-//
-static int* x_rdar_7062158;
-void rdar_7062158() {
- int *current = x_rdar_7062158;
- if (current == x_rdar_7062158)
- return;
-
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
-}
-
-int* x_rdar_7062158_2;
-void rdar_7062158_2() {
- int *current = x_rdar_7062158_2;
- if (current == x_rdar_7062158_2)
- return;
-
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
-}
-
-// This test reproduces a case for a crash when analyzing ClamAV using
-// RegionStoreManager (the crash doesn't exhibit in BasicStoreManager because
-// it isn't doing anything smart about arrays). The problem is that on the
-// second line, 'p = &p[i]', p is assigned an ElementRegion whose index
-// is a 16-bit integer. On the third line, a new ElementRegion is created
-// based on the previous region, but there the region uses a 32-bit integer,
-// resulting in a clash of values (an assertion failure at best). We resolve
-// this problem by implicitly converting index values to 'int' when the
-// ElementRegion is created.
-unsigned char test_array_index_bitwidth(const unsigned char *p) {
- unsigned short i = 0;
- for (i = 0; i < 2; i++) p = &p[i];
- return p[i+1];
-}
-
-// This case tests that CastRegion handles casts involving BlockPointerTypes.
-// It should not crash.
-void test_block_cast() {
- id test_block_cast_aux();
- (void (^)(void *))test_block_cast_aux(); // expected-warning{{expression result unused}}
-}
-
-int OSAtomicCompareAndSwap32Barrier();
-
-// Test comparison of 'id' instance variable to a null void* constant after
-// performing an OSAtomicCompareAndSwap32Barrier.
-// This previously was a crash in RegionStoreManager.
-@interface TestIdNull {
- id x;
-}
--(int)foo;
-@end
-@implementation TestIdNull
--(int)foo {
- OSAtomicCompareAndSwap32Barrier(0, (signed)2, (signed*)&x);
- if (x == (void*) 0) { return 0; }
- return 1;
-}
-@end
-
-// Do not crash when performing compare and swap on symbolic values.
-typedef int int32_t;
-typedef int int32;
-typedef int32 Atomic32;
-int OSAtomicCompareAndSwap32( int32_t __oldValue, int32_t __newValue, volatile int32_t *__theValue);
-void radar11390991_NoBarrier_CompareAndSwap(volatile Atomic32 *ptr,
- Atomic32 old_value,
- Atomic32 new_value) {
- OSAtomicCompareAndSwap32(old_value, new_value, ptr);
-}
-
-// PR 4594 - This was a crash when handling casts in SimpleSValuator.
-void PR4594() {
- char *buf[1];
- char **foo = buf;
- *foo = "test";
-}
-
-// Test invalidation logic where an integer is casted to an array with a
-// different sign and then invalidated.
-void test_invalidate_cast_int() {
- void test_invalidate_cast_int_aux(unsigned *i);
- signed i;
- test_invalidate_cast_int_aux((unsigned*) &i);
- if (i < 0)
- return;
-}
-
-int ivar_getOffset();
-
-// Reduced from a crash involving the cast of an Objective-C symbolic region to
-// 'char *'
-static NSNumber *test_ivar_offset(id self, SEL _cmd, Ivar inIvar) {
- return [[[NSNumber allocWithZone:((void*)0)] initWithBool:*(_Bool *)((char *)self + ivar_getOffset(inIvar))] autorelease];
-}
-
-// Reduced from a crash in StoreManager::CastRegion involving a divide-by-zero.
-// This resulted from not properly handling region casts to 'const void*'.
-void test_cast_const_voidptr() {
- char x[10];
- char *p = &x[1];
- const void* q = p;
-}
-
-// Reduced from a crash when analyzing Wine. This test handles loads from
-// function addresses.
-typedef long (*FARPROC)();
-FARPROC test_load_func(FARPROC origfun) {
- if (!*(unsigned char*) origfun)
- return origfun;
- return 0;
-}
-
-// Test passing-by-value an initialized struct variable.
-struct test_pass_val {
- int x;
- int y;
-};
-void test_pass_val_aux(struct test_pass_val s);
-void test_pass_val() {
- struct test_pass_val s;
- s.x = 1;
- s.y = 2;
- test_pass_val_aux(s);
-}
-
-// This is a reduced test case of a false positive that previously appeared
-// in RegionStoreManager. Previously the array access resulted in dereferencing
-// an undefined value.
-int test_array_compound(int *q, int *r, int *z) {
- int *array[] = { q, r, z };
- int j = 0;
- for (unsigned i = 0; i < 3 ; ++i)
- if (*array[i]) ++j; // no-warning
- return j;
-}
-
-// symbolic value stored in 'x' wouldn't be implicitly casted to a signed value
-// during the comparison.
-int rdar_7124210(unsigned int x) {
- enum { SOME_CONSTANT = 123 };
- int compare = ((signed) SOME_CONSTANT) == *((signed *) &x);
- return compare ? 0 : 1; // Forces the evaluation of the symbolic constraint.
-}
-
-void pr4781(unsigned long *raw1) {
- unsigned long *cook, *raw0;
- unsigned long dough[32];
- int i;
- cook = dough;
- for( i = 0; i < 16; i++, raw1++ ) {
- raw0 = raw1++;
- *cook = (*raw0 & 0x00fc0000L) << 6;
- *cook |= (*raw0 & 0x00000fc0L) << 10;
- }
-}
-
-// <rdar://problem/7185647> - 'self' should be treated as being non-null
-// upon entry to an objective-c method.
-@interface RDar7185647
-- (id)foo;
-@end
-@implementation RDar7185647
-- (id) foo {
- if (self)
- return self;
- *((volatile int *) 0x0) = 0xDEADBEEF; // no-warning
- return self;
-}
-@end
-
-// Test reasoning of __builtin_offsetof;
-struct test_offsetof_A {
- int x;
- int y;
-};
-struct test_offsetof_B {
- int w;
- int z;
-};
-void test_offsetof_1() {
- if (__builtin_offsetof(struct test_offsetof_A, x) ==
- __builtin_offsetof(struct test_offsetof_B, w))
- return;
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
-}
-void test_offsetof_2() {
- if (__builtin_offsetof(struct test_offsetof_A, y) ==
- __builtin_offsetof(struct test_offsetof_B, z))
- return;
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
-}
-void test_offsetof_3() {
- if (__builtin_offsetof(struct test_offsetof_A, y) -
- __builtin_offsetof(struct test_offsetof_A, x)
- ==
- __builtin_offsetof(struct test_offsetof_B, z) -
- __builtin_offsetof(struct test_offsetof_B, w))
- return;
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
-}
-void test_offsetof_4() {
- if (__builtin_offsetof(struct test_offsetof_A, y) ==
- __builtin_offsetof(struct test_offsetof_B, w))
- return;
- int *p = 0;
- *p = 0xDEADBEEF; // expected-warning{{Dereference of null pointer}}
-}
-
-// <rdar://problem/6829164> "nil receiver" false positive: make tracking
-// of the MemRegion for 'self' path-sensitive
-@interface RDar6829164 : NSObject {
- double x; int y;
-}
-- (id) init;
-@end
-
-id rdar_6829164_1();
-double rdar_6829164_2();
-
-@implementation RDar6829164
-- (id) init {
- if((self = [super init]) != 0) {
- id z = rdar_6829164_1();
- y = (z != 0);
- if (y)
- x = rdar_6829164_2();
- }
- return self;
-}
-@end
-
-// <rdar://problem/7242015> - Invalidate values passed-by-reference
-// to functions when the pointer to the value is passed as an integer.
-void test_7242015_aux(unsigned long);
-int rdar_7242015() {
- int x;
- test_7242015_aux((unsigned long) &x); // no-warning
- return x; // Previously we return and uninitialized value when
- // using RegionStore.
-}
-
-// <rdar://problem/7242006> [RegionStore] compound literal assignment with
-// floats not honored
-CGFloat rdar7242006(CGFloat x) {
- NSSize y = (NSSize){x, 10};
- return y.width; // no-warning
-}
-
-// PR 4988 - This test exhibits a case where a function can be referenced
-// when not explicitly used in an "lvalue" context (as far as the analyzer is
-// concerned). This previously triggered a crash due to an invalid assertion.
-void pr_4988(void) {
- pr_4988; // expected-warning{{expression result unused}}
-}
-
-// <rdar://problem/7152418> - A 'signed char' is used as a flag, which is
-// implicitly converted to an int.
-void *rdar7152418_bar();
-@interface RDar7152418 {
- signed char x;
-}
--(char)foo;
-@end;
-@implementation RDar7152418
--(char)foo {
- char *p = 0;
- void *result = 0;
- if (x) {
- result = rdar7152418_bar();
- p = "hello";
- }
- if (!result) {
- result = rdar7152418_bar();
- if (result && x)
- return *p; // no-warning
- }
- return 1;
-}
-
-//===----------------------------------------------------------------------===//
-// Test constant-folding of symbolic values, automatically handling type
-// conversions of the symbol as necessary.
-//===----------------------------------------------------------------------===//
-
-// Previously this would crash once we started eagerly evaluating symbols whose
-// values were constrained to a single value.
-void test_symbol_fold_1(signed char x) {
- while (1) {
- if (x == ((signed char) 0)) {}
- }
-}
-
-// This previously caused a crash because it triggered an assertion in APSInt.
-void test_symbol_fold_2(unsigned int * p, unsigned int n,
- const unsigned int * grumpkin, unsigned int dn) {
- unsigned int i;
- unsigned int tempsub[8];
- unsigned int *solgrumpkin = tempsub + n;
- for (i = 0; i < n; i++)
- solgrumpkin[i] = (i < dn) ? ~grumpkin[i] : 0xFFFFFFFF;
- for (i <<= 5; i < (n << 5); i++) {}
-}
-
-// This previously caused a crash because it triggered an assertion in APSInt.
-// 'x' would evaluate to a 8-bit constant (because of the return value of
-// test_symbol_fold_3_aux()) which would not get properly promoted to an
-// integer.
-char test_symbol_fold_3_aux(void);
-unsigned test_symbol_fold_3(void) {
- unsigned x = test_symbol_fold_3_aux();
- if (x == 54)
- return (x << 8) | 0x5;
- return 0;
-}
-
-//===----------------------------------------------------------------------===//
-// Tests for the warning of casting a non-struct type to a struct type
-//===----------------------------------------------------------------------===//
-
-typedef struct {unsigned int v;} NSSwappedFloat;
-
-NSSwappedFloat test_cast_nonstruct_to_struct(float x) {
- struct hodor {
- float number;
- NSSwappedFloat sf;
- };
- return ((struct hodor *)&x)->sf; // expected-warning{{Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption}}
-}
-
-NSSwappedFloat test_cast_nonstruct_to_union(float x) {
- union bran {
- float number;
- NSSwappedFloat sf;
- };
- return ((union bran *)&x)->sf; // no-warning
-}
-
-void test_undefined_array_subscript() {
- int i, a[10];
- int *p = &a[i]; // expected-warning{{Array subscript is undefined}}
-}
-@end
-
-//===----------------------------------------------------------------------===//
-// Test using an uninitialized value as a branch condition.
-//===----------------------------------------------------------------------===//
-
-int test_uninit_branch(void) {
- int x;
- if (x) // expected-warning{{Branch condition evaluates to a garbage value}}
- return 1;
- return 0;
-}
-
-int test_uninit_branch_b(void) {
- int x;
- return x ? 1 : 0; // expected-warning{{Branch condition evaluates to a garbage value}}
-}
-
-int test_uninit_branch_c(void) {
- int x;
- if ((short)x) // expected-warning{{Branch condition evaluates to a garbage value}}
- return 1;
- return 0;
-}
-
-//===----------------------------------------------------------------------===//
-// Test passing an undefined value in a message or function call.
-//===----------------------------------------------------------------------===//
-
-void test_bad_call_aux(int x);
-void test_bad_call(void) {
- int y;
- test_bad_call_aux(y); // expected-warning{{1st function call argument is an uninitialized value}}
-}
-
-@interface TestBadArg {}
-- (void) testBadArg:(int) x;
-@end
-
-void test_bad_msg(TestBadArg *p) {
- int y;
- [p testBadArg:y]; // expected-warning{{1st argument in message expression is an uninitialized value}}
-}
-
-//===----------------------------------------------------------------------===//
-// PR 6033 - Test emitting the correct output in a warning where we use '%'
-// with operands that are undefined.
-//===----------------------------------------------------------------------===//
-
-int pr6033(int x) {
- int y;
- return x % y; // expected-warning{{The right operand of '%' is a garbage value}}
-}
-
-struct trie {
- struct trie* next;
-};
-
-struct kwset {
- struct trie *trie;
- unsigned char y[10];
- struct trie* next[10];
- int d;
-};
-
-typedef struct trie trie_t;
-typedef struct kwset kwset_t;
-
-void f(kwset_t *kws, char const *p, char const *q) {
- struct trie const *trie;
- struct trie * const *next = kws->next;
- register unsigned char c;
- register char const *end = p;
- register char const *lim = q;
- register int d = 1;
- register unsigned char const *y = kws->y;
-
- d = y[c = (end+=d)[-1]]; // no-warning
- trie = next[c];
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7593875> When handling sizeof(VLA) it leads to a hole in
-// the ExplodedGraph (causing a false positive)
-//===----------------------------------------------------------------------===//
-
-int rdar_7593875_aux(int x);
-int rdar_7593875(int n) {
- int z[n > 10 ? 10 : n]; // VLA.
- int v;
- v = rdar_7593875_aux(sizeof(z));
- // Previously we got a false positive about 'v' being uninitialized.
- return v; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// Handle casts from symbolic regions (packaged as integers) to doubles.
-// Previously this caused an assertion failure.
-//===----------------------------------------------------------------------===//
-
-void *foo_rev95119();
-void baz_rev95119(double x);
-void bar_rev95119() {
- // foo_rev95119() returns a symbolic pointer. It is then
- // cast to an int which is then cast to a double.
- int value = (int) foo_rev95119();
- baz_rev95119((double)value);
-}
-
-//===----------------------------------------------------------------------===//
-// Handle loading a symbolic pointer from a symbolic region that was
-// invalidated by a call to an unknown function.
-//===----------------------------------------------------------------------===//
-
-void bar_rev95192(int **x);
-void foo_rev95192(int **x) {
- *x = 0;
- bar_rev95192(x);
- // Not a null dereference.
- **x = 1; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// Handle casts of a function to a function pointer with a different return
-// value. We don't yet emit an error for such cases, but we now we at least
-// don't crash when the return value gets interpreted in a way that
-// violates our invariants.
-//===----------------------------------------------------------------------===//
-
-void *foo_rev95267();
-int bar_rev95267() {
- char (*Callback_rev95267)(void) = (char (*)(void)) foo_rev95267;
- if ((*Callback_rev95267)() == (char) 0)
- return 1;
- return 0;
-}
-
-// Same as previous case, but handle casts to 'void'.
-int bar_rev95274() {
- void (*Callback_rev95274)(void) = (void (*)(void)) foo_rev95267;
- (*Callback_rev95274)();
- return 0;
-}
-
-void rdar7582031_test_static_init_zero() {
- static unsigned x;
- if (x == 0)
- return;
- int *p = 0;
- *p = 0xDEADBEEF;
-}
-void rdar7582031_test_static_init_zero_b() {
- static void* x;
- if (x == 0)
- return;
- int *p = 0;
- *p = 0xDEADBEEF;
-}
-
-//===----------------------------------------------------------------------===//
-// Test handling of parameters that are structs that contain floats and //
-// nested fields. //
-//===----------------------------------------------------------------------===//
-
-struct s_rev95547_nested { float x, y; };
-struct s_rev95547 {
- struct s_rev95547_nested z1;
- struct s_rev95547_nested z2;
-};
-float foo_rev95547(struct s_rev95547 w) {
- return w.z1.x + 20.0; // no-warning
-}
-void foo_rev95547_b(struct s_rev95547 w) {
- struct s_rev95547 w2 = w;
- w2.z1.x += 20.0; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// Test handling statement expressions that don't populate a CFG block that
-// is used to represent the computation of the RHS of a logical operator.
-// This previously triggered a crash.
-//===----------------------------------------------------------------------===//
-
-void pr6938() {
- if (1 && ({
- while (0);
- 0;
- }) == 0) {
- }
-}
-
-void pr6938_b() {
- if (1 && *({ // expected-warning{{Dereference of null pointer}}
- while (0) {}
- ({
- (int *) 0;
- });
- }) == 0) {
- }
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7979430> - The CFG for code containing an empty
-// @synchronized block was previously broken (and would crash the analyzer).
-//===----------------------------------------------------------------------===//
-
-void r7979430(id x) {
- @synchronized(x) {}
-}
-
-//===----------------------------------------------------------------------===
-// PR 7361 - Test that functions wrapped in macro instantiations are analyzed.
-//===----------------------------------------------------------------------===
-#define MAKE_TEST_FN() \
- void test_pr7361 (char a) {\
- char* b = 0x0; *b = a;\
- }
-
-MAKE_TEST_FN() // expected-warning{{null pointer}}
-
-//===----------------------------------------------------------------------===
-// PR 7491 - Test that symbolic expressions can be used as conditions.
-//===----------------------------------------------------------------------===
-
-void pr7491 () {
- extern int getint();
- int a = getint()-1;
- if (a) {
- return;
- }
- if (!a) {
- return;
- } else {
- // Should be unreachable
- (void)*(char*)0; // no-warning
- }
-}
-
-//===----------------------------------------------------------------------===
-// PR 7475 - Test that assumptions about global variables are reset after
-// calling a global function.
-//===----------------------------------------------------------------------===
-
-int *pr7475_someGlobal;
-void pr7475_setUpGlobal();
-
-void pr7475() {
- if (pr7475_someGlobal == 0)
- pr7475_setUpGlobal();
- *pr7475_someGlobal = 0; // no-warning
-}
-
-void pr7475_warn() {
- static int *someStatic = 0;
- if (someStatic == 0)
- pr7475_setUpGlobal();
- *someStatic = 0; // expected-warning{{null pointer}}
-}
-
-// <rdar://problem/8202272> - __imag passed non-complex should not crash
-float f0(_Complex float x) {
- float l0 = __real x;
- return __real l0 + __imag l0;
-}
-
-
-//===----------------------------------------------------------------------===
-// Test that we can reduce symbols to constants whether they are on the left
-// or right side of an expression.
-//===----------------------------------------------------------------------===
-
-void reduce_to_constant(int x, int y) {
- if (x != 20)
- return;
-
- int a = x + y;
- int b = y + x;
-
- if (y == -20 && a != 0)
- (void)*(char*)0; // no-warning
- if (y == -20 && b != 0)
- (void)*(char*)0; // no-warning
-}
-
-// <rdar://problem/8360854> - Test that code after a switch statement with no
-// 'case:' labels is correctly evaluated.
-void r8360854(int n) {
- switch (n) {
- default: ;
- }
- int *p = 0;
- *p = 0xDEADBEEF; // expected-warning{{null pointer}}
-}
-
-// PR 8050 - crash in CastSizeChecker when pointee is an incomplete type
-typedef long unsigned int __darwin_size_t;
-typedef __darwin_size_t size_t;
-void *malloc(size_t);
-
-struct PR8050;
-
-void pr8050(struct PR8050 **arg)
-{
- *arg = malloc(1);
-}
-
-// <rdar://problem/5880430> Switch on enum should not consider default case live
-// if all enum values are covered
-enum Cases { C1, C2, C3, C4 };
-void test_enum_cases(enum Cases C) {
- switch (C) {
- case C1:
- case C2:
- case C4:
- case C3:
- return;
- }
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
-}
-
-void test_enum_cases_positive(enum Cases C) {
- switch (C) { // expected-warning{{enumeration value 'C4' not handled in switch}}
- case C1:
- case C2:
- case C3:
- return;
- }
- int *p = 0;
- *p = 0xDEADBEEF; // expected-warning{{Dereference of null pointer}}
-}
-
-// <rdar://problem/6351970> rule request: warn if synchronization mutex can be nil
-void rdar6351970() {
- id x = 0;
- @synchronized(x) {} // expected-warning{{Nil value used as mutex for @synchronized() (no synchronization will occur)}}
-}
-
-void rdar6351970_b(id x) {
- if (!x)
- @synchronized(x) {} // expected-warning{{Nil value used as mutex for @synchronized() (no synchronization will occur)}}
-}
-
-void rdar6351970_c() {
- id x;
- @synchronized(x) {} // expected-warning{{Uninitialized value used as mutex for @synchronized}}
-}
-
-@interface Rdar8578650
-- (id) foo8578650;
-@end
-
-void rdar8578650(id x) {
- @synchronized (x) {
- [x foo8578650];
- }
- // At this point we should assume that 'x' is not nil, not
- // the inverse.
- @synchronized (x) { // no-warning
- }
-}
-
-// <rdar://problem/6352035> rule request: direct structure member access null pointer dereference
-@interface RDar6352035 {
- int c;
-}
-- (void)foo;
-- (void)bar;
-@end
-
-@implementation RDar6352035
-- (void)foo {
- RDar6352035 *friend = 0;
- friend->c = 7; // expected-warning{{Access to instance variable 'c' results in a dereference of a null pointer (loaded from variable 'friend')}}
-}
-- (void)bar {
- self = 0;
- c = 7; // expected-warning{{Access to instance variable 'c' results in a dereference of a null pointer (loaded from variable 'self')}}
-}
-@end
-
-// PR 8149 - GNU statement expression in condition of ForStmt.
-// This previously triggered an assertion failure in CFGBuilder.
-void pr8149(void) {
- for (; ({ do { } while (0); 0; });) { }
-}
-
-// PR 8458 - Make sure @synchronized doesn't crash with properties.
-@interface PR8458 {}
-@property(readonly) id lock;
-@end
-
-static
-void __PR8458(PR8458 *x) {
- @synchronized(x.lock) {} // no-warning
-}
-
-// PR 8440 - False null dereference during store to array-in-field-in-global.
-// This test case previously resulted in a bogus null deref warning from
-// incorrect lazy symbolication logic in RegionStore.
-static struct {
- int num;
- char **data;
-} saved_pr8440;
-
-char *foo_pr8440();
-char **bar_pr8440();
-void baz_pr8440(int n)
-{
- saved_pr8440.num = n;
- if (saved_pr8440.data)
- return;
- saved_pr8440.data = bar_pr8440();
- for (int i = 0 ; i < n ; i ++)
- saved_pr8440.data[i] = foo_pr8440(); // no-warning
-}
-
-// Support direct accesses to non-null memory. Reported in:
-// PR 5272
-// <rdar://problem/6839683>
-int test_direct_address_load() {
- int *p = (int*) 0x4000;
- return *p; // no-warning
-}
-
-void pr5272_test() {
- struct pr5272 { int var2; };
- (*(struct pr5272*)0xBC000000).var2 = 0; // no-warning
- (*(struct pr5272*)0xBC000000).var2 += 2; // no-warning
-}
-
-// Support casting the return value of function to another different type
-// This previously caused a crash, although we likely need more precise
-// reasoning here. <rdar://problem/8663544>
-void* rdar8663544();
-typedef struct {} Val8663544;
-Val8663544 bazR8663544() {
- Val8663544(*func) () = (Val8663544(*) ()) rdar8663544;
- return func();
-}
-
-// PR 8619 - Handle ternary expressions with a call to a noreturn function.
-// This previously resulted in a crash.
-void pr8619_noreturn(int x) __attribute__((noreturn));
-
-void pr8619(int a, int b, int c) {
- a ?: pr8619_noreturn(b || c);
-}
-
-
-// PR 8646 - crash in the analyzer when handling unions.
-union pr8648_union {
- signed long long pr8648_union_field;
-};
-void pr8648() {
- long long y;
- union pr8648_union x = { .pr8648_union_field = 0LL };
- y = x.pr8648_union_field;
-
- union pr8648_union z;
- z = (union pr8648_union) { .pr8648_union_field = 0LL };
-
- union pr8648_union w;
- w = ({ (union pr8648_union) { .pr8648_union_field = 0LL }; });
-
- // crash, no assignment
- (void) ({ (union pr8648_union) { .pr8648_union_field = 0LL }; }).pr8648_union_field;
-
- // crash with assignment
- y = ({ (union pr8648_union) { .pr8648_union_field = 0LL }; }).pr8648_union_field;
-}
-
-// PR 9269 - don't assert when building the following CFG. The for statement
-// contains a condition with multiple basic blocks, and the value of the
-// statement expression is then indexed as part of a bigger condition expression.
-// This example exposed a bug in child traversal in the CFGBuilder.
-void pr9269() {
- struct s { char *bar[10]; } baz[2] = { 0 };
- unsigned i = 0;
- for (i = 0;
- (* ({ while(0); ({ &baz[0]; }); })).bar[0] != 0; // expected-warning {{while loop has empty body}} expected-note {{put the semicolon on a separate line to silence this warning}}
- ++i) {}
-}
-
-// Test evaluation of GNU-style ?:.
-int pr9287(int type) { return type ? : 0; } // no-warning
-
-void pr9287_b(int type, int *p) {
- int x = type ? : 0;
- if (x) {
- p = 0;
- }
- if (type) {
- *p = 0xDEADBEEF; // expected-warning {{null pointer}}
- }
-}
-
-void pr9287_c(int type, int *p) {
- int x = type ? : 0;
- if (x) {
- p = 0;
- }
- if (!type) {
- *p = 0xDEADBEEF; // no-warning
- }
-}
-
-void test_switch() {
- switch (4) {
- case 1: {
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
- break;
- }
- case 4: {
- int *p = 0;
- *p = 0xDEADBEEF; // expected-warning {{null}}
- break;
- }
- default: {
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
- break;
- }
- }
-}
-
-// PR 9467. Tests various CFG optimizations. This previously crashed.
-static void test(unsigned int bit_mask)
-{
- unsigned int bit_index;
- for (bit_index = 0;
- bit_index < 24;
- bit_index++) {
- switch ((0x01 << bit_index) & bit_mask) {
- case 0x100000: ;
- }
- }
-}
-
-// Don't crash on code containing __label__.
-int radar9414427_aux();
-void radar9414427() {
- __label__ mylabel;
- if (radar9414427_aux()) {
- mylabel: do {}
- while (0);
- }
-}
-
-// Analyze methods in @implementation (category)
-@interface RDar9465344
-@end
-
-@implementation RDar9465344 (MyCategory)
-- (void) testcategoryImpl {
- int *p = 0x0;
- *p = 0xDEADBEEF; // expected-warning {{null}}
-}
-@end
-
-@implementation RDar9465344
-@end
-
-// Don't crash when analyzing access to 'self' within a block.
-@interface Rdar10380300Base
-- (void) foo;
-@end
-@interface Rdar10380300 : Rdar10380300Base @end
-@implementation Rdar10380300
-- (void)foo {
- ^{
- [super foo];
- }();
-}
-@end
-
-// Don't crash when a ?: is only preceded by a statement (not an expression)
-// in the CFG.
-void __assert_fail();
-
-enum rdar1196620_e { E_A, E_B, E_C, E_D };
-struct rdar1196620_s { int ints[E_D+1]; };
-
-static void rdar1196620_call_assert(struct rdar1196620_s* s) {
- int i = 0;
- s?(void)0:__assert_fail();
-}
-
-static void rdar1196620(struct rdar1196620_s* s) {
- rdar1196620_call_assert(s);
-}
-
-
diff --git a/test/Analysis/mismatched-iterator.cpp b/test/Analysis/mismatched-iterator.cpp
deleted file mode 100644
index 756d09544357..000000000000
--- a/test/Analysis/mismatched-iterator.cpp
+++ /dev/null
@@ -1,191 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,cplusplus,alpha.cplusplus.MismatchedIterator -analyzer-config aggressive-binary-operation-simplification=true -analyzer-config c++-container-inlining=false %s -verify
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,cplusplus,alpha.cplusplus.MismatchedIterator -analyzer-config aggressive-binary-operation-simplification=true -analyzer-config c++-container-inlining=true -DINLINE=1 %s -verify
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-void good_insert1(std::vector<int> &v, int n) {
- v.insert(v.cbegin(), n); // no-warning
-}
-
-
-void good_insert2(std::vector<int> &v, int len, int n) {
- v.insert(v.cbegin(), len, n); // no-warning
-}
-
-void good_insert3(std::vector<int> &v1, std::vector<int> &v2) {
- v1.insert(v1.cbegin(), v2.cbegin(), v2.cend()); // no-warning
-}
-
-void good_insert4(std::vector<int> &v, int len, int n) {
- v.insert(v.cbegin(), {n-1, n, n+1}); // no-warning
-}
-
-void good_insert_find(std::vector<int> &v, int n, int m) {
- auto i = std::find(v.cbegin(), v.cend(), n);
- v.insert(i, m); // no-warning
-}
-
-void good_erase1(std::vector<int> &v) {
- v.erase(v.cbegin()); // no-warning
-}
-
-void good_erase2(std::vector<int> &v) {
- v.erase(v.cbegin(), v.cend()); // no-warning
-}
-
-void good_emplace(std::vector<int> &v, int n) {
- v.emplace(v.cbegin(), n); // no-warning
-}
-
-void good_ctor(std::vector<int> &v) {
- std::vector<int> new_v(v.cbegin(), v.cend()); // no-warning
-}
-
-void good_find(std::vector<int> &v, int n) {
- std::find(v.cbegin(), v.cend(), n); // no-warning
-}
-
-void good_find_first_of(std::vector<int> &v1, std::vector<int> &v2) {
- std::find_first_of(v1.cbegin(), v1.cend(), v2.cbegin(), v2.cend()); // no-warning
-}
-
-void good_copy(std::vector<int> &v1, std::vector<int> &v2, int n) {
- std::copy(v1.cbegin(), v1.cend(), v2.begin()); // no-warning
-}
-
-void good_move_find1(std::vector<int> &v1, std::vector<int> &v2, int n) {
- auto i0 = v2.cbegin();
- v1 = std::move(v2);
- std::find(i0, v1.cend(), n); // no-warning
-}
-
-void bad_insert1(std::vector<int> &v1, std::vector<int> &v2, int n) {
- v2.insert(v1.cbegin(), n); // expected-warning{{Container accessed using foreign iterator argument}}
-}
-
-void bad_insert2(std::vector<int> &v1, std::vector<int> &v2, int len, int n) {
- v2.insert(v1.cbegin(), len, n); // expected-warning{{Container accessed using foreign iterator argument}}
-}
-
-void bad_insert3(std::vector<int> &v1, std::vector<int> &v2) {
- v2.insert(v1.cbegin(), v2.cbegin(), v2.cend()); // expected-warning{{Container accessed using foreign iterator argument}}
- v1.insert(v1.cbegin(), v1.cbegin(), v2.cend()); // expected-warning{{Iterators of different containers used where the same container is expected}}
- v1.insert(v1.cbegin(), v2.cbegin(), v1.cend()); // expected-warning{{Iterators of different containers used where the same container is expected}}
-}
-
-void bad_insert4(std::vector<int> &v1, std::vector<int> &v2, int len, int n) {
- v2.insert(v1.cbegin(), {n-1, n, n+1}); // expected-warning{{Container accessed using foreign iterator argument}}
-}
-
-void bad_erase1(std::vector<int> &v1, std::vector<int> &v2) {
- v2.erase(v1.cbegin()); // expected-warning{{Container accessed using foreign iterator argument}}
-}
-
-void bad_erase2(std::vector<int> &v1, std::vector<int> &v2) {
- v2.erase(v2.cbegin(), v1.cend()); // expected-warning{{Container accessed using foreign iterator argument}}
- v2.erase(v1.cbegin(), v2.cend()); // expected-warning{{Container accessed using foreign iterator argument}}
- v2.erase(v1.cbegin(), v1.cend()); // expected-warning{{Container accessed using foreign iterator argument}}
-}
-
-void bad_emplace(std::vector<int> &v1, std::vector<int> &v2, int n) {
- v2.emplace(v1.cbegin(), n); // expected-warning{{Container accessed using foreign iterator argument}}
-}
-
-void good_move_find2(std::vector<int> &v1, std::vector<int> &v2, int n) {
- auto i0 = --v2.cend();
- v1 = std::move(v2);
- std::find(i0, v1.cend(), n); // no-warning
-}
-
-void good_move_find3(std::vector<int> &v1, std::vector<int> &v2, int n) {
- auto i0 = v2.cend();
- v1 = std::move(v2);
- v2.push_back(n); // expected-warning{{Method called on moved-from object of type 'std::vector'}}
- std::find(v2.cbegin(), i0, n); // no-warning
-}
-
-void good_comparison(std::vector<int> &v) {
- if (v.cbegin() == v.cend()) {} // no-warning
-}
-
-void bad_ctor(std::vector<int> &v1, std::vector<int> &v2) {
- std::vector<int> new_v(v1.cbegin(), v2.cend()); // expected-warning{{Iterators of different containers used where the same container is expected}}
-}
-
-void bad_find(std::vector<int> &v1, std::vector<int> &v2, int n) {
- std::find(v1.cbegin(), v2.cend(), n); // expected-warning{{Iterators of different containers used where the same container is expected}}
-}
-
-void bad_find_first_of(std::vector<int> &v1, std::vector<int> &v2) {
- std::find_first_of(v1.cbegin(), v2.cend(), v2.cbegin(), v2.cend()); // expected-warning{{Iterators of different containers used where the same container is expected}}
- std::find_first_of(v1.cbegin(), v1.cend(), v2.cbegin(), v1.cend()); // expected-warning{{Iterators of different containers used where the same container is expected}}
-}
-
-void bad_move_find1(std::vector<int> &v1, std::vector<int> &v2, int n) {
- auto i0 = v2.cbegin();
- v1 = std::move(v2);
- std::find(i0, v2.cend(), n); // expected-warning{{Iterators of different containers used where the same container is expected}}
- // expected-warning@-1{{Method called on moved-from object of type 'std::vector'}}
-}
-
-void bad_insert_find(std::vector<int> &v1, std::vector<int> &v2, int n, int m) {
- auto i = std::find(v1.cbegin(), v1.cend(), n);
- v2.insert(i, m); // expected-warning{{Container accessed using foreign iterator argument}}
-}
-
-void good_overwrite(std::vector<int> &v1, std::vector<int> &v2, int n) {
- auto i = v1.cbegin();
- i = v2.cbegin();
- v2.insert(i, n); // no-warning
-}
-
-void bad_overwrite(std::vector<int> &v1, std::vector<int> &v2, int n) {
- auto i = v1.cbegin();
- i = v2.cbegin();
- v1.insert(i, n); // expected-warning{{Container accessed using foreign iterator argument}}
-}
-
-template<typename Container, typename Iterator>
-bool is_cend(Container cont, Iterator it) {
- return it == cont.cend();
-}
-
-void good_empty(std::vector<int> &v) {
- is_cend(v, v.cbegin()); // no-warning
-}
-
-void bad_empty(std::vector<int> &v1, std::vector<int> &v2) {
- is_cend(v1, v2.cbegin()); // expected-warning@-8{{Iterators of different containers used where the same container is expected}}
-}
-
-void good_move(std::vector<int> &v1, std::vector<int> &v2) {
- const auto i0 = ++v2.cbegin();
- v1 = std::move(v2);
- v1.erase(i0); // no-warning
-}
-
-void bad_move(std::vector<int> &v1, std::vector<int> &v2) {
- const auto i0 = ++v2.cbegin();
- v1 = std::move(v2);
- v2.erase(i0); // expected-warning{{Container accessed using foreign iterator argument}}
- // expected-warning@-1{{Method called on moved-from object of type 'std::vector'}}
-}
-
-void bad_move_find2(std::vector<int> &v1, std::vector<int> &v2, int n) {
- auto i0 = --v2.cend();
- v1 = std::move(v2);
- std::find(i0, v2.cend(), n); // expected-warning{{Iterators of different containers used where the same container is expected}}
- // expected-warning@-1{{Method called on moved-from object of type 'std::vector'}}
-}
-
-void bad_move_find3(std::vector<int> &v1, std::vector<int> &v2, int n) {
- auto i0 = v2.cend();
- v1 = std::move(v2);
- std::find(v1.cbegin(), i0, n); // expected-warning{{Iterators of different containers used where the same container is expected}}
-}
-
-void bad_comparison(std::vector<int> &v1, std::vector<int> &v2) {
- if (v1.cbegin() != v2.cend()) { // expected-warning{{Iterators of different containers used where the same container is expected}}
- *v1.cbegin();
- }
-}
diff --git a/test/Analysis/missing-bind-temporary.cpp b/test/Analysis/missing-bind-temporary.cpp
deleted file mode 100644
index 7be4e2ddf300..000000000000
--- a/test/Analysis/missing-bind-temporary.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux -analyzer-checker=debug.DumpCFG -std=c++14 -analyzer-config eagerly-assume=false %s > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux -analyzer-checker=core,debug.ExprInspection -std=c++14 -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(bool);
-
-int global;
-
-namespace variant_0 {
-// This variant of the code works correctly. Function foo() is not a template
-// function. Note that there are two destructors within foo().
-
-class A {
-public:
- ~A() { ++global; }
-};
-
-class B {
- A a;
-};
-
-// CHECK: void foo(int)
-// CHECK: [B1]
-// CHECK-NEXT: 1: (CXXConstructExpr, [B1.2], class variant_0::B)
-// CHECK-NEXT: 2: variant_0::B i;
-// CHECK-NEXT: 3: operator=
-// CHECK-NEXT: 4: [B1.3] (ImplicitCastExpr, FunctionToPointerDecay, class variant_0::B &(*)(class variant_0::B &&) noexcept)
-// CHECK-NEXT: 5: i
-// CHECK-NEXT: 6: {} (CXXConstructExpr, [B1.7], [B1.8], class variant_0::B)
-// CHECK-NEXT: 7: [B1.6] (BindTemporary)
-// CHECK-NEXT: 8: [B1.7]
-// CHECK-NEXT: 9: [B1.5] = [B1.8] (OperatorCall)
-// CHECK-NEXT: 10: ~variant_0::B() (Temporary object destructor)
-// CHECK-NEXT: 11: [B1.2].~B() (Implicit destructor)
-void foo(int) {
- B i;
- i = {};
-}
-
-void bar() {
- global = 0;
- foo(1);
- clang_analyzer_eval(global == 2); // expected-warning{{TRUE}}
-}
-
-} // end namespace variant_0
-
-namespace variant_1 {
-// Suddenly, if we turn foo() into a template, we are missing a
-// CXXBindTemporaryExpr in the AST, and therefore we're missing a
-// temporary destructor in the CFG.
-
-class A {
-public:
- ~A() { ++global; }
-};
-
-class B {
- A a;
-};
-
-// FIXME: Find the construction context for {} and enforce the temporary
-// destructor.
-// CHECK: template<> void foo<int>(int)
-// CHECK: [B1]
-// CHECK-NEXT: 1: (CXXConstructExpr, [B1.2], class variant_1::B)
-// CHECK-NEXT: 2: variant_1::B i;
-// CHECK-NEXT: 3: operator=
-// CHECK-NEXT: 4: [B1.3] (ImplicitCastExpr, FunctionToPointerDecay, class variant_1::B &(*)(class variant_1::B &&) noexcept)
-// CHECK-NEXT: 5: i
-// CHECK-NEXT: 6: {} (CXXConstructExpr, class variant_1::B)
-// CHECK-NEXT: 7: [B1.6]
-// CHECK-NEXT: 8: [B1.5] = [B1.7] (OperatorCall)
-// CHECK-NEXT: 9: [B1.2].~B() (Implicit destructor)
-template <typename T> void foo(T) {
- B i;
- i = {};
-}
-
-void bar() {
- global = 0;
- foo(1);
- // FIXME: Should be TRUE, i.e. we should call (and inline) two destructors.
- clang_analyzer_eval(global == 2); // expected-warning{{UNKNOWN}}
-}
-
-} // end namespace variant_1
-
-namespace variant_2 {
-// Making field 'a' in class 'B' public turns the class into an aggregate.
-// In this case there is no constructor at {} - only an aggregate
-// initialization. Aggregate initialization is unsupported for now.
-
-class A {
-public:
- ~A() { ++global; }
-};
-
-class B {
-public:
- A a;
-};
-
-// CHECK: template<> void foo<int>(int)
-// CHECK: [B1]
-// CHECK-NEXT: 1: (CXXConstructExpr, [B1.2], class variant_2::B)
-// CHECK-NEXT: 2: variant_2::B i;
-// CHECK-NEXT: 3: operator=
-// CHECK-NEXT: 4: [B1.3] (ImplicitCastExpr, FunctionToPointerDecay, class variant_2::B &(*)(class variant_2::B &&) noexcept)
-// CHECK-NEXT: 5: i
-// CHECK-NEXT: 6: {}
-// CHECK-NEXT: 7: {}
-// CHECK-NEXT: 8: [B1.7] (BindTemporary)
-// CHECK-NEXT: 9: [B1.8]
-// CHECK-NEXT: 10: [B1.5] = [B1.9] (OperatorCall)
-// CHECK-NEXT: 11: ~variant_2::B() (Temporary object destructor)
-// CHECK-NEXT: 12: [B1.2].~B() (Implicit destructor)
-template <typename T> void foo(T) {
- B i;
- i = {};
-}
-
-void bar() {
- global = 0;
- foo(1);
- // FIXME: Should be TRUE, i.e. we should call (and inline) two destructors.
- clang_analyzer_eval(global == 2); // expected-warning{{UNKNOWN}}
-}
-
-} // end namespace variant_2
diff --git a/test/Analysis/mmap-writeexec.c b/test/Analysis/mmap-writeexec.c
deleted file mode 100644
index 2ebc96110342..000000000000
--- a/test/Analysis/mmap-writeexec.c
+++ /dev/null
@@ -1,44 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i686-unknown-linux -analyzer-checker=alpha.security.MmapWriteExec -analyzer-config alpha.security.MmapWriteExec:MmapProtExec=1 -analyzer-config alpha.security.MmapWriteExec:MmapProtRead=4 -DUSE_ALTERNATIVE_PROT_EXEC_DEFINITION -verify %s
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-apple-darwin10 -analyzer-checker=alpha.security.MmapWriteExec -verify %s
-
-#define PROT_WRITE 0x02
-#ifndef USE_ALTERNATIVE_PROT_EXEC_DEFINITION
-#define PROT_EXEC 0x04
-#define PROT_READ 0x01
-#else
-#define PROT_EXEC 0x01
-#define PROT_READ 0x04
-#endif
-#define MAP_PRIVATE 0x0002
-#define MAP_ANON 0x1000
-#define MAP_FIXED 0x0010
-#define NULL ((void *)0)
-
-typedef __typeof(sizeof(int)) size_t;
-void *mmap(void *, size_t, int, int, int, long);
-int mprotect(void *, size_t, int);
-
-void f1()
-{
- void *a = mmap(NULL, 16, PROT_READ | PROT_EXEC, MAP_PRIVATE | MAP_ANON, -1, 0); // no-warning
- void *b = mmap(a, 16, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED | MAP_ANON, -1, 0); // no-warning
- void *c = mmap(NULL, 32, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANON, -1, 0); // expected-warning{{Both PROT_WRITE and PROT_EXEC flags are set. This can lead to exploitable memory regions, which could be overwritten with malicious code}}
- (void)a;
- (void)b;
- (void)c;
-}
-
-void f2()
-{
- void *(*callm)(void *, size_t, int, int, int, long);
- callm = mmap;
- int prot = PROT_WRITE | PROT_EXEC;
- (void)callm(NULL, 1024, prot, MAP_PRIVATE | MAP_ANON, -1, 0); // expected-warning{{Both PROT_WRITE and PROT_EXEC flags are set. This can lead to exploitable memory regions, which could be overwritten with malicious code}}
-}
-
-void f3()
-{
- void *p = mmap(NULL, 1024, PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); // no-warning
- int m = mprotect(p, 1024, PROT_WRITE | PROT_EXEC); // expected-warning{{Both PROT_WRITE and PROT_EXEC flags are set. This can lead to exploitable memory regions, which could be overwritten with malicious code}}
- (void)m;
-}
diff --git a/test/Analysis/model-file.cpp b/test/Analysis/model-file.cpp
deleted file mode 100644
index c5615e92714d..000000000000
--- a/test/Analysis/model-file.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-config faux-bodies=true,model-path=%S/Inputs/Models -analyzer-output=plist-multi-file -verify %s -o %t
-// RUN: cat %t | %diff_plist %S/Inputs/expected-plists/model-file.cpp.plist -
-
-typedef int* intptr;
-
-// This function is modeled and the p pointer is dereferenced in the model
-// function and there is no function definition available. The modeled
-// function can use any types that are available in the original translation
-// unit, for example intptr in this case.
-void modeledFunction(intptr p);
-
-// This function is modeled and returns true if the parameter is not zero
-// and there is no function definition available.
-bool notzero(int i);
-
-// This functions is not modeled and there is no function definition.
-// available
-bool notzero_notmodeled(int i);
-
-int main() {
- // There is a nullpointer dereference inside this function.
- modeledFunction(0);
-
- int p = 0;
- if (notzero(p)) {
- // It is known that p != 0 because of the information provided by the
- // model of the notzero function.
- int j = 5 / p;
- }
-
- if (notzero_notmodeled(p)) {
- // There is no information about the value of p, because
- // notzero_notmodeled is not modeled and the function definition
- // is not available.
- int j = 5 / p; // expected-warning {{Division by zero}}
- }
-
- return 0;
-}
-
diff --git a/test/Analysis/mpichecker.cpp b/test/Analysis/mpichecker.cpp
deleted file mode 100644
index f7644520ebcf..000000000000
--- a/test/Analysis/mpichecker.cpp
+++ /dev/null
@@ -1,342 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=optin.mpi.MPI-Checker -verify %s
-
-#include "MPIMock.h"
-
-void matchedWait1() {
- int rank = 0;
- double buf = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- if (rank >= 0) {
- MPI_Request sendReq1, recvReq1;
- MPI_Isend(&buf, 1, MPI_DOUBLE, rank + 1, 0, MPI_COMM_WORLD, &sendReq1);
- MPI_Irecv(&buf, 1, MPI_DOUBLE, rank - 1, 0, MPI_COMM_WORLD, &recvReq1);
-
- MPI_Wait(&sendReq1, MPI_STATUS_IGNORE);
- MPI_Wait(&recvReq1, MPI_STATUS_IGNORE);
- }
-} // no error
-
-void matchedWait2() {
- int rank = 0;
- double buf = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- if (rank >= 0) {
- MPI_Request sendReq1, recvReq1;
- MPI_Isend(&buf, 1, MPI_DOUBLE, rank + 1, 0, MPI_COMM_WORLD, &sendReq1);
- MPI_Irecv(&buf, 1, MPI_DOUBLE, rank - 1, 0, MPI_COMM_WORLD, &recvReq1);
- MPI_Wait(&sendReq1, MPI_STATUS_IGNORE);
- MPI_Wait(&recvReq1, MPI_STATUS_IGNORE);
- }
-} // no error
-
-void matchedWait3() {
- int rank = 0;
- double buf = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- if (rank >= 0) {
- MPI_Request sendReq1, recvReq1;
- MPI_Isend(&buf, 1, MPI_DOUBLE, rank + 1, 0, MPI_COMM_WORLD, &sendReq1);
- MPI_Irecv(&buf, 1, MPI_DOUBLE, rank - 1, 0, MPI_COMM_WORLD, &recvReq1);
-
- if (rank > 1000) {
- MPI_Wait(&sendReq1, MPI_STATUS_IGNORE);
- MPI_Wait(&recvReq1, MPI_STATUS_IGNORE);
- } else {
- MPI_Wait(&sendReq1, MPI_STATUS_IGNORE);
- MPI_Wait(&recvReq1, MPI_STATUS_IGNORE);
- }
- }
-} // no error
-
-void missingWait1() { // Check missing wait for dead region.
- double buf = 0;
- MPI_Request sendReq1;
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD, &sendReq1);
-} // expected-warning{{Request 'sendReq1' has no matching wait.}}
-
-void missingWait2() {
- int rank = 0;
- double buf = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- if (rank == 0) {
- } else {
- MPI_Request sendReq1, recvReq1;
-
- MPI_Isend(&buf, 1, MPI_DOUBLE, rank + 1, 0, MPI_COMM_WORLD, &sendReq1);
- MPI_Irecv(&buf, 1, MPI_DOUBLE, rank - 1, 0, MPI_COMM_WORLD, &recvReq1); // expected-warning{{Request 'sendReq1' has no matching wait.}}
- MPI_Wait(&recvReq1, MPI_STATUS_IGNORE);
- }
-}
-
-void doubleNonblocking() {
- int rank = 0;
- double buf = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- if (rank == 1) {
- } else {
- MPI_Request sendReq1;
-
- MPI_Isend(&buf, 1, MPI_DOUBLE, rank + 1, 0, MPI_COMM_WORLD, &sendReq1);
- MPI_Irecv(&buf, 1, MPI_DOUBLE, rank - 1, 0, MPI_COMM_WORLD, &sendReq1); // expected-warning{{Double nonblocking on request 'sendReq1'.}}
- MPI_Wait(&sendReq1, MPI_STATUS_IGNORE);
- }
-}
-
-void doubleNonblocking2() {
- int rank = 0;
- double buf = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
- MPI_Request req;
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD, &req);
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD, &req); // expected-warning{{Double nonblocking on request 'req'.}}
- MPI_Wait(&req, MPI_STATUS_IGNORE);
-}
-
-void doubleNonblocking3() {
- typedef struct { MPI_Request req; } ReqStruct;
-
- ReqStruct rs;
- int rank = 0;
- double buf = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD, &rs.req);
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD, &rs.req); // expected-warning{{Double nonblocking on request 'rs.req'.}}
- MPI_Wait(&rs.req, MPI_STATUS_IGNORE);
-}
-
-void doubleNonblocking4() {
- int rank = 0;
- double buf = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
- MPI_Request req;
- for (int i = 0; i < 2; ++i) {
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD, &req); // expected-warning{{Double nonblocking on request 'req'.}}
- }
- MPI_Wait(&req, MPI_STATUS_IGNORE);
-}
-
-void tripleNonblocking() {
- double buf = 0;
- MPI_Request sendReq;
- MPI_Isend(&buf, 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD, &sendReq);
- MPI_Irecv(&buf, 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD, &sendReq); // expected-warning{{Double nonblocking on request 'sendReq'.}}
- MPI_Isend(&buf, 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD, &sendReq); // expected-warning{{Double nonblocking on request 'sendReq'.}}
- MPI_Wait(&sendReq, MPI_STATUS_IGNORE);
-}
-
-void missingNonBlocking() {
- int rank = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- MPI_Request sendReq1[10][10][10];
- MPI_Wait(&sendReq1[1][7][9], MPI_STATUS_IGNORE); // expected-warning{{Request 'sendReq1[1][7][9]' has no matching nonblocking call.}}
-}
-
-void missingNonBlocking2() {
- int rank = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- typedef struct { MPI_Request req[2][2]; } ReqStruct;
- ReqStruct rs;
- MPI_Request *r = &rs.req[0][1];
- MPI_Wait(r, MPI_STATUS_IGNORE); // expected-warning{{Request 'rs.req[0][1]' has no matching nonblocking call.}}
-}
-
-void missingNonBlocking3() {
- int rank = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- MPI_Request sendReq;
- MPI_Wait(&sendReq, MPI_STATUS_IGNORE); // expected-warning{{Request 'sendReq' has no matching nonblocking call.}}
-}
-
-void missingNonBlockingMultiple() {
- int rank = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- MPI_Request sendReq[4];
- for (int i = 0; i < 4; ++i) {
- MPI_Wait(&sendReq[i], MPI_STATUS_IGNORE); // expected-warning-re 1+{{Request {{.*}} has no matching nonblocking call.}}
- }
-}
-
-void missingNonBlockingWaitall() {
- int rank = 0;
- double buf = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- MPI_Request req[4];
-
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &req[0]);
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &req[1]);
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &req[3]);
-
- MPI_Waitall(4, req, MPI_STATUSES_IGNORE); // expected-warning{{Request 'req[2]' has no matching nonblocking call.}}
-}
-
-void missingNonBlockingWaitall2() {
- int rank = 0;
- double buf = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- MPI_Request req[4];
-
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &req[0]);
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &req[3]);
-
- MPI_Waitall(4, req, MPI_STATUSES_IGNORE); // expected-warning-re 2{{Request '{{(.*)[[1-2]](.*)}}' has no matching nonblocking call.}}
-}
-
-void missingNonBlockingWaitall3() {
- int rank = 0;
- double buf = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- MPI_Request req[4];
-
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &req[0]);
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &req[2]);
-
- MPI_Waitall(4, req, MPI_STATUSES_IGNORE); // expected-warning-re 2{{Request '{{(.*)[[1,3]](.*)}}' has no matching nonblocking call.}}
-}
-
-void missingNonBlockingWaitall4() {
- int rank = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- MPI_Request req[4];
- MPI_Waitall(4, req, MPI_STATUSES_IGNORE); // expected-warning-re 4{{Request '{{(.*)[[0-3]](.*)}}' has no matching nonblocking call.}}
-}
-
-void noDoubleRequestUsage() {
- typedef struct {
- MPI_Request req;
- MPI_Request req2;
- } ReqStruct;
-
- ReqStruct rs;
- int rank = 0;
- double buf = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &rs.req);
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &rs.req2);
- MPI_Wait(&rs.req, MPI_STATUS_IGNORE);
- MPI_Wait(&rs.req2, MPI_STATUS_IGNORE);
-} // no error
-
-void noDoubleRequestUsage2() {
- typedef struct {
- MPI_Request req[2];
- MPI_Request req2;
- } ReqStruct;
-
- ReqStruct rs;
- int rank = 0;
- double buf = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &rs.req[0]);
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &rs.req[1]);
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &rs.req2);
- MPI_Wait(&rs.req[0], MPI_STATUS_IGNORE);
- MPI_Wait(&rs.req[1], MPI_STATUS_IGNORE);
- MPI_Wait(&rs.req2, MPI_STATUS_IGNORE);
-} // no error
-
-void nestedRequest() {
- typedef struct {
- MPI_Request req[2];
- MPI_Request req2;
- } ReqStruct;
-
- ReqStruct rs;
- int rank = 0;
- double buf = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &rs.req[0]);
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &rs.req[1]);
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &rs.req2);
- MPI_Waitall(2, rs.req, MPI_STATUSES_IGNORE);
- MPI_Wait(&rs.req2, MPI_STATUS_IGNORE);
-} // no error
-
-void singleRequestInWaitall() {
- MPI_Request r;
- int rank = 0;
- double buf = 0;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &r);
- MPI_Waitall(1, &r, MPI_STATUSES_IGNORE);
-} // no error
-
-void multiRequestUsage() {
- double buf = 0;
- MPI_Request req;
-
- MPI_Isend(&buf, 1, MPI_DOUBLE, 1, 0, MPI_COMM_WORLD, &req);
- MPI_Wait(&req, MPI_STATUS_IGNORE);
-
- MPI_Irecv(&buf, 1, MPI_DOUBLE, 1, 0, MPI_COMM_WORLD, &req);
- MPI_Wait(&req, MPI_STATUS_IGNORE);
-} // no error
-
-void multiRequestUsage2() {
- double buf = 0;
- MPI_Request req;
-
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &req);
- MPI_Wait(&req, MPI_STATUS_IGNORE);
-
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &req);
- MPI_Wait(&req, MPI_STATUS_IGNORE);
-} // no error
-
-// wrapper function
-void callNonblocking(MPI_Request *req) {
- double buf = 0;
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- req);
-}
-
-// wrapper function
-void callWait(MPI_Request *req) {
- MPI_Wait(req, MPI_STATUS_IGNORE);
-}
-
-// Call nonblocking, wait wrapper functions.
-void callWrapperFunctions() {
- MPI_Request req;
- callNonblocking(&req);
- callWait(&req);
-} // no error
-
-void externFunctions1() {
- double buf = 0;
- MPI_Request req;
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD,
- &req);
- void callWaitExtern(MPI_Request *req);
- callWaitExtern(&req);
-} // expected-warning{{Request 'req' has no matching wait.}}
-
-void externFunctions2() {
- MPI_Request req;
- void callNonblockingExtern(MPI_Request *req);
- callNonblockingExtern(&req);
-}
diff --git a/test/Analysis/mpicheckernotes.cpp b/test/Analysis/mpicheckernotes.cpp
deleted file mode 100644
index 994ce8e302dd..000000000000
--- a/test/Analysis/mpicheckernotes.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=optin.mpi.MPI-Checker -analyzer-output=text -verify %s
-
-// MPI-Checker test file to test note diagnostics.
-
-#include "MPIMock.h"
-
-void doubleNonblocking() {
- double buf = 0;
- MPI_Request sendReq;
- MPI_Isend(&buf, 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD, &sendReq); // expected-note{{Request is previously used by nonblocking call here.}}
- MPI_Irecv(&buf, 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD, &sendReq); // expected-warning{{Double nonblocking on request 'sendReq'.}} expected-note{{Double nonblocking on request 'sendReq'.}}
- MPI_Wait(&sendReq, MPI_STATUS_IGNORE);
-}
-
-void missingWait() {
- double buf = 0;
- MPI_Request sendReq;
- MPI_Ireduce(MPI_IN_PLACE, &buf, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD, &sendReq); // expected-note{{Request is previously used by nonblocking call here.}}
-} // expected-warning{{Request 'sendReq' has no matching wait.}} expected-note{{Request 'sendReq' has no matching wait.}}
-
-// If more than 2 nonblocking calls are using a request in a sequence, they all
-// point to the first call as the 'previous' call. This is because the
-// BugReporterVisitor only checks for differences in state or existence of an
-// entity.
-void tripleNonblocking() {
- double buf = 0;
- MPI_Request sendReq;
- MPI_Isend(&buf, 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD, &sendReq); // expected-note 2{{Request is previously used by nonblocking call here.}}
- MPI_Irecv(&buf, 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD, &sendReq); // expected-warning{{Double nonblocking on request 'sendReq'.}} expected-note{{Double nonblocking on request 'sendReq'.}}
-
- MPI_Isend(&buf, 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD, &sendReq); // expected-warning{{Double nonblocking on request 'sendReq'.}} expected-note{{Double nonblocking on request 'sendReq'.}}
-
- MPI_Wait(&sendReq, MPI_STATUS_IGNORE);
-}
diff --git a/test/Analysis/new-aligned.cpp b/test/Analysis/new-aligned.cpp
deleted file mode 100644
index fae1f4864856..000000000000
--- a/test/Analysis/new-aligned.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-//RUN: %clang_analyze_cc1 -std=c++17 -analyze -analyzer-checker=core -verify %s
-
-// expected-no-diagnostics
-
-// Notice the weird alignment.
-struct alignas(1024) S {};
-
-void foo() {
- // Operator new() here is the C++17 aligned new that takes two arguments:
- // size and alignment. Size is passed implicitly as usual, and alignment
- // is passed implicitly in a similar manner.
- S *s = new S; // no-warning
- delete s;
-}
diff --git a/test/Analysis/new-ctor-conservative.cpp b/test/Analysis/new-ctor-conservative.cpp
deleted file mode 100644
index 6cd403b50e5a..000000000000
--- a/test/Analysis/new-ctor-conservative.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core,debug.ExprInspection -analyzer-config c++-allocator-inlining=true -std=c++11 -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_warnIfReached();
-
-struct S {
- int x;
- S() : x(1) {}
- ~S() {}
-};
-
-void checkConstructorInlining() {
- S *s = new S;
- clang_analyzer_eval(s->x == 1); // expected-warning{{TRUE}}
-}
-
-void checkNewPOD() {
- int *i = new int;
- clang_analyzer_eval(*i == 0); // expected-warning{{UNKNOWN}}
- int *j = new int();
- clang_analyzer_eval(*j == 0); // expected-warning{{TRUE}}
- int *k = new int(5);
- clang_analyzer_eval(*k == 5); // expected-warning{{TRUE}}
-}
-
-void checkNewArray() {
- S *s = new S[10];
- // FIXME: Should be true once we inline array constructors.
- clang_analyzer_eval(s[0].x == 1); // expected-warning{{UNKNOWN}}
-}
-
-struct NullS {
- NullS() {
- if (this) {}
- }
- NullS(int x) {
- if (!this) {
- clang_analyzer_warnIfReached(); // no-warning
- }
- }
-};
-
-void checkNullThis() {
- NullS *nulls = new NullS(); // no-crash
- NullS *nulls2 = new NullS(0);
-}
diff --git a/test/Analysis/new-ctor-inlined.cpp b/test/Analysis/new-ctor-inlined.cpp
deleted file mode 100644
index ca8c4da392d6..000000000000
--- a/test/Analysis/new-ctor-inlined.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config c++-allocator-inlining=true -std=c++11 -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(bool);
-
-typedef __typeof__(sizeof(int)) size_t;
-
-void *conjure();
-void exit(int);
-
-void *operator new(size_t size) throw() {
- void *x = conjure();
- if (x == 0)
- exit(1);
- return x;
-}
-
-struct S {
- int x;
- S() : x(1) {}
- ~S() {}
-};
-
-void checkNewAndConstructorInlining() {
- S *s = new S;
- // Check that the symbol for 's' is not dying.
- clang_analyzer_eval(s != 0); // expected-warning{{TRUE}}
- // Check that bindings are correct (and also not dying).
- clang_analyzer_eval(s->x == 1); // expected-warning{{TRUE}}
-}
-
-struct Sp {
- Sp *p;
- Sp(Sp *p): p(p) {}
- ~Sp() {}
-};
-
-void checkNestedNew() {
- Sp *p = new Sp(new Sp(0));
- clang_analyzer_eval(p->p->p == 0); // expected-warning{{TRUE}}
-}
-
-void checkNewPOD() {
- int *i = new int;
- clang_analyzer_eval(*i == 0); // expected-warning{{UNKNOWN}}
- int *j = new int();
- clang_analyzer_eval(*j == 0); // expected-warning{{TRUE}}
- int *k = new int(5);
- clang_analyzer_eval(*k == 5); // expected-warning{{TRUE}}
-}
-
-void checkTrivialCopy() {
- S s;
- S *t = new S(s); // no-crash
- clang_analyzer_eval(t->x == 1); // expected-warning{{TRUE}}
-}
diff --git a/test/Analysis/new-ctor-malloc.cpp b/test/Analysis/new-ctor-malloc.cpp
deleted file mode 100644
index 74b1e21a5c97..000000000000
--- a/test/Analysis/new-ctor-malloc.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection,unix.Malloc -analyzer-config c++-allocator-inlining=true -analyzer-output=text -std=c++11 -verify %s
-
-void clang_analyzer_eval(bool);
-
-typedef __typeof__(sizeof(int)) size_t;
-
-void *malloc(size_t size);
-
-void *operator new(size_t size) throw() {
- void *x = malloc(size); // expected-note {{Memory is allocated}}
- if (!x) // expected-note {{Assuming 'x' is non-null}}
- // expected-note@-1 {{Taking false branch}}
- return nullptr;
- return x;
-}
-
-void checkNewAndConstructorInlining() {
- int *s = new int; // expected-note {{Calling 'operator new'}}
- // expected-note@-1{{Returning from 'operator new'}}
-} // expected-warning {{Potential leak of memory pointed to by 's'}}
- // expected-note@-1 {{Potential leak of memory pointed to by 's'}}
diff --git a/test/Analysis/new-ctor-null-throw.cpp b/test/Analysis/new-ctor-null-throw.cpp
deleted file mode 100644
index cdaf01d8de67..000000000000
--- a/test/Analysis/new-ctor-null-throw.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core,debug.ExprInspection -analyzer-config c++-allocator-inlining=true -std=c++11 -verify %s
-
-void clang_analyzer_eval(bool);
-
-typedef __typeof__(sizeof(int)) size_t;
-
-
-// These are ill-formed. One cannot return nullptr from a throwing version of an
-// operator new.
-void *operator new(size_t size) {
- return nullptr;
-}
-void *operator new[](size_t size) {
- return nullptr;
-}
-
-struct S {
- int x;
- S() : x(1) {}
- ~S() {}
-};
-
-void testArrays() {
- S *s = new S[10]; // no-crash
- s[0].x = 2; // expected-warning{{Dereference of null pointer}}
-}
diff --git a/test/Analysis/new-ctor-null.cpp b/test/Analysis/new-ctor-null.cpp
deleted file mode 100644
index ac2a39a02840..000000000000
--- a/test/Analysis/new-ctor-null.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config c++-allocator-inlining=true -std=c++11 -verify %s
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_warnIfReached();
-
-typedef __typeof__(sizeof(int)) size_t;
-
-void *operator new(size_t size) throw() {
- return nullptr;
-}
-void *operator new[](size_t size) throw() {
- return nullptr;
-}
-
-struct S {
- int x;
- S() : x(1) {
- // FIXME: Constructor should not be called with null this, even if it was
- // returned by operator new().
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
- ~S() {}
-};
-
-void testArrays() {
- S *s = new S[10]; // no-crash
- s[0].x = 2; // expected-warning{{Dereference of null pointer}}
-}
-
-int global;
-void testInvalidationOnConstructionIntoNull() {
- global = 0;
- S *s = new S();
- // FIXME: Should be FALSE - we should not invalidate globals.
- clang_analyzer_eval(global); // expected-warning{{UNKNOWN}}
-}
diff --git a/test/Analysis/new-ctor-recursive.cpp b/test/Analysis/new-ctor-recursive.cpp
deleted file mode 100644
index f21795d1739a..000000000000
--- a/test/Analysis/new-ctor-recursive.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,cplusplus.NewDelete,cplusplus.NewDeleteLeaks,debug.ExprInspection -analyzer-config c++-allocator-inlining=true -std=c++11 -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_dump(int);
-
-typedef __typeof__(sizeof(int)) size_t;
-
-void *conjure();
-void exit(int);
-
-struct S;
-
-S *global_s;
-
-// Recursive operator kinda placement new.
-void *operator new(size_t size, S *place);
-
-enum class ConstructionKind : char {
- Garbage,
- Recursive
-};
-
-struct S {
-public:
- int x;
- S(): x(1) {}
- S(int y): x(y) {}
-
- S(ConstructionKind k) {
- switch (k) {
- case ConstructionKind::Recursive: { // Call one more operator new 'r'ecursively.
- S *s = new (nullptr) S(5);
- x = s->x + 1;
- global_s = s;
- return;
- }
- case ConstructionKind::Garbage: {
- // Leaves garbage in 'x'.
- }
- }
- }
- ~S() {}
-};
-
-// Do not try this at home!
-void *operator new(size_t size, S *place) {
- if (!place)
- return new S();
- return place;
-}
-
-void testThatCharConstructorIndeedYieldsGarbage() {
- S *s = new S(ConstructionKind::Garbage);
- clang_analyzer_eval(s->x == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(s->x == 1); // expected-warning{{UNKNOWN}}
- // FIXME: This should warn, but MallocChecker doesn't default-bind regions
- // returned by standard operator new to garbage.
- s->x += 1; // no-warning
- delete s;
-}
-
-
-void testChainedOperatorNew() {
- S *s;
- // * Evaluate standard new.
- // * Evaluate constructor S(3).
- // * Bind value for standard new.
- // * Evaluate our custom new.
- // * Evaluate constructor S(Garbage).
- // * Bind value for our custom new.
- s = new (new S(3)) S(ConstructionKind::Garbage);
- clang_analyzer_eval(s->x == 3); // expected-warning{{TRUE}}
- // expected-warning@+9{{Potential leak of memory pointed to by 's'}}
-
- // * Evaluate standard new.
- // * Evaluate constructor S(Garbage).
- // * Bind value for standard new.
- // * Evaluate our custom new.
- // * Evaluate constructor S(4).
- // * Bind value for our custom new.
- s = new (new S(ConstructionKind::Garbage)) S(4);
- clang_analyzer_eval(s->x == 4); // expected-warning{{TRUE}}
- delete s;
-
- // -> Enter our custom new (nullptr).
- // * Evaluate standard new.
- // * Inline constructor S().
- // * Bind value for standard new.
- // <- Exit our custom new (nullptr).
- // * Evaluate constructor S(Garbage).
- // * Bind value for our custom new.
- s = new (nullptr) S(ConstructionKind::Garbage);
- clang_analyzer_eval(s->x == 1); // expected-warning{{TRUE}}
- delete s;
-
- // -> Enter our custom new (nullptr).
- // * Evaluate standard new.
- // * Inline constructor S().
- // * Bind value for standard new.
- // <- Exit our custom new (nullptr).
- // -> Enter constructor S(Recursive).
- // -> Enter our custom new (nullptr).
- // * Evaluate standard new.
- // * Inline constructor S().
- // * Bind value for standard new.
- // <- Exit our custom new (nullptr).
- // * Evaluate constructor S(5).
- // * Bind value for our custom new (nullptr).
- // * Assign that value to global_s.
- // <- Exit constructor S(Recursive).
- // * Bind value for our custom new (nullptr).
- global_s = nullptr;
- s = new (nullptr) S(ConstructionKind::Recursive);
- clang_analyzer_eval(global_s); // expected-warning{{TRUE}}
- clang_analyzer_eval(global_s->x == 5); // expected-warning{{TRUE}}
- clang_analyzer_eval(s->x == 6); // expected-warning{{TRUE}}
- delete s;
-}
diff --git a/test/Analysis/new-ctor-symbolic.cpp b/test/Analysis/new-ctor-symbolic.cpp
deleted file mode 100644
index be4379151278..000000000000
--- a/test/Analysis/new-ctor-symbolic.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config c++-allocator-inlining=true -std=c++11 -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_warnOnDeadSymbol(int);
-
-typedef __typeof__(sizeof(int)) size_t;
-
-int conjure();
-void exit(int);
-
-struct S {
- S() {}
- ~S() {}
-
- static S buffer[1000];
-
- // This operator allocates stuff within the buffer. Additionally, it never
- // places anything at the beginning of the buffer.
- void *operator new(size_t size) {
- int i = conjure();
- if (i == 0)
- exit(1);
- // Let's see if the symbol dies before new-expression is evaluated.
- // It shouldn't.
- clang_analyzer_warnOnDeadSymbol(i);
- return buffer + i;
- }
-};
-
-void testIndexLiveness() {
- S *s = new S();
- clang_analyzer_eval(s == S::buffer); // expected-warning{{FALSE}}
-} // expected-warning{{SYMBOL DEAD}}
diff --git a/test/Analysis/new-dynamic-types.cpp b/test/Analysis/new-dynamic-types.cpp
deleted file mode 100644
index e0a460e3928e..000000000000
--- a/test/Analysis/new-dynamic-types.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -std=c++11 -verify %s
-
-// expected-no-diagnostics
-
-typedef __typeof(sizeof(int)) size_t;
-
-void *operator new(size_t size, void *ptr);
-
-struct B {
- virtual void foo();
-};
-
-struct D : public B {
- virtual void foo() override {}
-};
-
-void test_ub() {
- // FIXME: Potentially warn because this code is pretty weird.
- B b;
- new (&b) D;
- b.foo(); // no-crash
-}
-
-void test_non_ub() {
- char c[sizeof(D)]; // Should be enough storage.
- new (c) D;
- ((B *)c)->foo(); // no-crash
-}
diff --git a/test/Analysis/new-with-exceptions.cpp b/test/Analysis/new-with-exceptions.cpp
deleted file mode 100644
index 9d02574229c1..000000000000
--- a/test/Analysis/new-with-exceptions.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-store region -std=c++11 -fexceptions -fcxx-exceptions -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-store region -std=c++11 -verify %s
-
-void clang_analyzer_eval(bool);
-
-typedef __typeof__(sizeof(int)) size_t;
-extern "C" void *malloc(size_t);
-
-// This is the standard placement new.
-inline void* operator new(size_t, void* __p) throw()
-{
- return __p;
-}
-
-struct NoThrow {
- void *operator new(size_t) throw();
-};
-
-struct NoExcept {
- void *operator new(size_t) noexcept;
-};
-
-struct DefaultThrow {
- void *operator new(size_t);
-};
-
-struct ExplicitThrow {
- void *operator new(size_t) throw(int);
-};
-
-void testNew() {
- clang_analyzer_eval(new NoThrow); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(new NoExcept); // expected-warning{{UNKNOWN}}
-
- clang_analyzer_eval(new DefaultThrow); // expected-warning{{TRUE}}
- clang_analyzer_eval(new ExplicitThrow); // expected-warning{{TRUE}}
-}
-
-void testNewArray() {
- clang_analyzer_eval(new NoThrow[2]); // expected-warning{{TRUE}}
- clang_analyzer_eval(new NoExcept[2]); // expected-warning{{TRUE}}
- clang_analyzer_eval(new DefaultThrow[2]); // expected-warning{{TRUE}}
- clang_analyzer_eval(new ExplicitThrow[2]); // expected-warning{{TRUE}}
-}
-
-extern void *operator new[](size_t, int) noexcept;
-
-void testNewArrayNoThrow() {
- clang_analyzer_eval(new (1) NoThrow[2]); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(new (1) NoExcept[2]); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(new (1) DefaultThrow[2]); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(new (1) ExplicitThrow[2]); // expected-warning{{UNKNOWN}}
-}
diff --git a/test/Analysis/new.cpp b/test/Analysis/new.cpp
deleted file mode 100644
index 3384cfeb6141..000000000000
--- a/test/Analysis/new.cpp
+++ /dev/null
@@ -1,371 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-store region -std=c++11 -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-store region -std=c++11 -DTEST_INLINABLE_ALLOCATORS -verify -analyzer-config eagerly-assume=false %s
-#include "Inputs/system-header-simulator-cxx.h"
-
-void clang_analyzer_eval(bool);
-
-typedef __typeof__(sizeof(int)) size_t;
-extern "C" void *malloc(size_t);
-extern "C" void free(void *);
-
-int someGlobal;
-
-class SomeClass {
-public:
- void f(int *p);
-};
-
-void testImplicitlyDeclaredGlobalNew() {
- if (someGlobal != 0)
- return;
-
- // This used to crash because the global operator new is being implicitly
- // declared and it does not have a valid source location. (PR13090)
- void *x = ::operator new(0);
- ::operator delete(x);
-
- // Check that the new/delete did not invalidate someGlobal;
- clang_analyzer_eval(someGlobal == 0); // expected-warning{{TRUE}}
-}
-
-void *testPlacementNew() {
- int *x = (int *)malloc(sizeof(int));
- *x = 1;
- clang_analyzer_eval(*x == 1); // expected-warning{{TRUE}};
-
- void *y = new (x) int;
- clang_analyzer_eval(x == y); // expected-warning{{TRUE}};
- clang_analyzer_eval(*x == 1); // expected-warning{{TRUE}};
-
- return y;
-}
-
-void *operator new(size_t, size_t, int *);
-void *testCustomNew() {
- int x[1] = {1};
- clang_analyzer_eval(*x == 1); // expected-warning{{TRUE}};
-
- void *y = new (0, x) int;
- clang_analyzer_eval(*x == 1); // expected-warning{{UNKNOWN}};
-
- return y; // no-warning
-}
-
-void *operator new(size_t, void *, void *);
-void *testCustomNewMalloc() {
- int *x = (int *)malloc(sizeof(int));
-
- // Should be no-warning (the custom allocator could have freed x).
- void *y = new (0, x) int; // no-warning
-
- return y;
-}
-
-void testScalarInitialization() {
- int *n = new int(3);
- clang_analyzer_eval(*n == 3); // expected-warning{{TRUE}}
-
- new (n) int();
- clang_analyzer_eval(*n == 0); // expected-warning{{TRUE}}
-
- new (n) int{3};
- clang_analyzer_eval(*n == 3); // expected-warning{{TRUE}}
-
- new (n) int{};
- clang_analyzer_eval(*n == 0); // expected-warning{{TRUE}}
-}
-
-struct PtrWrapper {
- int *x;
-
- PtrWrapper(int *input) : x(input) {}
-};
-
-PtrWrapper *testNewInvalidation() {
- // Ensure that we don't consider this a leak.
- return new PtrWrapper(static_cast<int *>(malloc(4))); // no-warning
-}
-
-void testNewInvalidationPlacement(PtrWrapper *w) {
- // Ensure that we don't consider this a leak.
- new (w) PtrWrapper(static_cast<int *>(malloc(4))); // no-warning
-}
-
-int **testNewInvalidationScalar() {
- // Ensure that we don't consider this a leak.
- return new (int *)(static_cast<int *>(malloc(4))); // no-warning
-}
-
-void testNewInvalidationScalarPlacement(int **p) {
- // Ensure that we don't consider this a leak.
- new (p) (int *)(static_cast<int *>(malloc(4))); // no-warning
-}
-
-void testCacheOut(PtrWrapper w) {
- extern bool coin();
- if (coin())
- w.x = 0;
- new (&w.x) (int*)(0); // we cache out here; don't crash
-}
-
-void testUseAfter(int *p) {
- SomeClass *c = new SomeClass;
- free(p);
- c->f(p); // expected-warning{{Use of memory after it is freed}}
- delete c;
-}
-
-//--------------------------------------------------------------------
-// Check for intersection with other checkers from MallocChecker.cpp
-// bounded with unix.Malloc
-//--------------------------------------------------------------------
-
-// new/delete oparators are subjects of cplusplus.NewDelete.
-void testNewDeleteNoWarn() {
- int i;
- delete &i; // no-warning
-
- int *p1 = new int;
- delete ++p1; // no-warning
-
- int *p2 = new int;
- delete p2;
- delete p2; // no-warning
-
- int *p3 = new int; // no-warning
-}
-
-// unix.Malloc does not know about operators new/delete.
-void testDeleteMallocked() {
- int *x = (int *)malloc(sizeof(int));
- delete x; // FIXME: Should detect pointer escape and keep silent after 'delete' is modeled properly.
-} // expected-warning{{Potential leak of memory pointed to by 'x'}}
-
-void testDeleteOpAfterFree() {
- int *p = (int *)malloc(sizeof(int));
- free(p);
- operator delete(p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testDeleteAfterFree() {
- int *p = (int *)malloc(sizeof(int));
- free(p);
- delete p; // expected-warning{{Use of memory after it is freed}}
-}
-
-void testStandardPlacementNewAfterFree() {
- int *p = (int *)malloc(sizeof(int));
- free(p);
- p = new(p) int; // expected-warning{{Use of memory after it is freed}}
-}
-
-void testCustomPlacementNewAfterFree() {
- int *p = (int *)malloc(sizeof(int));
- free(p);
- p = new(0, p) int; // expected-warning{{Use of memory after it is freed}}
-}
-
-void testUsingThisAfterDelete() {
- SomeClass *c = new SomeClass;
- delete c;
- c->f(0); // no-warning
-}
-
-void testAggregateNew() {
- struct Point { int x, y; };
- new Point{1, 2}; // no crash
-
- Point p;
- new (&p) Point{1, 2}; // no crash
- clang_analyzer_eval(p.x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(p.y == 2); // expected-warning{{TRUE}}
-}
-
-//--------------------------------
-// Incorrectly-modelled behavior
-//--------------------------------
-
-int testNoInitialization() {
- int *n = new int;
-
- // Should warn that *n is uninitialized.
- if (*n) { // no-warning
- delete n;
- return 0;
- }
- delete n;
- return 1;
-}
-
-int testNoInitializationPlacement() {
- int n;
- new (&n) int;
-
- if (n) { // expected-warning{{Branch condition evaluates to a garbage value}}
- return 0;
- }
- return 1;
-}
-
-// Test modelling destructor call on call to delete
-class IntPair{
-public:
- int x;
- int y;
- IntPair() {};
- ~IntPair() {x = x/y;}; //expected-warning {{Division by zero}}
-};
-
-void testCallToDestructor() {
- IntPair *b = new IntPair();
- b->x = 1;
- b->y = 0;
- delete b; // This results in divide by zero in destructor
-}
-
-// Test Deleting a value that's passed as an argument.
-class DerefClass{
-public:
- int *x;
- DerefClass() {};
- ~DerefClass() {*x = 1;}; //expected-warning {{Dereference of null pointer (loaded from field 'x')}}
-};
-
-void testDestCall(DerefClass *arg) {
- delete arg;
-}
-
-void test_delete_dtor_Arg() {
- DerefClass *pair = new DerefClass();
- pair->x = 0;
- testDestCall(pair);
-}
-
-//Deleting the address of a local variable, null pointer
-void abort(void) __attribute__((noreturn));
-
-class NoReturnDtor {
-public:
- NoReturnDtor() {}
- ~NoReturnDtor() {abort();}
-};
-
-void test_delete_dtor_LocalVar() {
- NoReturnDtor test;
- delete &test; // no warn or crash
-}
-
-class DerivedNoReturn:public NoReturnDtor {
-public:
- DerivedNoReturn() {};
- ~DerivedNoReturn() {};
-};
-
-void testNullDtorDerived() {
- DerivedNoReturn *p = new DerivedNoReturn();
- delete p; // Calls the base destructor which aborts, checked below
- clang_analyzer_eval(true); // no warn
-}
-
-//Deleting a non-class pointer should not crash/warn
-void test_var_delete() {
- int *v = new int;
- delete v; // no crash/warn
- clang_analyzer_eval(true); // expected-warning{{TRUE}}
-}
-
-void test_array_delete() {
- class C {
- public:
- ~C() {}
- };
-
- auto c1 = new C[2][3];
- delete[] c1; // no-crash // no-warning
-
- C c2[4];
- // FIXME: Should warn.
- delete[] &c2; // no-crash
-
- C c3[7][6];
- // FIXME: Should warn.
- delete[] &c3; // no-crash
-}
-
-void testDeleteNull() {
- NoReturnDtor *foo = 0;
- delete foo; // should not call destructor, checked below
- clang_analyzer_eval(true); // expected-warning{{TRUE}}
-}
-
-void testNullAssigneddtor() {
- NoReturnDtor *p = 0;
- NoReturnDtor *s = p;
- delete s; // should not call destructor, checked below
- clang_analyzer_eval(true); // expected-warning{{TRUE}}
-}
-
-void deleteArg(NoReturnDtor *test) {
- delete test;
-}
-
-void testNulldtorArg() {
- NoReturnDtor *p = 0;
- deleteArg(p);
- clang_analyzer_eval(true); // expected-warning{{TRUE}}
-}
-
-void testDeleteUnknown(NoReturnDtor *foo) {
- delete foo; // should assume non-null and call noreturn destructor
- clang_analyzer_eval(true); // no-warning
-}
-
-void testArrayNull() {
- NoReturnDtor *fooArray = 0;
- delete[] fooArray; // should not call destructor, checked below
- clang_analyzer_eval(true); // expected-warning{{TRUE}}
-}
-
-void testArrayDestr() {
- NoReturnDtor *p = new NoReturnDtor[2];
- delete[] p; // Calls the base destructor which aborts, checked below
- //TODO: clang_analyzer_eval should not be called
- clang_analyzer_eval(true); // expected-warning{{TRUE}}
-}
-
-// Invalidate Region even in case of default destructor
-class InvalidateDestTest {
-public:
- int x;
- int *y;
- ~InvalidateDestTest();
-};
-
-int test_member_invalidation() {
-
- //test invalidation of member variable
- InvalidateDestTest *test = new InvalidateDestTest();
- test->x = 5;
- int *k = &(test->x);
- clang_analyzer_eval(*k == 5); // expected-warning{{TRUE}}
- delete test;
- clang_analyzer_eval(*k == 5); // expected-warning{{UNKNOWN}}
-
- //test invalidation of member pointer
- int localVar = 5;
- test = new InvalidateDestTest();
- test->y = &localVar;
- delete test;
- clang_analyzer_eval(localVar == 5); // expected-warning{{UNKNOWN}}
-
- // Test aray elements are invalidated.
- int Var1 = 5;
- int Var2 = 5;
- InvalidateDestTest *a = new InvalidateDestTest[2];
- a[0].y = &Var1;
- a[1].y = &Var2;
- delete[] a;
- clang_analyzer_eval(Var1 == 5); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(Var2 == 5); // expected-warning{{UNKNOWN}}
- return 0;
-}
diff --git a/test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret-region.m b/test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret-region.m
deleted file mode 100644
index cbfc266b7bee..000000000000
--- a/test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret-region.m
+++ /dev/null
@@ -1,32 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin8 -analyzer-checker=core,alpha.core -analyzer-store=region -verify -Wno-objc-root-class %s
-
-// <rdar://problem/6888289> - This test case shows that a nil instance
-// variable can possibly be initialized by a method.
-@interface RDar6888289
-{
- id *x;
-}
-- (void) test:(id) y;
-- (void) test2:(id) y;
-- (void) invalidate;
-@end
-
-id *getVal(void);
-
-@implementation RDar6888289
-- (void) test:(id)y {
- if (!x)
- [self invalidate];
- *x = y;
-}
-- (void) test2:(id)y {
- if (!x) {}
- *x = y; // expected-warning {{null}}
-}
-
-- (void) invalidate {
- x = getVal();
-}
-
-@end
-
diff --git a/test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret.m b/test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret.m
deleted file mode 100644
index d4a478d327e3..000000000000
--- a/test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret.m
+++ /dev/null
@@ -1,98 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin8 -analyzer-checker=core,alpha.core -analyzer-store=region -Wno-objc-root-class %s > %t.1 2>&1
-// RUN: FileCheck -input-file=%t.1 -check-prefix=CHECK-darwin8 %s
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin9 -analyzer-checker=core,alpha.core -analyzer-store=region -Wno-objc-root-class %s > %t.2 2>&1
-// RUN: FileCheck -input-file=%t.2 -check-prefix=CHECK-darwin9 %s
-// RUN: %clang_analyze_cc1 -triple thumbv6-apple-ios4.0 -analyzer-checker=core,alpha.core -analyzer-store=region -Wno-objc-root-class %s > %t.3 2>&1
-// RUN: FileCheck -input-file=%t.3 -check-prefix=CHECK-darwin9 %s
-
-@interface MyClass {}
-- (void *)voidPtrM;
-- (int)intM;
-- (long long)longlongM;
-- (unsigned long long)unsignedLongLongM;
-- (double)doubleM;
-- (long double)longDoubleM;
-- (void)voidM;
-@end
-@implementation MyClass
-- (void *)voidPtrM { return (void *)0; }
-- (int)intM { return 0; }
-- (long long)longlongM { return 0; }
-- (unsigned long long)unsignedLongLongM { return 0; }
-- (double)doubleM { return 0.0; }
-- (long double)longDoubleM { return 0.0; }
-- (void)voidM {}
-@end
-
-void createFoo() {
- MyClass *obj = 0;
-
- void *v = [obj voidPtrM]; // no-warning
- int i = [obj intM]; // no-warning
-}
-
-void createFoo2() {
- MyClass *obj = 0;
-
- long double ld = [obj longDoubleM];
-}
-
-void createFoo3() {
- MyClass *obj;
- obj = 0;
-
- long long ll = [obj longlongM];
-}
-
-void createFoo4() {
- MyClass *obj = 0;
-
- double d = [obj doubleM];
-}
-
-void createFoo5() {
- MyClass *obj = (id)@"";
-
- double d = [obj doubleM]; // no-warning
-}
-
-void createFoo6() {
- MyClass *obj;
- obj = 0;
-
- unsigned long long ull = [obj unsignedLongLongM];
-}
-
-void handleNilPruneLoop(MyClass *obj) {
- if (!!obj)
- return;
-
- // Test if [obj intM] evaluates to 0, thus pruning the entire loop.
- for (int i = 0; i < [obj intM]; i++) {
- long long j = [obj longlongM];
- }
-
- long long j = [obj longlongM];
-}
-
-int handleVoidInComma() {
- MyClass *obj = 0;
- return [obj voidM], 0;
-}
-
-int marker(void) { // control reaches end of non-void function
-}
-
-// CHECK-darwin8: warning: The receiver of message 'longDoubleM' is nil and returns a value of type 'long double' that will be garbage
-// CHECK-darwin8: warning: The receiver of message 'longlongM' is nil and returns a value of type 'long long' that will be garbage
-// CHECK-darwin8: warning: The receiver of message 'doubleM' is nil and returns a value of type 'double' that will be garbage
-// CHECK-darwin8: warning: The receiver of message 'unsignedLongLongM' is nil and returns a value of type 'unsigned long long' that will be garbage
-// CHECK-darwin8: warning: The receiver of message 'longlongM' is nil and returns a value of type 'long long' that will be garbage
-
-// CHECK-darwin9-NOT: warning: The receiver of message 'longlongM' is nil and returns a value of type 'long long' that will be garbage
-// CHECK-darwin9-NOT: warning: The receiver of message 'unsignedLongLongM' is nil and returns a value of type 'unsigned long long' that will be garbage
-// CHECK-darwin9-NOT: warning: The receiver of message 'doubleM' is nil and returns a value of type 'double' that will be garbage
-// CHECK-darwin9-NOT: warning: The receiver of message 'longlongM' is nil and returns a value of type 'long long' that will be garbage
-// CHECK-darwin9-NOT: warning: The receiver of message 'longDoubleM' is nil and returns a value of type 'long double' that will be garbage
-// CHECK-darwin9: 1 warning generated
-
diff --git a/test/Analysis/no-exit-cfg.c b/test/Analysis/no-exit-cfg.c
deleted file mode 100644
index 7575152295eb..000000000000
--- a/test/Analysis/no-exit-cfg.c
+++ /dev/null
@@ -1,19 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-// This is a test case for the issue reported in PR 2819:
-// http://llvm.org/bugs/show_bug.cgi?id=2819
-// The flow-sensitive dataflow solver should work even when no block in
-// the CFG reaches the exit block.
-
-int g(int x);
-void h(int x);
-
-int f(int x)
-{
-out_err:
- if (g(x)) {
- h(x);
- }
- goto out_err;
-}
diff --git a/test/Analysis/no-outofbounds.c b/test/Analysis/no-outofbounds.c
deleted file mode 100644
index ae534a94a241..000000000000
--- a/test/Analysis/no-outofbounds.c
+++ /dev/null
@@ -1,32 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core,alpha.unix,alpha.security.ArrayBound -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-//===----------------------------------------------------------------------===//
-// This file tests cases where we should not flag out-of-bounds warnings.
-//===----------------------------------------------------------------------===//
-
-void f() {
- long x = 0;
- char *y = (char*) &x;
- char c = y[0] + y[1] + y[2]; // no-warning
- short *z = (short*) &x;
- short s = z[0] + z[1]; // no-warning
-}
-
-void g() {
- int a[2];
- char *b = (char*)a;
- b[3] = 'c'; // no-warning
-}
-
-typedef typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-void field() {
- struct vec { size_t len; int data[0]; };
- struct vec *a = malloc(sizeof(struct vec) + 10*sizeof(int));
- a->len = 10;
- a->data[1] = 5; // no-warning
- free(a);
-}
diff --git a/test/Analysis/no-unreachable-dtors.cpp b/test/Analysis/no-unreachable-dtors.cpp
deleted file mode 100644
index 1675542d9ac7..000000000000
--- a/test/Analysis/no-unreachable-dtors.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.Stats -verify -Wno-unreachable-code %s
-
-struct S {
- ~S();
-};
-
-// the return at the end of an CompoundStmt does not lead to an unreachable block containing the dtors
-void test() { // expected-warning-re{{test -> Total CFGBlocks: {{[0-9]+}} | Unreachable CFGBlocks: 0 | Exhausted Block: no | Empty WorkList: yes}}
- S s;
- return;
-}
diff --git a/test/Analysis/non-diagnosable-assumptions.c b/test/Analysis/non-diagnosable-assumptions.c
deleted file mode 100644
index 44b69bed7c27..000000000000
--- a/test/Analysis/non-diagnosable-assumptions.c
+++ /dev/null
@@ -1,47 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core.DivideZero -analyzer-output=text -verify %s
-
-// This test file verifies the "Assuming..." diagnostic pieces that are being
-// reported when the branch condition was too complicated to explain.
-// Therefore, if your change replaces the generic "Assuming the condition is
-// true" with a more specific message, causing this test to fail, the condition
-// should be replaced with a more complicated condition that we still cannot
-// properly explain to the user. Once we reach the point at which all conditions
-// are "diagnosable", this test (or this note) should probably be removed,
-// together with the code section that handles generic messages for
-// non-diagnosable conditions.
-
-// Function calls are currently non-diagnosable.
-int non_diagnosable();
-
-void test_true() {
- if (non_diagnosable()) {
- // expected-note@-1{{Assuming the condition is true}}
- // expected-note@-2{{Taking true branch}}
- 1 / 0;
- // expected-warning@-1{{Division by zero}}
- // expected-note@-2{{Division by zero}}
- }
-}
-
-void test_false() {
- if (non_diagnosable()) {
- // expected-note@-1{{Assuming the condition is false}}
- // expected-note@-2{{Taking false branch}}
- } else {
- 1 / 0;
- // expected-warning@-1{{Division by zero}}
- // expected-note@-2{{Division by zero}}
- }
-}
-
-// Test that we're still reporting that the condition is true,
-// when we encounter an exclamation mark (used to be broken).
-void test_exclamation_mark() {
- if (!non_diagnosable()) {
- // expected-note@-1{{Assuming the condition is true}}
- // expected-note@-2{{Taking true branch}}
- 1 / 0;
- // expected-warning@-1{{Division by zero}}
- // expected-note@-2{{Division by zero}}
- }
-}
diff --git a/test/Analysis/nonnull-global-constants.mm b/test/Analysis/nonnull-global-constants.mm
deleted file mode 100644
index 7900b9dd1286..000000000000
--- a/test/Analysis/nonnull-global-constants.mm
+++ /dev/null
@@ -1,103 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify %s
-
-// Nullability of const string-like globals, testing
-// NonnullGlobalConstantsChecker.
-
-void clang_analyzer_eval(bool);
-
-@class NSString;
-typedef const struct __CFString *CFStringRef;
-typedef const struct __CFBoolean * CFBooleanRef;
-
-// Global NSString* is non-null.
-extern NSString *const StringConstGlobal;
-void stringConstGlobal() {
- clang_analyzer_eval(StringConstGlobal); // expected-warning{{TRUE}}
-}
-
-// The logic does not apply to local variables though.
-extern NSString *stringGetter();
-void stringConstLocal() {
- NSString *const local = stringGetter();
- clang_analyzer_eval(local); // expected-warning{{UNKNOWN}}
-}
-
-// Global const CFStringRef's are also assumed to be non-null.
-extern const CFStringRef CFStringConstGlobal;
-void cfStringCheckGlobal() {
- clang_analyzer_eval(CFStringConstGlobal); // expected-warning{{TRUE}}
-}
-
-// But only "const" ones.
-extern CFStringRef CFStringNonConstGlobal;
-void cfStringCheckMutableGlobal() {
- clang_analyzer_eval(CFStringNonConstGlobal); // expected-warning{{UNKNOWN}}
-}
-
-// char* const is also assumed to be non-null.
-extern const char *const ConstCharStarConst;
-void constCharStarCheckGlobal() {
- clang_analyzer_eval(ConstCharStarConst); // expected-warning{{TRUE}}
-}
-
-// Pointer value can be mutable.
-extern char *const CharStarConst;
-void charStarCheckGlobal() {
- clang_analyzer_eval(CharStarConst); // expected-warning{{TRUE}}
-}
-
-// But the pointer itself should be immutable.
-extern char *CharStar;
-void charStartCheckMutableGlobal() {
- clang_analyzer_eval(CharStar); // expected-warning{{UNKNOWN}}
-}
-
-// Type definitions should also work across typedefs, for pointers:
-typedef char *const str;
-extern str globalStr;
-void charStarCheckTypedef() {
- clang_analyzer_eval(globalStr); // expected-warning{{TRUE}}
-}
-
-// And for types.
-typedef NSString *const NStr;
-extern NStr globalNSString;
-void NSStringCheckTypedef() {
- clang_analyzer_eval(globalNSString); // expected-warning{{TRUE}}
-}
-
-// Note that constness could be either inside
-// the var declaration, or in a typedef.
-typedef NSString *NStr2;
-extern const NStr2 globalNSString2;
-void NSStringCheckConstTypedef() {
- clang_analyzer_eval(globalNSString2); // expected-warning{{TRUE}}
-}
-
-// Nested typedefs should work as well.
-typedef const CFStringRef str1;
-typedef str1 str2;
-extern str2 globalStr2;
-void testNestedTypedefs() {
- clang_analyzer_eval(globalStr2); // expected-warning{{TRUE}}
-}
-
-// And for NSString *.
-typedef NSString *const nstr1;
-typedef nstr1 nstr2;
-extern nstr2 nglobalStr2;
-void testNestedTypedefsForNSString() {
- clang_analyzer_eval(nglobalStr2); // expected-warning{{TRUE}}
-}
-
-// And for CFBooleanRefs.
-extern const CFBooleanRef kBool;
-void testNonnullBool() {
- clang_analyzer_eval(kBool); // expected-warning{{TRUE}}
-}
-
-// And again, only for const one.
-extern CFBooleanRef kBoolMutable;
-void testNonnullNonconstBool() {
- clang_analyzer_eval(kBoolMutable); // expected-warning{{UNKNOWN}}
-}
diff --git a/test/Analysis/nonnull.m b/test/Analysis/nonnull.m
deleted file mode 100644
index 6db7cfaf4917..000000000000
--- a/test/Analysis/nonnull.m
+++ /dev/null
@@ -1,195 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -w -verify %s
-
-@interface MyObject
-- (void)takePointer:(void *)ptr __attribute__((nonnull(1)));
-- (void)takePointerArg:(void *)__attribute__((nonnull)) ptr;
-
-@end
-
-void testNonNullMethod(int *p, MyObject *obj) {
- if (p)
- return;
- [obj takePointer:p]; // expected-warning{{nonnull}}
-}
-
-
-@interface Subclass : MyObject
-// [[nonnull]] is an inherited attribute.
-- (void)takePointer:(void *)ptr;
-@end
-
-void testSubclass(int *p, Subclass *obj) {
- if (p)
- return;
- [obj takePointer:p]; // expected-warning{{nonnull}}
-}
-
-void testSubclassArg(int *p, Subclass *obj) {
- if (p)
- return;
- [obj takePointerArg:p]; // expected-warning{{nonnull}}
-}
-
-
-union rdar16153464_const_cp_t {
- const struct rdar16153464_cczp *zp;
- const struct rdar16153464_cczp_prime *prime;
-} __attribute__((transparent_union));
-
-struct rdar16153464_header {
- union rdar16153464_const_cp_t cp;
- unsigned char pad[16 - sizeof(union rdar16153464_const_cp_t *)];
-} __attribute__((aligned(16)));
-
-
-struct rdar16153464_full_ctx {
- struct rdar16153464_header hdr;
-} __attribute__((aligned(16)));
-
-
-struct rdar16153464_pub_ctx {
- struct rdar16153464_header hdr;
-} __attribute__((aligned(16)));
-
-
-union rdar16153464_full_ctx_t {
- struct rdar16153464_full_ctx *_full;
- struct rdar16153464_header *hdr;
- struct rdar16153464_body *body;
- struct rdar16153464_public *pub;
-} __attribute__((transparent_union));
-
-union rdar16153464_pub_ctx_t {
- struct rdar16153464_pub_ctx *_pub;
- struct rdar16153464_full_ctx *_full;
- struct rdar16153464_header *hdr;
- struct rdar16153464_body *body;
- struct rdar16153464_public *pub;
- union rdar16153464_full_ctx_t innert;
-} __attribute__((transparent_union));
-
-int rdar16153464(union rdar16153464_full_ctx_t inner)
-{
- extern void rdar16153464_check(union rdar16153464_pub_ctx_t outer) __attribute((nonnull(1)));
- rdar16153464_check((union rdar16153464_pub_ctx_t){ .innert = inner }); // no-warning
- rdar16153464_check(inner); // no-warning
- rdar16153464_check(0); // expected-warning{{nonnull}}
-}
-
-// Multiple attributes, the basic case
-void multipleAttributes_1(char *p, char *q) __attribute((nonnull(1))) __attribute((nonnull(2)));
-
-void testMultiple_1(void) {
- char c;
- multipleAttributes_1(&c, &c); // no-warning
-}
-
-void testMultiple_2(void) {
- char c;
- multipleAttributes_1(0, &c); // expected-warning{{nonnull}}
-}
-
-void testMultiple_3(void) {
- char c;
- multipleAttributes_1(&c, 0); // expected-warning{{nonnull}}
-}
-
-void testMultiple_4(void) {
- multipleAttributes_1(0, 0);// expected-warning{{nonnull}}
-}
-
-// Multiple attributes, multiple prototypes
-void multipleAttributes_2(char *p, char *q) __attribute((nonnull(1)));
-void multipleAttributes_2(char *p, char *q) __attribute((nonnull(2)));
-
-void testMultiple_5(void) {
- char c;
- multipleAttributes_2(0, &c);// expected-warning{{nonnull}}
-}
-
-void testMultiple_6(void) {
- char c;
- multipleAttributes_2(&c, 0);// expected-warning{{nonnull}}
-}
-
-void testMultiple_7(void) {
- multipleAttributes_2(0, 0);// expected-warning{{nonnull}}
-}
-
-// Multiple attributes, same index
-void multipleAttributes_3(char *p, char *q) __attribute((nonnull(1))) __attribute((nonnull(1)));
-
-void testMultiple_8(void) {
- char c;
- multipleAttributes_3(0, &c); // expected-warning{{nonnull}}
-}
-
-void testMultiple_9(void) {
- char c;
- multipleAttributes_3(&c, 0); // no-warning
-}
-
-// Multiple attributes, the middle argument is missing an attribute
-void multipleAttributes_4(char *p, char *q, char *r) __attribute((nonnull(1))) __attribute((nonnull(3)));
-
-void testMultiple_10(void) {
- char c;
- multipleAttributes_4(0, &c, &c); // expected-warning{{nonnull}}
-}
-
-void testMultiple_11(void) {
- char c;
- multipleAttributes_4(&c, 0, &c); // no-warning
-}
-
-void testMultiple_12(void) {
- char c;
- multipleAttributes_4(&c, &c, 0); // expected-warning{{nonnull}}
-}
-
-
-// Multiple attributes, when the last is without index
-void multipleAttributes_all_1(char *p, char *q) __attribute((nonnull(1))) __attribute((nonnull));
-
-void testMultiple_13(void) {
- char c;
- multipleAttributes_all_1(0, &c); // expected-warning{{nonnull}}
-}
-
-void testMultiple_14(void) {
- char c;
- multipleAttributes_all_1(&c, 0); // expected-warning{{nonnull}}
-}
-
-// Multiple attributes, when the first is without index
-void multipleAttributes_all_2(char *p, char *q) __attribute((nonnull)) __attribute((nonnull(2)));
-
-void testMultiple_15(void) {
- char c;
- multipleAttributes_all_2(0, &c); // expected-warning{{nonnull}}
-}
-
-void testMultiple_16(void) {
- char c;
- multipleAttributes_all_2(&c, 0); // expected-warning{{nonnull}}
-}
-
-void testVararg(int k, void *p) {
- extern void testVararg_check(int, ...) __attribute__((nonnull));
- void *n = 0;
- testVararg_check(0);
- testVararg_check(1, p);
- if (k == 1)
- testVararg_check(1, n); // expected-warning{{nonnull}}
- testVararg_check(2, p, p);
- if (k == 2)
- testVararg_check(2, n, p); // expected-warning{{nonnull}}
- if (k == 3)
- testVararg_check(2, p, n); // expected-warning{{nonnull}}
-}
-
-void testNotPtr() {
- struct S { int a; int b; int c; } s = {};
- extern void testNotPtr_check(struct S, int) __attribute__((nonnull(1, 2)));
- testNotPtr_check(s, 0);
-}
diff --git a/test/Analysis/nonnullparamchecker-crash.cpp b/test/Analysis/nonnullparamchecker-crash.cpp
deleted file mode 100644
index 76480f4d92f2..000000000000
--- a/test/Analysis/nonnullparamchecker-crash.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -std=c++11 -verify %s
-class C {};
-
-// expected-no-diagnostics
-void f(C i) {
- auto lambda = [&] { f(i); };
- typedef decltype(lambda) T;
- T* blah = new T(lambda);
- (*blah)();
- delete blah;
-}
diff --git a/test/Analysis/novoidtypecrash.c b/test/Analysis/novoidtypecrash.c
deleted file mode 100644
index c04cfca29b4f..000000000000
--- a/test/Analysis/novoidtypecrash.c
+++ /dev/null
@@ -1,8 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core %s
-a;
-b(void **c) { // no-crash
- *c = a;
- int *d;
- b(&d);
- *d;
-}
diff --git a/test/Analysis/null-deref-offsets.c b/test/Analysis/null-deref-offsets.c
deleted file mode 100644
index 988cec4985da..000000000000
--- a/test/Analysis/null-deref-offsets.c
+++ /dev/null
@@ -1,37 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -triple i386-apple-darwin10 -analyzer-checker=core,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-
-struct S {
- int x, y;
- int z[2];
-};
-
-void testOffsets(struct S *s, int coin) {
- if (s != 0)
- return;
-
- // FIXME: Here we are testing the hack that computes offsets to null pointers
- // as 0 in order to find null dereferences of not-exactly-null pointers,
- // such as &(s->y) below, which is equal to 4 rather than 0 in run-time.
-
- // These are indeed null.
- clang_analyzer_eval(s == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(&(s->x) == 0); // expected-warning{{TRUE}}
-
- // FIXME: These should ideally be true.
- clang_analyzer_eval(&(s->y) == 4); // expected-warning{{FALSE}}
- clang_analyzer_eval(&(s->z[0]) == 8); // expected-warning{{FALSE}}
- clang_analyzer_eval(&(s->z[1]) == 12); // expected-warning{{FALSE}}
-
- // FIXME: These should ideally be false.
- clang_analyzer_eval(&(s->y) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(&(s->z[0]) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(&(s->z[1]) == 0); // expected-warning{{TRUE}}
-
- // But these should still be reported as null dereferences.
- if (coin)
- s->y = 5; // expected-warning{{Access to field 'y' results in a dereference of a null pointer (loaded from variable 's')}}
- else
- s->z[1] = 6; // expected-warning{{Array access (via field 'z') results in a null pointer dereference}}
-}
diff --git a/test/Analysis/null-deref-path-notes.c b/test/Analysis/null-deref-path-notes.c
deleted file mode 100644
index c73f64066b28..000000000000
--- a/test/Analysis/null-deref-path-notes.c
+++ /dev/null
@@ -1,52 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -x c -analyzer-checker=core,unix -analyzer-output=text -verify %s
-
-// Avoid the crash when finding the expression for tracking the origins
-// of the null pointer for path notes.
-void pr34373() {
- int *a = 0; // expected-note{{'a' initialized to a null pointer value}}
- (a + 0)[0]; // expected-warning{{Array access results in a null pointer dereference}}
- // expected-note@-1{{Array access results in a null pointer dereference}}
-}
-
-typedef __typeof(sizeof(int)) size_t;
-void *memcpy(void *dest, const void *src, unsigned long count);
-
-void f1(char *source) {
- char *destination = 0; // expected-note{{'destination' initialized to a null pointer value}}
- memcpy(destination + 0, source, 10); // expected-warning{{Null pointer argument in call to memory copy function}}
- // expected-note@-1{{Null pointer argument in call to memory copy function}}
-}
-
-void f2(char *source) {
- char *destination = 0; // expected-note{{'destination' initialized to a null pointer value}}
- memcpy(destination - 0, source, 10); // expected-warning{{Null pointer argument in call to memory copy function}}
- // expected-note@-1{{Null pointer argument in call to memory copy function}}
-}
-
-void f3(char *source) {
- char *destination = 0; // expected-note{{'destination' initialized to a null pointer value}}
- destination = destination + 0; // expected-note{{Null pointer value stored to 'destination'}}
- memcpy(destination, source, 10); // expected-warning{{Null pointer argument in call to memory copy function}}
- // expected-note@-1{{Null pointer argument in call to memory copy function}}
-}
-
-void f4(char *source) {
- char *destination = 0; // expected-note{{'destination' initialized to a null pointer value}}
- destination = destination - 0; // expected-note{{Null pointer value stored to 'destination'}}
- memcpy(destination, source, 10); // expected-warning{{Null pointer argument in call to memory copy function}}
- // expected-note@-1{{Null pointer argument in call to memory copy function}}
-}
-
-void f5(char *source) {
- char *destination1 = 0; // expected-note{{'destination1' initialized to a null pointer value}}
- char *destination2 = destination1 + 0; // expected-note{{'destination2' initialized to a null pointer value}}
- memcpy(destination2, source, 10); // expected-warning{{Null pointer argument in call to memory copy function}}
- // expected-note@-1{{Null pointer argument in call to memory copy function}}
-}
-
-void f6(char *source) {
- char *destination1 = 0; // expected-note{{'destination1' initialized to a null pointer value}}
- char *destination2 = destination1 - 0; // expected-note{{'destination2' initialized to a null pointer value}}
- memcpy(destination2, source, 10); // expected-warning{{Null pointer argument in call to memory copy function}}
- // expected-note@-1{{Null pointer argument in call to memory copy function}}
-}
diff --git a/test/Analysis/null-deref-path-notes.cpp b/test/Analysis/null-deref-path-notes.cpp
deleted file mode 100644
index dd54b24e7847..000000000000
--- a/test/Analysis/null-deref-path-notes.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -x c++ -analyzer-checker=core -analyzer-output=text -verify %s
-
-namespace pr34731 {
-int b;
-class c {
- class B {
- public:
- double ***d;
- B();
- };
- void e(double **, int);
- void f(B &, int &);
-};
-
-// Properly track the null pointer in the array field back to the default
-// constructor of 'h'.
-void c::f(B &g, int &i) {
- e(g.d[9], i); // expected-warning{{Array access (via field 'd') results in a null pointer dereference}}
- // expected-note@-1{{Array access (via field 'd') results in a null pointer dereference}}
- B h, a; // expected-note{{Value assigned to 'h.d'}}
- a.d == __null; // expected-note{{Assuming the condition is true}}
- a.d != h.d; // expected-note{{Assuming pointer value is null}}
- f(h, b); // expected-note{{Calling 'c::f'}}
-}
-}
diff --git a/test/Analysis/null-deref-path-notes.m b/test/Analysis/null-deref-path-notes.m
deleted file mode 100644
index 46ca4b3e7819..000000000000
--- a/test/Analysis/null-deref-path-notes.m
+++ /dev/null
@@ -1,70 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-store=region -analyzer-output=text -fblocks -verify -Wno-objc-root-class %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-store=region -analyzer-output=plist-multi-file -fblocks -Wno-objc-root-class %s -o %t
-// RUN: cat %t | %diff_plist %S/Inputs/expected-plists/null-deref-path-notes.m.plist -
-
-@interface Root {
-@public
- int uniqueID;
-}
-- (id)initWithID:(int)newID;
-- (void)refreshID;
-@end
-
-int testNull(Root *obj) {
- if (obj) return 0;
- // expected-note@-1 {{Assuming 'obj' is nil}}
- // expected-note@-2 {{Taking false branch}}
-
- int *x = &obj->uniqueID; // expected-note{{'x' initialized to a null pointer value}}
- return *x; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}} expected-note{{Dereference of null pointer (loaded from variable 'x')}}
-}
-
-
-@interface Subclass : Root
-@end
-
-@implementation Subclass
-- (id)initWithID:(int)newID {
- self = [super initWithID:newID]; // expected-note{{Value assigned to 'self'}}
- if (self) return self;
- // expected-note@-1 {{Assuming 'self' is nil}}
- // expected-note@-2 {{Taking false branch}}
-
- uniqueID = newID; // expected-warning{{Access to instance variable 'uniqueID' results in a dereference of a null pointer (loaded from variable 'self')}} expected-note{{Access to instance variable 'uniqueID' results in a dereference of a null pointer (loaded from variable 'self')}}
- return self;
-}
-
-@end
-
-void repeatedStores(int coin) {
- int *p = 0;
- if (coin) {
- // expected-note@-1 {{Assuming 'coin' is 0}}
- // expected-note@-2 {{Taking false branch}}
- extern int *getPointer();
- p = getPointer();
- } else {
- p = 0; // expected-note {{Null pointer value stored to 'p'}}
- }
-
- *p = 1; // expected-warning{{Dereference of null pointer}} expected-note{{Dereference of null pointer}}
-}
-
-@interface WithArrayPtr
-- (void) useArray;
-@end
-
-@implementation WithArrayPtr {
-@public int *p;
-}
-- (void)useArray {
- p[1] = 2; // expected-warning{{Array access (via ivar 'p') results in a null pointer dereference}}
- // expected-note@-1{{Array access (via ivar 'p') results in a null pointer dereference}}
-}
-@end
-
-void testWithArrayPtr(WithArrayPtr *w) {
- w->p = 0; // expected-note{{Null pointer value stored to 'p'}}
- [w useArray]; // expected-note{{Calling 'useArray'}}
-}
-
diff --git a/test/Analysis/null-deref-ps-region.c b/test/Analysis/null-deref-ps-region.c
deleted file mode 100644
index f5e6956ff723..000000000000
--- a/test/Analysis/null-deref-ps-region.c
+++ /dev/null
@@ -1,72 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core,unix,alpha.unix -std=gnu99 -analyzer-store=region -verify %s
-
-#include "Inputs/system-header-simulator.h"
-
-typedef __typeof(sizeof(int)) size_t;
-void *memset(void *__s, int __c, size_t __n);
-void *malloc(size_t __size);
-void free(void *__ptr);
-
-// The store for 'a[1]' should not be removed mistakenly. SymbolicRegions may
-// also be live roots.
-void f14(int *a) {
- int i;
- a[1] = 1;
- i = a[1];
- if (i != 1) {
- int *p = 0;
- i = *p; // no-warning
- }
-}
-
-void foo() {
- int *x = malloc(sizeof(int));
- memset(x, 0, sizeof(int));
- int n = 1 / *x; // expected-warning {{Division by zero}}
- free(x);
-}
-
-void bar() {
- int *x = malloc(sizeof(int));
- memset(x, 0, 1);
- int n = 1 / *x; // no-warning
- free(x);
-}
-
-void testConcreteNull() {
- int *x = 0;
- memset(x, 0, 1); // expected-warning {{Null pointer argument in call to memory set function}}
-}
-
-void testStackArray() {
- char buf[13];
- memset(buf, 0, 1); // no-warning
-}
-
-void testHeapSymbol() {
- char *buf = (char *)malloc(13);
- memset(buf, 0, 1); // no-warning
- free(buf);
-}
-
-void testStackArrayOutOfBound() {
- char buf[1];
- memset(buf, 0, 1024); // expected-warning {{Memory set function accesses out-of-bound array element}}
-}
-
-void testHeapSymbolOutOfBound() {
- char *buf = (char *)malloc(1);
- memset(buf, 0, 1024); // expected-warning {{Memory set function accesses out-of-bound array element}}
- free(buf);
-}
-
-void testStackArraySameSize() {
- char buf[1];
- memset(buf, 0, sizeof(buf)); // no-warning
-}
-
-void testHeapSymbolSameSize() {
- char *buf = (char *)malloc(1);
- memset(buf, 0, 1); // no-warning
- free(buf);
-}
diff --git a/test/Analysis/null-deref-ps.c b/test/Analysis/null-deref-ps.c
deleted file mode 100644
index d0e1f9f5cc33..000000000000
--- a/test/Analysis/null-deref-ps.c
+++ /dev/null
@@ -1,331 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -Wno-tautological-constant-compare -Wtautological-unsigned-zero-compare -analyzer-checker=core,deadcode,alpha.core -std=gnu99 -analyzer-store=region -analyzer-purge=none -verify %s -Wno-error=return-type
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -Wno-tautological-constant-compare -Wtautological-unsigned-zero-compare -analyzer-checker=core,deadcode,alpha.core -std=gnu99 -analyzer-store=region -verify %s -Wno-error=return-type
-
-typedef unsigned uintptr_t;
-
-extern void __assert_fail (__const char *__assertion, __const char *__file,
- unsigned int __line, __const char *__function)
- __attribute__ ((__noreturn__));
-
-#define assert(expr) \
- ((expr) ? (void)(0) : __assert_fail (#expr, __FILE__, __LINE__, __func__))
-
-void f1(int *p) {
- if (p) *p = 1;
- else *p = 0; // expected-warning{{ereference}}
-}
-
-struct foo_struct {
- int x;
-};
-
-int f2(struct foo_struct* p) {
-
- if (p)
- p->x = 1;
-
- return p->x++; // expected-warning{{Access to field 'x' results in a dereference of a null pointer (loaded from variable 'p')}}
-}
-
-int f3(char* x) {
-
- int i = 2;
-
- if (x)
- return x[i - 1];
-
- return x[i+1]; // expected-warning{{Array access (from variable 'x') results in a null pointer dereference}}
-}
-
-int f3_b(char* x) {
-
- int i = 2;
-
- if (x)
- return x[i - 1];
-
- return x[i+1]++; // expected-warning{{Array access (from variable 'x') results in a null pointer dereference}}
-}
-
-int f4(int *p) {
-
- uintptr_t x = (uintptr_t) p;
-
- if (x)
- return 1;
-
- int *q = (int*) x;
- return *q; // expected-warning{{Dereference of null pointer (loaded from variable 'q')}}
-}
-
-int f4_b() {
- short array[2];
- uintptr_t x = array; // expected-warning{{incompatible pointer to integer conversion}}
- short *p = x; // expected-warning{{incompatible integer to pointer conversion}}
-
- // The following branch should be infeasible.
- if (!(p == &array[0])) {
- p = 0;
- *p = 1; // no-warning
- }
-
- if (p) {
- *p = 5; // no-warning
- p = 0;
- }
- else return; // expected-warning {{non-void function 'f4_b' should return a value}}
-
- *p += 10; // expected-warning{{Dereference of null pointer}}
- return 0;
-}
-
-int f5() {
-
- char *s = "hello world";
- return s[0]; // no-warning
-}
-
-int bar(int* p, int q) __attribute__((nonnull));
-
-int f6(int *p) {
- return !p ? bar(p, 1) // expected-warning {{Null pointer passed as an argument to a 'nonnull' parameter}}
- : bar(p, 0); // no-warning
-}
-
-int bar2(int* p, int q) __attribute__((nonnull(1)));
-
-int f6b(int *p) {
- return !p ? bar2(p, 1) // expected-warning {{Null pointer passed as an argument to a 'nonnull' parameter}}
- : bar2(p, 0); // no-warning
-}
-
-int bar3(int*p, int q, int *r) __attribute__((nonnull(1,3)));
-
-int f6c(int *p, int *q) {
- return !p ? bar3(q, 2, p) // expected-warning {{Null pointer passed as an argument to a 'nonnull' parameter}}
- : bar3(p, 2, q); // no-warning
-}
-
-void f6d(int *p) {
- bar(p, 0);
- // At this point, 'p' cannot be null.
- if (!p) {
- int *q = 0;
- *q = 0xDEADBEEF; // no-warning
- }
-}
-
-void f6e(int *p, int offset) {
- // PR7406 - crash from treating an UnknownVal as defined, to see if it's 0.
- bar((p+offset)+1, 0); // not crash
-}
-
-int* qux();
-
-int f7(int x) {
-
- int* p = 0;
-
- if (0 == x)
- p = qux();
-
- if (0 == x)
- *p = 1; // no-warning
-
- return x;
-}
-
-int* f7b(int *x) {
-
- int* p = 0;
-
- if (((void*)0) == x)
- p = qux();
-
- if (((void*)0) == x)
- *p = 1; // no-warning
-
- return x;
-}
-
-int* f7c(int *x) {
-
- int* p = 0;
-
- if (((void*)0) == x)
- p = qux();
-
- if (((void*)0) != x)
- return x;
-
- // If we reach here then 'p' is not null.
- *p = 1; // no-warning
- return x;
-}
-
-int* f7c2(int *x) {
-
- int* p = 0;
-
- if (((void*)0) == x)
- p = qux();
-
- if (((void*)0) == x)
- return x;
-
- *p = 1; // expected-warning{{null}}
- return x;
-}
-
-
-void f8(int *p, int *q) {
- if (!p)
- if (p)
- *p = 1; // no-warning
-
- if (q)
- if (!q)
- *q = 1; // no-warning
-}
-
-int* qux();
-
-int f9(unsigned len) {
- assert (len != 0);
- int *p = 0;
- unsigned i;
-
- for (i = 0; i < len; ++i)
- p = qux(i);
-
- return *p++; // no-warning
-}
-
-int f9b(unsigned len) {
- assert (len > 0); // note use of '>'
- int *p = 0;
- unsigned i;
-
- for (i = 0; i < len; ++i)
- p = qux(i);
-
- return *p++; // no-warning
-}
-
-int* f10(int* p, signed char x, int y) {
- // This line tests symbolication with compound assignments where the
- // LHS and RHS have different bitwidths. The new symbolic value
- // for 'x' should have a bitwidth of 8.
- x &= y;
-
- // This tests that our symbolication worked, and that we correctly test
- // x against 0 (with the same bitwidth).
- if (!x) {
- if (!p) return 0;
- *p = 10;
- }
- else p = 0;
-
- if (!x)
- *p = 5; // no-warning
-
- return p;
-}
-
-// Test case from <rdar://problem/6407949>
-void f11(unsigned i) {
- int *x = 0;
- if (i >= 0) { // expected-warning{{always true}}
- // always true
- } else {
- *x = 42; // no-warning
- }
-}
-
-void f11b(unsigned i) {
- int *x = 0;
- if (i <= ~(unsigned)0) {
- // always true
- } else {
- *x = 42; // no-warning
- }
-}
-
-// Test case for switch statements with weird case arms.
-typedef int BOOL, *PBOOL, *LPBOOL;
-typedef long LONG_PTR, *PLONG_PTR;
-typedef unsigned long ULONG_PTR, *PULONG_PTR;
-typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
-typedef LONG_PTR LRESULT;
-typedef struct _F12ITEM *HF12ITEM;
-
-void f12(HF12ITEM i, char *q) {
- char *p = 0;
- switch ((DWORD_PTR) i) {
- case 0 ... 10:
- p = q;
- break;
- case (DWORD_PTR) ((HF12ITEM) - 65535):
- return;
- default:
- return;
- }
-
- *p = 1; // no-warning
-}
-
-// Test handling of translating between integer "pointers" and back.
-void f13() {
- int *x = 0;
- if (((((int) x) << 2) + 1) >> 1) *x = 1;
-}
-
-// PR 4759 - Attribute non-null checking by the analyzer was not correctly
-// handling pointer values that were undefined.
-void pr4759_aux(int *p) __attribute__((nonnull));
-
-void pr4759() {
- int *p;
- pr4759_aux(p); // expected-warning{{1st function call argument is an uninitialized value}}
-}
-
-// Relax function call arguments invalidation to be aware of const
-// arguments. Test with function pointers. radar://10595327
-void ttt(const int *nptr);
-void ttt2(const int *nptr);
-typedef void (*NoConstType)(int*);
-int foo10595327(int b) {
- void (*fp)(int *);
- // We use path sensitivity to get the function declaration. Even when the
- // function pointer is cast to non-pointer-to-const parameter type, we can
- // find the right function declaration.
- if (b > 5)
- fp = (NoConstType)ttt2;
- else
- fp = (NoConstType)ttt;
- int x = 3;
- int y = x + 1;
- int *p = 0;
- fp(&y);
- if (x == y)
- return *p; // no-warning
- return 0;
-}
-
-#define AS_ATTRIBUTE volatile __attribute__((address_space(256)))
-#define _get_base() ((void * AS_ATTRIBUTE *)0)
-void* test_address_space_array(unsigned long slot) {
- return _get_base()[slot]; // no-warning
-}
-void test_address_space_condition(int AS_ATTRIBUTE *cpu_data) {
- if (cpu_data == 0) {
- *cpu_data = 3; // no-warning
- }
-}
-struct X { int member; };
-int test_address_space_member() {
- struct X AS_ATTRIBUTE *data = (struct X AS_ATTRIBUTE *)0UL;
- int ret;
- ret = data->member; // no-warning
- return ret;
-}
diff --git a/test/Analysis/null-deref-static.m b/test/Analysis/null-deref-static.m
deleted file mode 100644
index 887bea252390..000000000000
--- a/test/Analysis/null-deref-static.m
+++ /dev/null
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -w -fblocks -analyze -analyzer-checker=core,deadcode,alpha.core,debug.ExprInspection -verify %s
-
-void *malloc(unsigned long);
-void clang_analyzer_warnIfReached();
-
-void test_static_from_block() {
- static int *x;
- ^{
- *x; // no-warning
- };
-}
-
-void test_static_within_block() {
- ^{
- static int *x;
- *x; // expected-warning{{Dereference of null pointer}}
- };
-}
-
-void test_static_control_flow(int y) {
- static int *x;
- if (x) {
- // FIXME: Should be reachable.
- clang_analyzer_warnIfReached(); // no-warning
- }
- if (y) {
- // We are not sure if this branch is possible, because the developer
- // may argue that function is always called with y == 1 for the first time.
- // In this case, we can only advise the developer to add assertions
- // for suppressing such path.
- *x; // expected-warning{{Dereference of null pointer}}
- } else {
- x = malloc(1);
- }
-}
diff --git a/test/Analysis/nullability-arc.mm b/test/Analysis/nullability-arc.mm
deleted file mode 100644
index 5c68dda42ed3..000000000000
--- a/test/Analysis/nullability-arc.mm
+++ /dev/null
@@ -1,39 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core,nullability\
-// RUN: -analyzer-output=text -verify %s
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core,nullability\
-// RUN: -analyzer-output=text -verify %s -fobjc-arc
-
-#if !__has_feature(objc_arc)
-// expected-no-diagnostics
-#endif
-
-
-#define nil ((id)0)
-
-@interface Param
-@end
-
-@interface Base
-- (void)foo:(Param *_Nonnull)param;
-@end
-
-@interface Derived : Base
-@end
-
-@implementation Derived
-- (void)foo:(Param *)param {
- // FIXME: Why do we not emit the warning under ARC?
- [super foo:param];
-#if __has_feature(objc_arc)
- // expected-warning@-2{{nil passed to a callee that requires a non-null 1st parameter}}
- // expected-note@-3 {{nil passed to a callee that requires a non-null 1st parameter}}
-#endif
-
- [self foo:nil];
-#if __has_feature(objc_arc)
- // expected-note@-2{{Calling 'foo:'}}
- // expected-note@-3{{Passing nil object reference via 1st parameter 'param'}}
-#endif
-}
-@end
-
diff --git a/test/Analysis/nullability-no-arc.mm b/test/Analysis/nullability-no-arc.mm
deleted file mode 100644
index 0760186f4243..000000000000
--- a/test/Analysis/nullability-no-arc.mm
+++ /dev/null
@@ -1,100 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,nullability -verify %s
-
-#define nil 0
-
-@protocol NSObject
-+ (id)alloc;
-- (id)init;
-- (instancetype)autorelease;
-- (void)release;
-@end
-
-__attribute__((objc_root_class))
-@interface
-NSObject<NSObject>
-@end
-
-@interface TestObject : NSObject
-@end
-
-TestObject *_Nonnull returnsNilObjCInstanceIndirectly() {
- TestObject *local = nil;
- return local; // expected-warning {{nil returned from a function that is expected to return a non-null value}}
-}
-
-TestObject * _Nonnull returnsNilObjCInstanceIndirectlyWithSupressingCast() {
- TestObject *local = nil;
- return (TestObject * _Nonnull)local; // no-warning
-}
-
-TestObject * _Nonnull returnsNilObjCInstanceDirectly() {
- // The first warning is from Sema. The second is from the static analyzer.
- return nil; // expected-warning {{null returned from function that requires a non-null return value}}
- // expected-warning@-1 {{nil returned from a function that is expected to return a non-null value}}
-}
-
-TestObject * _Nonnull returnsNilObjCInstanceDirectlyWithSuppressingCast() {
- return (TestObject * _Nonnull)nil; // no-warning
-}
-
-void testObjCNonARCNoInitialization(TestObject * _Nonnull p) {
- TestObject * _Nonnull implicitlyZeroInitialized; // no-warning
- implicitlyZeroInitialized = p;
-}
-
-void testObjCNonARCExplicitZeroInitialization() {
- TestObject * _Nonnull explicitlyZeroInitialized = nil; // expected-warning {{nil assigned to a pointer which is expected to have non-null value}}
-}
-
-@interface ClassWithInitializers : NSObject
-@end
-
-@implementation ClassWithInitializers
-- (instancetype _Nonnull)initWithNonnullReturnAndSelfCheckingIdiom {
- // This defensive check is a common-enough idiom that we don't want
- // to issue a diagnostic for it.
- if (self = [super init]) {
- }
-
- return self; // no-warning
-}
-
-- (instancetype _Nonnull)initWithNonnullReturnAndNilReturnViaLocal {
- self = [super init];
- // This leaks, but we're not checking for that here.
-
- ClassWithInitializers *other = nil;
- // False negative. Once we have more subtle suppression of defensive checks in
- // initializers we should warn here.
- return other;
-}
-
-- (instancetype _Nonnull)initWithPreconditionViolation:(int)p {
- self = [super init];
- if (p < 0) {
- [self release];
- return (ClassWithInitializers * _Nonnull)nil;
- }
- return self;
-}
-
-+ (instancetype _Nonnull)factoryCallingInitWithNonnullReturnAndSelfCheckingIdiom {
- return [[[self alloc] initWithNonnullReturnAndSelfCheckingIdiom] autorelease]; // no-warning
-}
-
-+ (instancetype _Nonnull)factoryCallingInitWithNonnullReturnAndNilReturnViaLocal {
- return [[[self alloc] initWithNonnullReturnAndNilReturnViaLocal] autorelease]; // no-warning
-}
-
-+ (instancetype _Nonnull)initWithPreconditionViolation:(int) p {
- return [[[self alloc] initWithPreconditionViolation:p] autorelease]; // no-warning
-}
-
-- (TestObject * _Nonnull) returnsNil {
- return (TestObject * _Nonnull)nil;
-}
-- (TestObject * _Nonnull) inlineOfReturnsNilObjCInstanceDirectlyWithSuppressingCast {
- TestObject *o = [self returnsNil];
- return o;
-}
-@end
diff --git a/test/Analysis/nullability-notes.m b/test/Analysis/nullability-notes.m
deleted file mode 100644
index 850d18327ec7..000000000000
--- a/test/Analysis/nullability-notes.m
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %clang_analyze_cc1 -fblocks -analyzer-checker=core,nullability.NullPassedToNonnull,nullability.NullReturnedFromNonnull,nullability.NullablePassedToNonnull,nullability.NullableReturnedFromNonnull,nullability.NullableDereferenced -analyzer-output=text -verify %s
-// RUN: %clang_analyze_cc1 -fblocks -analyzer-checker=core,nullability.NullPassedToNonnull,nullability.NullReturnedFromNonnull,nullability.NullablePassedToNonnull,nullability.NullableReturnedFromNonnull,nullability.NullableDereferenced -analyzer-output=plist -o %t.plist %s
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/nullability-notes.m.plist -
-
-#include "Inputs/system-header-simulator-for-nullability.h"
-
-void takesNonnull(NSObject *_Nonnull y);
-
-@interface ClassWithProperties: NSObject
-@property(copy, nullable) NSObject *x; // plist check ensures no control flow piece from here to 'self.x'.
--(void) method;
-@end;
-@implementation ClassWithProperties
--(void) method {
- // no-crash
- NSObject *x = self.x; // expected-note{{Nullability 'nullable' is inferred}}
- takesNonnull(x); // expected-warning{{Nullable pointer is passed to a callee that requires a non-null 1st parameter}}
- // expected-note@-1{{Nullable pointer is passed to a callee that requires a non-null 1st parameter}}
-}
-@end
-
diff --git a/test/Analysis/nullability.c b/test/Analysis/nullability.c
deleted file mode 100644
index e0836c6798bb..000000000000
--- a/test/Analysis/nullability.c
+++ /dev/null
@@ -1,12 +0,0 @@
-// RUN: %clang_analyze_cc1 -fblocks -analyzer-checker=core,nullability -verify %s
-
-void it_takes_two(int a, int b);
-void function_pointer_arity_mismatch() {
- void(*fptr)() = it_takes_two;
- fptr(1); // no-crash expected-warning {{Function taking 2 arguments is called with fewer (1)}}
-}
-
-void block_arity_mismatch() {
- void(^b)() = ^(int a, int b) { };
- b(1); // no-crash expected-warning {{Block taking 2 arguments is called with fewer (1)}}
-}
diff --git a/test/Analysis/nullability.mm b/test/Analysis/nullability.mm
deleted file mode 100644
index c3f27e4d22a4..000000000000
--- a/test/Analysis/nullability.mm
+++ /dev/null
@@ -1,558 +0,0 @@
-// RUN: %clang_analyze_cc1 -fblocks -verify %s -analyzer-checker=core \
-// RUN: -analyzer-checker=nullability.NullPassedToNonnull \
-// RUN: -analyzer-checker=nullability.NullReturnedFromNonnull \
-// RUN: -analyzer-checker=nullability.NullablePassedToNonnull \
-// RUN: -analyzer-checker=nullability.NullableReturnedFromNonnull \
-// RUN: -analyzer-checker=nullability.NullableDereferenced \
-// RUN: -DNOSYSTEMHEADERS=0
-
-// RUN: %clang_analyze_cc1 -fblocks -verify %s -analyzer-checker=core \
-// RUN: -analyzer-checker=nullability.NullPassedToNonnull \
-// RUN: -analyzer-checker=nullability.NullReturnedFromNonnull \
-// RUN: -analyzer-checker=nullability.NullablePassedToNonnull \
-// RUN: -analyzer-checker=nullability.NullableReturnedFromNonnull \
-// RUN: -analyzer-checker=nullability.NullableDereferenced \
-// RUN: -DNOSYSTEMHEADERS=1 \
-// RUN: -analyzer-config nullability:NoDiagnoseCallsToSystemHeaders=true
-
-// RUN: %clang_analyze_cc1 -fblocks -verify %s -analyzer-checker=core\
-// RUN: -analyzer-checker=nullability.NullPassedToNonnull\
-// RUN: -analyzer-checker=nullability.NullReturnedFromNonnull\
-// RUN: -analyzer-checker=nullability.NullablePassedToNonnull\
-// RUN: -analyzer-checker=nullability.NullableReturnedFromNonnull\
-// RUN: -analyzer-checker=nullability.NullableDereferenced\
-// RUN: -DNOSYSTEMHEADERS=0 -fobjc-arc
-
-// RUN: %clang_analyze_cc1 -fblocks -verify %s -analyzer-checker=core\
-// RUN: -analyzer-checker=nullability.NullPassedToNonnull\
-// RUN: -analyzer-checker=nullability.NullReturnedFromNonnull\
-// RUN: -analyzer-checker=nullability.NullablePassedToNonnull\
-// RUN: -analyzer-checker=nullability.NullableReturnedFromNonnull\
-// RUN: -analyzer-checker=nullability.NullableDereferenced\
-// RUN: -DNOSYSTEMHEADERS=1 -fobjc-arc\
-// RUN: -analyzer-config nullability:NoDiagnoseCallsToSystemHeaders=true
-
-#include "Inputs/system-header-simulator-for-nullability.h"
-
-@interface TestObject : NSObject
-- (int *_Nonnull)returnsNonnull;
-- (int *_Nullable)returnsNullable;
-- (int *)returnsUnspecified;
-- (void)takesNonnull:(int *_Nonnull)p;
-- (void)takesNullable:(int *_Nullable)p;
-- (void)takesUnspecified:(int *)p;
-@property(readonly, strong) NSString *stuff;
-@end
-
-TestObject * getUnspecifiedTestObject();
-TestObject *_Nonnull getNonnullTestObject();
-TestObject *_Nullable getNullableTestObject();
-
-int getRandom();
-
-typedef struct Dummy { int val; } Dummy;
-
-void takesNullable(Dummy *_Nullable);
-void takesNonnull(Dummy *_Nonnull);
-void takesUnspecified(Dummy *);
-
-Dummy *_Nullable returnsNullable();
-Dummy *_Nonnull returnsNonnull();
-Dummy *returnsUnspecified();
-int *_Nullable returnsNullableInt();
-
-template <typename T> T *eraseNullab(T *p) { return p; }
-
-void takesAttrNonnull(Dummy *p) __attribute((nonnull(1)));
-
-void testBasicRules() {
- Dummy *p = returnsNullable();
- int *ptr = returnsNullableInt();
- // Make every dereference a different path to avoid sinks after errors.
- switch (getRandom()) {
- case 0: {
- Dummy &r = *p; // expected-warning {{Nullable pointer is dereferenced}}
- } break;
- case 1: {
- int b = p->val; // expected-warning {{Nullable pointer is dereferenced}}
- } break;
- case 2: {
- int stuff = *ptr; // expected-warning {{Nullable pointer is dereferenced}}
- } break;
- case 3:
- takesNonnull(p); // expected-warning {{Nullable pointer is passed to a callee that requires a non-null 1st parameter}}
- break;
- case 4: {
- Dummy d;
- takesNullable(&d);
- Dummy dd(d);
- break;
- }
- case 5: takesAttrNonnull(p); break; // expected-warning {{Nullable pointer is passed to}}
- default: { Dummy d = *p; } break; // expected-warning {{Nullable pointer is dereferenced}}
- }
- if (p) {
- takesNonnull(p);
- if (getRandom()) {
- Dummy &r = *p;
- } else {
- int b = p->val;
- }
- }
- Dummy *q = 0;
- if (getRandom()) {
- takesNullable(q);
- takesNonnull(q); // expected-warning {{Null passed to a callee that requires a non-null 1st parameter}}
- }
- Dummy a;
- Dummy *_Nonnull nonnull = &a;
- nonnull = q; // expected-warning {{Null assigned to a pointer which is expected to have non-null value}}
- q = &a;
- takesNullable(q);
- takesNonnull(q);
-}
-
-void testMultiParamChecking(Dummy *_Nonnull a, Dummy *_Nullable b,
- Dummy *_Nonnull c);
-
-void testArgumentTracking(Dummy *_Nonnull nonnull, Dummy *_Nullable nullable) {
- Dummy *p = nullable;
- Dummy *q = nonnull;
- switch(getRandom()) {
- case 1: nonnull = p; break; // expected-warning {{Nullable pointer is assigned to a pointer which is expected to have non-null value}}
- case 2: p = 0; break;
- case 3: q = p; break;
- case 4: testMultiParamChecking(nonnull, nullable, nonnull); break;
- case 5: testMultiParamChecking(nonnull, nonnull, nonnull); break;
- case 6: testMultiParamChecking(nonnull, nullable, nullable); break; // expected-warning {{Nullable pointer is passed to a callee that requires a non-null 3rd parameter}}
- case 7: testMultiParamChecking(nullable, nullable, nonnull); // expected-warning {{Nullable pointer is passed to a callee that requires a non-null 1st parameter}}
- case 8: testMultiParamChecking(nullable, nullable, nullable); // expected-warning {{Nullable pointer is passed to a callee that requires a non-null 1st parameter}}
- case 9: testMultiParamChecking((Dummy *_Nonnull)0, nullable, nonnull); break;
- }
-}
-
-Dummy *_Nonnull testNullableReturn(Dummy *_Nullable a) {
- Dummy *p = a;
- return p; // expected-warning {{Nullable pointer is returned from a function that is expected to return a non-null value}}
-}
-
-Dummy *_Nonnull testNullReturn() {
- Dummy *p = 0;
- return p; // expected-warning {{Null returned from a function that is expected to return a non-null value}}
-}
-
-void testObjCMessageResultNullability() {
- // The expected result: the most nullable of self and method return type.
- TestObject *o = getUnspecifiedTestObject();
- int *shouldBeNullable = [eraseNullab(getNullableTestObject()) returnsNonnull];
- switch (getRandom()) {
- case 0:
- // The core analyzer assumes that the receiver is non-null after a message
- // send. This is to avoid some false positives, and increase performance
- // but it also reduces the coverage and makes this checker unable to reason
- // about the nullness of the receiver.
- [o takesNonnull:shouldBeNullable]; // No warning expected.
- break;
- case 1:
- shouldBeNullable =
- [eraseNullab(getNullableTestObject()) returnsUnspecified];
- [o takesNonnull:shouldBeNullable]; // No warning expected.
- break;
- case 3:
- shouldBeNullable = [eraseNullab(getNullableTestObject()) returnsNullable];
- [o takesNonnull:shouldBeNullable]; // expected-warning {{Nullable pointer is passed to a callee that requires a non-null 1st parameter}}
- break;
- case 4:
- shouldBeNullable = [eraseNullab(getNonnullTestObject()) returnsNullable];
- [o takesNonnull:shouldBeNullable]; // expected-warning {{Nullable pointer is passed to a callee that requires a non-null 1st parameter}}
- break;
- case 5:
- shouldBeNullable =
- [eraseNullab(getUnspecifiedTestObject()) returnsNullable];
- [o takesNonnull:shouldBeNullable]; // expected-warning {{Nullable pointer is passed to a callee that requires a non-null 1st parameter}}
- break;
- case 6:
- shouldBeNullable = [eraseNullab(getNullableTestObject()) returnsNullable];
- [o takesNonnull:shouldBeNullable]; // expected-warning {{Nullable pointer is passed to a callee that requires a non-null 1st parameter}}
- break;
- case 7: {
- int *shouldBeNonnull = [eraseNullab(getNonnullTestObject()) returnsNonnull];
- [o takesNonnull:shouldBeNonnull];
- } break;
- }
-}
-
-Dummy * _Nonnull testDirectCastNullableToNonnull() {
- Dummy *p = returnsNullable();
- takesNonnull((Dummy * _Nonnull)p); // no-warning
- return (Dummy * _Nonnull)p; // no-warning
-}
-
-Dummy * _Nonnull testIndirectCastNullableToNonnull() {
- Dummy *p = (Dummy * _Nonnull)returnsNullable();
- takesNonnull(p); // no-warning
- return p; // no-warning
-}
-
-Dummy * _Nonnull testDirectCastNilToNonnull() {
- takesNonnull((Dummy * _Nonnull)0); // no-warning
- return (Dummy * _Nonnull)0; // no-warning
-}
-
-void testIndirectCastNilToNonnullAndPass() {
- Dummy *p = (Dummy * _Nonnull)0;
- // FIXME: Ideally the cast above would suppress this warning.
- takesNonnull(p); // expected-warning {{Null passed to a callee that requires a non-null 1st parameter}}
-}
-
-void testDirectCastNilToNonnullAndAssignToLocalInInitializer() {
- Dummy * _Nonnull nonnullLocalWithAssignmentInInitializer = (Dummy * _Nonnull)0; // no-warning
- (void)nonnullLocalWithAssignmentInInitializer;
-
- // Since we've already had an invariant violation along this path,
- // we shouldn't warn here.
- nonnullLocalWithAssignmentInInitializer = 0;
- (void)nonnullLocalWithAssignmentInInitializer;
-
-}
-
-void testDirectCastNilToNonnullAndAssignToLocal(Dummy * _Nonnull p) {
- Dummy * _Nonnull nonnullLocalWithAssignment = p;
- nonnullLocalWithAssignment = (Dummy * _Nonnull)0; // no-warning
- (void)nonnullLocalWithAssignment;
-
- // Since we've already had an invariant violation along this path,
- // we shouldn't warn here.
- nonnullLocalWithAssignment = 0;
- (void)nonnullLocalWithAssignment;
-}
-
-void testDirectCastNilToNonnullAndAssignToParam(Dummy * _Nonnull p) {
- p = (Dummy * _Nonnull)0; // no-warning
-}
-
-@interface ClassWithNonnullIvar : NSObject {
- Dummy *_nonnullIvar;
-}
-@end
-
-@implementation ClassWithNonnullIvar
--(void)testDirectCastNilToNonnullAndAssignToIvar {
- _nonnullIvar = (Dummy * _Nonnull)0; // no-warning;
-
- // Since we've already had an invariant violation along this path,
- // we shouldn't warn here.
- _nonnullIvar = 0;
-}
-@end
-
-void testIndirectNilPassToNonnull() {
- Dummy *p = 0;
- takesNonnull(p); // expected-warning {{Null passed to a callee that requires a non-null 1st parameter}}
-}
-
-void testConditionalNilPassToNonnull(Dummy *p) {
- if (!p) {
- takesNonnull(p); // expected-warning {{Null passed to a callee that requires a non-null 1st parameter}}
- }
-}
-
-Dummy * _Nonnull testIndirectCastNilToNonnullAndReturn() {
- Dummy *p = (Dummy * _Nonnull)0;
- // FIXME: Ideally the cast above would suppress this warning.
- return p; // expected-warning {{Null returned from a function that is expected to return a non-null value}}
-}
-
-void testInvalidPropagation() {
- Dummy *p = returnsUnspecified();
- takesNullable(p);
- takesNonnull(p);
-}
-
-void onlyReportFirstPreconditionViolationOnPath() {
- Dummy *p = returnsNullable();
- takesNonnull(p); // expected-warning {{Nullable pointer is passed to a callee that requires a non-null 1st parameter}}
- takesNonnull(p); // No warning.
- // The first warning was not a sink. The analysis expected to continue.
- int i = 0;
- i = 5 / i; // expected-warning {{Division by zero}}
- (void)i;
-}
-
-Dummy *_Nonnull doNotWarnWhenPreconditionIsViolatedInTopFunc(
- Dummy *_Nonnull p) {
- if (!p) {
- Dummy *ret =
- 0; // avoid compiler warning (which is not generated by the analyzer)
- if (getRandom())
- return ret; // no warning
- else
- return p; // no warning
- } else {
- return p;
- }
-}
-
-Dummy *_Nonnull doNotWarnWhenPreconditionIsViolated(Dummy *_Nonnull p) {
- if (!p) {
- Dummy *ret =
- 0; // avoid compiler warning (which is not generated by the analyzer)
- if (getRandom())
- return ret; // no warning
- else
- return p; // no warning
- } else {
- return p;
- }
-}
-
-void testPreconditionViolationInInlinedFunction(Dummy *p) {
- doNotWarnWhenPreconditionIsViolated(p);
-}
-
-@interface TestInlinedPreconditionViolationClass : NSObject
-@end
-
-@implementation TestInlinedPreconditionViolationClass
--(Dummy * _Nonnull) calleeWithParam:(Dummy * _Nonnull) p2 {
- Dummy *x = 0;
- if (!p2) // p2 binding becomes dead at this point.
- return x; // no-warning
- else
- return p2;
-}
-
--(Dummy *)callerWithParam:(Dummy * _Nonnull) p1 {
- return [self calleeWithParam:p1];
-}
-
-@end
-
-int * _Nonnull InlinedPreconditionViolationInFunctionCallee(int * _Nonnull p2) {
- int *x = 0;
- if (!p2) // p2 binding becomes dead at this point.
- return x; // no-warning
- else
- return p2;
-}
-
-int * _Nonnull InlinedReturnNullOverSuppressionCallee(int * _Nonnull p2) {
- int *result = 0;
- return result; // no-warning; but this is an over suppression
-}
-
-int *InlinedReturnNullOverSuppressionCaller(int * _Nonnull p1) {
- return InlinedReturnNullOverSuppressionCallee(p1);
-}
-
-void inlinedNullable(Dummy *_Nullable p) {
- if (p) return;
-}
-void inlinedNonnull(Dummy *_Nonnull p) {
- if (p) return;
-}
-void inlinedUnspecified(Dummy *p) {
- if (p) return;
-}
-
-void testNilReturnWithBlock(Dummy *p) {
- p = 0;
- Dummy *_Nonnull (^myblock)(void) = ^Dummy *_Nonnull(void) {
- return p; // TODO: We should warn in blocks.
- };
- myblock();
-}
-
-Dummy *_Nonnull testDefensiveInlineChecks(Dummy * p) {
- switch (getRandom()) {
- case 1: inlinedNullable(p); break;
- case 2: inlinedNonnull(p); break;
- case 3: inlinedUnspecified(p); break;
- }
- if (getRandom())
- takesNonnull(p); // no-warning
-
- if (getRandom()) {
- Dummy *_Nonnull varWithInitializer = p; // no-warning
-
- Dummy *_Nonnull var1WithInitializer = p, // no-warning
- *_Nonnull var2WithInitializer = p; // no-warning
- }
-
- if (getRandom()) {
- Dummy *_Nonnull varWithoutInitializer;
- varWithoutInitializer = p; // no-warning
- }
-
- return p;
-}
-
-
-@interface SomeClass : NSObject {
- int instanceVar;
-}
-@end
-
-@implementation SomeClass (MethodReturn)
-- (id)initWithSomething:(int)i {
- if (self = [super init]) {
- instanceVar = i;
- }
-
- return self;
-}
-
-- (TestObject * _Nonnull)testReturnsNullableInNonnullIndirectly {
- TestObject *local = getNullableTestObject();
- return local; // expected-warning {{Nullable pointer is returned from a method that is expected to return a non-null value}}
-}
-
-- (TestObject * _Nonnull)testReturnsCastSuppressedNullableInNonnullIndirectly {
- TestObject *local = getNullableTestObject();
- return (TestObject * _Nonnull)local; // no-warning
-}
-
-- (TestObject * _Nonnull)testReturnsNullableInNonnullWhenPreconditionViolated:(TestObject * _Nonnull) p {
- TestObject *local = getNullableTestObject();
- if (!p) // Pre-condition violated here.
- return local; // no-warning
- else
- return p; // no-warning
-}
-@end
-
-@interface ClassWithInitializers : NSObject
-@end
-
-@implementation ClassWithInitializers
-- (instancetype _Nonnull)initWithNonnullReturnAndSelfCheckingIdiom {
- // This defensive check is a common-enough idiom that we filter don't want
- // to issue a diagnostic for it,
- if (self = [super init]) {
- }
-
- return self; // no-warning
-}
-
-- (instancetype _Nonnull)initWithNonnullReturnAndNilReturnViaLocal {
- self = [super init];
- // This leaks, but we're not checking for that here.
-
- ClassWithInitializers *other = nil;
- // False negative. Once we have more subtle suppression of defensive checks in
- // initializers we should warn here.
- return other;
-}
-@end
-
-@interface SubClassWithInitializers : ClassWithInitializers
-@end
-
-@implementation SubClassWithInitializers
-// Note: Because this is overriding
-// -[ClassWithInitializers initWithNonnullReturnAndSelfCheckingIdiom],
-// the return type of this method becomes implicitly id _Nonnull.
-- (id)initWithNonnullReturnAndSelfCheckingIdiom {
- if (self = [super initWithNonnullReturnAndSelfCheckingIdiom]) {
- }
-
- return self; // no-warning
-}
-
-- (id _Nonnull)initWithNonnullReturnAndSelfCheckingIdiomV2; {
- // Another common return-checking idiom
- self = [super initWithNonnullReturnAndSelfCheckingIdiom];
- if (!self) {
- return nil; // no-warning
- }
-
- return self;
-}
-@end
-
-@interface ClassWithCopyWithZone : NSObject<NSCopying,NSMutableCopying> {
- id i;
-}
-
-@end
-
-@implementation ClassWithCopyWithZone
--(id)copyWithZone:(NSZone *)zone {
- ClassWithCopyWithZone *newInstance = [[ClassWithCopyWithZone alloc] init];
- if (!newInstance)
- return nil;
-
- newInstance->i = i;
- return newInstance;
-}
-
--(id)mutableCopyWithZone:(NSZone *)zone {
- ClassWithCopyWithZone *newInstance = [[ClassWithCopyWithZone alloc] init];
- if (newInstance) {
- newInstance->i = i;
- }
-
- return newInstance;
-}
-@end
-
-NSString * _Nullable returnsNullableString();
-
-void callFunctionInSystemHeader() {
- NSString *s = returnsNullableString();
-
- NSSystemFunctionTakingNonnull(s);
- #if !NOSYSTEMHEADERS
- // expected-warning@-2{{Nullable pointer is passed to a callee that requires a non-null 1st parameter}}
- #endif
-}
-
-void callMethodInSystemHeader() {
- NSString *s = returnsNullableString();
-
- NSSystemClass *sc = [[NSSystemClass alloc] init];
- [sc takesNonnull:s];
- #if !NOSYSTEMHEADERS
- // expected-warning@-2{{Nullable pointer is passed to a callee that requires a non-null 1st parameter}}
- #endif
-}
-
-// Test to make sure the analyzer doesn't warn when an a nullability invariant
-// has already been found to be violated on an instance variable.
-
-@class MyInternalClass;
-@interface MyClass : NSObject {
- MyInternalClass * _Nonnull _internal;
-}
-@end
-
-@interface MyInternalClass : NSObject {
- @public
- id _someIvar;
-}
--(id _Nonnull)methodWithInternalImplementation;
-@end
-
-@interface MyClass () {
- MyInternalClass * _Nonnull _nilledOutInternal;
-}
-@end
-
-@implementation MyClass
--(id _Nonnull)methodWithInternalImplementation {
- if (!_internal)
- return nil; // no-warning
-
- return [_internal methodWithInternalImplementation];
-}
-
-- (id _Nonnull)methodReturningIvarInImplementation; {
- return _internal == 0 ? nil : _internal->_someIvar; // no-warning
-}
-
--(id _Nonnull)methodWithNilledOutInternal {
- _nilledOutInternal = (id _Nonnull)nil;
-
- return nil; // no-warning
-}
-@end
diff --git a/test/Analysis/nullability_nullonly.mm b/test/Analysis/nullability_nullonly.mm
deleted file mode 100644
index 18225391ee87..000000000000
--- a/test/Analysis/nullability_nullonly.mm
+++ /dev/null
@@ -1,170 +0,0 @@
-// RUN: %clang_analyze_cc1 -fobjc-arc -analyzer-checker=core,nullability.NullPassedToNonnull,nullability.NullReturnedFromNonnull -DNOSYSTEMHEADERS=0 -verify %s
-// RUN: %clang_analyze_cc1 -fobjc-arc -analyzer-checker=core,nullability.NullPassedToNonnull,nullability.NullReturnedFromNonnull -analyzer-config nullability:NoDiagnoseCallsToSystemHeaders=true -DNOSYSTEMHEADERS=1 -verify %s
-
-#include "Inputs/system-header-simulator-for-nullability.h"
-
-int getRandom();
-
-typedef struct Dummy { int val; } Dummy;
-
-void takesNullable(Dummy *_Nullable);
-void takesNonnull(Dummy *_Nonnull);
-Dummy *_Nullable returnsNullable();
-
-void testBasicRules() {
- // The tracking of nullable values is turned off.
- Dummy *p = returnsNullable();
- takesNonnull(p); // no warning
- Dummy *q = 0;
- if (getRandom()) {
- takesNullable(q);
- takesNonnull(q); // expected-warning {{Null passed to a callee that requires a non-null 1st parameter}}
- }
-}
-
-Dummy *_Nonnull testNullReturn() {
- Dummy *p = 0;
- return p; // expected-warning {{Null returned from a function that is expected to return a non-null value}}
-}
-
-void onlyReportFirstPreconditionViolationOnPath() {
- Dummy *p = 0;
- takesNonnull(p); // expected-warning {{Null passed to a callee that requires a non-null 1st parameter}}
- takesNonnull(p); // No warning.
- // Passing null to nonnull is a sink. Stop the analysis.
- int i = 0;
- i = 5 / i; // no warning
- (void)i;
-}
-
-Dummy *_Nonnull doNotWarnWhenPreconditionIsViolatedInTopFunc(
- Dummy *_Nonnull p) {
- if (!p) {
- Dummy *ret =
- 0; // avoid compiler warning (which is not generated by the analyzer)
- if (getRandom())
- return ret; // no warning
- else
- return p; // no warning
- } else {
- return p;
- }
-}
-
-Dummy *_Nonnull doNotWarnWhenPreconditionIsViolated(Dummy *_Nonnull p) {
- if (!p) {
- Dummy *ret =
- 0; // avoid compiler warning (which is not generated by the analyzer)
- if (getRandom())
- return ret; // no warning
- else
- return p; // no warning
- } else {
- return p;
- }
-}
-
-void testPreconditionViolationInInlinedFunction(Dummy *p) {
- doNotWarnWhenPreconditionIsViolated(p);
-}
-
-void inlinedNullable(Dummy *_Nullable p) {
- if (p) return;
-}
-void inlinedNonnull(Dummy *_Nonnull p) {
- if (p) return;
-}
-void inlinedUnspecified(Dummy *p) {
- if (p) return;
-}
-
-Dummy *_Nonnull testDefensiveInlineChecks(Dummy * p) {
- switch (getRandom()) {
- case 1: inlinedNullable(p); break;
- case 2: inlinedNonnull(p); break;
- case 3: inlinedUnspecified(p); break;
- }
- if (getRandom())
- takesNonnull(p);
- return p;
-}
-
-@interface TestObject : NSObject
-@end
-
-TestObject *_Nonnull getNonnullTestObject();
-
-void testObjCARCImplicitZeroInitialization() {
- TestObject * _Nonnull implicitlyZeroInitialized; // no-warning
- implicitlyZeroInitialized = getNonnullTestObject();
-}
-
-void testObjCARCExplicitZeroInitialization() {
- TestObject * _Nonnull explicitlyZeroInitialized = nil; // expected-warning {{nil assigned to a pointer which is expected to have non-null value}}
-}
-
-// Under ARC, returned expressions of ObjC objects types are are implicitly
-// cast to _Nonnull when the functions return type is _Nonnull, so make
-// sure this doesn't implicit cast doesn't suppress a legitimate warning.
-TestObject * _Nonnull returnsNilObjCInstanceIndirectly() {
- TestObject *local = nil;
- return local; // expected-warning {{nil returned from a function that is expected to return a non-null value}}
-}
-
-TestObject * _Nonnull returnsNilObjCInstanceIndirectlyWithSupressingCast() {
- TestObject *local = nil;
- return (TestObject * _Nonnull)local; // no-warning
-}
-
-TestObject * _Nonnull returnsNilObjCInstanceDirectly() {
- return nil; // expected-warning {{nil returned from a function that is expected to return a non-null value}}
-}
-
-TestObject * _Nonnull returnsNilObjCInstanceDirectlyWithSuppressingCast() {
- return (TestObject * _Nonnull)nil; // no-warning
-}
-
-@interface SomeClass : NSObject
-@end
-
-@implementation SomeClass (MethodReturn)
-- (SomeClass * _Nonnull)testReturnsNilInNonnull {
- SomeClass *local = nil;
- return local; // expected-warning {{nil returned from a method that is expected to return a non-null value}}
-}
-
-- (SomeClass * _Nonnull)testReturnsCastSuppressedNilInNonnull {
- SomeClass *local = nil;
- return (SomeClass * _Nonnull)local; // no-warning
-}
-
-- (SomeClass * _Nonnull)testReturnsNilInNonnullWhenPreconditionViolated:(SomeClass * _Nonnull) p {
- SomeClass *local = nil;
- if (!p) // Pre-condition violated here.
- return local; // no-warning
- else
- return p; // no-warning
-}
-@end
-
-
-void callFunctionInSystemHeader() {
- NSString *s;
- s = nil;
-
- NSSystemFunctionTakingNonnull(s);
- #if !NOSYSTEMHEADERS
- // expected-warning@-2{{nil passed to a callee that requires a non-null 1st parameter}}
- #endif
-}
-
-void callMethodInSystemHeader() {
- NSString *s;
- s = nil;
-
- NSSystemClass *sc = [[NSSystemClass alloc] init];
- [sc takesNonnull:s];
- #if !NOSYSTEMHEADERS
- // expected-warning@-2{{nil passed to a callee that requires a non-null 1st parameter}}
- #endif
-}
diff --git a/test/Analysis/nullptr.cpp b/test/Analysis/nullptr.cpp
deleted file mode 100644
index 38e099b7fbdf..000000000000
--- a/test/Analysis/nullptr.cpp
+++ /dev/null
@@ -1,183 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -Wno-conversion-null -analyzer-checker=core,debug.ExprInspection -analyzer-store region -analyzer-output=text -verify %s
-
-void clang_analyzer_eval(int);
-
-// test to see if nullptr is detected as a null pointer
-void foo1(void) {
- char *np = nullptr; // expected-note{{'np' initialized to a null pointer value}}
- *np = 0; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1{{Dereference of null pointer}}
-}
-
-// check if comparing nullptr to nullptr is detected properly
-void foo2(void) {
- char *np1 = nullptr;
- char *np2 = np1;
- char c;
- if (np1 == np2)
- np1 = &c;
- *np1 = 0; // no-warning
-}
-
-// invoving a nullptr in a more complex operation should be cause a warning
-void foo3(void) {
- struct foo {
- int a, f;
- };
- char *np = nullptr; // expected-note{{'np' initialized to a null pointer value}}
- // casting a nullptr to anything should be caught eventually
- int *ip = &(((struct foo *)np)->f); // expected-note{{'ip' initialized to a null pointer value}}
- *ip = 0; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1{{Dereference of null pointer}}
- // should be error here too, but analysis gets stopped
-// *np = 0;
-}
-
-// nullptr is implemented as a zero integer value, so should be able to compare
-void foo4(void) {
- char *np = nullptr;
- if (np != 0)
- *np = 0; // no-warning
- char *cp = 0;
- if (np != cp)
- *np = 0; // no-warning
-}
-
-int pr10372(void *& x) {
- // GNU null is a pointer-sized integer, not a pointer.
- x = __null;
- // This used to crash.
- return __null;
-}
-
-void zoo1() {
- char **p = 0; // expected-note{{'p' initialized to a null pointer value}}
- delete *(p + 0); // expected-warning{{Dereference of null pointer}}
- // expected-note@-1{{Dereference of null pointer}}
-}
-
-void zoo1backwards() {
- char **p = 0; // expected-note{{'p' initialized to a null pointer value}}
- delete *(0 + p); // expected-warning{{Dereference of null pointer}}
- // expected-note@-1{{Dereference of null pointer}}
-}
-
-typedef __INTPTR_TYPE__ intptr_t;
-void zoo1multiply() {
- char **p = 0; // FIXME-should-be-note:{{'p' initialized to a null pointer value}}
- delete *((char **)((intptr_t)p * 2)); // expected-warning{{Dereference of null pointer}}
- // expected-note@-1{{Dereference of null pointer}}
-}
-
-void zoo2() {
- int **a = 0;
- int **b = 0; // expected-note{{'b' initialized to a null pointer value}}
- asm ("nop"
- :"=r"(*a)
- :"0"(*b) // expected-warning{{Dereference of null pointer}}
- // expected-note@-1{{Dereference of null pointer}}
- );
-}
-
-int exprWithCleanups() {
- struct S {
- S(int a):a(a){}
- ~S() {}
-
- int a;
- };
-
- int *x = 0; // expected-note{{'x' initialized to a null pointer value}}
- return S(*x).a; // expected-warning{{Dereference of null pointer}}
- // expected-note@-1{{Dereference of null pointer}}
-}
-
-int materializeTempExpr() {
- int *n = 0; // expected-note{{'n' initialized to a null pointer value}}
- struct S {
- int a;
- S(int i): a(i) {}
- };
- const S &s = S(*n); // expected-warning{{Dereference of null pointer}}
- // expected-note@-1{{Dereference of null pointer}}
- return s.a;
-}
-
-typedef decltype(nullptr) nullptr_t;
-void testMaterializeTemporaryExprWithNullPtr() {
- // Create MaterializeTemporaryExpr with a nullptr inside.
- const nullptr_t &r = nullptr;
-}
-
-int getSymbol();
-
-struct X {
- virtual void f() {}
-};
-
-void invokeF(X* x) {
- x->f(); // expected-warning{{Called C++ object pointer is null}}
- // expected-note@-1{{Called C++ object pointer is null}}
-}
-
-struct Type {
- decltype(nullptr) x;
-};
-
-void shouldNotCrash() {
- decltype(nullptr) p; // expected-note{{'p' declared without an initial value}}
- if (getSymbol()) // expected-note {{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- // expected-note@-2{{Assuming the condition is false}}
- // expected-note@-3{{Taking false branch}}
- // expected-note@-4{{Assuming the condition is true}}
- // expected-note@-5{{Taking true branch}}
- invokeF(p); // expected-warning{{1st function call argument is an uninitialized value}}
- // expected-note@-1{{1st function call argument is an uninitialized value}}
- if (getSymbol()) // expected-note {{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- // expected-note@-2{{Assuming the condition is true}}
- // expected-note@-3{{Taking true branch}}
- invokeF(nullptr); // expected-note {{Calling 'invokeF'}}
- // expected-note@-1{{Passing null pointer value via 1st parameter 'x'}}
- if (getSymbol()) { // expected-note {{Assuming the condition is true}}
- // expected-note@-1{{Taking true branch}}
- X *xx = Type().x; // expected-note {{Null pointer value stored to field 'x'}}
- // expected-note@-1{{'xx' initialized to a null pointer value}}
- xx->f(); // expected-warning{{Called C++ object pointer is null}}
- // expected-note@-1{{Called C++ object pointer is null}}
- }
-}
-
-void f(decltype(nullptr) p) {
- int *q = nullptr;
- clang_analyzer_eval(p == 0); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(q == 0); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
-}
-
-decltype(nullptr) returnsNullPtrType();
-void fromReturnType() {
- ((X *)returnsNullPtrType())->f(); // expected-warning{{Called C++ object pointer is null}}
- // expected-note@-1{{Called C++ object pointer is null}}
-}
-
-#define AS_ATTRIBUTE __attribute__((address_space(256)))
-class AS1 {
-public:
- int x;
- ~AS1() {
- int AS_ATTRIBUTE *x = 0;
- *x = 3; // no-warning
- }
-};
-void test_address_space_field_access() {
- AS1 AS_ATTRIBUTE *pa = 0;
- pa->x = 0; // no-warning
-}
-void test_address_space_bind() {
- AS1 AS_ATTRIBUTE *pa = 0;
- AS1 AS_ATTRIBUTE &r = *pa;
- r.x = 0; // no-warning
-}
diff --git a/test/Analysis/number-object-conversion.c b/test/Analysis/number-object-conversion.c
deleted file mode 100644
index 8f1e67217974..000000000000
--- a/test/Analysis/number-object-conversion.c
+++ /dev/null
@@ -1,40 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -w -analyzer-checker=osx.NumberObjectConversion %s -verify
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -w -analyzer-checker=osx.NumberObjectConversion -analyzer-config osx.NumberObjectConversion:Pedantic=true -DPEDANTIC %s -verify
-
-#define NULL ((void *)0)
-
-typedef const struct __CFNumber *CFNumberRef;
-
-void takes_int(int);
-
-void bad(CFNumberRef p) {
-#ifdef PEDANTIC
- if (p) {} // expected-warning{{Converting a pointer value of type 'CFNumberRef' to a primitive boolean value; instead, either compare the pointer to NULL or call CFNumberGetValue()}}
- if (!p) {} // expected-warning{{Converting a pointer value of type 'CFNumberRef' to a primitive boolean value; instead, either compare the pointer to NULL or call CFNumberGetValue()}}
- p ? 1 : 2; // expected-warning{{Converting a pointer value of type 'CFNumberRef' to a primitive boolean value; instead, either compare the pointer to NULL or call CFNumberGetValue()}}
- if (p == 0) {} // expected-warning{{Comparing a pointer value of type 'CFNumberRef' to a primitive integer value; instead, either compare the pointer to NULL or compare the result of calling CFNumberGetValue()}}
-#else
- if (p) {} // no-warning
- if (!p) {} // no-warning
- p ? 1 : 2; // no-warning
- if (p == 0) {} // no-warning
-#endif
- if (p > 0) {} // expected-warning{{Comparing a pointer value of type 'CFNumberRef' to a primitive integer value; did you mean to compare the result of calling CFNumberGetValue()?}}
- int x = p; // expected-warning{{Converting a pointer value of type 'CFNumberRef' to a primitive integer value; did you mean to call CFNumberGetValue()?}}
- x = p; // expected-warning{{Converting a pointer value of type 'CFNumberRef' to a primitive integer value; did you mean to call CFNumberGetValue()?}}
- takes_int(p); // expected-warning{{Converting a pointer value of type 'CFNumberRef' to a primitive integer value; did you mean to call CFNumberGetValue()?}}
- takes_int(x); // no-warning
-}
-
-// Conversion of a pointer to an intptr_t is fine.
-typedef long intptr_t;
-typedef unsigned long uintptr_t;
-typedef long fintptr_t; // Fake, for testing the regex.
-void test_intptr_t(CFNumberRef p) {
- (long)p; // expected-warning{{Converting a pointer value of type 'CFNumberRef' to a primitive integer value; did you mean to call CFNumberGetValue()?}}
- (intptr_t)p; // no-warning
- (unsigned long)p; // expected-warning{{Converting a pointer value of type 'CFNumberRef' to a primitive integer value; did you mean to call CFNumberGetValue()?}}
- (uintptr_t)p; // no-warning
- (fintptr_t)p; // expected-warning{{Converting a pointer value of type 'CFNumberRef' to a primitive integer value; did you mean to call CFNumberGetValue()?}}
-}
-
diff --git a/test/Analysis/number-object-conversion.cpp b/test/Analysis/number-object-conversion.cpp
deleted file mode 100644
index 7e46a2bee85a..000000000000
--- a/test/Analysis/number-object-conversion.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -w -std=c++11 -analyzer-checker=osx.NumberObjectConversion %s -verify
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -w -std=c++11 -analyzer-checker=osx.NumberObjectConversion -analyzer-config osx.NumberObjectConversion:Pedantic=true -DPEDANTIC %s -verify
-
-#define NULL ((void *)0)
-#include "Inputs/system-header-simulator-cxx.h" // for nullptr
-
-class OSBoolean {
-public:
- virtual bool isTrue() const;
- virtual bool isFalse() const;
-};
-
-class OSNumber {
-public:
- virtual bool isEqualTo(const OSNumber *);
- virtual unsigned char unsigned8BitValue() const;
- virtual unsigned short unsigned16BitValue() const;
- virtual unsigned int unsigned32BitValue() const;
- virtual unsigned long long unsigned64BitValue() const;
-};
-
-extern const OSBoolean *const &kOSBooleanFalse;
-extern const OSBoolean *const &kOSBooleanTrue;
-
-void takes_bool(bool);
-
-void bad_boolean(const OSBoolean *p) {
-#ifdef PEDANTIC
- if (p) {} // expected-warning{{Converting a pointer value of type 'class OSBoolean *' to a primitive boolean value; instead, either compare the pointer to nullptr or call getValue()}}
- if (!p) {} // expected-warning{{Converting a pointer value of type 'class OSBoolean *' to a primitive boolean value; instead, either compare the pointer to nullptr or call getValue()}}
- p ? 1 : 2; // expected-warning{{Converting a pointer value of type 'class OSBoolean *' to a primitive boolean value; instead, either compare the pointer to nullptr or call getValue()}}
-#else
- if (p) {} // no-warning
- if (!p) {} // no-warning
- p ? 1 : 2; // no-warning
-#endif
- (bool)p; // expected-warning{{Converting a pointer value of type 'class OSBoolean *' to a primitive bool value; did you mean to call getValue()?}}
- bool x = p; // expected-warning{{Converting a pointer value of type 'class OSBoolean *' to a primitive bool value; did you mean to call getValue()?}}
- x = p; // expected-warning{{Converting a pointer value of type 'class OSBoolean *' to a primitive bool value; did you mean to call getValue()?}}
- takes_bool(p); // expected-warning{{Converting a pointer value of type 'class OSBoolean *' to a primitive bool value; did you mean to call getValue()?}}
- takes_bool(x); // no-warning
-}
-
-void bad_number(const OSNumber *p) {
-#ifdef PEDANTIC
- if (p) {} // expected-warning{{Converting a pointer value of type 'class OSNumber *' to a scalar boolean value; instead, either compare the pointer to nullptr or call a method on 'class OSNumber *' to get the scalar value}}
- if (!p) {} // expected-warning{{Converting a pointer value of type 'class OSNumber *' to a scalar boolean value; instead, either compare the pointer to nullptr or call a method on 'class OSNumber *' to get the scalar value}}
- p ? 1 : 2; // expected-warning{{Converting a pointer value of type 'class OSNumber *' to a scalar boolean value; instead, either compare the pointer to nullptr or call a method on 'class OSNumber *' to get the scalar value}}
- if (p == 0) {} // expected-warning{{Comparing a pointer value of type 'class OSNumber *' to a scalar integer value; instead, either compare the pointer to nullptr or compare the result of calling a method on 'class OSNumber *' to get the scalar value}}
-#else
- if (p) {} // no-warning
- if (!p) {} // no-warning
- p ? 1 : 2; // no-warning
- if (p == 0) {} // no-warning
-#endif
- (int)p; // expected-warning{{Converting a pointer value of type 'class OSNumber *' to a scalar integer value; did you mean to call a method on 'class OSNumber *' to get the scalar value?}}
- takes_bool(p); // expected-warning{{Converting a pointer value of type 'class OSNumber *' to a scalar bool value; did you mean to call a method on 'class OSNumber *' to get the scalar value?}}
-}
-
-typedef bool sugared_bool;
-typedef const OSBoolean *sugared_OSBoolean;
-void bad_sugared(sugared_OSBoolean p) {
- sugared_bool x = p; // expected-warning{{Converting a pointer value of type 'class OSBoolean *' to a primitive bool value; did you mean to call getValue()?}}
-}
-
-void good(const OSBoolean *p) {
- bool x = p->isTrue(); // no-warning
- (bool)p->isFalse(); // no-warning
- if (p == kOSBooleanTrue) {} // no-warning
-}
-
-void suppression(const OSBoolean *p) {
- if (p == NULL) {} // no-warning
- bool y = (p == nullptr); // no-warning
-}
-
-// Conversion of a pointer to an intptr_t is fine.
-typedef long intptr_t;
-typedef unsigned long uintptr_t;
-typedef long fintptr_t; // Fake, for testing the regex.
-void test_intptr_t(const OSBoolean *p) {
- (long)p; // expected-warning{{Converting a pointer value of type 'class OSBoolean *' to a primitive integer value; did you mean to call getValue()?}}
- (intptr_t)p; // no-warning
- (unsigned long)p; // expected-warning{{Converting a pointer value of type 'class OSBoolean *' to a primitive integer value; did you mean to call getValue()?}}
- (uintptr_t)p; // no-warning
- (fintptr_t)p; // expected-warning{{Converting a pointer value of type 'class OSBoolean *' to a primitive integer value; did you mean to call getValue()?}}
-}
-
-// Test a different definition of NULL.
-#undef NULL
-#define NULL 0
-void test_non_pointer_NULL(const OSBoolean *p) {
- if (p == NULL) {} // no-warning
-}
diff --git a/test/Analysis/number-object-conversion.m b/test/Analysis/number-object-conversion.m
deleted file mode 100644
index 8bc03320e6d6..000000000000
--- a/test/Analysis/number-object-conversion.m
+++ /dev/null
@@ -1,112 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -fblocks -w -analyzer-checker=osx.NumberObjectConversion %s -verify
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -fblocks -w -analyzer-checker=osx.NumberObjectConversion -analyzer-config osx.NumberObjectConversion:Pedantic=true -DPEDANTIC %s -verify
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -fblocks -fobjc-arc -w -analyzer-checker=osx.NumberObjectConversion %s -verify
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -fblocks -fobjc-arc -w -analyzer-checker=osx.NumberObjectConversion -analyzer-config osx.NumberObjectConversion:Pedantic=true -DPEDANTIC %s -verify
-
-#include "Inputs/system-header-simulator-objc.h"
-
-void takes_boolean(BOOL);
-void takes_integer(int);
-
-void bad(NSNumber *p) {
-#ifdef PEDANTIC
- if (p) {} // expected-warning{{Converting a pointer value of type 'NSNumber *' to a primitive boolean value; instead, either compare the pointer to nil or call -boolValue}}
- if (!p) {} // expected-warning{{Converting a pointer value of type 'NSNumber *' to a primitive boolean value; instead, either compare the pointer to nil or call -boolValue}}
- (!p) ? 1 : 2; // expected-warning{{Converting a pointer value of type 'NSNumber *' to a primitive boolean value; instead, either compare the pointer to nil or call -boolValue}}
- if (p == 0) {} // expected-warning{{Comparing a pointer value of type 'NSNumber *' to a scalar integer value; instead, either compare the pointer to nil or compare the result of calling a method on 'NSNumber *' to get the scalar value}}
-#else
- if (p) {} // no-warning
- if (!p) {} // no-warning
- (!p) ? 1 : 2; // no-warning
- if (p == 0) {} // no-warning
-#endif
- (BOOL)p; // expected-warning{{Converting a pointer value of type 'NSNumber *' to a primitive BOOL value; did you mean to call -boolValue?}}
- if (p > 0) {} // expected-warning{{Comparing a pointer value of type 'NSNumber *' to a scalar integer value; did you mean to compare the result of calling a method on 'NSNumber *' to get the scalar value?}}
- if (p == YES) {} // expected-warning{{Comparing a pointer value of type 'NSNumber *' to a primitive BOOL value; did you mean to compare the result of calling -boolValue?}}
- if (p == NO) {} // expected-warning{{Comparing a pointer value of type 'NSNumber *' to a primitive BOOL value; did you mean to compare the result of calling -boolValue?}}
- BOOL x = p; // expected-warning{{Converting a pointer value of type 'NSNumber *' to a primitive BOOL value; did you mean to call -boolValue?}}
- x = p; // expected-warning{{Converting a pointer value of type 'NSNumber *' to a primitive BOOL value; did you mean to call -boolValue?}}
- x = (p == YES); // expected-warning{{Comparing a pointer value of type 'NSNumber *' to a primitive BOOL value; did you mean to compare the result of calling -boolValue?}}
- if (p == 1) {} // expected-warning{{Comparing a pointer value of type 'NSNumber *' to a scalar integer value; did you mean to compare the result of calling a method on 'NSNumber *' to get the scalar value?}}
- int y = p; // expected-warning{{Converting a pointer value of type 'NSNumber *' to a scalar integer value; did you mean to call a method on 'NSNumber *' to get the scalar value?}}
- y = p; // expected-warning{{Converting a pointer value of type 'NSNumber *' to a scalar integer value; did you mean to call a method on 'NSNumber *' to get the scalar value?}}
- takes_boolean(p); // expected-warning{{Converting a pointer value of type 'NSNumber *' to a primitive BOOL value; did you mean to call -boolValue?}}
- takes_integer(p); // expected-warning{{Converting a pointer value of type 'NSNumber *' to a scalar integer value; did you mean to call a method on 'NSNumber *' to get the scalar value?}}
- takes_boolean(x); // no-warning
- takes_integer(y); // no-warning
-}
-
-typedef NSNumber *SugaredNumber;
-void bad_sugared(SugaredNumber p) {
- p == YES; // expected-warning{{Comparing a pointer value of type 'SugaredNumber' to a primitive BOOL value; did you mean to compare the result of calling -boolValue?}}
-}
-
-@interface I : NSObject {
-@public
- NSNumber *ivar;
- NSNumber *prop;
-}
-- (NSNumber *)foo;
-@property(copy) NSNumber *prop;
-@end
-
-@implementation I
-@synthesize prop;
-@end
-
-void bad_ivar(I *i) {
- i->ivar == YES; // expected-warning{{Comparing a pointer value of type 'NSNumber *' to a primitive BOOL value; did you mean to compare the result of calling -boolValue?}}
- i->prop == YES; // expected-warning{{Comparing a pointer value of type 'NSNumber *' to a primitive BOOL value; did you mean to compare the result of calling -boolValue?}}
- [i foo] == YES; // expected-warning{{Comparing a pointer value of type 'NSNumber *' to a primitive BOOL value; did you mean to compare the result of calling -boolValue?}}
-}
-
-void good(NSNumber *p) {
- if ([p boolValue] == NO) {} // no-warning
- if ([p boolValue] == YES) {} // no-warning
- BOOL x = [p boolValue]; // no-warning
-}
-
-void suppression(NSNumber *p) {
- if (p == NULL) {} // no-warning
- if (p == nil) {} // no-warning
-}
-
-// Conversion of a pointer to an intptr_t is fine.
-typedef long intptr_t;
-typedef unsigned long uintptr_t;
-typedef long fintptr_t; // Fake, for testing the regex.
-void test_intptr_t(NSNumber *p) {
- (long)p; // expected-warning{{Converting a pointer value of type 'NSNumber *' to a scalar integer value; did you mean to call a method on 'NSNumber *' to get the scalar value?}}
- (intptr_t)p; // no-warning
- (unsigned long)p; // expected-warning{{Converting a pointer value of type 'NSNumber *' to a scalar integer value; did you mean to call a method on 'NSNumber *' to get the scalar value?}}
- (uintptr_t)p; // no-warning
- (fintptr_t)p; // expected-warning{{Converting a pointer value of type 'NSNumber *' to a scalar integer value; did you mean to call a method on 'NSNumber *' to get the scalar value?}}
-}
-
-// Test macro suppressions.
-#define FOO 0
-#define BAR 1
-void test_macro(NSNumber *p) {
- if (p != BAR) {} // expected-warning{{Comparing a pointer value of type 'NSNumber *' to a scalar integer value; did you mean to compare the result of calling a method on 'NSNumber *' to get the scalar value?}}
-#ifdef PEDANTIC
- if (p != FOO) {} // expected-warning{{Comparing a pointer value of type 'NSNumber *' to a scalar integer value; instead, either compare the pointer to nil or compare the result of calling a method on 'NSNumber *' to get the scalar value}}
-#else
- if (p != FOO) {} // no-warning
-#endif
-}
-
-#define NULL_INSIDE_MACRO NULL
-void test_NULL_inside_macro(NSNumber *p) {
-#ifdef PEDANTIC
- if (p == NULL_INSIDE_MACRO) {} // no-warning
-#else
- if (p == NULL_INSIDE_MACRO) {} // no-warning
-#endif
-}
-
-// Test a different definition of NULL.
-#undef NULL
-#define NULL 0
-void test_non_pointer_NULL(NSNumber *p) {
- if (p == NULL) {} // no-warning
-}
diff --git a/test/Analysis/number-object-conversion.mm b/test/Analysis/number-object-conversion.mm
deleted file mode 100644
index 32628b2e8f20..000000000000
--- a/test/Analysis/number-object-conversion.mm
+++ /dev/null
@@ -1,13 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -fblocks -fobjc-arc -w -analyzer-checker=osx.NumberObjectConversion -analyzer-config osx.NumberObjectConversion:Pedantic=true %s -verify
-
-#include "Inputs/system-header-simulator-objc.h"
-
-NSNumber* generateNumber();
-
-// expected-no-diagnostics
-int test_initialization_in_ifstmt() { // Don't warn on initialization in guard.
- if (NSNumber* number = generateNumber()) { // no-warning
- return 0;
- }
- return 1;
-}
diff --git a/test/Analysis/objc-arc.m b/test/Analysis/objc-arc.m
deleted file mode 100644
index 08fca7659cd7..000000000000
--- a/test/Analysis/objc-arc.m
+++ /dev/null
@@ -1,233 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,osx.cocoa.RetainCount,deadcode -verify -fblocks -analyzer-opt-analyze-nested-blocks -fobjc-arc -analyzer-output=plist-multi-file -o %t.plist %s
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/objc-arc.m.plist -
-
-typedef signed char BOOL;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-typedef unsigned long NSUInteger;
-
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-@end
-@protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
-@end
-@protocol NSCoding;
-@protocol NSMutableCopying;
-@protocol NSFastEnumeration
-- (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone;
-@end
-@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@interface NSObject <NSObject> {}
-+ (id)alloc;
-- (id)init;
-- (NSString *)description;
-@end
-@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
-- (id)initWithObjects:(const id [])objects count:(NSUInteger)cnt;
-+ (id)arrayWithObject:(id)anObject;
-+ (id)arrayWithObjects:(const id [])objects count:(NSUInteger)cnt;
-+ (id)arrayWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-- (id)initWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-- (id)initWithArray:(NSArray *)array;
-@end
-
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-typedef double CFTimeInterval;
-typedef CFTimeInterval CFAbsoluteTime;
-extern CFAbsoluteTime CFAbsoluteTimeGetCurrent(void);
-typedef const struct __CFDate * CFDateRef;
-extern CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at);
-
-typedef const void* objc_objectptr_t;
-__attribute__((ns_returns_retained)) id objc_retainedObject(objc_objectptr_t __attribute__((cf_consumed)) pointer);
-__attribute__((ns_returns_not_retained)) id objc_unretainedObject(objc_objectptr_t pointer);
-
-// Test the analyzer is working at all.
-void test_working() {
- int *p = 0;
- *p = 0xDEADBEEF; // expected-warning {{null}}
-}
-
-// Test that in ARC mode that blocks are correctly automatically copied
-// and not flagged as warnings by the analyzer.
-typedef void (^Block)(void);
-void testblock_bar(int x);
-
-Block testblock_foo(int x) {
- Block b = ^{ testblock_bar(x); };
- return b; // no-warning
-}
-
-Block testblock_baz(int x) {
- return ^{ testblock_bar(x); }; // no-warning
-}
-
-Block global_block;
-
-void testblock_qux(int x) {
- global_block = ^{ testblock_bar(x); }; // no-warning
-}
-
-// Test that Objective-C pointers are null initialized.
-void test_nil_initialized() {
- id x;
- if (x == 0)
- return;
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
-}
-
-// Test that we don't flag leaks of Objective-C objects.
-void test_alloc() {
- [NSObject alloc]; // no-warning
-}
-
-// Test that CF allocations are still caught as leaks.
-void test_cf_leak() {
- CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
- CFDateRef date = CFDateCreate(0, t); // expected-warning {{Potential leak}}
- (void) date;
-}
-
-// Test that 'init' methods do not try to claim ownerhip of an *unowned* allocated object
-// in ARC mode.
-@interface RDar9424890_A : NSObject
-- (id)initWithCleaner:(int)pop mop:(NSString *)mop ;
-- (RDar9424890_A *)rdar9424890:(NSString *)identifier;
-@end
-@interface RDar9424890_B : NSObject
-@end
-@implementation RDar9424890_B
-- (RDar9424890_A *)obj:(RDar9424890_A *)obj {
- static NSString *WhizFiz = @"WhizFiz";
- RDar9424890_A *cell = [obj rdar9424890:WhizFiz];
- if (cell == ((void*)0)) {
- cell = [[RDar9424890_A alloc] initWithCleaner:0 mop:WhizFiz]; // no-warning
- }
- return cell;
-}
-@end
-
-// Test that dead store checking works in the prescence of "cleanups" in the AST.
-void rdar9424882() {
- id x = [NSObject alloc]; // expected-warning {{Value stored to 'x' during its initialization is never read}}
-}
-
-// Test
-typedef const void *CFTypeRef;
-typedef const struct __CFString *CFStringRef;
-
-@interface NSString
-- (id) self;
-@end
-
-CFTypeRef CFCreateSomething();
-CFStringRef CFCreateString();
-CFTypeRef CFGetSomething();
-CFStringRef CFGetString();
-
-id CreateSomething();
-NSString *CreateNSString();
-
-void from_cf() {
- id obj1 = (__bridge_transfer id)CFCreateSomething(); // expected-warning{{never read}}
- id obj2 = (__bridge_transfer NSString*)CFCreateString();
- [obj2 self]; // Add a use, to show we can use the object after it has been transferred.
- id obj3 = (__bridge id)CFGetSomething();
- [obj3 self]; // Add a use, to show we can use the object after it has been bridged.
- id obj4 = (__bridge NSString*)CFGetString(); // expected-warning{{never read}}
- id obj5 = (__bridge id)CFCreateSomething(); // expected-warning{{never read}} expected-warning{{leak}}
- id obj6 = (__bridge NSString*)CFCreateString(); // expected-warning{{never read}} expected-warning{{leak}}
-}
-
-void to_cf(id obj) {
- CFTypeRef cf1 = (__bridge_retained CFTypeRef)CreateSomething(); // expected-warning{{never read}}
- CFStringRef cf2 = (__bridge_retained CFStringRef)CreateNSString(); // expected-warning{{never read}}
- CFTypeRef cf3 = (__bridge CFTypeRef)CreateSomething(); // expected-warning{{never read}}
- CFStringRef cf4 = (__bridge CFStringRef)CreateNSString(); // expected-warning{{never read}}
-}
-
-void test_objc_retainedObject() {
- CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
- CFDateRef date = CFDateCreate(0, t);
- id x = objc_retainedObject(date);
- (void) x;
-}
-
-void test_objc_unretainedObject() {
- CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
- CFDateRef date = CFDateCreate(0, t); // expected-warning {{Potential leak}}
- id x = objc_unretainedObject(date);
- (void) x;
-}
-
-// Previously this resulted in a "return of stack address" warning.
-id test_return() {
- id x = (__bridge_transfer id) CFCreateString();
- return x; // no-warning
-}
-
-void test_objc_arrays() {
- { // CASE ONE -- OBJECT IN ARRAY CREATED DIRECTLY
- NSObject *o = [[NSObject alloc] init];
- NSArray *a = [[NSArray alloc] initWithObjects:o, (void*)0];
- [a description];
- [o description];
- }
-
- { // CASE TWO -- OBJECT IN ARRAY CREATED BY DUPING AUTORELEASED ARRAY
- NSObject *o = [[NSObject alloc] init];
- NSArray *a1 = [NSArray arrayWithObjects:o, (void*)0];
- NSArray *a2 = [[NSArray alloc] initWithArray:a1];
- [a2 description];
- [o description];
- }
-
- { // CASE THREE -- OBJECT IN RETAINED @[]
- NSObject *o = [[NSObject alloc] init];
- NSArray *a3 = @[o];
- [a3 description];
- [o description];
- }
- {
- // CASE 4, verify analyzer still working.
- CFCreateString(); // expected-warning {{leak}}
- }
-}
-
-// <rdar://problem/11059275> - dispatch_set_context and ARC.
-__attribute__((cf_returns_retained)) CFTypeRef CFBridgingRetain(id X);
-typedef void* dispatch_object_t;
-void dispatch_set_context(dispatch_object_t object, const void *context);
-
-void rdar11059275(dispatch_object_t object) {
- NSObject *o = [[NSObject alloc] init];
- dispatch_set_context(object, CFBridgingRetain(o)); // no-warning
-}
-void rdar11059275_positive() {
- NSObject *o = [[NSObject alloc] init]; // expected-warning {{leak}}
- CFBridgingRetain(o);
-}
-void rdar11059275_negative() {
- NSObject *o = [[NSObject alloc] init]; // no-warning
- (void) o;
-}
-
-__attribute__((ns_returns_retained)) id rdar14061675_helper() {
- return [[NSObject alloc] init];
-}
-
-id rdar14061675() {
- // ARC produces an implicit cast here. We need to make sure the combination
- // of that and the inlined call don't produce a spurious edge cycle.
- id result = rdar14061675_helper();
- *(volatile int *)0 = 1; // expected-warning{{Dereference of null pointer}}
- return result;
-}
-
diff --git a/test/Analysis/objc-bool.m b/test/Analysis/objc-bool.m
deleted file mode 100644
index 98d0cb2773f6..000000000000
--- a/test/Analysis/objc-bool.m
+++ /dev/null
@@ -1,23 +0,0 @@
-// RUN: %clang_analyze_cc1 %s -o %t -verify
-// expected-no-diagnostics
-
-// Test handling of ObjC bool literals.
-
-typedef signed char BOOL;
-
-void rdar_10597458() {
- if (__objc_yes)
- return;
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
-}
-
-void rdar_10597458_b(BOOL b) {
- if (b == __objc_no)
- return;
-
- if (b == __objc_no) {
- int *p = 0;
- *p = 0xDEADBEEF; // no-warning
- }
-}
diff --git a/test/Analysis/objc-boxing.m b/test/Analysis/objc-boxing.m
deleted file mode 100644
index 66f24ddf77b3..000000000000
--- a/test/Analysis/objc-boxing.m
+++ /dev/null
@@ -1,92 +0,0 @@
-// RUN: %clang_analyze_cc1 -Wno-objc-literal-conversion -analyzer-checker=core,unix.Malloc,osx.cocoa.NonNilReturnValue,debug.ExprInspection -analyzer-store=region -verify %s
-
-void clang_analyzer_eval(int);
-
-typedef signed char BOOL;
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-
-@protocol NSObject
-@end
-@interface NSObject <NSObject> {}
-@end
-@protocol NSCopying
-@end
-@protocol NSCoding
-@end
-
-@interface NSString @end
-@interface NSString (NSStringExtensionMethods)
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
-@end
-
-@interface NSNumber
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
-+ (NSNumber *)numberWithInteger:(NSInteger)value ;
-+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value ;
-@end
-
-@interface NSValue : NSObject <NSCopying, NSCoding>
-- (void)getValue:(void *)value;
-+ (NSValue *)valueWithBytes:(const void *)value
- objCType:(const char *)type;
-@end
-
-typedef typeof(sizeof(int)) size_t;
-extern void *malloc(size_t);
-extern void free(void *);
-extern char *strdup(const char *str);
-
-id constant_string() {
- return @("boxed constant string.");
-}
-
-id dynamic_string() {
- return @(strdup("boxed dynamic string")); // expected-warning{{Potential memory leak}}
-}
-
-typedef struct __attribute__((objc_boxable)) {
- const char *str;
-} BoxableStruct;
-
-id leak_within_boxed_struct() {
- BoxableStruct bs;
- bs.str = strdup("dynamic string"); // The duped string shall be owned by val.
- NSValue *val = @(bs); // no-warning
- return val;
-}
-
-id leak_of_boxed_struct() {
- BoxableStruct *bs = malloc(sizeof(BoxableStruct)); // The pointer stored in bs isn't owned by val.
- NSValue *val = @(*bs); // expected-warning{{Potential leak of memory pointed to by 'bs'}}
- return val;
-}
-
-id const_char_pointer(int *x) {
- if (x)
- return @(3);
- return @(*x); // expected-warning {{Dereference of null pointer (loaded from variable 'x')}}
-}
-
-void checkNonNil() {
- clang_analyzer_eval(!!@3); // expected-warning{{TRUE}}
- clang_analyzer_eval(!!@(3+4)); // expected-warning{{TRUE}}
- clang_analyzer_eval(!!@(57.0)); // expected-warning{{TRUE}}
-
- const char *str = "abc";
- clang_analyzer_eval(!!@(str)); // expected-warning{{TRUE}}
- clang_analyzer_eval(!!@__objc_yes); // expected-warning{{TRUE}}
-}
-
diff --git a/test/Analysis/objc-encode.m b/test/Analysis/objc-encode.m
deleted file mode 100644
index b2379e96d9db..000000000000
--- a/test/Analysis/objc-encode.m
+++ /dev/null
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=debug.ExprInspection -verify %s
-// expected-no-diagnostics
-
-void clang_analyzer_eval(int);
-
-// rdar://problem/34831581: Used to crash.
-void foo(void) {
- char buf1[] = @encode(int **);
-}
diff --git a/test/Analysis/objc-for.m b/test/Analysis/objc-for.m
deleted file mode 100644
index d4a04c1c3e80..000000000000
--- a/test/Analysis/objc-for.m
+++ /dev/null
@@ -1,353 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.Loops,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(int);
-void clang_analyzer_warnIfReached();
-
-#define nil ((id)0)
-
-typedef unsigned long NSUInteger;
-@protocol NSFastEnumeration
-- (int)countByEnumeratingWithState:(void *)state objects:(id *)objects count:(unsigned)count;
-- (void)protocolMethod;
-@end
-
-@interface NSObject
-+ (instancetype)testObject;
-@end
-
-@interface NSEnumerator <NSFastEnumeration>
-@end
-
-@interface NSArray : NSObject <NSFastEnumeration>
-- (NSUInteger)count;
-- (NSEnumerator *)objectEnumerator;
-+ (NSArray *)arrayWithObjects:(const id [])objects count:(NSUInteger)count;
-@end
-
-@interface NSDictionary : NSObject <NSFastEnumeration>
-- (NSUInteger)count;
-- (id)objectForKey:(id)key;
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id /* <NSCopying> */ [])keys count:(NSUInteger)count;
-@end
-
-@interface NSDictionary (SomeCategory)
-- (void)categoryMethodOnNSDictionary;
-- (id) allKeys;
-@end
-
-@interface NSMutableDictionary : NSDictionary
-- (void)setObject:(id)obj forKey:(id)key;
-@end
-
-@interface NSMutableArray : NSArray
-- (void)addObject:(id)obj;
-@end
-
-@interface NSSet : NSObject <NSFastEnumeration>
-- (NSUInteger)count;
-@end
-
-@interface NSPointerArray : NSObject <NSFastEnumeration>
-@end
-
-@interface NSString : NSObject
-@end
-
-void test() {
- id x;
- for (x in [NSArray testObject])
- clang_analyzer_eval(x != nil); // expected-warning{{TRUE}}
-
- for (x in [NSMutableDictionary testObject])
- clang_analyzer_eval(x != nil); // expected-warning{{TRUE}}
-
- for (x in [NSSet testObject])
- clang_analyzer_eval(x != nil); // expected-warning{{TRUE}}
-
- for (x in [[NSArray testObject] objectEnumerator])
- clang_analyzer_eval(x != nil); // expected-warning{{TRUE}}
-
- for (x in [NSPointerArray testObject])
- clang_analyzer_eval(x != nil); // expected-warning{{UNKNOWN}}
-}
-
-void testWithVarInFor() {
- for (id x in [NSArray testObject])
- clang_analyzer_eval(x != nil); // expected-warning{{TRUE}}
- for (id x in [NSPointerArray testObject])
- clang_analyzer_eval(x != nil); // expected-warning{{UNKNOWN}}
-}
-
-void testNonNil(id a, id b) {
- clang_analyzer_eval(a != nil); // expected-warning{{UNKNOWN}}
- for (id x in a)
- clang_analyzer_eval(a != nil); // expected-warning{{TRUE}}
-
- if (b != nil)
- return;
- for (id x in b)
- *(volatile int *)0 = 1; // no-warning
- clang_analyzer_eval(b != nil); // expected-warning{{FALSE}}
-}
-
-void collectionIsEmpty(NSMutableDictionary *D){
- if ([D count] == 0) { // Count is zero.
- NSString *s = 0;
- for (NSString *key in D) {
- s = key; // Loop is never entered.
- }
- clang_analyzer_eval(s == 0); //expected-warning{{TRUE}}
- }
-}
-
-void processCollection(NSMutableDictionary *D);
-void collectionIsEmptyCollectionIsModified(NSMutableDictionary *D){
- if ([D count] == 0) { // Count is zero.
- NSString *s = 0;
- processCollection(D); // However, the collection has changed.
- for (NSString *key in D) {
- s = key; // Loop might be entered.
- }
- clang_analyzer_eval(s == 0); //expected-warning{{FALSE}} //expected-warning{{TRUE}}
- }
-}
-
-int collectionIsEmptyNSSet(NSSet *S){
- if ([S count] == 2) { // Count is non-zero.
- int tapCounts[2];
- int i = 0;
- for (NSString *elem in S) {
- tapCounts[i]= 1; // Loop is entered.
- i++;
- }
- return (tapCounts[0]); //no warning
- }
- return 0;
-}
-
-int collectionIsNotEmptyNSArray(NSArray *A) {
- int count = [A count];
- if (count > 0) {
- int i;
- int j = 0;
- for (NSString *a in A) {
- i = 1;
- j++;
- }
- clang_analyzer_eval(i == 1); // expected-warning {{TRUE}}
- }
- return 0;
-}
-
-void onlySuppressExitAfterZeroIterations(NSMutableDictionary *D) {
- if (D.count > 0) {
- int *x;
- int i = 0;
- for (NSString *key in D) {
- x = 0;
- i++;
- }
- // Test that this is reachable.
- int y = *x; // expected-warning {{Dereference of null pointer}}
- y++;
- }
-}
-
-void onlySuppressLoopExitAfterZeroIterations_WithContinue(NSMutableDictionary *D) {
- if (D.count > 0) {
- int *x;
- int i = 0;
- for (NSString *key in D) {
- x = 0;
- i++;
- continue;
- }
- // Test that this is reachable.
- int y = *x; // expected-warning {{Dereference of null pointer}}
- y++;
- }
-}
-
-int* getPtr();
-void onlySuppressLoopExitAfterZeroIterations_WithBreak(NSMutableDictionary *D) {
- if (D.count > 0) {
- int *x;
- int i;
- for (NSString *key in D) {
- x = 0;
- break;
- x = getPtr();
- i++;
- }
- int y = *x; // expected-warning {{Dereference of null pointer}}
- y++;
- }
-}
-
-int consistencyBetweenLoopsWhenCountIsUnconstrained(NSMutableDictionary *D,
- int shouldUseCount) {
- // Test with or without an initial count.
- int count;
- if (shouldUseCount)
- count = [D count];
-
- int i;
- int j = 0;
- for (NSString *key in D) {
- i = 5;
- j++;
- }
- for (NSString *key in D) {
- return i; // no-warning
- }
- return 0;
-}
-
-int consistencyBetweenLoopsWhenCountIsUnconstrained_dual(NSMutableDictionary *D,
- int shouldUseCount) {
- int count;
- if (shouldUseCount)
- count = [D count];
-
- int i = 8;
- int j = 1;
- for (NSString *key in D) {
- i = 0;
- j++;
- }
- for (NSString *key in D) {
- i = 5;
- j++;
- }
- return 5/i;
-}
-
-int consistencyCountThenLoop(NSArray *array) {
- if ([array count] == 0)
- return 0;
-
- int x;
- for (id y in array)
- x = 0;
- return x; // no-warning
-}
-
-int consistencyLoopThenCount(NSArray *array) {
- int x;
- for (id y in array)
- x = 0;
-
- if ([array count] == 0)
- return 0;
-
- return x; // no-warning
-}
-
-void nonMutatingMethodsDoNotInvalidateCountDictionary(NSMutableDictionary *dict,
- NSMutableArray *other) {
- if ([dict count])
- return;
-
- for (id key in dict)
- clang_analyzer_eval(0); // no-warning
-
- (void)[dict objectForKey:@""];
-
- for (id key in dict)
- clang_analyzer_eval(0); // no-warning
-
- [dict categoryMethodOnNSDictionary];
-
- for (id key in dict)
- clang_analyzer_eval(0); // no-warning
-
- [dict setObject:@"" forKey:@""];
-
- for (id key in dict)
- clang_analyzer_eval(0); // expected-warning{{FALSE}}
-
- // Reset.
- if ([dict count])
- return;
-
- for (id key in dict)
- clang_analyzer_eval(0); // no-warning
-
- [other addObject:dict];
-
- for (id key in dict)
- clang_analyzer_eval(0); // expected-warning{{FALSE}}
-}
-
-void nonMutatingMethodsDoNotInvalidateCountArray(NSMutableArray *array,
- NSMutableArray *other) {
- if ([array count])
- return;
-
- for (id key in array)
- clang_analyzer_eval(0); // no-warning
-
- (void)[array objectEnumerator];
-
- for (id key in array)
- clang_analyzer_eval(0); // no-warning
-
- [array addObject:@""];
-
- for (id key in array)
- clang_analyzer_eval(0); // expected-warning{{FALSE}}
-
- // Reset.
- if ([array count])
- return;
-
- for (id key in array)
- clang_analyzer_eval(0); // no-warning
-
- [other addObject:array];
-
- for (id key in array)
- clang_analyzer_eval(0); // expected-warning{{FALSE}}
-}
-
-void protocolMethods(NSMutableArray *array) {
- if ([array count])
- return;
-
- for (id key in array)
- clang_analyzer_eval(0); // no-warning
-
- NSArray *immutableArray = array;
- [immutableArray protocolMethod];
-
- for (id key in array)
- clang_analyzer_eval(0); // no-warning
-
- [array protocolMethod];
-
- for (id key in array)
- clang_analyzer_eval(0); // expected-warning{{FALSE}}
-}
-
-NSArray *globalArray;
-NSDictionary *globalDictionary;
-void boxedArrayEscape(NSMutableArray *array) {
- if ([array count])
- return;
- globalArray = @[array];
- for (id key in array)
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-
- if ([array count])
- return;
- globalDictionary = @{ @"array" : array };
- for (id key in array)
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-int not_reachable_on_iteration_through_nil() {
- NSDictionary* d = nil;
- for (NSString* s in [d allKeys])
- clang_analyzer_warnIfReached(); // no-warning
- return 0;
-}
diff --git a/test/Analysis/objc-message.m b/test/Analysis/objc-message.m
deleted file mode 100644
index f525ce7968dd..000000000000
--- a/test/Analysis/objc-message.m
+++ /dev/null
@@ -1,40 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-store=region -verify -Wno-objc-root-class %s
-
-extern void clang_analyzer_warnIfReached();
-void clang_analyzer_eval(int);
-
-@interface SomeClass
--(id)someMethodWithReturn;
--(void)someMethod;
-@end
-
-void consistencyOfReturnWithNilReceiver(SomeClass *o) {
- id result = [o someMethodWithReturn];
- if (result) {
- if (!o) {
- // It is impossible for both o to be nil and result to be non-nil,
- // so this should not be reached.
- clang_analyzer_warnIfReached(); // no-warning
- }
- }
-}
-
-void maybeNilReceiverIsNotNilAfterMessage(SomeClass *o) {
- [o someMethod];
-
- // We intentionally drop the nil flow (losing coverage) after a method
- // call when the receiver may be nil in order to avoid inconsistencies of
- // the kind tested for in consistencyOfReturnWithNilReceiver().
- clang_analyzer_eval(o != 0); // expected-warning{{TRUE}}
-}
-
-void nilReceiverIsStillNilAfterMessage(SomeClass *o) {
- if (o == 0) {
- id result = [o someMethodWithReturn];
-
- // Both the receiver and the result should be nil after a message
- // sent to a nil receiver returning a value of type id.
- clang_analyzer_eval(o == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(result == 0); // expected-warning{{TRUE}}
- }
-}
diff --git a/test/Analysis/objc-method-coverage.m b/test/Analysis/objc-method-coverage.m
deleted file mode 100644
index 1915586de93a..000000000000
--- a/test/Analysis/objc-method-coverage.m
+++ /dev/null
@@ -1,17 +0,0 @@
-// REQUIRES: asserts
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-stats -fblocks %s 2>&1 | FileCheck %s
-@interface I
-int f() {
- return 0;
-}
-@end
-
-@implementation I
-+ (void *)ff{
- return (void*)0;
-}
-@end
-
-// CHECK: ... Statistics Collected ...
-// CHECK: 2 AnalysisConsumer - The # of functions and blocks analyzed (as top level with inlining turned on).
-// CHECK: 100 AnalysisConsumer - The % of reachable basic blocks.
diff --git a/test/Analysis/objc-properties.m b/test/Analysis/objc-properties.m
deleted file mode 100644
index 7f2ef52a9141..000000000000
--- a/test/Analysis/objc-properties.m
+++ /dev/null
@@ -1,72 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.osx.cocoa.DirectIvarAssignment -verify -fblocks %s
-
-typedef signed char BOOL;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
--(id)retain;
-@end
-
-@interface MyClass;
-@end
-@interface TestProperty :NSObject {
- MyClass *_Z;
- id _nonSynth;
-}
-
- @property (assign, nonatomic) MyClass* A; // explicitly synthesized, not implemented, non-default ivar name
-
- @property (assign) MyClass* X; // automatically synthesized, not implemented
-
- @property (assign, nonatomic) MyClass* Y; // automatically synthesized, implemented
-
- @property (assign, nonatomic) MyClass* Z; // non-synthesized ivar, implemented setter
- @property (readonly) id nonSynth; // non-synthesized, explicitly implemented to return ivar with expected name
-
- - (id) initWithPtr:(MyClass*) value;
- - (id) myInitWithPtr:(MyClass*) value;
- - (void) someMethod: (MyClass*)In;
-@end
-
-@implementation TestProperty
- @synthesize A = __A;
-
- - (id) initWithPtr: (MyClass*) value {
- _Y = value; // no-warning
- return self;
- }
-
- - (id) copyWithPtrY: (TestProperty*) value {
- TestProperty *another = [[TestProperty alloc] init];
- another->_Y = value->_Y; // no-warning
- return another;
- }
-
- - (id) myInitWithPtr: (MyClass*) value {
- _Y = value; // no-warning
- return self;
- }
-
- - (void) setY:(MyClass*) NewValue {
- _Y = NewValue; // no-warning
- }
-
- - (void) setZ:(MyClass*) NewValue {
- _Z = NewValue; // no-warning
- }
-
- - (id)nonSynth {
- return _nonSynth;
- }
-
- - (void) someMethod: (MyClass*)In {
- (__A) = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
- _X = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
- _Y = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
- _Z = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
- _nonSynth = 0; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
- }
-@end \ No newline at end of file
diff --git a/test/Analysis/objc-radar17039661.m b/test/Analysis/objc-radar17039661.m
deleted file mode 100644
index 484e43c5dd2c..000000000000
--- a/test/Analysis/objc-radar17039661.m
+++ /dev/null
@@ -1,61 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount -fblocks -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount -fblocks -analyzer-output=plist-multi-file %s -o %t
-// RUN: cat %t | %diff_plist %S/Inputs/expected-plists/objc-radar17039661.m.plist -
-
-@class NSString;
-typedef long NSInteger;
-typedef unsigned char BOOL;
-@interface NSObject {}
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
--(id)retain;
-@end
-@interface NSNumber : NSObject
-+ (NSNumber *)numberWithInteger:(NSInteger)value __attribute__((availability(ios,introduced=2.0)));
-@end
-NSInteger *inoutIntegerValueGlobal;
-NSInteger *inoutIntegerValueGlobal2;
-NSString *traitNameGlobal;
-static BOOL cond;
-
-static inline void reallyPerformAction(void (^integerHandler)(NSInteger *inoutIntegerValue, NSString *traitName)) {
- integerHandler(inoutIntegerValueGlobal, traitNameGlobal); // expected-warning {{Potential leak of an object}}
- integerHandler(inoutIntegerValueGlobal2,traitNameGlobal);
-}
-
-static inline BOOL performAction(NSNumber *(^action)(NSNumber *traitValue)) {
- __attribute__((__blocks__(byref))) BOOL didFindTrait = 0;
- reallyPerformAction(^(NSInteger *inoutIntegerValue,NSString *traitName) {
-
- if (cond) {
-
- NSNumber *traitValue = @(*inoutIntegerValue);
-
- NSNumber *newTraitValue = action(traitValue);
-
- if (traitValue != newTraitValue) {
- *inoutIntegerValue = newTraitValue ? *inoutIntegerValue : *inoutIntegerValue;
- }
- didFindTrait = 1;
- }
-
- });
- return didFindTrait;
-}
-
-void runTest() {
- __attribute__((__blocks__(byref))) NSNumber *builtinResult = ((NSNumber *)0);
- BOOL wasBuiltinTrait = performAction(^(NSNumber *traitValue) {
- builtinResult = [traitValue retain];
-
- return traitValue;
- });
- if (wasBuiltinTrait) {
- [builtinResult autorelease];
- return;
- } else {
- return;
- }
-}
diff --git a/test/Analysis/objc-string.mm b/test/Analysis/objc-string.mm
deleted file mode 100644
index 53f3c3736261..000000000000
--- a/test/Analysis/objc-string.mm
+++ /dev/null
@@ -1,39 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify -Wno-objc-literal-conversion %s
-
-void clang_analyzer_eval(bool);
-@class NSString;
-
-void sanity() {
- clang_analyzer_eval(@""); // expected-warning{{TRUE}}
- clang_analyzer_eval(@"abc"); // expected-warning{{TRUE}}
-}
-
-namespace rdar13773117 {
- NSString *const kConstantGlobalString = @"foo";
- NSString *globalString = @"bar";
-
- extern void invalidateGlobals();
-
- void testGlobals() {
- clang_analyzer_eval(kConstantGlobalString); // expected-warning{{TRUE}}
- clang_analyzer_eval(globalString); // expected-warning{{UNKNOWN}}
-
- globalString = @"baz";
- clang_analyzer_eval(globalString); // expected-warning{{TRUE}}
-
- invalidateGlobals();
-
- clang_analyzer_eval(kConstantGlobalString); // expected-warning{{TRUE}}
- clang_analyzer_eval(globalString); // expected-warning{{UNKNOWN}}
- }
-
- NSString *returnString(NSString *input = @"garply") {
- return input;
- }
-
- void testDefaultArg() {
- clang_analyzer_eval(returnString(@"")); // expected-warning{{TRUE}}
- clang_analyzer_eval(returnString(0)); // expected-warning{{FALSE}}
- clang_analyzer_eval(returnString()); // expected-warning{{TRUE}}
- }
-}
diff --git a/test/Analysis/objc-subscript.m b/test/Analysis/objc-subscript.m
deleted file mode 100644
index 155fbb7b6268..000000000000
--- a/test/Analysis/objc-subscript.m
+++ /dev/null
@@ -1,89 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -verify -Wno-objc-root-class %s
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-
-@interface NSObject
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
--(id)retain;
-@end
-
-@interface Subscriptable : NSObject
-- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)index;
-- (id)objectAtIndexedSubscript:(NSUInteger)index;
-
-- (void)setObject:(id)obj forKeyedSubscript:(id)key;
-- (id)objectForKeyedSubscript:(id)key;
-@end
-
-@interface Test : Subscriptable
-@end
-
-@implementation Test
-
-// <rdar://problem/6946338> for subscripting
-- (id)storeDoesNotRetain {
- Test *cell = [[[Test alloc] init] autorelease];
-
- NSObject *string1 = [[NSObject alloc] init]; // expected-warning {{Potential leak}}
- cell[0] = string1;
- cell[self] = string1;
- cell[string1] = self;
-
- return cell;
-}
-
-// <rdar://problem/8824416> for subscripting
-- (id)getDoesNotRetain:(BOOL)keyed {
- if (keyed)
- return [self[self] autorelease]; // expected-warning{{Object autoreleased too many times}}
- else
- return [self[0] autorelease]; // expected-warning{{Object autoreleased too many times}}
-}
-
-// <rdar://problem/9241180> for subscripting
-- (id)testUninitializedObject:(BOOL)keyed {
- Test *o;
- if (keyed) {
- if (o[self]) // expected-warning {{Subscript access on an uninitialized object pointer}}
- return o; // no-warning (sink)
- } else {
- if (o[0]) // expected-warning {{Subscript access on an uninitialized object pointer}}
- return o; // no-warning (sink)
- }
- return self;
-}
-
-- (void)testUninitializedArgument:(id)input testCase:(unsigned)testCase {
- NSUInteger i;
- id o;
-
- switch (testCase) {
- case 0:
- self[0] = o; // expected-warning {{Argument for subscript setter is an uninitialized value}}
- break;
- case 1:
- self[i] = input; // expected-warning {{Subscript index is an uninitialized value}}
- break;
- case 2:
- (void)self[i]; // expected-warning {{Subscript index is an uninitialized value}}
- break;
- case 3:
- self[input] = o; // expected-warning {{Argument for subscript setter is an uninitialized value}}
- break;
- case 4:
- self[o] = input; // expected-warning {{Subscript index is an uninitialized value}}
- break;
- case 5:
- (void)self[o]; // expected-warning {{Subscript index is an uninitialized value}}
- break;
- default:
- break;
- }
-
-}
-
-@end
diff --git a/test/Analysis/objc/direct-ivar-assignment-in-annotated-functions.m b/test/Analysis/objc/direct-ivar-assignment-in-annotated-functions.m
deleted file mode 100644
index 782fcecd43f9..000000000000
--- a/test/Analysis/objc/direct-ivar-assignment-in-annotated-functions.m
+++ /dev/null
@@ -1,63 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.osx.cocoa.DirectIvarAssignmentForAnnotatedFunctions -verify -fblocks %s
-
-typedef signed char BOOL;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
--(id)retain;
-@end
-
-@interface MyClass;
-@end
-
-@interface AnnotatedClass : NSObject {
-}
- - (void) someMethod: (MyClass*)In __attribute__((annotate("objc_no_direct_instance_variable_assignment")));
- - (void) someMethodNotAnnaotated: (MyClass*)In;
-@end
-
-
-@interface TestProperty : AnnotatedClass {
- MyClass *_Z;
- id _nonSynth;
- MyClass* _NotA __attribute__((annotate("objc_allow_direct_instance_variable_assignment")));
-}
-
- @property (assign, nonatomic) MyClass* A; // explicitly synthesized, not implemented, non-default ivar name
-
- @property (assign) MyClass* X; // automatically synthesized, not implemented
-
- @property (assign, nonatomic) MyClass* Y; // automatically synthesized, implemented
-
- @property (assign, nonatomic) MyClass* Z; // non-synthesized ivar, implemented setter
- @property (readonly) id nonSynth; // non-synthesized, explicitly implemented to return ivar with expected name
-
- @property (assign) MyClass* NotA; // warnings should be suppressed, backing ivar is annotated
- @property (assign) MyClass* NotX __attribute__((annotate("objc_allow_direct_instance_variable_assignment"))); // warnings should be suppressed
-
- @end
-
-@implementation TestProperty
- @synthesize A = __A;
-
- - (void) someMethod: (MyClass*)In {
- (__A) = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
- _X = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
- _Y = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
- _Z = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
- _nonSynth = 0; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
- _NotX = 0; // no-warning
- _NotA = 0; // no-warning
- }
- - (void) someMethodNotAnnaotated: (MyClass*)In {
- (__A) = In;
- _X = In; // no-warning
- _Y = In; // no-warning
- _Z = In; // no-warning
- _nonSynth = 0; // no-warning
- }
-
-@end \ No newline at end of file
diff --git a/test/Analysis/objc_invalidation.m b/test/Analysis/objc_invalidation.m
deleted file mode 100644
index 52a79d8f34ba..000000000000
--- a/test/Analysis/objc_invalidation.m
+++ /dev/null
@@ -1,377 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.osx.cocoa.InstanceVariableInvalidation -DRUN_IVAR_INVALIDATION -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.osx.cocoa.MissingInvalidationMethod -DRUN_MISSING_INVALIDATION_METHOD -verify %s
-extern void __assert_fail (__const char *__assertion, __const char *__file,
- unsigned int __line, __const char *__function)
- __attribute__ ((__noreturn__));
-
-#define assert(expr) \
- ((expr) ? (void)(0) : __assert_fail (#expr, __FILE__, __LINE__, __func__))
-
-@protocol NSObject
-@end
-@interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
--(id)description;
-@end
-@class NSString;
-
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-
-@protocol Invalidation1 <NSObject>
-- (void) invalidate __attribute__((annotate("objc_instance_variable_invalidator")));
-@end
-
-@protocol Invalidation2 <NSObject>
-- (void) invalidate __attribute__((annotate("objc_instance_variable_invalidator")));
-@end
-
-@protocol Invalidation3 <NSObject>
-- (void) invalidate __attribute__((annotate("objc_instance_variable_invalidator")));
-- (void) invalidate2 __attribute__((annotate("objc_instance_variable_invalidator")));
-@end
-
-@protocol Invalidation3;
-@protocol Invalidation2;
-
-@interface Invalidation2Class <Invalidation2>
-@end
-
-@interface Invalidation1Class <Invalidation1>
-@end
-
-@interface ClassWithInvalidationMethodInCategory <NSObject>
-@end
-
-@interface ClassWithInvalidationMethodInCategory ()
-- (void) invalidate __attribute__((annotate("objc_instance_variable_invalidator")));
-@end
-
-@interface SomeInvalidationImplementingObject: NSObject <Invalidation3, Invalidation2> {
- SomeInvalidationImplementingObject *ObjA; // invalidation in the parent
-}
-@end
-
-@implementation SomeInvalidationImplementingObject
-- (void)invalidate{
- ObjA = 0;
-}
-- (void)invalidate2 {
- [self invalidate];
-}
-@end
-
-@interface SomeSubclassInvalidatableObject : SomeInvalidationImplementingObject {
- SomeInvalidationImplementingObject *Ivar1; // regular ivar
- SomeInvalidationImplementingObject *Ivar2; // regular ivar, sending invalidate message
- SomeInvalidationImplementingObject *_Ivar3; // no property, call -description
- SomeInvalidationImplementingObject *_Ivar4; // no property, provide as argument to NSLog()
-
- SomeInvalidationImplementingObject *_Prop1; // partially implemented property, set to 0 with dot syntax
- SomeInvalidationImplementingObject *_Prop2; // fully implemented prop, set to 0 with dot syntax
- SomeInvalidationImplementingObject *_propIvar; // property with custom named ivar, set to 0 via setter
- Invalidation1Class *MultipleProtocols; // regular ivar belonging to a different class
- Invalidation2Class *MultInheritance; // regular ivar belonging to a different class
- SomeInvalidationImplementingObject *_Prop3; // property, invalidate via sending a message to a getter method
- SomeInvalidationImplementingObject *_Prop4; // property with @synthesize, invalidate via property
- SomeInvalidationImplementingObject *_Prop5; // property with @synthesize, invalidate via getter method
- SomeInvalidationImplementingObject *_Prop8;
-
- // Ivars invalidated by the partial invalidator.
- SomeInvalidationImplementingObject *Ivar9;
- SomeInvalidationImplementingObject *_Prop10;
- SomeInvalidationImplementingObject *Ivar11;
-
- // No warnings on these as they are not invalidatable.
- NSObject *NIvar1;
- NSObject *NObj2;
- NSObject *_NProp1;
- NSObject *_NpropIvar;
-}
-
-@property (assign) SomeInvalidationImplementingObject* Prop0;
-@property (nonatomic, assign) SomeInvalidationImplementingObject* Prop1;
-@property (assign) SomeInvalidationImplementingObject* Prop2;
-@property (assign) SomeInvalidationImplementingObject* Prop3;
-@property (assign) SomeInvalidationImplementingObject *Prop5;
-@property (assign) SomeInvalidationImplementingObject *Prop4;
-
-@property (assign) SomeInvalidationImplementingObject* Prop6; // automatically synthesized prop
-@property (assign) SomeInvalidationImplementingObject* Prop7; // automatically synthesized prop
-@property (assign) SomeInvalidationImplementingObject *SynthIvarProp;
-
-@property (assign) NSObject* NProp0;
-@property (nonatomic, assign) NSObject* NProp1;
-@property (assign) NSObject* NProp2;
-
--(void)setProp1: (SomeInvalidationImplementingObject*) InO;
--(void)setNProp1: (NSObject*) InO;
-
--(void)invalidate;
-
-// Partial invalidators invalidate only some ivars. They are guaranteed to be
-// called before the invalidation methods.
--(void)partialInvalidator1 __attribute__((annotate("objc_instance_variable_invalidator_partial")));
--(void)partialInvalidator2 __attribute__((annotate("objc_instance_variable_invalidator_partial")));
-@end
-
-@interface SomeSubclassInvalidatableObject()
-@property (assign) SomeInvalidationImplementingObject* Prop8;
-@property (assign) SomeInvalidationImplementingObject* Prop10;
-@end
-
-@implementation SomeSubclassInvalidatableObject{
- @private
- SomeInvalidationImplementingObject *Ivar5;
- ClassWithInvalidationMethodInCategory *Ivar13;
-}
-
-@synthesize Prop7 = _propIvar;
-@synthesize Prop3 = _Prop3;
-@synthesize Prop5 = _Prop5;
-@synthesize Prop4 = _Prop4;
-@synthesize Prop8 = _Prop8;
-@synthesize Prop10 = _Prop10;
-
-
-- (void) setProp1: (SomeInvalidationImplementingObject*) InObj {
- _Prop1 = InObj;
-}
-
-- (void) setProp2: (SomeInvalidationImplementingObject*) InObj {
- _Prop2 = InObj;
-}
-- (SomeInvalidationImplementingObject*) Prop2 {
- return _Prop2;
-}
-
-@synthesize NProp2 = _NpropIvar;
-
-- (void) setNProp1: (NSObject*) InObj {
- _NProp1 = InObj;
-}
-
-- (void) invalidate {
- [Ivar2 invalidate];
- self.Prop0 = 0;
- self.Prop1 = 0;
- [self setProp2:0];
- [self setProp3:0];
- [[self Prop5] invalidate2];
- [self.Prop4 invalidate];
- [self.Prop8 invalidate];
- self.Prop6 = 0;
- [[self Prop7] invalidate];
-
- [_Ivar3 description];
- NSLog(@"%@", _Ivar4);
- [super invalidate];
-}
-#if RUN_IVAR_INVALIDATION
-// expected-warning@-2 {{Instance variable Ivar1 needs to be invalidated}}
-// expected-warning@-3 {{Instance variable MultipleProtocols needs to be invalidated}}
-// expected-warning@-4 {{Instance variable MultInheritance needs to be invalidated}}
-// expected-warning@-5 {{Property SynthIvarProp needs to be invalidated or set to nil}}
-// expected-warning@-6 {{Instance variable _Ivar3 needs to be invalidated}}
-// expected-warning@-7 {{Instance variable _Ivar4 needs to be invalidated}}
-// expected-warning@-8 {{Instance variable Ivar5 needs to be invalidated or set to nil}}
-// expected-warning@-9 {{Instance variable Ivar13 needs to be invalidated or set to nil}}
-#endif
-
--(void)partialInvalidator1 {
- [Ivar9 invalidate];
- [_Prop10 invalidate];
-}
-
--(void)partialInvalidator2 {
- [Ivar11 invalidate];
-}
-
-@end
-
-// Example, where the same property is inherited through
-// the parent and directly through a protocol. If a property backing ivar is
-// synthesized in the parent, let the parent invalidate it.
-
-@protocol IDEBuildable <NSObject>
-@property (readonly, strong) id <Invalidation2> ObjB;
-@end
-
-@interface Parent : NSObject <IDEBuildable, Invalidation2> {
- Invalidation2Class *_ObjB; // Invalidation of ObjB happens in the parent.
-}
-@end
-
-@interface Child: Parent <Invalidation2, IDEBuildable>
-@end
-
-@implementation Parent{
- @private
- Invalidation2Class *Ivar10;
- Invalidation2Class *Ivar11;
- Invalidation2Class *Ivar12;
-}
-
-@synthesize ObjB = _ObjB;
-- (void)invalidate{
- _ObjB = ((void*)0);
-
- assert(Ivar10 == 0);
-
- if (__builtin_expect(!(Ivar11 == ((void*)0)), 0))
- assert(0);
-
- assert(0 == Ivar12);
-
-}
-@end
-
-@implementation Child
-- (void)invalidate{
- // no-warning
-}
-@end
-
-@protocol Invalidation <NSObject>
-- (void)invalidate __attribute__((annotate("objc_instance_variable_invalidator")));
-@end
-
-@interface Foo : NSObject <Invalidation>
-@end
-
-@class FooBar;
-@protocol FooBar_Protocol <NSObject>
-@end
-
-@interface MissingInvalidationMethod : Foo <FooBar_Protocol>
-@property (assign) MissingInvalidationMethod *foobar15_warn;
-#if RUN_IVAR_INVALIDATION
-// expected-warning@-2 {{Property foobar15_warn needs to be invalidated; no invalidation method is defined in the @implementation for MissingInvalidationMethod}}
-#endif
-@end
-@implementation MissingInvalidationMethod
-@end
-
-@interface MissingInvalidationMethod2 : Foo <FooBar_Protocol> {
- Foo *Ivar1;
-#if RUN_IVAR_INVALIDATION
-// expected-warning@-2 {{Instance variable Ivar1 needs to be invalidated; no invalidation method is defined in the @implementation for MissingInvalidationMethod2}}
-#endif
-}
-@end
-@implementation MissingInvalidationMethod2
-@end
-
-@interface MissingInvalidationMethodDecl : NSObject {
- Foo *Ivar1;
-#if RUN_MISSING_INVALIDATION_METHOD
-// expected-warning@-2 {{Instance variable Ivar1 needs to be invalidated; no invalidation method is declared for MissingInvalidationMethodDecl}}
-#endif
-}
-@end
-@implementation MissingInvalidationMethodDecl
-@end
-
-@interface MissingInvalidationMethodDecl2 : NSObject {
-@private
- Foo *_foo1;
-#if RUN_MISSING_INVALIDATION_METHOD
-// expected-warning@-2 {{Instance variable _foo1 needs to be invalidated; no invalidation method is declared for MissingInvalidationMethodDecl2}}
-#endif
-}
-@property (strong) Foo *bar1;
-@end
-@implementation MissingInvalidationMethodDecl2
-@end
-
-@interface InvalidatedInPartial : SomeInvalidationImplementingObject {
- SomeInvalidationImplementingObject *Ivar1;
- SomeInvalidationImplementingObject *Ivar2;
-}
--(void)partialInvalidator __attribute__((annotate("objc_instance_variable_invalidator_partial")));
-@end
-@implementation InvalidatedInPartial
--(void)partialInvalidator {
- [Ivar1 invalidate];
- Ivar2 = 0;
-}
-@end
-
-@interface NotInvalidatedInPartial : SomeInvalidationImplementingObject {
- SomeInvalidationImplementingObject *Ivar1;
-}
--(void)partialInvalidator __attribute__((annotate("objc_instance_variable_invalidator_partial")));
--(void)partialInvalidatorCallsPartial __attribute__((annotate("objc_instance_variable_invalidator_partial")));
-@end
-@implementation NotInvalidatedInPartial
--(void)partialInvalidator {
-}
--(void)partialInvalidatorCallsPartial {
- [self partialInvalidator];
-}
-
--(void)invalidate {
-}
-#if RUN_IVAR_INVALIDATION
-// expected-warning@-2 {{Instance variable Ivar1 needs to be invalidated or set to nil}}
-#endif
-@end
-
-@interface SomeNotInvalidatedInPartial : SomeInvalidationImplementingObject {
- SomeInvalidationImplementingObject *Ivar1;
- SomeInvalidationImplementingObject *Ivar2;
-#if RUN_IVAR_INVALIDATION
- // expected-warning@-2 {{Instance variable Ivar2 needs to be invalidated or set to nil}}
-#endif
-}
--(void)partialInvalidator __attribute__((annotate("objc_instance_variable_invalidator_partial")));
--(void)partialInvalidatorCallsPartial __attribute__((annotate("objc_instance_variable_invalidator_partial")));
-@end
-@implementation SomeNotInvalidatedInPartial {
- SomeInvalidationImplementingObject *Ivar3;
-#if RUN_IVAR_INVALIDATION
- // expected-warning@-2 {{Instance variable Ivar3 needs to be invalidated or set to nil}}
-#endif
-}
--(void)partialInvalidator {
- Ivar1 = 0;
-}
--(void)partialInvalidatorCallsPartial {
- [self partialInvalidator];
-}
-@end
-
-@interface OnlyPartialDeclsBase : NSObject
--(void)partialInvalidator __attribute__((annotate("objc_instance_variable_invalidator_partial")));
-@end
-@implementation OnlyPartialDeclsBase
--(void)partialInvalidator {}
-@end
-
-@interface OnlyPartialDecls : OnlyPartialDeclsBase {
- SomeInvalidationImplementingObject *Ivar1;
-#if RUN_IVAR_INVALIDATION
- // expected-warning@-2 {{Instance variable Ivar1 needs to be invalidated; no invalidation method is defined in the @implementation for OnlyPartialDecls}}
-#endif
-}
-@end
-@implementation OnlyPartialDecls
-@end
-
-// False negative.
-@interface PartialCallsFull : SomeInvalidationImplementingObject {
- SomeInvalidationImplementingObject *Ivar1;
-}
--(void)partialInvalidator __attribute__((annotate("objc_instance_variable_invalidator_partial")));
-@end
-@implementation PartialCallsFull
--(void)partialInvalidator {
- [self invalidate];
-} // TODO: It would be nice to check that the full invalidation method actually invalidates the ivar.
-@end
-
diff --git a/test/Analysis/objcpp-uninitialized-object.mm b/test/Analysis/objcpp-uninitialized-object.mm
deleted file mode 100644
index 8ea4b56998fc..000000000000
--- a/test/Analysis/objcpp-uninitialized-object.mm
+++ /dev/null
@@ -1,32 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.cplusplus.UninitializedObject -std=c++11 -fblocks -verify %s
-
-typedef void (^myBlock) ();
-
-struct StructWithBlock {
- int a;
- myBlock z; // expected-note{{uninitialized field 'this->z'}}
-
- StructWithBlock() : a(0), z(^{}) {}
-
- // Miss initialization of field `z`.
- StructWithBlock(int pA) : a(pA) {} // expected-warning{{1 uninitialized field at the end of the constructor call}}
-
-};
-
-void warnOnUninitializedBlock() {
- StructWithBlock a(10);
-}
-
-void noWarningWhenInitialized() {
- StructWithBlock a;
-}
-
-struct StructWithId {
- int a;
- id z; // expected-note{{uninitialized pointer 'this->z'}}
- StructWithId() : a(0) {} // expected-warning{{1 uninitialized field at the end of the constructor call}}
-};
-
-void warnOnUninitializedId() {
- StructWithId s;
-}
diff --git a/test/Analysis/offsetofexpr-callback.c b/test/Analysis/offsetofexpr-callback.c
deleted file mode 100644
index 0fcb90797d2b..000000000000
--- a/test/Analysis/offsetofexpr-callback.c
+++ /dev/null
@@ -1,13 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.AnalysisOrder -analyzer-config debug.AnalysisOrder:PreStmtOffsetOfExpr=true,debug.AnalysisOrder:PostStmtOffsetOfExpr=true %s 2>&1 | FileCheck %s
-#include "Inputs/system-header-simulator.h"
-
-struct S {
- char c;
-};
-
-void test() {
- offsetof(struct S, c);
-}
-
-// CHECK: PreStmt<OffsetOfExpr>
-// CHECK-NEXT: PostStmt<OffsetOfExpr> \ No newline at end of file
diff --git a/test/Analysis/openmp-unsupported.c b/test/Analysis/openmp-unsupported.c
deleted file mode 100644
index 7e363eecbaa0..000000000000
--- a/test/Analysis/openmp-unsupported.c
+++ /dev/null
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core.builtin -fopenmp -verify %s
-// expected-no-diagnostics
-
-void openmp_parallel_crash_test() {
-#pragma omp parallel
- ;
-}
diff --git a/test/Analysis/operator-calls.cpp b/test/Analysis/operator-calls.cpp
deleted file mode 100644
index 310722965965..000000000000
--- a/test/Analysis/operator-calls.cpp
+++ /dev/null
@@ -1,132 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,alpha.core,debug.ExprInspection -verify %s
-void clang_analyzer_eval(bool);
-
-struct X0 { };
-bool operator==(const X0&, const X0&);
-
-// PR7287
-struct test { int a[2]; };
-
-void t2() {
- test p = {{1,2}};
- test q;
- q = p;
-}
-
-bool PR7287(X0 a, X0 b) {
- return operator==(a, b);
-}
-
-
-// Inlining non-static member operators mistakenly treated 'this' as the first
-// argument for a while.
-
-struct IntComparable {
- bool operator==(int x) const {
- return x == 0;
- }
-};
-
-void testMemberOperator(IntComparable B) {
- clang_analyzer_eval(B == 0); // expected-warning{{TRUE}}
-}
-
-
-
-namespace UserDefinedConversions {
- class Convertible {
- public:
- operator int() const {
- return 42;
- }
- operator bool() const {
- return true;
- }
- };
-
- void test(const Convertible &obj) {
- clang_analyzer_eval((int)obj == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(obj); // expected-warning{{TRUE}}
- }
-}
-
-
-namespace RValues {
- struct SmallOpaque {
- float x;
- int operator +() const {
- return (int)x;
- }
- };
-
- struct LargeOpaque {
- float x[4];
- int operator +() const {
- return (int)x[0];
- }
- };
-
- SmallOpaque getSmallOpaque() {
- SmallOpaque obj;
- obj.x = 1.0;
- return obj;
- }
-
- LargeOpaque getLargeOpaque() {
- LargeOpaque obj = LargeOpaque();
- obj.x[0] = 1.0;
- return obj;
- }
-
- void test(int coin) {
- // Force a cache-out when we try to conjure a temporary region for the operator call.
- // ...then, don't crash.
- clang_analyzer_eval(+(coin ? getSmallOpaque() : getSmallOpaque())); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(+(coin ? getLargeOpaque() : getLargeOpaque())); // expected-warning{{UNKNOWN}}
- }
-}
-
-namespace SynthesizedAssignment {
- struct A {
- int a;
- A& operator=(A& other) { a = -other.a; return *this; }
- A& operator=(A&& other) { a = other.a+1; return *this; }
- };
-
- struct B {
- int x;
- A a[3];
- B& operator=(B&) = default;
- B& operator=(B&&) = default;
- };
-
- // This used to produce a warning about the iteration variable in the
- // synthesized assignment operator being undefined.
- void testNoWarning() {
- B v, u;
- u = v;
- }
-
- void testNoWarningMove() {
- B v, u;
- u = static_cast<B &&>(v);
- }
-
- void testConsistency() {
- B v, u;
- v.a[1].a = 47;
- v.a[2].a = 42;
- u = v;
- clang_analyzer_eval(u.a[1].a == -47); // expected-warning{{TRUE}}
- clang_analyzer_eval(u.a[2].a == -42); // expected-warning{{TRUE}}
- }
-
- void testConsistencyMove() {
- B v, u;
- v.a[1].a = 47;
- v.a[2].a = 42;
- u = static_cast<B &&>(v);
- clang_analyzer_eval(u.a[1].a == 48); // expected-warning{{TRUE}}
- clang_analyzer_eval(u.a[2].a == 43); // expected-warning{{TRUE}}
- }
-}
diff --git a/test/Analysis/osobject-retain-release.cpp b/test/Analysis/osobject-retain-release.cpp
deleted file mode 100644
index 9d11a0623167..000000000000
--- a/test/Analysis/osobject-retain-release.cpp
+++ /dev/null
@@ -1,611 +0,0 @@
-// RUN: %clang_analyze_cc1 -fblocks -analyze -analyzer-output=text\
-// RUN: -analyzer-checker=core,osx -verify %s
-
-struct OSMetaClass;
-
-#define OS_CONSUME __attribute__((os_consumed))
-#define OS_RETURNS_RETAINED __attribute__((os_returns_retained))
-#define OS_RETURNS_RETAINED_ON_ZERO __attribute__((os_returns_retained_on_zero))
-#define OS_RETURNS_RETAINED_ON_NONZERO __attribute__((os_returns_retained_on_non_zero))
-#define OS_RETURNS_NOT_RETAINED __attribute__((os_returns_not_retained))
-#define OS_CONSUMES_THIS __attribute__((os_consumes_this))
-
-#define OSTypeID(type) (type::metaClass)
-
-#define OSDynamicCast(type, inst) \
- ((type *) OSMetaClassBase::safeMetaCast((inst), OSTypeID(type)))
-
-using size_t = decltype(sizeof(int));
-
-struct OSObject {
- virtual void retain();
- virtual void release() {};
- virtual void free();
- virtual ~OSObject(){}
-
- unsigned int foo() { return 42; }
-
- virtual OS_RETURNS_NOT_RETAINED OSObject *identity();
-
- static OSObject *generateObject(int);
-
- static OSObject *getObject();
- static OSObject *GetObject();
-
- static void * operator new(size_t size);
-
- static const OSMetaClass * const metaClass;
-};
-
-struct OSIterator : public OSObject {
-
- static const OSMetaClass * const metaClass;
-};
-
-struct OSArray : public OSObject {
- unsigned int getCount();
-
- OSIterator * getIterator();
-
- OSObject *identity() override;
-
- virtual OSObject *generateObject(OSObject *input);
-
- virtual void consumeReference(OS_CONSUME OSArray *other);
-
- void putIntoArray(OSArray *array) OS_CONSUMES_THIS;
-
- template <typename T>
- void putIntoT(T *owner) OS_CONSUMES_THIS;
-
- static OSArray *generateArrayHasCode() {
- return new OSArray;
- }
-
- static OSArray *withCapacity(unsigned int capacity);
- static void consumeArray(OS_CONSUME OSArray * array);
-
- static OSArray* consumeArrayHasCode(OS_CONSUME OSArray * array) {
- return nullptr;
- }
-
- static OS_RETURNS_NOT_RETAINED OSArray *MaskedGetter();
- static OS_RETURNS_RETAINED OSArray *getOoopsActuallyCreate();
-
- static const OSMetaClass * const metaClass;
-};
-
-struct MyArray : public OSArray {
- void consumeReference(OSArray *other) override;
-
- OSObject *identity() override;
-
- OSObject *generateObject(OSObject *input) override;
-};
-
-struct OtherStruct {
- static void doNothingToArray(OSArray *array);
- OtherStruct(OSArray *arr);
-};
-
-struct OSMetaClassBase {
- static OSObject *safeMetaCast(const OSObject *inst, const OSMetaClass *meta);
-};
-
-void escape(void *);
-void escape_with_source(void *p) {}
-bool coin();
-
-typedef int kern_return_t;
-typedef kern_return_t IOReturn;
-typedef kern_return_t OSReturn;
-#define kOSReturnSuccess 0
-#define kIOReturnSuccess 0
-
-bool write_into_out_param_on_success(OS_RETURNS_RETAINED OSObject **obj);
-
-void use_out_param() {
- OSObject *obj;
- if (write_into_out_param_on_success(&obj)) {
- obj->release();
- }
-}
-
-void use_out_param_leak() {
- OSObject *obj;
- write_into_out_param_on_success(&obj); // expected-note-re{{Call to function 'write_into_out_param_on_success' writes an OSObject of type 'OSObject' with a +1 retain count into an out parameter 'obj' (assuming the call returns non-zero){{$}}}}
-} // expected-warning{{Potential leak of an object stored into 'obj'}}
- // expected-note@-1{{Object leaked: object allocated and stored into 'obj' is not referenced later in this execution path and has a retain count of +1}}
-
-bool write_into_out_param_on_failure(OS_RETURNS_RETAINED_ON_ZERO OSObject **obj);
-
-void use_out_param_leak2() {
- OSObject *obj;
- write_into_out_param_on_failure(&obj); // expected-note-re{{Call to function 'write_into_out_param_on_failure' writes an OSObject of type 'OSObject' with a +1 retain count into an out parameter 'obj' (assuming the call returns zero){{$}}}}
-} // expected-warning{{Potential leak of an object stored into 'obj'}}
- // expected-note@-1{{Object leaked: object allocated and stored into 'obj' is not referenced later in this execution path and has a retain count of +1}}
-
-void use_out_param_on_failure() {
- OSObject *obj;
- if (!write_into_out_param_on_failure(&obj)) {
- obj->release();
- }
-}
-
-IOReturn write_into_out_param_on_nonzero(OS_RETURNS_RETAINED_ON_NONZERO OSObject **obj);
-
-void use_out_param_on_nonzero() {
- OSObject *obj;
- if (write_into_out_param_on_nonzero(&obj) != kIOReturnSuccess) {
- obj->release();
- }
-}
-
-bool write_into_two_out_params(OS_RETURNS_RETAINED OSObject **a,
- OS_RETURNS_RETAINED OSObject **b);
-
-void use_write_into_two_out_params() {
- OSObject *obj1;
- OSObject *obj2;
- if (write_into_two_out_params(&obj1, &obj2)) {
- obj1->release();
- obj2->release();
- }
-}
-
-void use_write_two_out_params_leak() {
- OSObject *obj1;
- OSObject *obj2;
- write_into_two_out_params(&obj1, &obj2); // expected-note-re{{Call to function 'write_into_two_out_params' writes an OSObject of type 'OSObject' with a +1 retain count into an out parameter 'a' (assuming the call returns non-zero){{$}}}}
- // expected-note-re@-1{{Call to function 'write_into_two_out_params' writes an OSObject of type 'OSObject' with a +1 retain count into an out parameter 'b' (assuming the call returns non-zero){{$}}}}
-} // expected-warning{{Potential leak of an object stored into 'obj1'}}
- // expected-warning@-1{{Potential leak of an object stored into 'obj2'}}
- // expected-note@-2{{Object leaked: object allocated and stored into 'obj1' is not referenced later in this execution path and has a retain count of +1}}
- // expected-note@-3{{Object leaked: object allocated and stored into 'obj2' is not referenced later in this execution path and has a retain count of +1}}
-
-void always_write_into_two_out_params(OS_RETURNS_RETAINED OSObject **a,
- OS_RETURNS_RETAINED OSObject **b);
-
-void use_always_write_into_two_out_params() {
- OSObject *obj1;
- OSObject *obj2;
- always_write_into_two_out_params(&obj1, &obj2);
- obj1->release();
- obj2->release();
-}
-
-void use_always_write_into_two_out_params_leak() {
- OSObject *obj1;
- OSObject *obj2;
- always_write_into_two_out_params(&obj1, &obj2); // expected-note-re{{Call to function 'always_write_into_two_out_params' writes an OSObject of type 'OSObject' with a +1 retain count into an out parameter 'a'{{$}}}}
- // expected-note-re@-1{{Call to function 'always_write_into_two_out_params' writes an OSObject of type 'OSObject' with a +1 retain count into an out parameter 'b'{{$}}}}
-} // expected-warning{{Potential leak of an object stored into 'obj1'}}
- // expected-warning@-1{{Potential leak of an object stored into 'obj2'}}
- // expected-note@-2{{Object leaked: object allocated and stored into 'obj1' is not referenced later in this execution path and has a retain count of +1}}
- // expected-note@-3{{Object leaked: object allocated and stored into 'obj2' is not referenced later in this execution path and has a retain count of +1}}
-
-char *write_into_out_param_on_nonnull(OS_RETURNS_RETAINED OSObject **obj);
-
-void use_out_param_osreturn_on_nonnull() {
- OSObject *obj;
- if (write_into_out_param_on_nonnull(&obj)) {
- obj->release();
- }
-}
-
-void use_out_param_leak_osreturn_on_nonnull() {
- OSObject *obj;
- write_into_out_param_on_nonnull(&obj); // expected-note-re{{Call to function 'write_into_out_param_on_nonnull' writes an OSObject of type 'OSObject' with a +1 retain count into an out parameter 'obj' (assuming the call returns non-zero){{$}}}}
-} // expected-warning{{Potential leak of an object stored into 'obj'}}
- // expected-note@-1{{Object leaked: object allocated and stored into 'obj' is not referenced later in this execution path and has a retain count of +1}}
-
-bool write_optional_out_param(OS_RETURNS_RETAINED OSObject **obj=nullptr);
-
-void use_optional_out_param() {
- if (write_optional_out_param()) {};
-}
-
-OSReturn write_into_out_param_on_os_success(OS_RETURNS_RETAINED OSObject **obj);
-
-void write_into_non_retained_out_param(OS_RETURNS_NOT_RETAINED OSObject **obj);
-
-void use_write_into_non_retained_out_param() {
- OSObject *obj;
- write_into_non_retained_out_param(&obj);
-}
-
-void use_write_into_non_retained_out_param_uaf() {
- OSObject *obj;
- write_into_non_retained_out_param(&obj); // expected-note-re{{Call to function 'write_into_non_retained_out_param' writes an OSObject of type 'OSObject' with a +0 retain count into an out parameter 'obj'{{$}}}}
- obj->release(); // expected-warning{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
- // expected-note@-1{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-void always_write_into_out_param(OS_RETURNS_RETAINED OSObject **obj);
-
-void pass_through_out_param(OSObject **obj) {
- always_write_into_out_param(obj);
-}
-
-void always_write_into_out_param_has_source(OS_RETURNS_RETAINED OSObject **obj) {
- *obj = new OSObject; // expected-note{{Operator 'new' returns an OSObject of type 'OSObject' with a +1 retain count}}
-}
-
-void use_always_write_into_out_param_has_source_leak() {
- OSObject *obj;
- always_write_into_out_param_has_source(&obj); // expected-note{{Calling 'always_write_into_out_param_has_source'}}
- // expected-note@-1{{Returning from 'always_write_into_out_param_has_source'}}
-} // expected-warning{{Potential leak of an object stored into 'obj'}}
- // expected-note@-1{{Object leaked: object allocated and stored into 'obj' is not referenced later in this execution path and has a retain count of +1}}
-
-void use_void_out_param_osreturn() {
- OSObject *obj;
- always_write_into_out_param(&obj);
- obj->release();
-}
-
-void use_void_out_param_osreturn_leak() {
- OSObject *obj;
- always_write_into_out_param(&obj); // expected-note-re{{Call to function 'always_write_into_out_param' writes an OSObject of type 'OSObject' with a +1 retain count into an out parameter 'obj'{{$}}}}
-} // expected-warning{{Potential leak of an object stored into 'obj'}}
- // expected-note@-1{{Object leaked: object allocated and stored into 'obj' is not referenced later in this execution path and has a retain count of +1}}
-
-void use_out_param_osreturn() {
- OSObject *obj;
- if (write_into_out_param_on_os_success(&obj) == kOSReturnSuccess) {
- obj->release();
- }
-}
-
-void use_out_param_leak_osreturn() {
- OSObject *obj;
- write_into_out_param_on_os_success(&obj); // expected-note-re{{Call to function 'write_into_out_param_on_os_success' writes an OSObject of type 'OSObject' with a +1 retain count into an out parameter 'obj' (assuming the call returns zero){{$}}}}
-} // expected-warning{{Potential leak of an object stored into 'obj'}}
- // expected-note@-1{{Object leaked: object allocated and stored into 'obj' is not referenced later in this execution path and has a retain count of +1}}
-
-struct StructWithField {
- OSObject *obj;
-
- void initViaOutParamCall() { // no warning on writing into fields
- always_write_into_out_param(&obj);
- }
-
-};
-
-bool os_consume_violation_two_args(OS_CONSUME OSObject *obj, bool extra) {
- if (coin()) { // expected-note{{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- escape(obj);
- return true;
- }
- return false; // expected-note{{Parameter 'obj' is marked as consuming, but the function did not consume the reference}}
-}
-
-bool os_consume_violation(OS_CONSUME OSObject *obj) {
- if (coin()) { // expected-note{{Assuming the condition is false}}
- // expected-note@-1{{Taking false branch}}
- escape(obj);
- return true;
- }
- return false; // expected-note{{Parameter 'obj' is marked as consuming, but the function did not consume the reference}}
-}
-
-void os_consume_ok(OS_CONSUME OSObject *obj) {
- escape(obj);
-}
-
-void use_os_consume_violation() {
- OSObject *obj = new OSObject; // expected-note{{Operator 'new' returns an OSObject of type 'OSObject' with a +1 retain count}}
- os_consume_violation(obj); // expected-note{{Calling 'os_consume_violation'}}
- // expected-note@-1{{Returning from 'os_consume_violation'}}
-} // expected-note{{Object leaked: object allocated and stored into 'obj' is not referenced later in this execution path and has a retain count of +1}}
- // expected-warning@-1{{Potential leak of an object stored into 'obj'}}
-
-void use_os_consume_violation_two_args() {
- OSObject *obj = new OSObject; // expected-note{{Operator 'new' returns an OSObject of type 'OSObject' with a +1 retain count}}
- os_consume_violation_two_args(obj, coin()); // expected-note{{Calling 'os_consume_violation_two_args'}}
- // expected-note@-1{{Returning from 'os_consume_violation_two_args'}}
-} // expected-note{{Object leaked: object allocated and stored into 'obj' is not referenced later in this execution path and has a retain count of +1}}
- // expected-warning@-1{{Potential leak of an object stored into 'obj'}}
-
-void use_os_consume_ok() {
- OSObject *obj = new OSObject;
- os_consume_ok(obj);
-}
-
-void test_escaping_into_voidstar() {
- OSObject *obj = new OSObject;
- escape(obj);
-}
-
-void test_escape_has_source() {
- OSObject *obj = new OSObject;
- if (obj)
- escape_with_source(obj);
- return;
-}
-
-void test_no_infinite_check_recursion(MyArray *arr) {
- OSObject *input = new OSObject;
- OSObject *o = arr->generateObject(input);
- o->release();
- input->release();
-}
-
-
-void check_param_attribute_propagation(MyArray *parent) {
- OSArray *arr = new OSArray;
- parent->consumeReference(arr);
-}
-
-unsigned int check_attribute_propagation(OSArray *arr) {
- OSObject *other = arr->identity();
- OSArray *casted = OSDynamicCast(OSArray, other);
- if (casted)
- return casted->getCount();
- return 0;
-}
-
-unsigned int check_attribute_indirect_propagation(MyArray *arr) {
- OSObject *other = arr->identity();
- OSArray *casted = OSDynamicCast(OSArray, other);
- if (casted)
- return casted->getCount();
- return 0;
-}
-
-void check_consumes_this(OSArray *owner) {
- OSArray *arr = new OSArray;
- arr->putIntoArray(owner);
-}
-
-void check_consumes_this_with_template(OSArray *owner) {
- OSArray *arr = new OSArray;
- arr->putIntoT(owner);
-}
-
-void check_free_no_error() {
- OSArray *arr = OSArray::withCapacity(10);
- arr->retain();
- arr->retain();
- arr->retain();
- arr->free();
-}
-
-void check_free_use_after_free() {
- OSArray *arr = OSArray::withCapacity(10); // expected-note{{Call to method 'OSArray::withCapacity' returns an OSObject of type 'OSArray' with a +1 retain count}}
- arr->retain(); // expected-note{{Reference count incremented. The object now has a +2 retain count}}
- arr->free(); // expected-note{{Object released}}
- arr->retain(); // expected-warning{{Reference-counted object is used after it is released}}
- // expected-note@-1{{Reference-counted object is used after it is released}}
-}
-
-unsigned int check_leak_explicit_new() {
- OSArray *arr = new OSArray; // expected-note{{Operator 'new' returns an OSObject of type 'OSArray' with a +1 retain count}}
- return arr->getCount(); // expected-note{{Object leaked: object allocated and stored into 'arr' is not referenced later in this execution path and has a retain count of +1}}
- // expected-warning@-1{{Potential leak of an object stored into 'arr'}}
-}
-
-unsigned int check_leak_factory() {
- OSArray *arr = OSArray::withCapacity(10); // expected-note{{Call to method 'OSArray::withCapacity' returns an OSObject of type 'OSArray' with a +1 retain count}}
- return arr->getCount(); // expected-note{{Object leaked: object allocated and stored into 'arr' is not referenced later in this execution path and has a retain count of +1}}
- // expected-warning@-1{{Potential leak of an object stored into 'arr'}}
-}
-
-void check_get_object() {
- OSObject::getObject();
-}
-
-void check_Get_object() {
- OSObject::GetObject();
-}
-
-void check_custom_iterator_rule(OSArray *arr) {
- OSIterator *it = arr->getIterator();
- it->release();
-}
-
-void check_iterator_leak(OSArray *arr) {
- arr->getIterator(); // expected-note{{Call to method 'OSArray::getIterator' returns an OSObject of type 'OSIterator' with a +1 retain count}}
-} // expected-note{{Object leaked: allocated object of type 'OSIterator' is not referenced later}}
- // expected-warning@-1{{Potential leak of an object of type 'OSIterator}}'
-
-void check_no_invalidation() {
- OSArray *arr = OSArray::withCapacity(10); // expected-note{{Call to method 'OSArray::withCapacity' returns an OSObject of type 'OSArray' with a +1 retain count}}
- OtherStruct::doNothingToArray(arr);
-} // expected-warning{{Potential leak of an object stored into 'arr'}}
- // expected-note@-1{{Object leaked}}
-
-void check_no_invalidation_other_struct() {
- OSArray *arr = OSArray::withCapacity(10); // expected-note{{Call to method 'OSArray::withCapacity' returns an OSObject of type 'OSArray' with a +1 retain count}}
- OtherStruct other(arr); // expected-warning{{Potential leak}}
- // expected-note@-1{{Object leaked}}
-}
-
-struct ArrayOwner : public OSObject {
- OSArray *arr;
- ArrayOwner(OSArray *arr) : arr(arr) {}
-
- static ArrayOwner* create(OSArray *arr) {
- return new ArrayOwner(arr);
- }
-
- OSArray *getArray() {
- return arr;
- }
-
- OSArray *createArray() {
- return OSArray::withCapacity(10);
- }
-
- OSArray *createArraySourceUnknown();
-
- OSArray *getArraySourceUnknown();
-};
-
-OSArray *generateArray() {
- return OSArray::withCapacity(10); // expected-note{{Call to method 'OSArray::withCapacity' returns an OSObject of type 'OSArray' with a +1 retain count}}
- // expected-note@-1{{Call to method 'OSArray::withCapacity' returns an OSObject of type 'OSArray' with a +1 retain count}}
-}
-
-unsigned int check_leak_good_error_message() {
- unsigned int out;
- {
- OSArray *leaked = generateArray(); // expected-note{{Calling 'generateArray'}}
- // expected-note@-1{{Returning from 'generateArray'}}
- out = leaked->getCount(); // expected-warning{{Potential leak of an object stored into 'leaked'}}
- // expected-note@-1{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
- }
- return out;
-}
-
-unsigned int check_leak_msg_temporary() {
- return generateArray()->getCount(); // expected-warning{{Potential leak of an object}}
- // expected-note@-1{{Calling 'generateArray'}}
- // expected-note@-2{{Returning from 'generateArray'}}
- // expected-note@-3{{Object leaked: allocated object of type 'OSArray' is not referenced later in this execution path and has a retain count of +1}}
-}
-
-void check_confusing_getters() {
- OSArray *arr = OSArray::withCapacity(10);
-
- ArrayOwner *AO = ArrayOwner::create(arr);
- AO->getArray();
-
- AO->release();
- arr->release();
-}
-
-void check_rc_consumed() {
- OSArray *arr = OSArray::withCapacity(10);
- OSArray::consumeArray(arr);
-}
-
-void check_rc_consume_temporary() {
- OSArray::consumeArray(OSArray::withCapacity(10));
-}
-
-void check_rc_getter() {
- OSArray *arr = OSArray::MaskedGetter();
- (void)arr;
-}
-
-void check_rc_create() {
- OSArray *arr = OSArray::getOoopsActuallyCreate();
- arr->release();
-}
-
-
-void check_dynamic_cast() {
- OSArray *arr = OSDynamicCast(OSArray, OSObject::generateObject(1));
- arr->release();
-}
-
-unsigned int check_dynamic_cast_no_null_on_orig(OSObject *obj) {
- OSArray *arr = OSDynamicCast(OSArray, obj);
- if (arr) {
- return arr->getCount();
- } else {
-
- // The fact that dynamic cast has failed should not imply that
- // the input object was null.
- return obj->foo(); // no-warning
- }
-}
-
-void check_dynamic_cast_null_branch(OSObject *obj) {
- OSArray *arr1 = OSArray::withCapacity(10); // expected-note{{Call to method 'OSArray::withCapacity' returns an OSObject}}
- OSArray *arr = OSDynamicCast(OSArray, obj);
- if (!arr) // expected-note{{Taking true branch}}
- return; // expected-warning{{Potential leak of an object stored into 'arr1'}}
- // expected-note@-1{{Object leaked}}
- arr1->release();
-}
-
-void check_dynamic_cast_null_check() {
- OSArray *arr = OSDynamicCast(OSArray, OSObject::generateObject(1)); // expected-note{{Call to method 'OSObject::generateObject' returns an OSObject}}
- // expected-warning@-1{{Potential leak of an object}}
- // expected-note@-2{{Object leaked}}
- if (!arr)
- return;
- arr->release();
-}
-
-void use_after_release() {
- OSArray *arr = OSArray::withCapacity(10); // expected-note{{Call to method 'OSArray::withCapacity' returns an OSObject of type 'OSArray' with a +1 retain count}}
- arr->release(); // expected-note{{Object released}}
- arr->getCount(); // expected-warning{{Reference-counted object is used after it is released}}
- // expected-note@-1{{Reference-counted object is used after it is released}}
-}
-
-void potential_leak() {
- OSArray *arr = OSArray::withCapacity(10); // expected-note{{Call to method 'OSArray::withCapacity' returns an OSObject of type 'OSArray' with a +1 retain count}}
- arr->retain(); // expected-note{{Reference count incremented. The object now has a +2 retain count}}
- arr->release(); // expected-note{{Reference count decremented. The object now has a +1 retain count}}
- arr->getCount();
-} // expected-warning{{Potential leak of an object stored into 'arr'}}
- // expected-note@-1{{Object leaked: object allocated and stored into 'arr' is not referenced later in this execution path and has a retain count of +1}}
-
-void proper_cleanup() {
- OSArray *arr = OSArray::withCapacity(10); // +1
- arr->retain(); // +2
- arr->release(); // +1
- arr->getCount();
- arr->release(); // 0
-}
-
-unsigned int no_warning_on_getter(ArrayOwner *owner) {
- OSArray *arr = owner->getArray();
- return arr->getCount();
-}
-
-unsigned int warn_on_overrelease(ArrayOwner *owner) {
- // FIXME: summaries are not applied in case the source of the getter/setter
- // is known.
- // rdar://45681203
- OSArray *arr = owner->getArray();
- arr->release();
- return arr->getCount();
-}
-
-unsigned int nowarn_on_release_of_created(ArrayOwner *owner) {
- OSArray *arr = owner->createArray();
- unsigned int out = arr->getCount();
- arr->release();
- return out;
-}
-
-unsigned int nowarn_on_release_of_created_source_unknown(ArrayOwner *owner) {
- OSArray *arr = owner->createArraySourceUnknown();
- unsigned int out = arr->getCount();
- arr->release();
- return out;
-}
-
-unsigned int no_warn_ok_release(ArrayOwner *owner) {
- OSArray *arr = owner->getArray(); // +0
- arr->retain(); // +1
- arr->release(); // +0
- return arr->getCount(); // no-warning
-}
-
-unsigned int warn_on_overrelease_with_unknown_source(ArrayOwner *owner) {
- OSArray *arr = owner->getArraySourceUnknown(); // expected-note{{Call to method 'ArrayOwner::getArraySourceUnknown' returns an OSObject of type 'OSArray' with a +0 retain count}}
- arr->release(); // expected-warning{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
- // expected-note@-1{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
- return arr->getCount();
-}
-
-unsigned int ok_release_with_unknown_source(ArrayOwner *owner) {
- OSArray *arr = owner->getArraySourceUnknown(); // +0
- arr->retain(); // +1
- arr->release(); // +0
- return arr->getCount();
-}
-
-OSObject *getObject();
-typedef bool (^Blk)(OSObject *);
-
-void test_escape_to_unknown_block(Blk blk) {
- blk(getObject()); // no-crash
-}
diff --git a/test/Analysis/out-of-bounds-new.cpp b/test/Analysis/out-of-bounds-new.cpp
deleted file mode 100644
index b7ceea72a270..000000000000
--- a/test/Analysis/out-of-bounds-new.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -Wno-array-bounds -analyzer-checker=unix,core,alpha.security.ArrayBoundV2 -verify %s
-
-// Tests doing an out-of-bounds access after the end of an array using:
-// - constant integer index
-// - constant integer size for buffer
-void test1(int x) {
- int *buf = new int[100];
- buf[100] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test1_ok(int x) {
- int *buf = new int[100];
- buf[99] = 1; // no-warning
-}
-
-// Tests doing an out-of-bounds access after the end of an array using:
-// - indirect pointer to buffer
-// - constant integer index
-// - constant integer size for buffer
-void test1_ptr(int x) {
- int *buf = new int[100];
- int *p = buf;
- p[101] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test1_ptr_ok(int x) {
- int *buf = new int[100];
- int *p = buf;
- p[99] = 1; // no-warning
-}
-
-// Tests doing an out-of-bounds access before the start of an array using:
-// - indirect pointer to buffer, manipulated using simple pointer arithmetic
-// - constant integer index
-// - constant integer size for buffer
-void test1_ptr_arith(int x) {
- int *buf = new int[100];
- int *p = buf;
- p = p + 100;
- p[0] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test1_ptr_arith_ok(int x) {
- int *buf = new int[100];
- int *p = buf;
- p = p + 99;
- p[0] = 1; // no-warning
-}
-
-void test1_ptr_arith_bad(int x) {
- int *buf = new int[100];
- int *p = buf;
- p = p + 99;
- p[1] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test1_ptr_arith_ok2(int x) {
- int *buf = new int[100];
- int *p = buf;
- p = p + 99;
- p[-1] = 1; // no-warning
-}
-
-// Tests doing an out-of-bounds access before the start of an array using:
-// - constant integer index
-// - constant integer size for buffer
-void test2(int x) {
- int *buf = new int[100];
- buf[-1] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-// Tests doing an out-of-bounds access before the start of an array using:
-// - indirect pointer to buffer
-// - constant integer index
-// - constant integer size for buffer
-void test2_ptr(int x) {
- int *buf = new int[100];
- int *p = buf;
- p[-1] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-// Tests doing an out-of-bounds access before the start of an array using:
-// - indirect pointer to buffer, manipulated using simple pointer arithmetic
-// - constant integer index
-// - constant integer size for buffer
-void test2_ptr_arith(int x) {
- int *buf = new int[100];
- int *p = buf;
- --p;
- p[0] = 1; // expected-warning {{Out of bound memory access (accessed memory precedes memory block)}}
-}
-
-// Tests under-indexing
-// of a multi-dimensional array
-void test2_multi(int x) {
- auto buf = new int[100][100];
- buf[0][-1] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-// Tests under-indexing
-// of a multi-dimensional array
-void test2_multi_b(int x) {
- auto buf = new int[100][100];
- buf[-1][0] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-// Tests over-indexing
-// of a multi-dimensional array
-void test2_multi_c(int x) {
- auto buf = new int[100][100];
- buf[100][0] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-// Tests over-indexing
-// of a multi-dimensional array
-void test2_multi_2(int x) {
- auto buf = new int[100][100];
- buf[99][100] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-// Tests normal access of
-// a multi-dimensional array
-void test2_multi_ok(int x) {
- auto buf = new int[100][100];
- buf[0][0] = 1; // no-warning
-}
-
-// Tests over-indexing using different types
-// array
-void test_diff_types(int x) {
- int *buf = new int[10]; //10*sizeof(int) Bytes allocated
- char *cptr = (char *)buf;
- cptr[sizeof(int) * 9] = 1; // no-warning
- cptr[sizeof(int) * 10] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-// Tests over-indexing
-//if the allocated area is non-array
-void test_non_array(int x) {
- int *ip = new int;
- ip[0] = 1; // no-warning
- ip[1] = 2; // expected-warning{{Out of bound memory access}}
-}
-
-//Tests over-indexing
-//if the allocated area size is a runtime parameter
-void test_dynamic_size(int s) {
- int *buf = new int[s];
- buf[0] = 1; // no-warning
-}
-//Tests complex arithmetic
-//in new expression
-void test_dynamic_size2(unsigned m,unsigned n){
- unsigned *U = nullptr;
- U = new unsigned[m + n + 1];
-}
diff --git a/test/Analysis/out-of-bounds.c b/test/Analysis/out-of-bounds.c
deleted file mode 100644
index 1970cd658c42..000000000000
--- a/test/Analysis/out-of-bounds.c
+++ /dev/null
@@ -1,176 +0,0 @@
-// RUN: %clang_analyze_cc1 -Wno-array-bounds -analyzer-checker=core,alpha.security.ArrayBoundV2,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-
-// Tests doing an out-of-bounds access after the end of an array using:
-// - constant integer index
-// - constant integer size for buffer
-void test1(int x) {
- int buf[100];
- buf[100] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test1_ok(int x) {
- int buf[100];
- buf[99] = 1; // no-warning
-}
-
-const char test1_strings_underrun(int x) {
- const char *mystr = "mary had a little lamb";
- return mystr[-1]; // expected-warning{{Out of bound memory access}}
-}
-
-const char test1_strings_overrun(int x) {
- const char *mystr = "mary had a little lamb";
- return mystr[1000]; // expected-warning{{Out of bound memory access}}
-}
-
-const char test1_strings_ok(int x) {
- const char *mystr = "mary had a little lamb";
- return mystr[5]; // no-warning
-}
-
-// Tests doing an out-of-bounds access after the end of an array using:
-// - indirect pointer to buffer
-// - constant integer index
-// - constant integer size for buffer
-void test1_ptr(int x) {
- int buf[100];
- int *p = buf;
- p[101] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test1_ptr_ok(int x) {
- int buf[100];
- int *p = buf;
- p[99] = 1; // no-warning
-}
-
-// Tests doing an out-of-bounds access before the start of an array using:
-// - indirect pointer to buffer, manipulated using simple pointer arithmetic
-// - constant integer index
-// - constant integer size for buffer
-void test1_ptr_arith(int x) {
- int buf[100];
- int *p = buf;
- p = p + 100;
- p[0] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test1_ptr_arith_ok(int x) {
- int buf[100];
- int *p = buf;
- p = p + 99;
- p[0] = 1; // no-warning
-}
-
-void test1_ptr_arith_bad(int x) {
- int buf[100];
- int *p = buf;
- p = p + 99;
- p[1] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test1_ptr_arith_ok2(int x) {
- int buf[100];
- int *p = buf;
- p = p + 99;
- p[-1] = 1; // no-warning
-}
-
-// Tests doing an out-of-bounds access before the start of an array using:
-// - constant integer index
-// - constant integer size for buffer
-void test2(int x) {
- int buf[100];
- buf[-1] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-// Tests doing an out-of-bounds access before the start of an array using:
-// - indirect pointer to buffer
-// - constant integer index
-// - constant integer size for buffer
-void test2_ptr(int x) {
- int buf[100];
- int *p = buf;
- p[-1] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-// Tests doing an out-of-bounds access before the start of an array using:
-// - indirect pointer to buffer, manipulated using simple pointer arithmetic
-// - constant integer index
-// - constant integer size for buffer
-void test2_ptr_arith(int x) {
- int buf[100];
- int *p = buf;
- --p;
- p[0] = 1; // expected-warning {{Out of bound memory access (accessed memory precedes memory block)}}
-}
-
-// Tests doing an out-of-bounds access before the start of a multi-dimensional
-// array using:
-// - constant integer indices
-// - constant integer sizes for the array
-void test2_multi(int x) {
- int buf[100][100];
- buf[0][-1] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-// Tests doing an out-of-bounds access before the start of a multi-dimensional
-// array using:
-// - constant integer indices
-// - constant integer sizes for the array
-void test2_multi_b(int x) {
- int buf[100][100];
- buf[-1][0] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test2_multi_ok(int x) {
- int buf[100][100];
- buf[0][0] = 1; // no-warning
-}
-
-void test3(int x) {
- int buf[100];
- if (x < 0)
- buf[x] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test4(int x) {
- int buf[100];
- if (x > 99)
- buf[x] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test_assume_after_access(unsigned long x) {
- int buf[100];
- buf[x] = 1;
- clang_analyzer_eval(x <= 99); // expected-warning{{TRUE}}
-}
-
-// Don't warn when indexing below the start of a symbolic region's whose
-// base extent we don't know.
-int *get_symbolic();
-void test_index_below_symboloc() {
- int *buf = get_symbolic();
- buf[-1] = 0; // no-warning;
-}
-
-void test_incomplete_struct() {
- extern struct incomplete incomplete;
- int *p = (int *)&incomplete;
- p[1] = 42; // no-warning
-}
-
-void test_extern_void() {
- extern void v;
- int *p = (int *)&v;
- p[1] = 42; // no-warning
-}
-
-void test_assume_after_access2(unsigned long x) {
- char buf[100];
- buf[x] = 1;
- clang_analyzer_eval(x <= 99); // expected-warning{{TRUE}}
-}
-
diff --git a/test/Analysis/outofbound-notwork.c b/test/Analysis/outofbound-notwork.c
deleted file mode 100644
index 22ccd9e2c913..000000000000
--- a/test/Analysis/outofbound-notwork.c
+++ /dev/null
@@ -1,32 +0,0 @@
-// RUN: %clang_analyze_cc1 -Wno-array-bounds -analyzer-checker=core,alpha.security.ArrayBound -analyzer-store=region -verify %s
-// XFAIL: *
-
-// Once we better handle modeling of sizes of VLAs, we can pull this back
-// into outofbound.c.
-
-void sizeof_vla(int a) {
- if (a == 5) {
- char x[a];
- int y[sizeof(x)];
- y[4] = 4; // no-warning
- y[5] = 5; // expected-warning{{out-of-bound}}
- }
-}
-
-void sizeof_vla_2(int a) {
- if (a == 5) {
- char x[a];
- int y[sizeof(x) / sizeof(char)];
- y[4] = 4; // no-warning
- y[5] = 5; // expected-warning{{out-of-bound}}
- }
-}
-
-void sizeof_vla_3(int a) {
- if (a == 5) {
- char x[a];
- int y[sizeof(*&*&*&x)];
- y[4] = 4; // no-warning
- y[5] = 5; // expected-warning{{out-of-bound}}
- }
-}
diff --git a/test/Analysis/outofbound.c b/test/Analysis/outofbound.c
deleted file mode 100644
index 35672c0c448b..000000000000
--- a/test/Analysis/outofbound.c
+++ /dev/null
@@ -1,124 +0,0 @@
-// RUN: %clang_analyze_cc1 -Wno-array-bounds -analyzer-checker=core,unix,alpha.security.ArrayBound -analyzer-store=region -verify -analyzer-config unix:Optimistic=true %s
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void *calloc(size_t, size_t);
-
-char f1() {
- char* s = "abcd";
- char c = s[4]; // no-warning
- return s[5] + c; // expected-warning{{Access out-of-bound array element (buffer overflow)}}
-}
-
-void f2() {
- int *p = malloc(12);
- p[3] = 4; // expected-warning{{Access out-of-bound array element (buffer overflow)}}
-}
-
-struct three_words {
- int c[3];
-};
-
-struct seven_words {
- int c[7];
-};
-
-void f3() {
- struct three_words a, *p;
- p = &a;
- p[0] = a; // no-warning
- p[1] = a; // expected-warning{{Access out-of-bound array element (buffer overflow)}}
-}
-
-void f4() {
- struct seven_words c;
- struct three_words a, *p = (struct three_words *)&c;
- p[0] = a; // no-warning
- p[1] = a; // no-warning
- p[2] = a; // expected-warning{{Access out-of-bound array element (buffer overflow)}}
-}
-
-void f5() {
- char *p = calloc(2,2);
- p[3] = '.'; // no-warning
- p[4] = '!'; // expected-warning{{out-of-bound}}
-}
-
-void f6() {
- char a[2];
- int *b = (int*)a;
- b[1] = 3; // expected-warning{{out-of-bound}}
-}
-
-void f7() {
- struct three_words a;
- a.c[3] = 1; // expected-warning{{out-of-bound}}
-}
-
-void vla(int a) {
- if (a == 5) {
- int x[a];
- x[4] = 4; // no-warning
- x[5] = 5; // expected-warning{{out-of-bound}}
- }
-}
-
-void alloca_region(int a) {
- if (a == 5) {
- char *x = __builtin_alloca(a);
- x[4] = 4; // no-warning
- x[5] = 5; // expected-warning{{out-of-bound}}
- }
-}
-
-int symbolic_index(int a) {
- int x[2] = {1, 2};
- if (a == 2) {
- return x[a]; // expected-warning{{out-of-bound}}
- }
- return 0;
-}
-
-int symbolic_index2(int a) {
- int x[2] = {1, 2};
- if (a < 0) {
- return x[a]; // expected-warning{{out-of-bound}}
- }
- return 0;
-}
-
-int overflow_binary_search(double in) {
- int eee = 16;
- if (in < 1e-8 || in > 1e23) {
- return 0;
- } else {
- static const double ins[] = {1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1,
- 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7,
- 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15,
- 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22};
- if (in < ins[eee]) {
- eee -= 8;
- } else {
- eee += 8;
- }
- if (in < ins[eee]) {
- eee -= 4;
- } else {
- eee += 4;
- }
- if (in < ins[eee]) {
- eee -= 2;
- } else {
- eee += 2;
- }
- if (in < ins[eee]) {
- eee -= 1;
- } else {
- eee += 1;
- }
- if (in < ins[eee]) { // expected-warning {{Access out-of-bound array element (buffer overflow)}}
- eee -= 1;
- }
- }
- return eee;
-}
diff --git a/test/Analysis/override-werror.c b/test/Analysis/override-werror.c
deleted file mode 100644
index 7dc09f518627..000000000000
--- a/test/Analysis/override-werror.c
+++ /dev/null
@@ -1,14 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -Werror %s -analyzer-store=region -verify
-
-// This test case illustrates that using '-analyze' overrides the effect of
-// -Werror. This allows basic warnings not to interfere with producing
-// analyzer results.
-
-char* f(int *p) {
- return p; // expected-warning{{incompatible pointer types}}
-}
-
-void g(int *p) {
- if (!p) *p = 0; // expected-warning{{null}}
-}
-
diff --git a/test/Analysis/padding_c.c b/test/Analysis/padding_c.c
deleted file mode 100644
index f4178f545791..000000000000
--- a/test/Analysis/padding_c.c
+++ /dev/null
@@ -1,236 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=optin.performance -analyzer-config optin.performance.Padding:AllowedPad=2 -verify %s
-
-#if __has_include(<stdalign.h>)
-#include <stdalign.h>
-#endif
-
-#if __has_include(<stdalign.h>) || defined(__cplusplus)
-// expected-warning@+1{{Excessive padding in 'struct FieldAttrAlign' (6 padding}}
-struct FieldAttrAlign {
- char c1;
- alignas(4) int i;
- char c2;
-};
-
-// expected-warning@+1{{Excessive padding in 'struct FieldAttrOverAlign' (10 padding}}
-struct FieldAttrOverAlign {
- char c1;
- alignas(8) int i;
- char c2;
-};
-
-#endif // __has_include(<stdalign.h>) || defined(__cplusplus)
-
-// Re-ordering members of these structs won't reduce padding, so don't warn
-struct LeadingChar { // no-warning
- char c;
- int i;
-};
-
-struct TrailingChar { // no-warning
- int i;
- char c;
-};
-
-struct Helpless { // no-warning
- struct TrailingChar i1;
- struct LeadingChar i2;
- char c;
-};
-
-#pragma pack(push)
-#pragma pack(1)
-struct SquishedIntSandwich { // no-warning
- char c1;
- int i;
- char c2;
-};
-#pragma pack(pop)
-
-// Re-ordering members of these structs will reduce padding, so warn
-struct IntSandwich { // expected-warning{{Excessive padding in 'struct IntSandwich'}}
- char c1;
- int i;
- char c2;
-};
-
-struct TurDuckHen { // expected-warning{{Excessive padding in 'struct TurDuckHen'}}
- char c1;
- struct IntSandwich i;
- char c2;
-};
-
-#pragma pack(push)
-#pragma pack(2)
-struct SmallIntSandwich { // expected-warning{{Excessive padding in 'struct SmallIntSandwich'}}
- char c1;
- int i1;
- char c2;
- int i2;
- char c3;
- int i3;
- char c4;
-};
-#pragma pack(pop)
-
-union SomeUnion { // no-warning
- char c;
- short s;
- int i;
-};
-
-struct HoldsAUnion { // expected-warning{{Excessive padding in 'struct HoldsAUnion'}}
- char c1;
- union SomeUnion u;
- char c2;
-};
-
-struct BigCharArray { // no-warning
- char c[129];
-};
-
-struct SmallCharArray { // no-warning
- char c[5];
-};
-
-struct MediumIntArray { // no-warning
- int i[5];
-};
-
-struct LargeSizeToSmallSize { // expected-warning{{Excessive padding in 'struct LargeSizeToSmallSize'}}
- struct BigCharArray b;
- struct MediumIntArray m;
- struct SmallCharArray s;
-};
-
-struct LargeAlignToSmallAlign { // no-warning
- struct MediumIntArray m;
- struct BigCharArray b;
- struct SmallCharArray s;
-};
-
-// Currently ignoring VLA padding problems. Still need to make sure we don't
-// choke on VLAs though
-struct HoldsVLA { // no-warning
- char c1;
- int x;
- char c2;
- int vla[];
-};
-
-// Currently ignoring bitfield padding problems. Still need to make sure we
-// don't choke on bitfields though
-struct HoldsBitfield { // no-warning
- char c1;
- int x;
- char c2;
- unsigned char b1 : 3;
- unsigned char b2 : 3;
- unsigned char b3 : 2;
-};
-
-typedef struct { // expected-warning{{Excessive padding in 'TypedefSandwich'}}
- char c1;
- int i;
- char c2;
-} TypedefSandwich;
-
-// expected-warning@+1{{Excessive padding in 'struct StructAttrAlign' (10 padding}}
-struct StructAttrAlign {
- char c1;
- int i;
- char c2;
-} __attribute__((aligned(8)));
-
-struct CorrectOverlyAlignedChar { // no-warning
- char c __attribute__((aligned(4096)));
- char c1;
- int x1;
- char c2;
- int x2;
- char c3;
-};
-
-struct OverlyAlignedChar { // expected-warning{{Excessive padding in 'struct OverlyAlignedChar'}}
- char c1;
- int x;
- char c2;
- char c __attribute__((aligned(4096)));
-};
-
-struct HoldsOverlyAlignedChar { // expected-warning{{Excessive padding in 'struct HoldsOverlyAlignedChar'}}
- char c1;
- struct OverlyAlignedChar o;
- char c2;
-};
-
-void internalStructFunc() {
- struct X { // expected-warning{{Excessive padding in 'struct X'}}
- char c1;
- int t;
- char c2;
- };
- struct X obj;
-}
-
-void typedefStructFunc() {
- typedef struct { // expected-warning{{Excessive padding in 'S'}}
- char c1;
- int t;
- char c2;
- } S;
- S obj;
-}
-
-void anonStructFunc() {
- struct { // expected-warning{{Excessive padding in 'struct (anonymous}}
- char c1;
- int t;
- char c2;
- } obj;
-}
-
-struct CorrectDefaultAttrAlign { // no-warning
- long long i;
- char c1;
- char c2;
-} __attribute__((aligned));
-
-struct TooSmallShortSandwich { // no-warning
- char c1;
- short s;
- char c2;
-};
-
-// expected-warning@+1{{Excessive padding in 'struct SmallArrayShortSandwich'}}
-struct SmallArrayShortSandwich {
- char c1;
- short s;
- char c2;
-} ShortArray[20];
-
-// expected-warning@+1{{Excessive padding in 'struct SmallArrayInFunc'}}
-struct SmallArrayInFunc {
- char c1;
- short s;
- char c2;
-};
-
-void arrayHolder() {
- struct SmallArrayInFunc Arr[15];
-}
-
-// xxxexpected-warning@+1{{Excessive padding in 'struct SmallArrayInStruct'}}
-struct SmallArrayInStruct {
- char c1;
- short s;
- char c2;
-};
-
-struct HoldsSmallArray {
- struct SmallArrayInStruct Field[20];
-} HoldsSmallArrayElt;
-
-void nestedPadding() {
- struct HoldsSmallArray Arr[15];
-}
diff --git a/test/Analysis/padding_cpp.cpp b/test/Analysis/padding_cpp.cpp
deleted file mode 100644
index ee49aea0c2be..000000000000
--- a/test/Analysis/padding_cpp.cpp
+++ /dev/null
@@ -1,202 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++14 -analyzer-checker=optin.performance -analyzer-config optin.performance.Padding:AllowedPad=2 -verify %s
-
-// Make sure that the C cases still work fine, even when compiled as C++.
-#include "padding_c.c"
-
-struct BigCharArray2 { // no-warning
- char c[129];
-};
-
-// xxxexpected-warning@+1{{Excessive padding in 'struct LowAlignmentBase'}}
-struct LowAlignmentBase : public BigCharArray2 {
- int i;
- char c;
-};
-
-struct CorrectLowAlignmentBase : public BigCharArray2 { // no-warning
- char c;
- int i;
-};
-
-// xxxexpected-warning@+1{{Excessive padding in 'struct LowAlignmentBase2'}}
-struct LowAlignmentBase2 : public BigCharArray2 {
- char c1;
- int i;
- char c2;
-};
-
-class PaddedA { // expected-warning{{Excessive padding in 'class PaddedA'}}
- char c1;
- int i;
- char c2;
-};
-
-class VirtualPaddedA : public PaddedA { // no-warning
- virtual void foo() {}
-};
-
-class VirtualIntSandwich { // expected-warning{{Excessive padding in 'class VirtualIntSandwich'}}
- virtual void foo() {}
- char c1;
- int i;
- char c2;
-};
-
-// constructed so as not to have tail padding
-class InnerPaddedB { // expected-warning{{Excessive padding in 'class InnerPaddedB'}}
- char c1;
- int i1;
- char c2;
- int i2;
-};
-
-class TailPaddedB { // expected-warning{{Excessive padding in 'class TailPaddedB'}}
- char c1;
- int i1;
- char c2;
-};
-
-class SI : public PaddedA { // no-warning
- char c;
-};
-
-class SI2 : public PaddedA { // xxxexpected-warning{{Excessive padding in 'class SI2'}}
- char c10;
- int i10;
- char c11;
-};
-
-class VirtualSI : virtual public PaddedA { // no-warning
- char c;
-};
-
-// currently not checked for
-class VirtualSI2 : virtual public PaddedA { // no-warning
- char c10;
- int i10;
- char c11;
-};
-
-class VtblSI : public PaddedA { // no-warning
- virtual void foo() {}
- char c;
-};
-
-class VtblSI2 : public PaddedA { // xxxexpected-warning{{Excessive padding in 'class VtblSI2'}}
- virtual void foo() {}
- char c10;
- int i10;
- char c11;
-};
-
-class VtblSI3 : public VirtualPaddedA { // xxxexpected-warning{{Excessive padding in 'class VtblSI3'}}
- char c10;
- int i10;
- char c11;
-};
-
-class MI : public PaddedA, public InnerPaddedB { // no-warning
- char c;
-};
-
-class MI2 : public PaddedA, public InnerPaddedB { // xxxexpected-warning{{Excessive padding in 'class MI2'}}
- char c10;
- int i10;
- char c11;
-};
-
-class VtblMI : public PaddedA, public InnerPaddedB { // xxxexpected-warning{{Excessive padding in 'class VtblMI'}}
- virtual void foo() {}
- char c10;
- int i10;
- char c11;
-};
-
-class VtblMI2 : public VirtualPaddedA, public InnerPaddedB { // xxxexpected-warning{{Excessive padding in 'class VtblMI2'}}
- char c10;
- int i10;
- char c11;
-};
-
-class Empty {}; // no-warning
-
-class LotsOfSpace { // expected-warning{{Excessive padding in 'class LotsOfSpace'}}
- Empty e1;
- int i;
- Empty e2;
-};
-
-class EBO1 : public Empty { // xxxexpected-warning{{Excessive padding in 'class EBO1'}}
- char c1;
- int i;
- char c2;
-};
-
-class EBO2 : public Empty { // xxxexpected-warning{{Excessive padding in 'class EBO2'}}
- Empty c1;
- int i;
- Empty c2;
-};
-
-template <typename T>
-class TemplateSandwich { // expected-warning{{Excessive padding in 'class TemplateSandwich<int>' instantiated here}}
- char c1;
- T t;
- char c2;
-};
-
-template <typename T>
-class TemplateSandwich<T *> { // expected-warning{{Excessive padding in 'class TemplateSandwich<void *>' instantiated here}}
- char c1;
- T *t;
- char c2;
-};
-
-template <>
-class TemplateSandwich<long long> { // expected-warning{{Excessive padding in 'class TemplateSandwich<long long>' (}}
- char c1;
- long long t;
- char c2;
-};
-
-class Holder1 { // no-warning
- TemplateSandwich<int> t1;
- TemplateSandwich<char> t2;
- TemplateSandwich<void *> t3;
-};
-
-typedef struct { // expected-warning{{Excessive padding in 'TypedefSandwich2'}}
- char c1;
- typedef struct { // expected-warning{{Excessive padding in 'TypedefSandwich2::NestedTypedef'}}
- char c1;
- int i;
- char c2;
- } NestedTypedef;
- NestedTypedef t;
- char c2;
-} TypedefSandwich2;
-
-template <typename T>
-struct Foo {
- // expected-warning@+1{{Excessive padding in 'struct Foo<int>::Nested'}}
- struct Nested {
- char c1;
- T t;
- char c2;
- };
-};
-
-struct Holder { // no-warning
- Foo<int>::Nested t1;
- Foo<char>::Nested t2;
-};
-
-struct GlobalsForLambda { // no-warning
- int i;
- char c1;
- char c2;
-} G;
-
-// expected-warning@+1{{Excessive padding in 'class (lambda}}
-auto lambda1 = [ c1 = G.c1, i = G.i, c2 = G.c2 ]{};
-auto lambda2 = [ i = G.i, c1 = G.c1, c2 = G.c2 ]{}; // no-warning
diff --git a/test/Analysis/padding_inherit.cpp b/test/Analysis/padding_inherit.cpp
deleted file mode 100644
index 2222c990a1dc..000000000000
--- a/test/Analysis/padding_inherit.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++14 -analyzer-checker=optin.performance -analyzer-config optin.performance.Padding:AllowedPad=20 -verify %s
-
-// A class that has no fields and one base class should visit that base class
-// instead. Note that despite having excess padding of 2, this is flagged
-// because of its usage in an array of 100 elements below (`ais').
-// TODO: Add a note to the bug report with BugReport::addNote() to mention the
-// variable using the class and also mention what class is inherting from what.
-// expected-warning@+1{{Excessive padding in 'struct FakeIntSandwich'}}
-struct FakeIntSandwich {
- char c1;
- int i;
- char c2;
-};
-
-struct AnotherIntSandwich : FakeIntSandwich { // no-warning
-};
-
-// But we don't yet support multiple base classes.
-struct IntSandwich {};
-struct TooManyBaseClasses : FakeIntSandwich, IntSandwich { // no-warning
-};
-
-AnotherIntSandwich ais[100];
-
-struct Empty {};
-struct DoubleEmpty : Empty { // no-warning
- Empty e;
-};
diff --git a/test/Analysis/padding_message.cpp b/test/Analysis/padding_message.cpp
deleted file mode 100644
index 4c7e06108154..000000000000
--- a/test/Analysis/padding_message.cpp
+++ /dev/null
@@ -1,311 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux -std=c++14 -analyzer-checker=optin.performance -analyzer-config optin.performance.Padding:AllowedPad=2 -verify %s
-
-// expected-warning@+7{{\
-Excessive padding in 'struct IntSandwich' (6 padding bytes, where 2 is optimal). \
-Optimal fields order: \
-i, \
-c1, \
-c2, \
-}}
-struct IntSandwich {
- char c1;
- int i;
- char c2;
-};
-
-// expected-warning@+7{{\
-Excessive padding in 'struct TurDuckHen' (6 padding bytes, where 2 is optimal). \
-Optimal fields order: \
-i, \
-c1, \
-c2, \
-}}
-struct TurDuckHen {
- char c1;
- struct IntSandwich i;
- char c2;
-};
-
-#pragma pack(push)
-#pragma pack(2)
-// expected-warning@+11{{\
-Excessive padding in 'struct SmallIntSandwich' (4 padding bytes, where 0 is optimal). \
-Optimal fields order: \
-i1, \
-i2, \
-i3, \
-c1, \
-c2, \
-c3, \
-c4, \
-}}
-struct SmallIntSandwich {
- char c1;
- int i1;
- char c2;
- int i2;
- char c3;
- int i3;
- char c4;
-};
-#pragma pack(pop)
-
-union SomeUnion { // no-warning
- char c;
- short s;
- int i;
-};
-
-// expected-warning@+7{{\
-Excessive padding in 'struct HoldsAUnion' (6 padding bytes, where 2 is optimal). \
-Optimal fields order: \
-u, \
-c1, \
-c2, \
-}}
-struct HoldsAUnion {
- char c1;
- union SomeUnion u;
- char c2;
-};
-
-struct SmallCharArray { // no-warning
- char c[5];
-};
-
-struct MediumIntArray { // no-warning
- int i[5];
-};
-
-// expected-warning@+7{{\
-Excessive padding in 'struct StructSandwich' (6 padding bytes, where 2 is optimal). \
-Optimal fields order: \
-m, \
-s, \
-s2, \
-}}
-struct StructSandwich {
- struct SmallCharArray s;
- struct MediumIntArray m;
- struct SmallCharArray s2;
-};
-
-// expected-warning@+7{{\
-Excessive padding in 'TypedefSandwich' (6 padding bytes, where 2 is optimal). \
-Optimal fields order: \
-i, \
-c1, \
-c2, \
-}}
-typedef struct {
- char c1;
- int i;
- char c2;
-} TypedefSandwich;
-
-// expected-warning@+7{{\
-Excessive padding in 'struct StructAttrAlign' (10 padding bytes, where 2 is optimal). \
-Optimal fields order: \
-i, \
-c1, \
-c2, \
-}}
-struct StructAttrAlign {
- char c1;
- int i;
- char c2;
-} __attribute__((aligned(8)));
-
-// expected-warning@+8{{\
-Excessive padding in 'struct OverlyAlignedChar' (8185 padding bytes, where 4089 is optimal). \
-Optimal fields order: \
-c, \
-c1, \
-c2, \
-x, \
-}}
-struct OverlyAlignedChar {
- char c1;
- int x;
- char c2;
- char c __attribute__((aligned(4096)));
-};
-
-// expected-warning@+7{{\
-Excessive padding in 'struct HoldsOverlyAlignedChar' (8190 padding bytes, where 4094 is optimal). \
-Optimal fields order: \
-o, \
-c1, \
-c2, \
-}}
-struct HoldsOverlyAlignedChar {
- char c1;
- struct OverlyAlignedChar o;
- char c2;
-};
-
-void internalStructFunc() {
- // expected-warning@+7{{\
-Excessive padding in 'struct X' (6 padding bytes, where 2 is optimal). \
-Optimal fields order: \
-t, \
-c1, \
-c2, \
-}}
- struct X {
- char c1;
- int t;
- char c2;
- };
- struct X obj;
-}
-
-void typedefStructFunc() {
- // expected-warning@+7{{\
-Excessive padding in 'S' (6 padding bytes, where 2 is optimal). \
-Optimal fields order: \
-t, \
-c1, \
-c2, \
-}}
- typedef struct {
- char c1;
- int t;
- char c2;
- } S;
- S obj;
-}
-
-// expected-warning@+7{{\
-Excessive padding in 'struct DefaultAttrAlign' (22 padding bytes, where 6 is optimal). \
-Optimal fields order: \
-i, \
-c1, \
-c2, \
-}}
-struct DefaultAttrAlign {
- char c1;
- long long i;
- char c2;
-} __attribute__((aligned));
-
-// expected-warning@+7{{\
-Excessive padding in 'struct SmallArrayShortSandwich' (2 padding bytes, where 0 is optimal). \
-Optimal fields order: \
-s, \
-c1, \
-c2, \
-}}
-struct SmallArrayShortSandwich {
- char c1;
- short s;
- char c2;
-} ShortArray[20];
-
-// expected-warning@+7{{\
-Excessive padding in 'struct SmallArrayInFunc' (2 padding bytes, where 0 is optimal). \
-Optimal fields order: \
-s, \
-c1, \
-c2, \
-}}
-struct SmallArrayInFunc {
- char c1;
- short s;
- char c2;
-};
-
-void arrayHolder() {
- struct SmallArrayInFunc Arr[15];
-}
-
-// expected-warning@+7{{\
-Excessive padding in 'class VirtualIntSandwich' (10 padding bytes, where 2 is optimal). \
-Optimal fields order: \
-i, \
-c1, \
-c2, \
-}}
-class VirtualIntSandwich {
- virtual void foo() {}
- char c1;
- int i;
- char c2;
-};
-
-// constructed so as not to have tail padding
-// expected-warning@+8{{\
-Excessive padding in 'class InnerPaddedB' (6 padding bytes, where 2 is optimal). \
-Optimal fields order: \
-i1, \
-i2, \
-c1, \
-c2, \
-}}
-class InnerPaddedB {
- char c1;
- int i1;
- char c2;
- int i2;
-};
-
-class Empty {}; // no-warning
-
-// expected-warning@+7{{\
-Excessive padding in 'class LotsOfSpace' (6 padding bytes, where 2 is optimal). \
-Optimal fields order: \
-i, \
-e1, \
-e2, \
-}}
-class LotsOfSpace {
- Empty e1;
- int i;
- Empty e2;
-};
-
-// expected-warning@+7{{\
-Excessive padding in 'TypedefSandwich2' (6 padding bytes, where 2 is optimal). \
-Optimal fields order: \
-t, \
-c1, \
-c2, \
-}}
-typedef struct {
- char c1;
- // expected-warning@+7{{\
-Excessive padding in 'TypedefSandwich2::NestedTypedef' (6 padding bytes, where 2 is optimal). \
-Optimal fields order: \
-i, \
-c1, \
-c2, \
-}}
- typedef struct {
- char c1;
- int i;
- char c2;
- } NestedTypedef;
- NestedTypedef t;
- char c2;
-} TypedefSandwich2;
-
-template <typename T>
-struct Foo {
- // expected-warning@+7{{\
-Excessive padding in 'struct Foo<int>::Nested' (6 padding bytes, where 2 is optimal). \
-Optimal fields order: \
-t, \
-c1, \
-c2, \
-}}
- struct Nested {
- char c1;
- T t;
- char c2;
- };
-};
-
-struct Holder { // no-warning
- Foo<int>::Nested t1;
- Foo<char>::Nested t2;
-};
diff --git a/test/Analysis/plist-diagnostics-template-function.cpp b/test/Analysis/plist-diagnostics-template-function.cpp
deleted file mode 100644
index 1f44a789cc92..000000000000
--- a/test/Analysis/plist-diagnostics-template-function.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-output=plist -o %t.plist -std=c++11 -analyzer-checker=core %s
-// RUN: FileCheck --input-file=%t.plist %s
-
-bool ret();
-
-template <class T>
-void f(int i) {
- if (ret())
- i = i / (i - 5);
-}
-
-template <>
-void f<int>(int i) {
- if (ret())
- i = i / (i - 5);
-}
-
-template <int N = 0>
-void defaultTemplateParameterFunction(int i) {
- if (ret())
- int a = 10 / i;
-}
-
-template <typename... Args>
-void variadicTemplateFunction(int i) {
- if (ret())
- int a = 10 / i;
-}
-
-int main() {
- f<int>(5);
- f<float>(5);
- defaultTemplateParameterFunction<>(0);
- variadicTemplateFunction<char, float, double, int *>(0);
-}
-
-// CHECK: <string>Calling &apos;f&lt;float&gt;&apos;</string>
-// CHECK: <string>Calling &apos;f&lt;int&gt;&apos;</string>
-// CHECK: <string>Calling &apos;defaultTemplateParameterFunction&lt;0&gt;&apos;</string>
-// CHECK: <string>Calling &apos;variadicTemplateFunction&lt;char, float, double, int *&gt;&apos;</string>
-
diff --git a/test/Analysis/plist-diagnostics-template-record.cpp b/test/Analysis/plist-diagnostics-template-record.cpp
deleted file mode 100644
index ffd6d0308836..000000000000
--- a/test/Analysis/plist-diagnostics-template-record.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-output=plist -o %t.plist -std=c++11 -analyzer-checker=core %s
-// RUN: FileCheck --input-file=%t.plist %s
-
-bool ret();
-
-template <class A, class B, class C, int N>
-struct DivByZero {
- int i;
- DivByZero(bool b) {
- if (ret())
- i = 50 / (b - 1);
- }
-};
-
-template <class B, class C, int N>
-struct DivByZero<char, B, C, N> {
- int i;
- DivByZero(bool b) {
- if (ret())
- i = 50 / (b - 1);
- }
-};
-
-template <typename... Args>
-struct DivByZeroVariadic {
- int i;
- DivByZeroVariadic(bool b) {
- if (ret())
- i = 50 / (b - 1);
- }
-};
-
-int main() {
- DivByZero<int, float, double, 0> a(1);
- DivByZero<char, float, double, 0> a2(1);
- DivByZeroVariadic<char, float, double, decltype(nullptr)> a3(1);
-}
-
-// CHECK: <string>Calling constructor for &apos;DivByZero&lt;int, float, double, 0&gt;&apos;</string>
-// CHECK: <string>Calling constructor for &apos;DivByZero&lt;char, float, double, 0&gt;&apos;</string>
-// CHECK: <string>Calling constructor for &apos;DivByZeroVariadic&lt;char, float, double, nullptr_t&gt;&apos;</string>
-
diff --git a/test/Analysis/plist-html-macros.c b/test/Analysis/plist-html-macros.c
deleted file mode 100644
index c25346d99a6d..000000000000
--- a/test/Analysis/plist-html-macros.c
+++ /dev/null
@@ -1,30 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-// (sanity check)
-
-// RUN: rm -rf %t.dir
-// RUN: mkdir -p %t.dir
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=plist-html -o %t.dir/index.plist %s
-// RUN: ls %t.dir | grep '\.html' | count 1
-// RUN: grep '\.html' %t.dir/index.plist | count 1
-
-// This tests two things: that the two calls to null_deref below are coalesced
-// into a single bug by both the plist and HTML diagnostics, and that the plist
-// diagnostics have a reference to the HTML diagnostics. (It would be nice to
-// check more carefully that the two actually match, but that's hard to write
-// in a lit RUN line.)
-
-#define CALL_FN(a) null_deref(a)
-
-void null_deref(int *a) {
- if (a)
- return;
- *a = 1; // expected-warning{{null}}
-}
-
-void test1() {
- CALL_FN(0);
-}
-
-void test2(int *p) {
- CALL_FN(p);
-}
diff --git a/test/Analysis/plist-macros-with-expansion.cpp b/test/Analysis/plist-macros-with-expansion.cpp
deleted file mode 100644
index c3175a332115..000000000000
--- a/test/Analysis/plist-macros-with-expansion.cpp
+++ /dev/null
@@ -1,442 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-//
-// RUN: %clang_analyze_cc1 -analyzer-checker=core %s \
-// RUN: -analyzer-output=plist -o %t.plist \
-// RUN: -analyzer-config expand-macros=true
-//
-// Check the actual plist output.
-// RUN: cat %t.plist | %diff_plist \
-// RUN: %S/Inputs/expected-plists/plist-macros-with-expansion.cpp.plist -
-//
-// Check the macro expansions from the plist output here, to make the test more
-// understandable.
-// RUN: FileCheck --input-file=%t.plist %s
-
-void print(const void*);
-
-//===----------------------------------------------------------------------===//
-// Tests for non-function-like macro expansions.
-//===----------------------------------------------------------------------===//
-
-#define SET_PTR_VAR_TO_NULL \
- ptr = 0
-
-void nonFunctionLikeMacroTest() {
- int *ptr;
- SET_PTR_VAR_TO_NULL;
- *ptr = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>SET_PTR_VAR_TO_NULL</string>
-// CHECK-NEXT: <key>expansion</key><string>ptr = 0</string>
-
-#define NULL 0
-#define SET_PTR_VAR_TO_NULL_WITH_NESTED_MACRO \
- ptr = NULL
-
-void nonFunctionLikeNestedMacroTest() {
- int *ptr;
- SET_PTR_VAR_TO_NULL_WITH_NESTED_MACRO;
- *ptr = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>SET_PTR_VAR_TO_NULL_WITH_NESTED_MACRO</string>
-// CHECK-NEXT: <key>expansion</key><string>ptr =0</string>
-
-//===----------------------------------------------------------------------===//
-// Tests for function-like macro expansions.
-//===----------------------------------------------------------------------===//
-
-void setToNull(int **vptr) {
- *vptr = nullptr;
-}
-
-#define TO_NULL(x) \
- setToNull(x)
-
-void functionLikeMacroTest() {
- int *ptr;
- TO_NULL(&ptr);
- *ptr = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>TO_NULL</string>
-// CHECK-NEXT: <key>expansion</key><string>setToNull(&amp;ptr)</string>
-
-#define DOES_NOTHING(x) \
- { \
- int b; \
- b = 5; \
- } \
- print(x)
-
-#define DEREF(x) \
- DOES_NOTHING(x); \
- *x
-
-void functionLikeNestedMacroTest() {
- int *a;
- TO_NULL(&a);
- DEREF(a) = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>TO_NULL</string>
-// CHECK-NEXT: <key>expansion</key><string>setToNull(&amp;a)</string>
-
-// CHECK: <key>name</key><string>DEREF</string>
-// CHECK-NEXT: <key>expansion</key><string>{ int b; b = 5; } print(a); *a</string>
-
-//===----------------------------------------------------------------------===//
-// Tests for undefining and/or redifining macros.
-//===----------------------------------------------------------------------===//
-
-#define WILL_UNDEF_SET_NULL_TO_PTR(ptr) \
- ptr = nullptr;
-
-void undefinedMacroByTheEndOfParsingTest() {
- int *ptr;
- WILL_UNDEF_SET_NULL_TO_PTR(ptr);
- *ptr = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-#undef WILL_UNDEF_SET_NULL_TO_PTR
-
-// CHECK: <key>name</key><string>WILL_UNDEF_SET_NULL_TO_PTR</string>
-// CHECK-NEXT: <key>expansion</key><string>ptr = nullptr;</string>
-
-#define WILL_REDIFINE_MULTIPLE_TIMES_SET_TO_NULL(ptr) \
- /* Nothing */
-#undef WILL_REDIFINE_MULTIPLE_TIMES_SET_TO_NULL
-#define WILL_REDIFINE_MULTIPLE_TIMES_SET_TO_NULL(ptr) \
- ptr = nullptr;
-
-void macroRedefinedMultipleTimesTest() {
- int *ptr;
- WILL_REDIFINE_MULTIPLE_TIMES_SET_TO_NULL(ptr)
- *ptr = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-#undef WILL_REDIFINE_MULTIPLE_TIMES_SET_TO_NULL
-#define WILL_REDIFINE_MULTIPLE_TIMES_SET_TO_NULL(ptr) \
- print("This string shouldn't be in the plist file at all. Or anywhere, " \
- "but here.");
-
-// CHECK: <key>name</key><string>WILL_REDIFINE_MULTIPLE_TIMES_SET_TO_NULL</string>
-// CHECK-NEXT: <key>expansion</key><string>ptr = nullptr;</string>
-
-#define WILL_UNDEF_SET_NULL_TO_PTR_2(ptr) \
- ptr = nullptr;
-
-#define PASS_PTR_TO_MACRO_THAT_WILL_BE_UNDEFD(ptr) \
- WILL_UNDEF_SET_NULL_TO_PTR_2(ptr)
-
-void undefinedMacroInsideAnotherMacroTest() {
- int *ptr;
- PASS_PTR_TO_MACRO_THAT_WILL_BE_UNDEFD(ptr);
- *ptr = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// TODO: Expand arguments.
-// CHECK: <key>name</key><string>PASS_PTR_TO_MACRO_THAT_WILL_BE_UNDEFD</string>
-// CHECK-NEXT: <key>expansion</key><string>ptr = nullptr;</string>
-
-#undef WILL_UNDEF_SET_NULL_TO_PTR_2
-
-//===----------------------------------------------------------------------===//
-// Tests for macro arguments containing commas and parantheses.
-//
-// As of writing these tests, the algorithm expands macro arguments by lexing
-// the macro's expansion location, and relies on finding tok::comma and
-// tok::l_paren/tok::r_paren.
-//===----------------------------------------------------------------------===//
-
-// Note that this commas, parantheses in strings aren't parsed as tok::comma or
-// tok::l_paren/tok::r_paren, but why not test them.
-
-#define TO_NULL_AND_PRINT(x, str) \
- x = 0; \
- print(str)
-
-void macroArgContainsCommaInStringTest() {
- int *a;
- TO_NULL_AND_PRINT(a, "Will this , cause a crash?");
- *a = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>TO_NULL_AND_PRINT</string>
-// CHECK-NEXT: <key>expansion</key><string>a = 0; print( &quot;Will this , cause a crash?&quot;)</string>
-
-void macroArgContainsLParenInStringTest() {
- int *a;
- TO_NULL_AND_PRINT(a, "Will this ( cause a crash?");
- *a = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>TO_NULL_AND_PRINT</string>
-// CHECK-NEXT: <key>expansion</key><string>a = 0; print( &quot;Will this ( cause a crash?&quot;)</string>
-
-void macroArgContainsRParenInStringTest() {
- int *a;
- TO_NULL_AND_PRINT(a, "Will this ) cause a crash?");
- *a = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>TO_NULL_AND_PRINT</string>
-// CHECK-NEXT: <key>expansion</key><string>a = 0; print( &quot;Will this ) cause a crash?&quot;)</string>
-
-#define CALL_FUNCTION(funcCall) \
- funcCall
-
-// Function calls do contain both tok::comma and tok::l_paren/tok::r_paren.
-
-void macroArgContainsLParenRParenTest() {
- int *a;
- CALL_FUNCTION(setToNull(&a));
- *a = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>CALL_FUNCTION</string>
-// CHECK-NEXT: <key>expansion</key><string>setToNull(&amp;a)</string>
-
-void setToNullAndPrint(int **vptr, const char *str) {
- setToNull(vptr);
- print(str);
-}
-
-void macroArgContainsCommaLParenRParenTest() {
- int *a;
- CALL_FUNCTION(setToNullAndPrint(&a, "Hello!"));
- *a = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>CALL_FUNCTION</string>
-// CHECK-NEXT: <key>expansion</key><string>setToNullAndPrint(&amp;a, &quot;Hello!&quot;)</string>
-
-#define CALL_FUNCTION_WITH_TWO_PARAMS(funcCall, param1, param2) \
- funcCall(param1, param2)
-
-void macroArgContainsCommaLParenRParenTest2() {
- int *a;
- CALL_FUNCTION_WITH_TWO_PARAMS(setToNullAndPrint, &a, "Hello!");
- *a = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>CALL_FUNCTION_WITH_TWO_PARAMS</string>
-// CHECK-NEXT: <key>expansion</key><string>setToNullAndPrint( &amp;a, &quot;Hello!&quot;)</string>
-
-#define CALL_LAMBDA(l) \
- l()
-
-void commaInBracketsTest() {
- int *ptr;
- const char str[] = "Hello!";
- // You need to add parantheses around a lambda expression to compile this,
- // else the comma in the capture will be parsed as divider of macro args.
- CALL_LAMBDA(([&ptr, str] () mutable { TO_NULL(&ptr); }));
- *ptr = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>CALL_LAMBDA</string>
-// CHECK-NEXT: <key>expansion</key><string>([&amp;ptr, str] () mutable { setToNull(&amp;ptr); })()</string>
-
-#define PASTE_CODE(code) \
- code
-
-void commaInBracesTest() {
- PASTE_CODE({ // expected-warning{{Dereference of null pointer}}
- // NOTE: If we were to add a new variable here after a comma, we'd get a
- // compilation error, so this test is mainly here to show that this was also
- // investigated.
-
- // int *ptr = nullptr, a;
- int *ptr = nullptr;
- *ptr = 5;
- })
-}
-
-// CHECK: <key>name</key><string>PASTE_CODE</string>
-// CHECK-NEXT: <key>expansion</key><string>{ int *ptr = nullptr; *ptr = 5; }</string>
-
-// Example taken from
-// https://gcc.gnu.org/onlinedocs/cpp/Macro-Arguments.html#Macro-Arguments.
-
-#define POTENTIALLY_EMPTY_PARAM(x, y) \
- x; \
- y = nullptr
-
-void emptyParamTest() {
- int *ptr;
-
- POTENTIALLY_EMPTY_PARAM(,ptr);
- *ptr = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>POTENTIALLY_EMPTY_PARAM</string>
-// CHECK-NEXT: <key>expansion</key><string>;ptr = nullptr</string>
-
-#define NESTED_EMPTY_PARAM(a, b) \
- POTENTIALLY_EMPTY_PARAM(a, b);
-
-
-void nestedEmptyParamTest() {
- int *ptr;
-
- NESTED_EMPTY_PARAM(, ptr);
- *ptr = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>NESTED_EMPTY_PARAM</string>
-// CHECK-NEXT: <key>expansion</key><string>; ptr = nullptr;</string>
-
-#define CALL_FUNCTION_WITH_ONE_PARAM_THROUGH_MACRO(func, param) \
- CALL_FUNCTION(func(param))
-
-void lParenRParenInNestedMacro() {
- int *ptr;
- CALL_FUNCTION_WITH_ONE_PARAM_THROUGH_MACRO(setToNull, &ptr);
- *ptr = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>CALL_FUNCTION_WITH_ONE_PARAM_THROUGH_MACRO</string>
-// CHECK-NEXT: <key>expansion</key><string>setToNull( &amp;ptr)</string>
-
-//===----------------------------------------------------------------------===//
-// Tests for variadic macro arguments.
-//===----------------------------------------------------------------------===//
-
-template <typename ...Args>
-void variadicFunc(Args ...args);
-
-#define VARIADIC_SET_TO_NULL(ptr, ...) \
- ptr = nullptr; \
- variadicFunc(__VA_ARGS__)
-
-void variadicMacroArgumentTest() {
- int *ptr;
- VARIADIC_SET_TO_NULL(ptr, 1, 5, "haha!");
- *ptr = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>VARIADIC_SET_TO_NULL</string>
-// CHECK-NEXT: <key>expansion</key><string>ptr = nullptr; variadicFunc( 1, 5, &quot;haha!&quot;)</string>
-
-void variadicMacroArgumentWithoutAnyArgumentTest() {
- int *ptr;
- // Not adding a single parameter to ... is silly (and also causes a
- // preprocessor warning), but is not an excuse to crash on it.
- VARIADIC_SET_TO_NULL(ptr);
- *ptr = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>VARIADIC_SET_TO_NULL</string>
-// CHECK-NEXT: <key>expansion</key><string>ptr = nullptr; variadicFunc()</string>
-
-//===----------------------------------------------------------------------===//
-// Tests for # and ##.
-//===----------------------------------------------------------------------===//
-
-#define DECLARE_FUNC_AND_SET_TO_NULL(funcName, ptr) \
- void generated_##funcName(); \
- ptr = nullptr;
-
-void hashHashOperatorTest() {
- int *ptr;
- DECLARE_FUNC_AND_SET_TO_NULL(whatever, ptr);
- *ptr = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>DECLARE_FUNC_AND_SET_TO_NULL</string>
-// CHECK-NEXT: <key>expansion</key><string>void generated_whatever(); ptr = nullptr;</string>
-
-void macroArgContainsHashHashInStringTest() {
- int *a;
- TO_NULL_AND_PRINT(a, "Will this ## cause a crash?");
- *a = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>TO_NULL_AND_PRINT</string>
-// CHECK-NEXT: <key>expansion</key><string>a = 0; print( &quot;Will this ## cause a crash?&quot;)</string>
-
-#define PRINT_STR(str, ptr) \
- print(#str); \
- ptr = nullptr
-
-void hashOperatorTest() {
- int *ptr;
- PRINT_STR(Hello, ptr);
- *ptr = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>PRINT_STR</string>
-// CHECK-NEXT: <key>expansion</key><string>print(&quot;Hello&quot;); ptr = nullptr</string>
-
-void macroArgContainsHashInStringTest() {
- int *a;
- TO_NULL_AND_PRINT(a, "Will this # cause a crash?");
- *a = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-// CHECK: <key>name</key><string>TO_NULL_AND_PRINT</string>
-// CHECK-NEXT: <key>expansion</key><string>a = 0; print( &quot;Will this # cause a crash?&quot;)</string>
-
-//===----------------------------------------------------------------------===//
-// Tests for more complex macro expansions.
-//
-// We won't cover anything that wasn't covered up to this point, but rather
-// show more complex, macros with deeper nesting, more arguments (some unused)
-// and so on.
-//===----------------------------------------------------------------------===//
-
-#define IF(Condition) \
- if ( Condition )
-
-#define L_BRACE {
-#define R_BRACE }
-#define LESS <
-#define GREATER >
-#define EQUALS =
-#define SEMICOLON ;
-#define NEGATIVE -
-#define RETURN return
-#define ZERO 0
-
-#define EUCLIDEAN_ALGORITHM(A, B) \
- IF(A LESS ZERO) L_BRACE \
- A EQUALS NEGATIVE A SEMICOLON \
- R_BRACE \
- IF(B LESS ZERO) L_BRACE \
- B EQUALS NEGATIVE B SEMICOLON \
- R_BRACE \
- \
- /* This is where a while loop would be, but that seems to be too complex */ \
- /* for the analyzer just yet. Let's just pretend that this algorithm */ \
- /* works. */ \
- \
- RETURN B / (B - B) SEMICOLON
-
-int getLowestCommonDenominator(int A, int B) {
- EUCLIDEAN_ALGORITHM(A, B) // expected-warning{{Division by zero}}
-}
-
-void testVeryComplexAlgorithm() {
- int tmp = 8 / (getLowestCommonDenominator(5, 7) - 1);
- print(&tmp);
-}
-// CHECK: <key>name</key><string>EUCLIDEAN_ALGORITHM</string>
-// CHECK-NEXT: <key>expansion</key><string>if (A&lt;0 ){A=-A;} if ( B&lt;0 ){ B=- B;}return B / ( B - B);</string>
-
-#define YET_ANOTHER_SET_TO_NULL(x, y, z) \
- print((void *) x); \
- print((void *) y); \
- z = nullptr;
-
-#define DO_NOTHING(str) str
-#define DO_NOTHING2(str2) DO_NOTHING(str2)
-
-void test() {
- int *ptr;
- YET_ANOTHER_SET_TO_NULL(5, DO_NOTHING2("Remember the Vasa"), ptr);
- *ptr = 5; // expected-warning{{Dereference of null pointer}}
-}
-// CHECK: <key>name</key><string>YET_ANOTHER_SET_TO_NULL</string>
-// CHECK-NEXT: <key>expansion</key><string>print((void *)5); print((void *)&quot;Remember the Vasa&quot;); ptr = nullptr;</string>
diff --git a/test/Analysis/plist-macros.cpp b/test/Analysis/plist-macros.cpp
deleted file mode 100644
index 3eb604e2edd5..000000000000
--- a/test/Analysis/plist-macros.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix -analyzer-output=plist-multi-file %s -o %t.plist
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/plist-macros.cpp.plist -
-
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-
-#define mallocmemory int *x = (int*)malloc(12);
-void noteOnMacro(int y) {
- y++;
- y--;
- mallocmemory
- y++;
- y++;
- delete x; // expected-warning {{Memory allocated by malloc() should be deallocated by free(), not 'delete'}}
-}
-
-void macroIsFirstInFunction(int y) {
- mallocmemory
- y++; // expected-warning {{Potential leak of memory pointed to by 'x'}}
-}
-
-#define checkmacro p==0
-void macroInExpressionAux(bool b);
-int macroInExpression(int *p, int y) {;
- y++;
- macroInExpressionAux(checkmacro);
-
- return *p; // expected-warning {{Dereference of null pointer}}
-}
-
-#define noPathNoteMacro y+y
-int macroInExpressionNoNote(int *p, int y) {;
- y++;
- if (5 + noPathNoteMacro)
- if (p)
- ;
- return *p; // expected-warning {{Dereference of null pointer}}
-}
-
-#define macroWithArg(mp) mp==0
-int macroWithArgInExpression(int *p, int y) {;
- y++;
- if (macroWithArg(p))
- ;
- return *p; // expected-warning {{Dereference of null pointer}}
-}
-
-#define multiNoteMacroWithError \
- if (p) \
- ;\
- *p = 5;
-int useMultiNoteMacroWithError(int *p, int y) {;
- y++;
- multiNoteMacroWithError // expected-warning {{Dereference of null pointer}}
-
- return *p;
-}
-
-#define multiNoteMacro \
-if (p) \
- ;\
-if (y) \
- ;
-int useMultiNote(int *p, int y) {;
- y++;
- if (p) {}
- multiNoteMacro
-
- return *p; // expected-warning {{Dereference of null pointer}}
-}
-
-#define CALL_FN(a) null_deref(a)
-
-void null_deref(int *a) {
- if (a)
- return;
- *a = 1; // expected-warning {{Dereference of null pointer}}
-}
-
-void test1() {
- CALL_FN(0);
-}
-
-void test2(int *p) {
- CALL_FN(p);
-}
diff --git a/test/Analysis/plist-output-alternate.m b/test/Analysis/plist-output-alternate.m
deleted file mode 100644
index 525f738dc7b7..000000000000
--- a/test/Analysis/plist-output-alternate.m
+++ /dev/null
@@ -1,59 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -fblocks -analyzer-output=plist -o %t %s
-// RUN: cat %t | %diff_plist %S/Inputs/expected-plists/plist-output-alternate.m.plist -
-
-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;
-}
-
-// <rdar://problem/8331641> leak reports should not show paths that end with exit() (but ones that don't end with exit())
-void panic() __attribute__((noreturn));
-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 const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-typedef signed long CFIndex;
-typedef CFIndex CFNumberType;
-typedef const struct __CFNumber * CFNumberRef;
-
-extern CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-
-void rdar8331641(int x) {
- signed z = 1;
- CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z); // expected-warning{{leak}}
- if (x)
- panic();
- (void) value;
-}
-
diff --git a/test/Analysis/plist-output.m b/test/Analysis/plist-output.m
deleted file mode 100644
index 21602fc47224..000000000000
--- a/test/Analysis/plist-output.m
+++ /dev/null
@@ -1,196 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-config eagerly-assume=false %s -analyzer-checker=osx.cocoa.RetainCount,deadcode.DeadStores,core -analyzer-output=plist -o %t.plist
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/plist-output.m.plist -
-
-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;
-}
-
-// The following previously crashed when generating extensive diagnostics.
-// <rdar://problem/10797980>
-@interface RDar10797980_help
-@property (readonly) int x;
-@end
-
-@interface RDar10797980 {
- 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
-
-// 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 *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 == 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 *p = 0;
- int i = 0;
- while (i < 2) {
- ++i;
- p = 0;
- }
- *p = 1;
-}
-
-void test_loop_fast_enumeration(id arr) {
- int x;
- for (id obj in arr) {
- x = 1;
- }
- x += 1;
-}
-
-@interface RDar12114812 { 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);
-}
-
-@interface Foo
-- (int *) returnsPointer;
-@end
-
-int testFoo(Foo *x) {
- if (x)
- return 1;
- return *[x returnsPointer];
-}
-
diff --git a/test/Analysis/plist-stats-output.c b/test/Analysis/plist-stats-output.c
deleted file mode 100644
index cab9523d79bc..000000000000
--- a/test/Analysis/plist-stats-output.c
+++ /dev/null
@@ -1,17 +0,0 @@
-// RUN: %clang_analyze_cc1 %s -analyzer-checker=core -analyzer-output=plist -analyzer-config serialize-stats=true -o %t.plist
-// REQUIRES: asserts
-// RUN: FileCheck --input-file=%t.plist %s
-
-int foo() {}
-
-
-// CHECK: <key>diagnostics</key>
-// CHECK-NEXT: <array>
-// CHECK-NEXT: </array>
-// CHECK-NEXT: <key>files</key>
-// CHECK-NEXT: <array>
-// CHECK-NEXT: </array>
-// CHECK-NEXT: <key>statistics</key>
-// CHECK-NEXT: <string>{
-// CHECK: }
-// CHECK-NEXT: </string>
diff --git a/test/Analysis/pointer-arithmetic.c b/test/Analysis/pointer-arithmetic.c
deleted file mode 100644
index 575dfffc01e8..000000000000
--- a/test/Analysis/pointer-arithmetic.c
+++ /dev/null
@@ -1,30 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-
-int test1() {
- int *p = (int *)sizeof(int);
- p -= 1;
- return *p; // expected-warning {{Dereference of null pointer}}
-}
-
-int test2() {
- int *p = (int *)sizeof(int);
- p -= 2;
- p += 1;
- return *p; // expected-warning {{Dereference of null pointer}}
-}
-
-int test3() {
- int *p = (int *)sizeof(int);
- p++;
- p--;
- p--;
- return *p; // expected-warning {{Dereference of null pointer}}
-}
-
-int test4() {
- // This is a special case where pointer arithmetic is not calculated to
- // preserve useful warnings on dereferences of null pointers.
- int *p = 0;
- p += 1;
- return *p; // expected-warning {{Dereference of null pointer}}
-}
diff --git a/test/Analysis/pointer-to-member.cpp b/test/Analysis/pointer-to-member.cpp
deleted file mode 100644
index 65882527d2da..000000000000
--- a/test/Analysis/pointer-to-member.cpp
+++ /dev/null
@@ -1,271 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(bool);
-
-struct A {
- // This conversion operator allows implicit conversion to bool but not to other integer types.
- typedef A * (A::*MemberPointer);
- operator MemberPointer() const { return m_ptr ? &A::m_ptr : 0; }
-
- A *m_ptr;
-
- A *getPtr();
- typedef A * (A::*MemberFnPointer)(void);
-};
-
-void testConditionalUse() {
- A obj;
-
- obj.m_ptr = &obj;
- clang_analyzer_eval(obj.m_ptr); // expected-warning{{TRUE}}
- clang_analyzer_eval(&A::m_ptr); // expected-warning{{TRUE}}
- clang_analyzer_eval(obj); // expected-warning{{TRUE}}
-
- obj.m_ptr = 0;
- clang_analyzer_eval(obj.m_ptr); // expected-warning{{FALSE}}
- clang_analyzer_eval(A::MemberPointer(0)); // expected-warning{{FALSE}}
- clang_analyzer_eval(obj); // expected-warning{{FALSE}}
-
- clang_analyzer_eval(&A::getPtr); // expected-warning{{TRUE}}
- clang_analyzer_eval(A::MemberFnPointer(0)); // expected-warning{{FALSE}}
-}
-
-
-void testComparison() {
- clang_analyzer_eval(&A::getPtr == &A::getPtr); // expected-warning{{TRUE}}
- clang_analyzer_eval(&A::getPtr == 0); // expected-warning{{FALSE}}
-
- clang_analyzer_eval(&A::m_ptr == &A::m_ptr); // expected-warning{{TRUE}}
-}
-
-namespace PR15742 {
- template <class _T1, class _T2> struct A {
- A (const _T1 &, const _T2 &);
- };
-
- typedef void *NPIdentifier;
-
- template <class T> class B {
- public:
- typedef A<NPIdentifier, bool (T::*) (const NPIdentifier *, unsigned,
- NPIdentifier *)> MethodMapMember;
- };
-
- class C : public B<C> {
- public:
- bool Find(const NPIdentifier *, unsigned, NPIdentifier *);
- };
-
- void InitStaticData () {
- C::MethodMapMember(0, &C::Find); // don't crash
- }
-}
-
-bool testDereferencing() {
- A obj;
- obj.m_ptr = 0;
-
- A::MemberPointer member = &A::m_ptr;
-
- clang_analyzer_eval(obj.*member == 0); // expected-warning{{TRUE}}
-
- member = 0;
-
- return obj.*member; // expected-warning{{The result of the '.*' expression is undefined}}
-}
-
-namespace testPointerToMemberFunction {
- struct A {
- virtual int foo() { return 1; }
- int bar() { return 2; }
- int static staticMemberFunction(int p) { return p + 1; };
- };
-
- struct B : public A {
- virtual int foo() { return 3; }
- };
-
- typedef int (A::*AFnPointer)();
- typedef int (B::*BFnPointer)();
-
- void testPointerToMemberCasts() {
- AFnPointer AFP = &A::bar;
- BFnPointer StaticCastedBase2Derived = static_cast<BFnPointer>(&A::bar),
- CCastedBase2Derived = (BFnPointer) (&A::bar);
- A a;
- B b;
-
- clang_analyzer_eval((a.*AFP)() == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval((b.*StaticCastedBase2Derived)() == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(((b.*CCastedBase2Derived)() == 2)); // expected-warning{{TRUE}}
- }
-
- void testPointerToMemberVirtualCall() {
- A a;
- B b;
- A *APtr = &a;
- AFnPointer AFP = &A::foo;
-
- clang_analyzer_eval((APtr->*AFP)() == 1); // expected-warning{{TRUE}}
-
- APtr = &b;
-
- clang_analyzer_eval((APtr->*AFP)() == 3); // expected-warning{{TRUE}}
- }
-
- void testPointerToStaticMemberCall() {
- int (*fPtr)(int) = &A::staticMemberFunction;
- if (fPtr != 0) { // no-crash
- clang_analyzer_eval(fPtr(2) == 3); // expected-warning{{TRUE}}
- }
- }
-} // end of testPointerToMemberFunction namespace
-
-namespace testPointerToMemberData {
- struct A {
- int i;
- static int j;
- };
-
- void testPointerToMemberData() {
- int A::*AMdPointer = &A::i;
- A a;
-
- a.i = 42;
- a.*AMdPointer += 1;
-
- clang_analyzer_eval(a.i == 43); // expected-warning{{TRUE}}
-
- int *ptrToStaticField = &A::j;
- if (ptrToStaticField != 0) {
- *ptrToStaticField = 7;
- clang_analyzer_eval(*ptrToStaticField == 7); // expected-warning{{TRUE}}
- clang_analyzer_eval(A::j == 7); // expected-warning{{TRUE}}
- }
- }
-} // end of testPointerToMemberData namespace
-
-namespace testPointerToMemberMiscCasts {
-struct B {
- int f;
-};
-
-struct D : public B {
- int g;
-};
-
-void foo() {
- D d;
- d.f = 7;
-
- int B::* pfb = &B::f;
- int D::* pfd = pfb;
- int v = d.*pfd;
-
- clang_analyzer_eval(v == 7); // expected-warning{{TRUE}}
-}
-} // end of testPointerToMemberMiscCasts namespace
-
-namespace testPointerToMemberMiscCasts2 {
-struct B {
- int f;
-};
-struct L : public B { };
-struct R : public B { };
-struct D : public L, R { };
-
-void foo() {
- D d;
-
- int B::* pb = &B::f;
- int L::* pl = pb;
- int R::* pr = pb;
-
- int D::* pdl = pl;
- int D::* pdr = pr;
-
- clang_analyzer_eval(pdl == pdr); // expected-warning{{FALSE}}
- clang_analyzer_eval(pb == pl); // expected-warning{{TRUE}}
-}
-} // end of testPointerToMemberMiscCasts2 namespace
-
-namespace testPointerToMemberDiamond {
-struct B {
- int f;
-};
-struct L1 : public B { };
-struct R1 : public B { };
-struct M : public L1, R1 { };
-struct L2 : public M { };
-struct R2 : public M { };
-struct D2 : public L2, R2 { };
-
-void diamond() {
- M m;
-
- static_cast<L1 *>(&m)->f = 7;
- static_cast<R1 *>(&m)->f = 16;
-
- int L1::* pl1 = &B::f;
- int M::* pm_via_l1 = pl1;
-
- int R1::* pr1 = &B::f;
- int M::* pm_via_r1 = pr1;
-
- clang_analyzer_eval(m.*(pm_via_l1) == 7); // expected-warning {{TRUE}}
- clang_analyzer_eval(m.*(pm_via_r1) == 16); // expected-warning {{TRUE}}
-}
-
-void double_diamond() {
- D2 d2;
-
- static_cast<L1 *>(static_cast<L2 *>(&d2))->f = 1;
- static_cast<L1 *>(static_cast<R2 *>(&d2))->f = 2;
- static_cast<R1 *>(static_cast<L2 *>(&d2))->f = 3;
- static_cast<R1 *>(static_cast<R2 *>(&d2))->f = 4;
-
- clang_analyzer_eval(d2.*(static_cast<int D2::*>(static_cast<int L2::*>(static_cast<int L1::*>(&B::f)))) == 1); // expected-warning {{TRUE}}
- clang_analyzer_eval(d2.*(static_cast<int D2::*>(static_cast<int R2::*>(static_cast<int L1::*>(&B::f)))) == 2); // expected-warning {{TRUE}}
- clang_analyzer_eval(d2.*(static_cast<int D2::*>(static_cast<int L2::*>(static_cast<int R1::*>(&B::f)))) == 3); // expected-warning {{TRUE}}
- clang_analyzer_eval(d2.*(static_cast<int D2::*>(static_cast<int R2::*>(static_cast<int R1::*>(&B::f)))) == 4); // expected-warning {{TRUE}}
-}
-} // end of testPointerToMemberDiamond namespace
-
-namespace testAnonymousMember {
-struct A {
- struct {
- int x;
- };
- struct {
- struct {
- int y;
- };
- };
- struct {
- union {
- int z;
- };
- };
-};
-
-void test() {
- clang_analyzer_eval(&A::x); // expected-warning{{TRUE}}
- clang_analyzer_eval(&A::y); // expected-warning{{TRUE}}
- clang_analyzer_eval(&A::z); // expected-warning{{TRUE}}
-
- // FIXME: These should be true.
- int A::*l = &A::x, A::*m = &A::y, A::*n = &A::z;
- clang_analyzer_eval(l); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(n); // expected-warning{{UNKNOWN}}
-
- // FIXME: These should be true as well.
- A a;
- a.x = 1;
- clang_analyzer_eval(a.*l == 1); // expected-warning{{UNKNOWN}}
- a.y = 2;
- clang_analyzer_eval(a.*m == 2); // expected-warning{{UNKNOWN}}
- a.z = 3;
- clang_analyzer_eval(a.*n == 3); // expected-warning{{UNKNOWN}}
-}
-} // end of testAnonymousMember namespace
diff --git a/test/Analysis/pr22954.c b/test/Analysis/pr22954.c
deleted file mode 100644
index 6d5b04417a1e..000000000000
--- a/test/Analysis/pr22954.c
+++ /dev/null
@@ -1,917 +0,0 @@
-// Given code 'struct aa { char s1[4]; char * s2;} a; memcpy(a.s1, ...);',
-// this test checks that the CStringChecker only invalidates the destination buffer array a.s1 (instead of a.s1 and a.s2).
-// At the moment the whole of the destination array content is invalidated.
-// If a.s1 region has a symbolic offset, the whole region of 'a' is invalidated.
-// Specific triple set to test structures of size 0.
-// RUN: %clang_analyze_cc1 -triple x86_64-pc-linux-gnu -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-store=region -verify -analyzer-config eagerly-assume=false %s
-
-typedef __typeof(sizeof(int)) size_t;
-
-char *strdup(const char *s);
-void free(void *);
-void *memcpy(void *dst, const void *src, size_t n); // expected-note{{passing argument to parameter 'dst' here}}
-void *malloc(size_t n);
-
-void clang_analyzer_eval(int);
-
-struct aa {
- char s1[4];
- char *s2;
-};
-
-// Test different types of structure initialisation.
-int f0() {
- struct aa a0 = {{1, 2, 3, 4}, 0};
- a0.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(a0.s1, input, 4);
- clang_analyzer_eval(a0.s1[0] == 'a'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a0.s1[1] == 'b'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a0.s1[2] == 'c'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a0.s1[3] == 'd'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a0.s2 == 0); // expected-warning{{UNKNOWN}}
- free(a0.s2); // no warning
- return 0;
-}
-
-int f1() {
- struct aa a1;
- a1.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(a1.s1, input, 4);
- clang_analyzer_eval(a1.s1[0] == 'a'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a1.s1[1] == 'b'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a1.s1[2] == 'c'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a1.s1[3] == 'd'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a1.s2 == 0); // expected-warning{{UNKNOWN}}
- free(a1.s2); // no warning
- return 0;
-}
-
-int f2() {
- struct aa a2 = {{1, 2}};
- a2.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(a2.s1, input, 4);
- clang_analyzer_eval(a2.s1[0] == 'a'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a2.s1[1] == 'b'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a2.s1[2] == 'c'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a2.s1[3] == 'd'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a2.s2 == 0); // expected-warning{{UNKNOWN}}
- free(a2.s2); // no warning
- return 0;
-}
-
-int f3() {
- struct aa a3 = {{1, 2, 3, 4}, 0};
- a3.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- int * dest = (int*)a3.s1;
- memcpy(dest, input, 4);
- clang_analyzer_eval(a3.s1[0] == 'a'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(dest[0] == 'a'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a3.s1[1] == 'b'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(dest[1] == 'b'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a3.s1[2] == 'c'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(dest[2] == 'c'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a3.s1[3] == 'd'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(dest[3] == 'd'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a3.s2 == 0); // expected-warning{{UNKNOWN}}
- free(a3.s2); // no warning
- return 0;
-}
-
-struct bb {
- struct aa a;
- char * s2;
-};
-
-int f4() {
- struct bb b0 = {{1, 2, 3, 4}, 0};
- b0.s2 = strdup("hello");
- b0.a.s2 = strdup("hola");
- char input[] = {'a', 'b', 'c', 'd'};
- char * dest = (char*)(b0.a.s1);
- memcpy(dest, input, 4);
- clang_analyzer_eval(b0.a.s1[0] == 'a'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(dest[0] == 'a'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(b0.a.s1[1] == 'b'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(dest[1] == 'b'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(b0.a.s1[2] == 'c'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(dest[2] == 'c'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(b0.a.s1[3] == 'd'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(dest[3] == 'd'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(b0.s2 == 0); // expected-warning{{UNKNOWN}}
- free(b0.a.s2); // no warning
- free(b0.s2); // no warning
- return 0;
-}
-
-// Test that memory leaks are caught.
-int f5() {
- struct aa a0 = {{1, 2, 3, 4}, 0};
- a0.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(a0.s1, input, 4);
- return 0; // expected-warning{{Potential leak of memory pointed to by 'a0.s2'}}
-}
-
-int f6() {
- struct aa a1;
- a1.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(a1.s1, input, 4);
- return 0; // expected-warning{{Potential leak of memory pointed to by 'a1.s2'}}
-}
-
-int f7() {
- struct aa a2 = {{1, 2}};
- a2.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(a2.s1, input, 4);
- return 0; // expected-warning{{Potential leak of memory pointed to by 'a2.s2'}}
-}
-
-int f8() {
- struct aa a3 = {{1, 2, 3, 4}, 0};
- a3.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- int * dest = (int*)a3.s1;
- memcpy(dest, input, 4);
- return 0; // expected-warning{{Potential leak of memory pointed to by 'a3.s2'}}
-}
-
-int f9() {
- struct bb b0 = {{1, 2, 3, 4}, 0};
- b0.s2 = strdup("hello");
- b0.a.s2 = strdup("hola");
- char input[] = {'a', 'b', 'c', 'd'};
- char * dest = (char*)(b0.a.s1);
- memcpy(dest, input, 4);
- free(b0.a.s2); // expected-warning{{Potential leak of memory pointed to by 'b0.s2'}}
- return 0;
-}
-
-int f10() {
- struct bb b0 = {{1, 2, 3, 4}, 0};
- b0.s2 = strdup("hello");
- b0.a.s2 = strdup("hola");
- char input[] = {'a', 'b', 'c', 'd'};
- char * dest = (char*)(b0.a.s1);
- memcpy(dest, input, 4);
- free(b0.s2); // expected-warning{{Potential leak of memory pointed to by 'b0.a.s2'}}
- return 0;
-}
-
-// Test invalidating fields being addresses of array.
-struct cc {
- char * s1;
- char * s2;
-};
-
-int f11() {
- char x[4] = {1, 2};
- x[0] = 1;
- x[1] = 2;
- struct cc c0;
- c0.s2 = strdup("hello");
- c0.s1 = &x[0];
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(c0.s1, input, 4);
- clang_analyzer_eval(x[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(x[1] == 2); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(c0.s1[0] == 'a'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(c0.s1[1] == 'b'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(c0.s1[2] == 'c'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(c0.s1[3] == 'd'); // expected-warning{{UNKNOWN}}
- free(c0.s2); // no-warning
- return 0;
-}
-
-// Test inverting field position between s1 and s2.
-struct dd {
- char *s2;
- char s1[4];
-};
-
-int f12() {
- struct dd d0 = {0, {1, 2, 3, 4}};
- d0.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(d0.s1, input, 4);
- clang_analyzer_eval(d0.s1[0] == 'a'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(d0.s1[1] == 'b'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(d0.s1[2] == 'c'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(d0.s1[3] == 'd'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(d0.s2 == 0); // expected-warning{{UNKNOWN}}
- free(d0.s2); // no warning
- return 0;
-}
-
-// Test arrays of structs.
-struct ee {
- int a;
- char b;
-};
-
-struct EE {
- struct ee s1[2];
- char * s2;
-};
-
-int f13() {
- struct EE E0 = {{{1, 2}, {3, 4}}, 0};
- E0.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(E0.s1, input, 4);
- clang_analyzer_eval(E0.s1[0].a == 'a'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(E0.s1[0].b == 'b'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(E0.s1[1].a == 'c'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(E0.s1[1].b == 'd'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(E0.s2 == 0); // expected-warning{{UNKNOWN}}
- free(E0.s2); // no warning
- return 0;
-}
-
-// Test global parameters.
-struct aa a15 = {{1, 2, 3, 4}, 0};
-
-int f15() {
- a15.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(a15.s1, input, 4);
- clang_analyzer_eval(a15.s1[0] == 'a'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a15.s1[1] == 'b'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a15.s1[2] == 'c'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a15.s1[3] == 'd'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a15.s2 == 0); // expected-warning{{UNKNOWN}}
- free(a15.s2); // no warning
- return 0;
-}
-
-// Test array of 0 sized elements.
-struct empty {};
-struct gg {
- struct empty s1[4];
- char * s2;
-};
-
-int f16() {
- struct gg g0 = {{}, 0};
- g0.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(g0.s1, input, 4);
- clang_analyzer_eval(*(int*)(&g0.s1[0]) == 'a'); // expected-warning{{UNKNOWN}}\
- expected-warning{{Potential leak of memory pointed to by 'g0.s2'}}
- clang_analyzer_eval(*(int*)(&g0.s1[1]) == 'b'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(*(int*)(&g0.s1[2]) == 'c'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(*(int*)(&g0.s1[3]) == 'd'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(g0.s2 == 0); // expected-warning{{UNKNOWN}}
- free(g0.s2); // no warning
- return 0;
-}
-
-// Test array of 0 elements.
-struct hh {
- char s1[0];
- char * s2;
-};
-
-int f17() {
- struct hh h0;
- h0.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(h0.s1, input, 4);
- clang_analyzer_eval(h0.s1[0] == 'a'); // expected-warning{{UNKNOWN}}\
- expected-warning{{Potential leak of memory pointed to by 'h0.s2'}}
- clang_analyzer_eval(h0.s2 == 0); // expected-warning{{UNKNOWN}}
- free(h0.s2); // no warning
- return 0;
-}
-
-// Test writing past the array.
-struct ii {
- char s1[4];
- int i;
- int j;
- char * s2;
-};
-
-int f18() {
- struct ii i18 = {{1, 2, 3, 4}, 5, 6};
- i18.i = 10;
- i18.j = 11;
- i18.s2 = strdup("hello");
- char input[100] = {3};
- memcpy(i18.s1, input, 100);
- clang_analyzer_eval(i18.s1[0] == 1); // expected-warning{{UNKNOWN}}\
- expected-warning{{Potential leak of memory pointed to by 'i18.s2'}}
- clang_analyzer_eval(i18.s1[1] == 2); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(i18.s1[2] == 3); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(i18.s1[3] == 4); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(i18.i == 10); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(i18.j == 11); // expected-warning{{UNKNOWN}}
- return 0;
-}
-
-int f181() {
- struct ii i181 = {{1, 2, 3, 4}, 5, 6};
- i181.i = 10;
- i181.j = 11;
- i181.s2 = strdup("hello");
- char input[100] = {3};
- memcpy(i181.s1, input, 5); // invalidate the whole region of i181
- clang_analyzer_eval(i181.s1[0] == 1); // expected-warning{{UNKNOWN}}\
- expected-warning{{Potential leak of memory pointed to by 'i181.s2'}}
- clang_analyzer_eval(i181.s1[1] == 2); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(i181.s1[2] == 3); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(i181.s1[3] == 4); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(i181.i == 10); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(i181.j == 11); // expected-warning{{UNKNOWN}}
- return 0;
-}
-
-// Test array with a symbolic offset.
-struct jj {
- char s1[2];
- char * s2;
-};
-
-struct JJ {
- struct jj s1[3];
- char * s2;
-};
-
-int f19(int i) {
- struct JJ J0 = {{{1, 2, 0}, {3, 4, 0}, {5, 6, 0}}, 0};
- J0.s2 = strdup("hello");
- J0.s1[0].s2 = strdup("hello");
- J0.s1[1].s2 = strdup("hi");
- J0.s1[2].s2 = strdup("world");
- char input[2] = {'a', 'b'};
- memcpy(J0.s1[i].s1, input, 2);
- clang_analyzer_eval(J0.s1[0].s1[0] == 1); // expected-warning{{UNKNOWN}}\
- expected-warning{{Potential leak of memory pointed to by field 's2'}}\
- expected-warning{{Potential leak of memory pointed to by 'J0.s2'}}
- clang_analyzer_eval(J0.s1[0].s1[1] == 2); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(J0.s1[1].s1[0] == 3); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(J0.s1[1].s1[1] == 4); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(J0.s1[2].s1[0] == 5); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(J0.s1[2].s1[1] == 6); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(J0.s1[i].s1[0] == 5); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(J0.s1[i].s1[1] == 6); // expected-warning{{UNKNOWN}}
- // FIXME: memory leak warning for J0.s2 should be emitted here instead of after memcpy call.
- return 0; // no warning
-}
-
-// Test array with its super region having symbolic offseted regions.
-int f20(int i) {
- struct aa * a20 = malloc(sizeof(struct aa) * 2);
- a20[0].s1[0] = 1;
- a20[0].s1[1] = 2;
- a20[0].s1[2] = 3;
- a20[0].s1[3] = 4;
- a20[0].s2 = strdup("hello");
- a20[1].s1[0] = 5;
- a20[1].s1[1] = 6;
- a20[1].s1[2] = 7;
- a20[1].s1[3] = 8;
- a20[1].s2 = strdup("world");
- a20[i].s2 = strdup("hola");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(a20[0].s1, input, 4);
- clang_analyzer_eval(a20[0].s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a20[0].s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a20[0].s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a20[0].s1[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a20[0].s2 == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a20[1].s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a20[1].s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a20[1].s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a20[1].s1[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a20[1].s2 == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a20[i].s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a20[i].s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a20[i].s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a20[i].s1[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a20[i].s2 == 0); // expected-warning{{UNKNOWN}}\
- expected-warning{{Potential leak of memory pointed to by 'a20'}}
-
- return 0;
-}
-
-// Test array's region and super region both having symbolic offsets.
-int f21(int i) {
- struct aa * a21 = malloc(sizeof(struct aa) * 2);
- a21[0].s1[0] = 1;
- a21[0].s1[1] = 2;
- a21[0].s1[2] = 3;
- a21[0].s1[3] = 4;
- a21[0].s2 = 0;
- a21[1].s1[0] = 5;
- a21[1].s1[1] = 6;
- a21[1].s1[2] = 7;
- a21[1].s1[3] = 8;
- a21[1].s2 = 0;
- a21[i].s2 = strdup("hello");
- a21[i].s1[0] = 1;
- a21[i].s1[1] = 2;
- a21[i].s1[2] = 3;
- a21[i].s1[3] = 4;
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(a21[i].s1, input, 4);
- clang_analyzer_eval(a21[0].s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a21[0].s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a21[0].s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a21[0].s1[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a21[0].s2 == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a21[1].s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a21[1].s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a21[1].s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a21[1].s1[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a21[1].s2 == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a21[i].s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a21[i].s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a21[i].s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a21[i].s1[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a21[i].s2 == 0); // expected-warning{{UNKNOWN}}\
- expected-warning{{Potential leak of memory pointed to by 'a21'}}
-
- return 0;
-}
-
-// Test regions aliasing other regions.
-struct ll {
- char s1[4];
- char * s2;
-};
-
-struct mm {
- char s3[4];
- char * s4;
-};
-
-int f24() {
- struct ll l24 = {{1, 2, 3, 4}, 0};
- struct mm * m24 = (struct mm *)&l24;
- m24->s4 = strdup("hello");
- char input[] = {1, 2, 3, 4};
- memcpy(m24->s3, input, 4);
- clang_analyzer_eval(m24->s3[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m24->s3[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m24->s3[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m24->s3[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(l24.s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(l24.s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(l24.s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(l24.s1[3] == 1); // expected-warning{{UNKNOWN}}\
- expected-warning{{Potential leak of memory pointed to by field 's4'}}
- return 0;
-}
-
-// Test region with potential aliasing and symbolic offsets.
-// Store assumes no aliasing.
-int f25(int i, int j, struct ll * l, struct mm * m) {
- m->s4 = strdup("hola"); // m->s4 not tracked
- m->s3[0] = 1;
- m->s3[1] = 2;
- m->s3[2] = 3;
- m->s3[3] = 4;
- m->s3[j] = 5; // invalidates m->s3
- l->s2 = strdup("hello"); // l->s2 not tracked
- l->s1[0] = 6;
- l->s1[1] = 7;
- l->s1[2] = 8;
- l->s1[3] = 9;
- l->s1[i] = 10; // invalidates l->s1
- char input[] = {1, 2, 3, 4};
- memcpy(m->s3, input, 4); // does not invalidate l->s1[i]
- clang_analyzer_eval(m->s3[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m->s3[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m->s3[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m->s3[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m->s3[i] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m->s3[j] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(l->s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(l->s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(l->s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(l->s1[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(l->s1[i] == 1); // expected-warning{{FALSE}}
- clang_analyzer_eval(l->s1[j] == 1); // expected-warning{{UNKNOWN}}
- return 0;
-}
-
-// Test size with symbolic size argument.
-int f26(int i) {
- struct aa a26 = {{1, 2, 3, 4}, 0};
- a26.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(a26.s1, input, i); // i assumed in bound
- clang_analyzer_eval(a26.s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a26.s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a26.s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a26.s1[3] == 1); // expected-warning{{UNKNOWN}}\
- expected-warning{{Potential leak of memory pointed to by 'a26.s2'}}
- return 0;
-}
-
-// Test sizeof as a size argument.
-int f261() {
- struct aa a261 = {{1, 2, 3, 4}, 0};
- a261.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(a261.s1, input, sizeof(a261.s1));
- clang_analyzer_eval(a261.s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a261.s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a261.s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a261.s1[3] == 1); // expected-warning{{UNKNOWN}}\
- expected-warning{{Potential leak of memory pointed to by 'a261.s2'}}
- return 0;
-}
-
-// Test negative size argument.
-int f262() {
- struct aa a262 = {{1, 2, 3, 4}, 0};
- a262.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(a262.s1, input, -1);
- clang_analyzer_eval(a262.s1[0] == 1); // expected-warning{{UNKNOWN}}\
- expected-warning{{Potential leak of memory pointed to by 'a262.s2'}}
- clang_analyzer_eval(a262.s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a262.s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a262.s1[3] == 1); // expected-warning{{UNKNOWN}}
- return 0;
-}
-
-// Test size argument being an unknown value.
-struct xx {
- char s1[4];
- char * s2;
-};
-
-int f263(int n, char * len) {
- struct xx x263 = {0};
- x263.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(x263.s1, input, *(len + n));
- clang_analyzer_eval(x263.s1[0] == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(x263.s1[1] == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(x263.s1[2] == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(x263.s1[3] == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(x263.s2 == 0); // expected-warning{{UNKNOWN}}
- return 0; // expected-warning{{Potential leak of memory pointed to by 'x263.s2'}}
-}
-
-
-// Test casting regions with symbolic offseted sub regions.
-int f27(int i) {
- struct mm m27 = {{1, 2, 3, 4}, 0};
- m27.s4 = strdup("hello");
- m27.s3[i] = 5;
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(((struct ll*)(&m27))->s1, input, 4);
- clang_analyzer_eval(m27.s3[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m27.s3[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m27.s3[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m27.s3[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m27.s3[i] == 1); // expected-warning{{UNKNOWN}}\
- expected-warning{{Potential leak of memory pointed to by 'm27.s4'}}
- return 0;
-}
-
-int f28(int i, int j, int k, int l) {
- struct mm m28[2];
- m28[i].s4 = strdup("hello");
- m28[j].s3[k] = 1;
- struct ll * l28 = (struct ll*)(&m28[1]);
- l28->s1[l] = 2;
- char input[] = {'a', 'b', 'c', 'd'}; // expected-warning{{Potential leak of memory pointed to by field 's4'}}
- memcpy(l28->s1, input, 4);
- clang_analyzer_eval(m28[0].s3[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m28[0].s3[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m28[0].s3[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m28[0].s3[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m28[1].s3[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m28[1].s3[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m28[1].s3[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m28[1].s3[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m28[i].s3[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m28[i].s3[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m28[i].s3[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m28[i].s3[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m28[j].s3[k] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(l28->s1[l] == 2); // expected-warning{{UNKNOWN}}
- return 0;
-}
-
-int f29(int i, int j, int k, int l, int m) {
- struct mm m29[2];
- m29[i].s4 = strdup("hello");
- m29[j].s3[k] = 1;
- struct ll * l29 = (struct ll*)(&m29[l]);
- l29->s1[m] = 2;
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(l29->s1, input, 4);
- clang_analyzer_eval(m29[0].s3[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m29[0].s3[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m29[0].s3[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m29[0].s3[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m29[1].s3[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m29[1].s3[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m29[1].s3[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m29[1].s3[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m29[i].s3[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m29[i].s3[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m29[i].s3[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m29[i].s3[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(m29[j].s3[k] == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(l29->s1[m] == 2); // expected-warning{{UNKNOWN}}
- // FIXME: Should warn that m29[i].s4 leaks. But not on the previous line,
- // because l29 and m29 alias.
- return 0;
-}
-
-// Test unions' fields.
-union uu {
- char x;
- char s1[4];
-};
-
-int f30() {
- union uu u30 = { .s1 = {1, 2, 3, 4}};
- char input[] = {1, 2, 3, 4};
- memcpy(u30.s1, input, 4);
- clang_analyzer_eval(u30.s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(u30.s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(u30.s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(u30.s1[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(u30.x == 1); // expected-warning{{UNKNOWN}}
- return 0;
-}
-
-struct kk {
- union uu u;
- char * s2;
-};
-
-int f31() {
- struct kk k31;
- k31.s2 = strdup("hello");
- k31.u.x = 1;
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(k31.u.s1, input, 4);
- clang_analyzer_eval(k31.u.s1[0] == 1); // expected-warning{{UNKNOWN}}\
- expected-warning{{Potential leak of memory pointed to by 'k31.s2'}}
- clang_analyzer_eval(k31.u.s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(k31.u.s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(k31.u.s1[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(k31.u.x == 1); // expected-warning{{UNKNOWN}}
- // FIXME: memory leak warning for k31.s2 should be emitted here.
- return 0;
-}
-
-union vv {
- int x;
- char * s2;
-};
-
-int f32() {
- union vv v32;
- v32.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(v32.s2, input, 4);
- clang_analyzer_eval(v32.s2[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(v32.s2[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(v32.s2[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(v32.s2[3] == 1); // expected-warning{{UNKNOWN}}\
- expected-warning{{Potential leak of memory pointed to by 'v32.s2'}}
- return 0;
-}
-
-struct nn {
- int s1;
- int i;
- int j;
- int k;
- char * s2;
-};
-
-// Test bad types to dest buffer.
-int f33() {
- struct nn n33 = {1, 2, 3, 4, 0};
- n33.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(n33.s1, input, 4); // expected-warning{{incompatible integer to pointer conversion passing 'int' to parameter of type 'void *'}}
- clang_analyzer_eval(n33.i == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(n33.j == 3); // expected-warning{{TRUE}}
- clang_analyzer_eval(n33.k == 4); // expected-warning{{TRUE}}
- clang_analyzer_eval(((char*)(n33.s1))[0] == 1); // expected-warning{{UNKNOWN}}\
- expected-warning{{cast to 'char *' from smaller integer type 'int'}}
- clang_analyzer_eval(((char*)(n33.s1))[1] == 1); // expected-warning{{UNKNOWN}}\
- expected-warning{{cast to 'char *' from smaller integer type 'int'}}
- clang_analyzer_eval(((char*)(n33.s1))[2] == 1); // expected-warning{{UNKNOWN}}\
- expected-warning{{cast to 'char *' from smaller integer type 'int'}}
- clang_analyzer_eval(((char*)(n33.s1))[3] == 1); // expected-warning{{UNKNOWN}}\
- expected-warning{{cast to 'char *' from smaller integer type 'int'}}
- clang_analyzer_eval(n33.s2 == 0); //expected-warning{{UNKNOWN}}
- return 0; // expected-warning{{Potential leak of memory pointed to by 'n33.s2'}}
-}
-
-// Test destination buffer being an unknown value.
-struct ww {
- int s1[4];
- char s2;
-};
-
-int f34(struct ww * w34, int n) {
- w34->s2 = 3;
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(w34->s1 + n, input , 4);
- clang_analyzer_eval(w34->s1[0] == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(w34->s1[1] == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(w34->s1[2] == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(w34->s1[3] == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(w34->s1[n] == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(w34->s2 == 3); // expected-warning{{TRUE}}
- return 0;
-}
-
-// Test dest buffer as an element region with a symbolic index and size parameter as a symbolic value.
-struct yy {
- char s1[4];
- char * s2;
-};
-
-int f35(int i, int n) {
- struct yy y35 = {{1, 2, 3, 4}, 0};
- y35.s2 = strdup("hello");
- char input[] = {'a', 'b', 'c', 'd'};
- memcpy(&(y35.s1[i]), input, n);
- clang_analyzer_eval(y35.s1[0] == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(y35.s1[1] == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(y35.s1[2] == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(y35.s1[3] == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(y35.s1[i] == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(y35.s2 == 0); // expected-warning{{UNKNOWN}}
- return 0; // expected-warning{{Potential leak of memory pointed to by 'y35.s2'}}
-}
-
-// Test regions with negative offsets.
-struct zz {
- char s1[4];
- int s2;
-};
-
-int f36(struct zz * z36) {
-
- char input[] = {'a', 'b', 'c', 'd'};
- z36->s1[0] = 0;
- z36->s1[1] = 1;
- z36->s1[2] = 2;
- z36->s1[3] = 3;
- z36->s2 = 10;
-
- z36 = z36 - 1; // Decrement by 8 bytes (struct zz is 8 bytes).
-
- z36->s1[0] = 4;
- z36->s1[1] = 5;
- z36->s1[2] = 6;
- z36->s1[3] = 7;
- z36->s2 = 11;
-
- memcpy(z36->s1, input, 4);
-
- clang_analyzer_eval(z36->s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z36->s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z36->s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z36->s1[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z36->s2 == 11); // expected-warning{{TRUE}}
-
- z36 = z36 + 1; // Increment back.
-
- clang_analyzer_eval(z36->s1[0] == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(z36->s1[1] == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(z36->s1[2] == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(z36->s1[3] == 3); // expected-warning{{TRUE}}
- clang_analyzer_eval(z36->s2 == 10); // expected-warning{{TRUE}}
-
- return 0;
-}
-
-int f37(struct zz * z37) {
-
- char input[] = {'a', 'b', 'c', 'd'};
- z37->s1[0] = 0;
- z37->s1[1] = 1;
- z37->s1[2] = 2;
- z37->s1[3] = 3;
- z37->s2 = 10;
-
- z37 = (struct zz *)((char*)(z37) - 4); // Decrement by 4 bytes (struct zz is 8 bytes).
-
- z37->s1[0] = 4;
- z37->s1[1] = 5;
- z37->s1[2] = 6;
- z37->s1[3] = 7;
- z37->s2 = 11;
-
- memcpy(z37->s1, input, 4);
-
- clang_analyzer_eval(z37->s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z37->s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z37->s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z37->s1[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z37->s2 == 11); // expected-warning{{TRUE}}
-
- z37 = (struct zz *)((char*)(z37) + 4); // Increment back.
-
- clang_analyzer_eval(z37->s1[0] == 11); // expected-warning{{TRUE}}
- clang_analyzer_eval(z37->s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z37->s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z37->s1[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z37->s2 == 10); // expected-warning{{TRUE}}
-
- return 0;
-}
-
-int f38(struct zz * z38) {
-
- char input[] = {'a', 'b', 'c', 'd'};
- z38->s1[0] = 0;
- z38->s1[1] = 1;
- z38->s1[2] = 2;
- z38->s1[3] = 3;
- z38->s2 = 10;
-
- z38 = (struct zz *)((char*)(z38) - 2); // Decrement by 2 bytes (struct zz is 8 bytes).
-
- z38->s1[0] = 4;
- z38->s1[1] = 5;
- z38->s1[2] = 6;
- z38->s1[3] = 7;
- z38->s2 = 11;
-
- memcpy(z38->s1, input, 4);
-
- clang_analyzer_eval(z38->s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z38->s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z38->s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z38->s1[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z38->s2 == 11); // expected-warning{{TRUE}}
-
- z38 = (struct zz *)((char*)(z38) + 2); // Increment back.
-
- clang_analyzer_eval(z38->s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z38->s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z38->s1[2] == 11); // expected-warning{{TRUE}}
- clang_analyzer_eval(z38->s1[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(z38->s2 == 10); // expected-warning{{UNKNOWN}}
-
- return 0;
-}
-
-// Test negative offsets with a different structure layout.
-struct z0 {
- int s2;
- char s1[4];
-};
-
-int f39(struct z0 * d39) {
-
- char input[] = {'a', 'b', 'c', 'd'};
- d39->s1[0] = 0;
- d39->s1[1] = 1;
- d39->s1[2] = 2;
- d39->s1[3] = 3;
- d39->s2 = 10;
-
- d39 = (struct z0 *)((char*)(d39) - 2); // Decrement by 2 bytes (struct z0 is 8 bytes).
-
- d39->s1[0] = 4;
- d39->s1[1] = 5;
- d39->s1[2] = 6;
- d39->s1[3] = 7;
- d39->s2 = 11;
-
- memcpy(d39->s1, input, 4);
-
- clang_analyzer_eval(d39->s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(d39->s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(d39->s1[2] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(d39->s1[3] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(d39->s2 == 11); // expected-warning{{TRUE}}
-
- d39 = (struct z0 *)((char*)(d39) + 2); // Increment back.
-
- clang_analyzer_eval(d39->s1[0] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(d39->s1[1] == 1); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(d39->s1[2] == 2); // expected-warning{{TRUE}}
- clang_analyzer_eval(d39->s1[3] == 3); // expected-warning{{TRUE}}
- // FIXME: d39->s2 should evaluate to at least UNKNOWN or FALSE,
- // 'collectSubRegionBindings(...)' in RegionStore.cpp will need to
- // handle a regions' upper boundary overflowing.
- clang_analyzer_eval(d39->s2 == 10); // expected-warning{{TRUE}}
-
- return 0;
-}
-
diff --git a/test/Analysis/pr37802.cpp b/test/Analysis/pr37802.cpp
deleted file mode 100644
index 9acfebaae860..000000000000
--- a/test/Analysis/pr37802.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core -verify %s
-
-// expected-no-diagnostics
-
-typedef __typeof(sizeof(int)) size_t;
-void *operator new(size_t, void *h) { return h; }
-
-// I've no idea what this code does, but it used to crash, so let's keep it.
-namespace pr37802_v1 {
-struct J {
- int *p;
-};
-class X {
- void *ar;
-
-public:
- X(void *t) : ar(t) {}
- template <typename T>
- void f(const T &t) {
- new (ar) T(t);
- }
-};
-class Y {
-public:
- template <typename T>
- void f(T &&);
- void f(J t) {
- f(*t.p);
- }
-};
-class Z {
- int at() const {}
-
-public:
- Z(const Z &other) {
- other.au(X(this));
- }
- template <typename T>
- void au(T t) const {
- void *c = const_cast<Z *>(this);
- if (at()) {
- t.f(*static_cast<J *>(c));
- } else {
- t.f(*static_cast<bool *>(c));
- }
- }
-};
-Z g() {
- Z az = g();
- Z e = az;
- Y d;
- e.au(d);
-}
-} // namespace pr37802_v1
-
-
-// This slightly modified code crashed differently.
-namespace pr37802_v2 {
-struct J {
- int *p;
-};
-
-class X {
- void *ar;
-
-public:
- X(void *t) : ar(t) {}
- void f(const J &t) { new (ar) J(t); }
- void f(const bool &t) { new (ar) bool(t); }
-};
-
-class Y {
-public:
- void boolf(bool &&);
- void f(J &&);
- void f(J t) { boolf(*t.p); }
-};
-
-class Z {
- int at() const {}
-
-public:
- Z(const Z &other) { other.au(X(this)); }
- void au(X t) const {
- void *c = const_cast<Z *>(this);
- if (at()) {
- t.f(*static_cast<J *>(c));
- } else {
- t.f(*static_cast<bool *>(c));
- }
- }
- void au(Y t) const {
- void *c = const_cast<Z *>(this);
- if (at()) {
- t.f(*static_cast<J *>(c));
- } else {
- }
- }
-};
-
-Z g() {
- Z az = g();
- Z e = az;
- Y d;
- e.au(d);
-}
-} // namespace pr37802_v2
diff --git a/test/Analysis/pr4209.m b/test/Analysis/pr4209.m
deleted file mode 100644
index 8b0eacad9694..000000000000
--- a/test/Analysis/pr4209.m
+++ /dev/null
@@ -1,72 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin9 -analyzer-checker=core,alpha.core -analyzer-store=region -Wno-incomplete-implementation -verify %s
-
-// This test case was crashing due to how CFRefCount.cpp resolved the
-// ObjCInterfaceDecl* and ClassName in EvalObjCMessageExpr.
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject - (BOOL)isEqual:(id)object;
-@end @protocol NSCopying - (id)copyWithZone:(NSZone *)zone;
-@end @protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone;
-@end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
-@end @interface NSObject <NSObject> {
-}
-@end typedef float CGFloat;
-typedef struct _NSPoint {
-}
-NSFastEnumerationState;
-@protocol NSFastEnumeration - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
-@end @class NSString;
-@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration> - (NSUInteger)count;
-@end @interface NSMutableArray : NSArray - (void)addObject:(id)anObject;
-@end typedef unsigned short unichar;
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding> - (NSUInteger)length;
-- (int)intValue;
-@end @interface NSSimpleCString : NSString {
-}
-@end @interface NSConstantString : NSSimpleCString @end extern void *_NSConstantStringClassReference;
-@interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration> - (NSUInteger)count;
-@end @interface NSMutableDictionary : NSDictionary - (void)removeObjectForKey:(id)aKey;
-@end typedef struct {
-}
-CMProfileLocation;
-@interface NSResponder : NSObject <NSCoding> {
-}
-@end @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView;
-@interface NSCell : NSObject <NSCopying, NSCoding> {
-}
-@end extern NSString *NSControlTintDidChangeNotification;
-@interface NSActionCell : NSCell {
-}
-@end @class NSArray, NSDocument, NSWindow;
-@interface NSWindowController : NSResponder <NSCoding> {
-}
-@end @class EBayCategoryType, GSEbayCategory, GBSearchRequest;
-@interface GBCategoryChooserPanelController : NSWindowController {
- GSEbayCategory *rootCategory;
-}
-- (NSMutableDictionary*)categoryDictionaryForCategoryID:(int)inID inRootTreeCategories:(NSMutableArray*)inRootTreeCategories;
--(NSString*) categoryID; // expected-note {{using}}
-@end @interface GSEbayCategory : NSObject <NSCoding> {
-}
-- (int) categoryID; // expected-note {{also found}}
-- (GSEbayCategory *) parent;
-- (GSEbayCategory*) subcategoryWithID:(int) inID;
-@end @implementation GBCategoryChooserPanelController + (int) chooseCategoryIDFromCategories:(NSArray*) inCategories searchRequest:(GBSearchRequest*)inRequest parentWindow:(NSWindow*) inParent {
- return 0;
-}
-- (void) addCategory:(EBayCategoryType*)inCategory toRootTreeCategory:(NSMutableArray*)inRootTreeCategories {
- GSEbayCategory *category = [rootCategory subcategoryWithID:[[inCategory categoryID] intValue]]; // expected-warning {{multiple methods named 'categoryID' found}}
-
- if (rootCategory != category) {
- GSEbayCategory *parent = category;
- while ((((void*)0) != (parent = [parent parent])) && ([parent categoryID] != 0)) {
- NSMutableDictionary *treeCategoryDict = [self categoryDictionaryForCategoryID:[parent categoryID] inRootTreeCategories:inRootTreeCategories];
- if (((void*)0) == treeCategoryDict) {
- }
- }
- }
-}
-@end
diff --git a/test/Analysis/pr_2542_rdar_6793404.m b/test/Analysis/pr_2542_rdar_6793404.m
deleted file mode 100644
index 5df40e88fcb4..000000000000
--- a/test/Analysis/pr_2542_rdar_6793404.m
+++ /dev/null
@@ -1,67 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -pedantic -analyzer-store=region -verify -Wno-objc-root-class %s
-
-// BEGIN delta-debugging reduced header stuff
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-@class NSCoder;
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
-@end
-@protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
-@end
-@protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
-@end
-typedef double NSTimeInterval;
-enum { NSAnimationEaseInOut, NSAnimationEaseIn, NSAnimationEaseOut, NSAnimationLinear };
-typedef NSUInteger NSAnimationCurve;
-@interface NSAnimation : NSObject <NSCopying, NSCoding> {}
-- (id)initWithDuration:(NSTimeInterval)duration animationCurve:(NSAnimationCurve)animationCurve;
-- (void)startAnimation;
-- (void)setDelegate:(id)delegate;
-@end
-
-// END delta-debugging reduced header stuff
-
-// From NSAnimation Class Reference
-// -(void)startAnimation
-// The receiver retains itself and is then autoreleased at the end
-// of the animation or when it receives stopAnimation.
-
-@interface MyClass { }
-- (void)animationDidEnd:(NSAnimation *)animation;
-@end
-
-@implementation MyClass
-- (void)f1 {
- // NOTE: The analyzer doesn't really handle this; it just stops tracking
- // 'animation' when it is sent the message 'setDelegate:'.
- NSAnimation *animation = [[NSAnimation alloc] // no-warning
- initWithDuration:1.0
- animationCurve:NSAnimationEaseInOut];
-
- [animation setDelegate:self];
- [animation startAnimation];
-}
-
-- (void)f2 {
- NSAnimation *animation = [[NSAnimation alloc] // expected-warning{{leak}}
- initWithDuration:1.0
- animationCurve:NSAnimationEaseInOut];
-
- [animation startAnimation];
-}
-
-- (void)animationDidEnd:(NSAnimation *)animation {
- [animation release];
-}
-@end
diff --git a/test/Analysis/pr_4164.c b/test/Analysis/pr_4164.c
deleted file mode 100644
index 02c1f41ebbd5..000000000000
--- a/test/Analysis/pr_4164.c
+++ /dev/null
@@ -1,41 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin9 -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-// PR 4164: http://llvm.org/bugs/show_bug.cgi?id=4164
-//
-// Eventually this should be pulled into misc-ps.m. This is in a separate test
-// file for now to play around with the specific issues for BasicStoreManager
-// and StoreManager (i.e., we can make a copy of this file for either
-// StoreManager should one start to fail in the near future).
-//
-// The basic issue is that the VarRegion for 'size' is casted to (char*),
-// resulting in an ElementRegion. 'getsockopt' is an unknown function that
-// takes a void*, which means the ElementRegion should get stripped off.
-typedef unsigned int __uint32_t;
-typedef __uint32_t __darwin_socklen_t;
-typedef __darwin_socklen_t socklen_t;
-int getsockopt(int, int, int, void * restrict, socklen_t * restrict);
-
-int test1() {
- int s = -1;
- int size;
- socklen_t size_len = sizeof(size);
- if (getsockopt(s, 0xffff, 0x1001, (char *)&size, &size_len) < 0)
- return -1;
-
- return size; // no-warning
-}
-
-// Similar case: instead of passing a 'void*', we pass 'char*'. In this
-// case we pass an ElementRegion to the invalidation logic. Since it is
-// an ElementRegion that just layers on top of another typed region and the
-// ElementRegion itself has elements whose type are integral (essentially raw
-// data) we strip off the ElementRegion when doing the invalidation.
-int takes_charptr(char* p);
-int test2() {
- int size;
- if (takes_charptr((char*)&size))
- return -1;
- return size; // no-warning
-}
-
diff --git a/test/Analysis/properties.m b/test/Analysis/properties.m
deleted file mode 100644
index 461639f4c2bf..000000000000
--- a/test/Analysis/properties.m
+++ /dev/null
@@ -1,1007 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,osx.cocoa.Dealloc,debug.ExprInspection -analyzer-store=region -verify -Wno-objc-root-class -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,osx.cocoa.Dealloc,debug.ExprInspection -analyzer-store=region -verify -Wno-objc-root-class -fobjc-arc -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(int);
-
-typedef const void * CFTypeRef;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-void CFRelease(CFTypeRef cf);
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@protocol NSCopying - (id)copyWithZone:(NSZone *)zone; @end
-@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; @end
-@protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
--(id)retain;
--(oneway void)release;
--(void)dealloc;
-@end
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
--(id)initWithFormat:(NSString *)f,...;
--(BOOL)isEqualToString:(NSString *)s;
-+ (id)string;
-@end
-@interface NSNumber : NSObject {}
-+(id)alloc;
--(id)initWithInteger:(int)i;
-@end
-
-// rdar://6946338
-
-@interface Test1 : NSObject {
- NSString *text;
-}
--(id)myMethod;
-@property (nonatomic, assign) NSString *text;
-@end
-
-
-#if !__has_feature(objc_arc)
-
-@implementation Test1
-
-@synthesize text;
-
--(id)myMethod {
- Test1 *cell = [[[Test1 alloc] init] autorelease];
-
- NSString *string1 = [[NSString alloc] initWithFormat:@"test %f", 0.0]; // expected-warning {{Potential leak}}
- cell.text = string1;
-
- return cell;
-}
-
-@end
-
-
-// rdar://8824416
-
-@interface MyNumber : NSObject
-{
- NSNumber* _myNumber;
-}
-
-- (id)initWithNumber:(NSNumber *)number;
-
-@property (nonatomic, readonly) NSNumber* myNumber;
-@property (nonatomic, readonly) NSNumber* newMyNumber;
-
-@end
-
-@implementation MyNumber
-@synthesize myNumber=_myNumber;
-
-- (id)initWithNumber:(NSNumber *)number
-{
- self = [super init];
-
- if ( self )
- {
- _myNumber = [number copy];
- }
-
- return self;
-}
-
-- (NSNumber*)newMyNumber
-{
- if ( _myNumber )
- return [_myNumber retain];
-
- return [[NSNumber alloc] initWithInteger:1];
-}
-
-- (id)valueForUndefinedKey:(NSString*)key
-{
- id value = 0;
-
- if ([key isEqualToString:@"MyIvarNumberAsPropertyOverReleased"])
- value = self.myNumber; // _myNumber will be over released, since the value returned from self.myNumber is not retained.
- else if ([key isEqualToString:@"MyIvarNumberAsPropertyOk"])
- value = [self.myNumber retain]; // this line fixes the over release
- else if ([key isEqualToString:@"MyIvarNumberAsNewMyNumber"])
- value = self.newMyNumber; // this one is ok, since value is returned retained
- else
- value = [[NSNumber alloc] initWithInteger:0];
-
- return [value autorelease]; // expected-warning {{Object autoreleased too many times}}
-}
-
-@end
-
-NSNumber* numberFromMyNumberProperty(MyNumber* aMyNumber)
-{
- NSNumber* result = aMyNumber.myNumber;
-
- return [result autorelease]; // expected-warning {{Object autoreleased too many times}}
-}
-
-#endif
-
-
-// rdar://6611873
-
-@interface Person : NSObject {
- NSString *_name;
-}
-@property (retain) NSString * name;
-@property (assign) id friend;
-@end
-
-@implementation Person
-@synthesize name = _name;
-
--(void)dealloc {
-#if !__has_feature(objc_arc)
- self.name = [[NSString alloc] init]; // expected-warning {{leak}}
-
- [super dealloc]; // expected-warning {{The '_name' ivar in 'Person' was retained by a synthesized property but not released before '[super dealloc]}}
-#endif
-}
-@end
-
-#if !__has_feature(objc_arc)
-void rdar6611873() {
- Person *p = [[[Person alloc] init] autorelease];
-
- p.name = [[NSString string] retain]; // expected-warning {{leak}}
- p.name = [[NSString alloc] init]; // expected-warning {{leak}}
-
- p.friend = [[Person alloc] init]; // expected-warning {{leak}}
-}
-#endif
-
-@interface SubPerson : Person
--(NSString *)foo;
-@end
-
-@implementation SubPerson
--(NSString *)foo {
- return super.name;
-}
-@end
-
-
-#if !__has_feature(objc_arc)
-// <rdar://problem/9241180> Static analyzer doesn't detect uninitialized variable issues for property accesses
-@interface RDar9241180
-@property (readwrite,assign) id x;
--(id)testAnalyzer1:(int) y;
--(void)testAnalyzer2;
-@end
-
-@implementation RDar9241180
-@synthesize x;
--(id)testAnalyzer1:(int)y {
- RDar9241180 *o;
- if (y && o.x) // expected-warning {{Property access on an uninitialized object pointer}}
- return o;
- return o; // expected-warning {{Undefined or garbage value returned to caller}}
-}
--(void)testAnalyzer2 {
- id y;
- self.x = y; // expected-warning {{Argument for property setter is an uninitialized value}}
-}
-@end
-#endif
-
-
-//------
-// Property accessor synthesis
-//------
-
-extern void doSomethingWithPerson(Person *p);
-extern void doSomethingWithName(NSString *name);
-
-void testConsistencyRetain(Person *p) {
- clang_analyzer_eval(p.name == p.name); // expected-warning{{TRUE}}
-
- id origName = p.name;
- clang_analyzer_eval(p.name == origName); // expected-warning{{TRUE}}
- doSomethingWithPerson(p);
- clang_analyzer_eval(p.name == origName); // expected-warning{{UNKNOWN}}
-}
-
-void testConsistencyAssign(Person *p) {
- clang_analyzer_eval(p.friend == p.friend); // expected-warning{{TRUE}}
-
- id origFriend = p.friend;
- clang_analyzer_eval(p.friend == origFriend); // expected-warning{{TRUE}}
- doSomethingWithPerson(p);
- clang_analyzer_eval(p.friend == origFriend); // expected-warning{{UNKNOWN}}
-}
-
-@interface ClassWithShadowedReadWriteProperty {
- int _f;
-}
-@property (readonly) int someProp;
-@end
-
-@interface ClassWithShadowedReadWriteProperty ()
-@property (readwrite) int someProp;
-@end
-
-@implementation ClassWithShadowedReadWriteProperty
-- (void)testSynthesisForShadowedReadWriteProperties; {
- clang_analyzer_eval(self.someProp == self.someProp); // expected-warning{{TRUE}}
-
- _f = 1;
-
- // Read of shadowed property should not invalidate receiver.
- (void)self.someProp;
- clang_analyzer_eval(_f == 1); // expected-warning{{TRUE}}
-
- _f = 2;
- // Call to getter of shadowed property should not invalidate receiver.
- (void)[self someProp];
- clang_analyzer_eval(_f == 2); // expected-warning{{TRUE}}
-}
-@end
-
-// Tests for the analyzer fix that works around a Sema bug
-// where multiple methods are created for properties in class extensions that
-// are redeclared in a category method.
-// The Sema bug is tracked as <rdar://problem/25481164>.
-@interface ClassWithRedeclaredPropertyInExtensionFollowedByCategory
-@end
-
-@interface ClassWithRedeclaredPropertyInExtensionFollowedByCategory ()
-@end
-
-@interface ClassWithRedeclaredPropertyInExtensionFollowedByCategory ()
-@property (readwrite) int someProp;
-@property (readonly) int otherProp;
-@end
-
-@interface ClassWithRedeclaredPropertyInExtensionFollowedByCategory (MyCat)
-@property (readonly) int someProp;
-@property (readonly) int otherProp;
-@end
-
-@implementation ClassWithRedeclaredPropertyInExtensionFollowedByCategory
-- (void)testSynthesisForRedeclaredProperties; {
- clang_analyzer_eval(self.someProp == self.someProp); // expected-warning{{TRUE}}
- clang_analyzer_eval([self someProp] == self.someProp); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(self.otherProp == self.otherProp); // expected-warning{{TRUE}}
- clang_analyzer_eval([self otherProp] == self.otherProp); // expected-warning{{TRUE}}
-}
-@end
-
-// The relative order of the extension and the category matter, so test both.
-@interface ClassWithRedeclaredPropertyInCategoryFollowedByExtension
-@end
-
-@interface ClassWithRedeclaredPropertyInCategoryFollowedByExtension ()
-@property (readwrite) int someProp;
-@end
-
-@interface ClassWithRedeclaredPropertyInCategoryFollowedByExtension (MyCat)
-@property (readonly) int someProp;
-@end
-
-@implementation ClassWithRedeclaredPropertyInCategoryFollowedByExtension
-- (void)testSynthesisForRedeclaredProperties; {
- clang_analyzer_eval(self.someProp == self.someProp); // expected-warning{{TRUE}}
- clang_analyzer_eval([self someProp] == self.someProp); // expected-warning{{TRUE}}
-}
-@end
-
-@interface ClassWithSynthesizedPropertyAndGetter
-@property (readonly) int someProp;
-@end
-
-@implementation ClassWithSynthesizedPropertyAndGetter
-@synthesize someProp;
-
-// Make sure that the actual getter is inlined and not a getter created
-// by BodyFarm
-- (void)testBodyFarmGetterNotUsed {
- int i = self.someProp;
- clang_analyzer_eval(i == 22); // expected-warning {{TRUE}}
-}
-
--(int)someProp {
- return 22;
-}
-@end
-
-__attribute__((objc_root_class))
-@interface ClassWithPrivatePropertyInClassExtensionWithProtocolShadowingCategory
-@end
-
-@protocol HasStuff
-@property (nonatomic, readonly) int stuffProperty;
-@end
-
-@interface ClassWithPrivatePropertyInClassExtensionWithProtocolShadowingCategory (Private)
-@property (nonatomic, readonly) int stuffProperty;
-@end
-
-@interface ClassWithPrivatePropertyInClassExtensionWithProtocolShadowingCategory (Internal) <HasStuff>
-@end
-
-@interface ClassWithPrivatePropertyInClassExtensionWithProtocolShadowingCategory() <HasStuff>
-@end
-
-@implementation ClassWithPrivatePropertyInClassExtensionWithProtocolShadowingCategory
-@synthesize stuffProperty = _stuffProperty;
-
--(void)foo {
- (void)self.stuffProperty;
-}
-@end
-
-//------
-// Setter ivar invalidation.
-//------
-
-@interface ClassWithSetters
-// Note: These properties have implicit @synthesize implementations to be
-// backed with ivars.
-@property (assign) int propWithIvar1;
-@property (assign) int propWithIvar2;
-
-@property (retain) NSNumber *retainedProperty;
-
-@end
-
-@interface ClassWithSetters (InOtherTranslationUnit)
-// The implementation of this property is in another translation unit.
-// We don't know whether it is backed by an ivar or not.
-@property (assign) int propInOther;
-@end
-
-@implementation ClassWithSetters
-- (void) testSettingPropWithIvarInvalidatesExactlyThatIvar; {
- _propWithIvar1 = 1;
- _propWithIvar2 = 2;
- self.propWithIvar1 = 66;
-
- // Calling the setter of a property backed by the instance variable
- // should invalidate the storage for the instance variable but not
- // the rest of the receiver. Ideally we would model the setter completely
- // but doing so would cause the new value to escape when it is bound
- // to the ivar. This would cause bad false negatives in the retain count
- // checker. (There is a test for this scenario in
- // testWriteRetainedValueToRetainedProperty below).
- clang_analyzer_eval(_propWithIvar1 == 66); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(_propWithIvar2 == 2); // expected-warning{{TRUE}}
-
- _propWithIvar1 = 1;
- [self setPropWithIvar1:66];
-
- clang_analyzer_eval(_propWithIvar1 == 66); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(_propWithIvar2 == 2); // expected-warning{{TRUE}}
-}
-
-- (void) testSettingPropWithoutIvarInvalidatesEntireInstance; {
- _propWithIvar1 = 1;
- _propWithIvar2 = 2;
- self.propInOther = 66;
-
- clang_analyzer_eval(_propWithIvar1 == 66); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(_propWithIvar2 == 2); // expected-warning{{UNKNOWN}}
-
- _propWithIvar1 = 1;
- _propWithIvar2 = 2;
- [self setPropInOther:66];
-
- clang_analyzer_eval(_propWithIvar1 == 66); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(_propWithIvar2 == 2); // expected-warning{{UNKNOWN}}
-}
-
-#if !__has_feature(objc_arc)
-- (void) testWriteRetainedValueToRetainedProperty; {
- NSNumber *number = [[NSNumber alloc] initWithInteger:5]; // expected-warning {{Potential leak of an object stored into 'number'}}
-
- // Make sure we catch this leak.
- self.retainedProperty = number;
-}
-#endif
-@end
-
-//------
-// class properties
-//------
-
-int gBackingForReadWriteClassProp = 0;
-
-@interface ClassWithClassProperties
-@property(class, readonly) int readOnlyClassProp;
-
-@property(class) int readWriteClassProp;
-
-// Make sure we handle when a class and instance property have the same
-// name. Test both when instance comes first and when class comes first.
-@property(readonly) int classAndInstancePropWithSameNameOrderInstanceFirst;
-@property(class, readonly) int classAndInstancePropWithSameNameOrderInstanceFirst;
-
-@property(class, readonly) int classAndInstancePropWithSameNameOrderClassFirst;
-@property(readonly) int classAndInstancePropWithSameNameOrderClassFirst;
-
-
-@property(class, readonly) int dynamicClassProp;
-
-@end
-
-@interface ClassWithClassProperties (OtherTranslationUnit)
-@property(class, assign) id propInOtherTranslationUnit;
-@end
-
-@implementation ClassWithClassProperties
-
-@dynamic dynamicClassProp;
-
-+ (int)readOnlyClassProp {
- return 1;
-}
-
-+ (int)readWriteClassProp {
- return gBackingForReadWriteClassProp;
-}
-
-+ (void)setReadWriteClassProp:(int)val {
- gBackingForReadWriteClassProp = val;
-}
-
-- (int)classAndInstancePropWithSameNameOrderInstanceFirst {
- return 12;
-}
-
-+ (int)classAndInstancePropWithSameNameOrderInstanceFirst {
- return 13;
-}
-
-+ (int)classAndInstancePropWithSameNameOrderClassFirst {
- return 14;
-}
-
-- (int)classAndInstancePropWithSameNameOrderClassFirst {
- return 15;
-}
-
-- (void)testInlineClassProp {
- clang_analyzer_eval(ClassWithClassProperties.readOnlyClassProp == 1); // expected-warning{{TRUE}}
-
- ClassWithClassProperties.readWriteClassProp = 7;
- clang_analyzer_eval(ClassWithClassProperties.readWriteClassProp == 7); // expected-warning{{TRUE}}
- ClassWithClassProperties.readWriteClassProp = 8;
- clang_analyzer_eval(ClassWithClassProperties.readWriteClassProp == 8); // expected-warning{{TRUE}}
-}
-
-- (void)testUnknownClassProp {
- clang_analyzer_eval(ClassWithClassProperties.propInOtherTranslationUnit == ClassWithClassProperties.propInOtherTranslationUnit); // expected-warning{{UNKNOWN}}
-}
-
-- (void)testEscapeGlobalOnUnknownProp {
- gBackingForReadWriteClassProp = 33;
- ClassWithClassProperties.propInOtherTranslationUnit = 0;
- clang_analyzer_eval(gBackingForReadWriteClassProp == 33); // expected-warning{{UNKNOWN}}
-}
-
-- (void)testClassAndInstancePropertyWithSameName {
- clang_analyzer_eval(self.classAndInstancePropWithSameNameOrderInstanceFirst == 12); // expected-warning{{TRUE}}
- clang_analyzer_eval(ClassWithClassProperties.classAndInstancePropWithSameNameOrderInstanceFirst == 13); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(ClassWithClassProperties.classAndInstancePropWithSameNameOrderClassFirst == 14); // expected-warning{{TRUE}}
- clang_analyzer_eval(self.classAndInstancePropWithSameNameOrderClassFirst == 15); // expected-warning{{TRUE}}
-}
-
-- (void)testDynamicClassProp {
- clang_analyzer_eval(ClassWithClassProperties.dynamicClassProp == 16); // expected-warning{{UNKNOWN}}
-}
-
-@end
-
-@interface SubclassOfClassWithClassProperties : ClassWithClassProperties
-@end
-
-@implementation SubclassOfClassWithClassProperties
-+ (int)dynamicClassProp; {
- return 16;
-}
-
-- (void)testDynamicClassProp {
- clang_analyzer_eval(SubclassOfClassWithClassProperties.dynamicClassProp == 16); // expected-warning{{TRUE}}
-}
-
-@end
-
-
-#if !__has_feature(objc_arc)
-void testOverrelease(Person *p, int coin) {
- switch (coin) {
- case 0:
- [p.name release]; // expected-warning{{not owned}}
- break;
- case 1:
- [p.friend release]; // expected-warning{{not owned}}
- break;
- case 2: {
- id friend = p.friend;
- doSomethingWithPerson(p);
- [friend release]; // expected-warning{{not owned}}
- }
- }
-}
-
-// <rdar://problem/16333368>
-@implementation Person (Rdar16333368)
-
-- (void)testDeliberateRelease:(Person *)other {
- doSomethingWithName(self.name);
- [_name release]; // no-warning
- self->_name = 0;
-
- doSomethingWithName(other->_name);
- [other.name release]; // no-warning
-}
-
-- (void)deliberateReleaseFalseNegative {
- // This is arguably a false negative because the result of p.friend shouldn't
- // be released, even though we are manipulating the ivar in between the two
- // actions.
- id name = self.name;
- _name = 0;
- [name release];
-}
-
-- (void)testRetainAndRelease {
- [self.name retain];
- [self.name release];
- [self.name release]; // expected-warning{{not owned}}
-}
-
-- (void)testRetainAndReleaseIVar {
- [self.name retain];
- [_name release];
- [_name release];
-}
-
-@end
-#endif
-
-@interface IntWrapper
-@property int value;
-@end
-
-@implementation IntWrapper
-@synthesize value;
-@end
-
-void testConsistencyInt(IntWrapper *w) {
- clang_analyzer_eval(w.value == w.value); // expected-warning{{TRUE}}
-
- int origValue = w.value;
- if (origValue != 42)
- return;
-
- clang_analyzer_eval(w.value == 42); // expected-warning{{TRUE}}
-}
-
-void testConsistencyInt2(IntWrapper *w) {
- if (w.value != 42)
- return;
-
- clang_analyzer_eval(w.value == 42); // expected-warning{{TRUE}}
-}
-
-
-@interface IntWrapperAuto
-@property int value;
-@end
-
-@implementation IntWrapperAuto
-@end
-
-void testConsistencyIntAuto(IntWrapperAuto *w) {
- clang_analyzer_eval(w.value == w.value); // expected-warning{{TRUE}}
-
- int origValue = w.value;
- if (origValue != 42)
- return;
-
- clang_analyzer_eval(w.value == 42); // expected-warning{{TRUE}}
-}
-
-void testConsistencyIntAuto2(IntWrapperAuto *w) {
- if (w.value != 42)
- return;
-
- clang_analyzer_eval(w.value == 42); // expected-warning{{TRUE}}
-}
-
-
-typedef struct {
- int value;
-} IntWrapperStruct;
-
-@interface StructWrapper
-@property IntWrapperStruct inner;
-@end
-
-@implementation StructWrapper
-@synthesize inner;
-@end
-
-void testConsistencyStruct(StructWrapper *w) {
- clang_analyzer_eval(w.inner.value == w.inner.value); // expected-warning{{TRUE}}
-
- int origValue = w.inner.value;
- if (origValue != 42)
- return;
-
- clang_analyzer_eval(w.inner.value == 42); // expected-warning{{TRUE}}
-}
-
-
-@interface OpaqueIntWrapper
-@property int value;
-@end
-
-// For now, don't assume a property is implemented using an ivar unless we can
-// actually see that it is.
-void testOpaqueConsistency(OpaqueIntWrapper *w) {
- clang_analyzer_eval(w.value == w.value); // expected-warning{{UNKNOWN}}
-}
-
-
-#if !__has_feature(objc_arc)
-// Test quite a few cases of retain/release issues.
-
-@interface RetainCountTesting
-@property (strong) id ownedProp;
-@property (unsafe_unretained) id unownedProp;
-@property (nonatomic, strong) id manualProp;
-@property (readonly) id readonlyProp;
-@property (nonatomic, readwrite/*, assign */) id implicitManualProp; // expected-warning {{'assign' is assumed}} expected-warning {{'assign' not appropriate}}
-@property (nonatomic, readwrite/*, assign */) id implicitSynthProp; // expected-warning {{'assign' is assumed}} expected-warning {{'assign' not appropriate}}
-@property CFTypeRef cfProp;
-@end
-
-@implementation RetainCountTesting {
- id _ivarOnly;
-}
-
-- (id)manualProp {
- return _manualProp;
-}
-
-- (void)setImplicitManualProp:(id)newValue {}
-
-- (void)testOverreleaseOwnedIvar {
- [_ownedProp retain];
- [_ownedProp release];
- [_ownedProp release];
- [_ownedProp release]; // FIXME-warning{{used after it is released}}
-}
-
-- (void)testOverreleaseUnownedIvar {
- [_unownedProp retain];
- [_unownedProp release];
- [_unownedProp release]; // FIXME-warning{{not owned at this point by the caller}}
-}
-
-- (void)testOverreleaseIvarOnly {
- [_ivarOnly retain];
- [_ivarOnly release];
- [_ivarOnly release];
- [_ivarOnly release]; // FIXME-warning{{used after it is released}}
-}
-
-- (void)testOverreleaseReadonlyIvar {
- [_readonlyProp retain];
- [_readonlyProp release];
- [_readonlyProp release];
- [_readonlyProp release]; // FIXME-warning{{used after it is released}}
-}
-
-- (void)testOverreleaseImplicitManualIvar {
- [_implicitManualProp retain];
- [_implicitManualProp release];
- [_implicitManualProp release];
- [_implicitManualProp release]; // FIXME-warning{{used after it is released}}
-}
-
-- (void)testOverreleaseImplicitSynthIvar {
- [_implicitSynthProp retain];
- [_implicitSynthProp release];
- [_implicitSynthProp release]; // FIXME-warning{{not owned at this point by the caller}}
-}
-
-- (void)testOverreleaseCF {
- CFRetain(_cfProp);
- CFRelease(_cfProp);
- CFRelease(_cfProp);
- CFRelease(_cfProp); // FIXME-warning{{used after it is released}}
-}
-
-- (void)testOverreleaseOwnedIvarUse {
- [_ownedProp retain];
- [_ownedProp release];
- [_ownedProp release];
- [_ownedProp myMethod]; // FIXME-warning{{used after it is released}}
-}
-
-- (void)testOverreleaseIvarOnlyUse {
- [_ivarOnly retain];
- [_ivarOnly release];
- [_ivarOnly release];
- [_ivarOnly myMethod]; // FIXME-warning{{used after it is released}}
-}
-
-- (void)testOverreleaseCFUse {
- CFRetain(_cfProp);
- CFRelease(_cfProp);
- CFRelease(_cfProp);
-
- extern void CFUse(CFTypeRef);
- CFUse(_cfProp); // FIXME-warning{{used after it is released}}
-}
-
-- (void)testOverreleaseOwnedIvarAutoreleaseOkay {
- [_ownedProp retain];
- [_ownedProp release];
- [_ownedProp autorelease];
-} // no-warning
-
-- (void)testOverreleaseIvarOnlyAutoreleaseOkay {
- [_ivarOnly retain];
- [_ivarOnly release];
- [_ivarOnly autorelease];
-} // no-warning
-
-- (void)testOverreleaseOwnedIvarAutorelease {
- [_ownedProp retain];
- [_ownedProp release];
- [_ownedProp autorelease];
- [_ownedProp autorelease];
-} // FIXME-warning{{Object autoreleased too many times}}
-
-- (void)testOverreleaseIvarOnlyAutorelease {
- [_ivarOnly retain];
- [_ivarOnly release];
- [_ivarOnly autorelease];
- [_ivarOnly autorelease];
-} // FIXME-warning{{Object autoreleased too many times}}
-
-- (void)testPropertyAccessThenReleaseOwned {
- id owned = [self.ownedProp retain];
- [owned release];
- [_ownedProp release];
- clang_analyzer_eval(owned == _ownedProp); // expected-warning{{TRUE}}
-}
-
-- (void)testPropertyAccessThenReleaseOwned2 {
- id fromIvar = _ownedProp;
- id owned = [self.ownedProp retain];
- [owned release];
- [fromIvar release];
- clang_analyzer_eval(owned == fromIvar); // expected-warning{{TRUE}}
-}
-
-- (void)testPropertyAccessThenReleaseUnowned {
- id unowned = [self.unownedProp retain];
- [unowned release];
- [_unownedProp release]; // FIXME-warning{{not owned}}
-}
-
-- (void)testPropertyAccessThenReleaseUnowned2 {
- id fromIvar = _unownedProp;
- id unowned = [self.unownedProp retain];
- [unowned release];
- clang_analyzer_eval(unowned == fromIvar); // expected-warning{{TRUE}}
- [fromIvar release]; // FIXME-warning{{not owned}}
-}
-
-- (void)testPropertyAccessThenReleaseManual {
- id prop = [self.manualProp retain];
- [prop release];
- [_manualProp release]; // no-warning
-}
-
-- (void)testPropertyAccessThenReleaseManual2 {
- id fromIvar = _manualProp;
- id prop = [self.manualProp retain];
- [prop release];
- clang_analyzer_eval(prop == fromIvar); // expected-warning{{TRUE}}
- [fromIvar release]; // no-warning
-}
-
-- (void)testPropertyAccessThenReleaseCF {
- CFTypeRef owned = CFRetain(self.cfProp);
- CFRelease(owned);
- CFRelease(_cfProp); // no-warning
- clang_analyzer_eval(owned == _cfProp); // expected-warning{{TRUE}}
-}
-
-- (void)testPropertyAccessThenReleaseCF2 {
- CFTypeRef fromIvar = _cfProp;
- CFTypeRef owned = CFRetain(self.cfProp);
- CFRelease(owned);
- CFRelease(fromIvar);
- clang_analyzer_eval(owned == fromIvar); // expected-warning{{TRUE}}
-}
-
-- (void)testPropertyAccessThenReleaseReadonly {
- id prop = [self.readonlyProp retain];
- [prop release];
- [_readonlyProp release]; // no-warning
-}
-
-- (void)testPropertyAccessThenReleaseReadonly2 {
- id fromIvar = _readonlyProp;
- id prop = [self.readonlyProp retain];
- [prop release];
- clang_analyzer_eval(prop == fromIvar); // expected-warning{{TRUE}}
- [fromIvar release]; // no-warning
-}
-
-- (void)testPropertyAccessThenReleaseImplicitManual {
- id prop = [self.implicitManualProp retain];
- [prop release];
- [_implicitManualProp release]; // no-warning
-}
-
-- (void)testPropertyAccessThenReleaseImplicitManual2 {
- id fromIvar = _implicitManualProp;
- id prop = [self.implicitManualProp retain];
- [prop release];
- clang_analyzer_eval(prop == fromIvar); // expected-warning{{TRUE}}
- [fromIvar release]; // no-warning
-}
-
-- (void)testPropertyAccessThenReleaseImplicitSynth {
- id prop = [self.implicitSynthProp retain];
- [prop release];
- [_implicitSynthProp release]; // FIXME-warning{{not owned}}
-}
-
-- (void)testPropertyAccessThenReleaseImplicitSynth2 {
- id fromIvar = _implicitSynthProp;
- id prop = [self.implicitSynthProp retain];
- [prop release];
- clang_analyzer_eval(prop == fromIvar); // expected-warning{{TRUE}}
- [fromIvar release]; // FIXME-warning{{not owned}}
-}
-
-- (id)getUnownedFromProperty {
- [_ownedProp retain];
- [_ownedProp autorelease];
- return _ownedProp; // no-warning
-}
-
-- (id)transferUnownedFromProperty {
- [_ownedProp retain];
- [_ownedProp autorelease];
- return [_ownedProp autorelease]; // no-warning
-}
-
-- (id)transferOwnedFromProperty __attribute__((ns_returns_retained)) {
- [_ownedProp retain];
- [_ownedProp autorelease];
- return _ownedProp; // no-warning
-}
-
-- (void)testAssignOwned:(id)newValue {
- _ownedProp = newValue;
- [_ownedProp release]; // FIXME: no-warning{{not owned}}
-}
-
-- (void)testAssignUnowned:(id)newValue {
- _unownedProp = newValue;
- [_unownedProp release]; // FIXME: no-warning{{not owned}}
-}
-
-- (void)testAssignIvarOnly:(id)newValue {
- _ivarOnly = newValue;
- [_ivarOnly release]; // FIXME: no-warning{{not owned}}
-}
-
-- (void)testAssignCF:(CFTypeRef)newValue {
- _cfProp = newValue;
- CFRelease(_cfProp); // FIXME: no-warning{{not owned}}
-}
-
-- (void)testAssignReadonly:(id)newValue {
- _readonlyProp = newValue;
- [_readonlyProp release]; // FIXME: no-warning{{not owned}}
-}
-
-- (void)testAssignImplicitManual:(id)newValue {
- _implicitManualProp = newValue;
- [_implicitManualProp release]; // FIXME: no-warning{{not owned}}
-}
-
-- (void)testAssignImplicitSynth:(id)newValue {
- _implicitSynthProp = newValue;
- [_implicitSynthProp release]; // FIXME: no-warning{{not owned}}
-}
-
-- (void)testAssignOwnedOkay:(id)newValue {
- _ownedProp = [newValue retain];
- [_ownedProp release]; // no-warning
-}
-
-- (void)testAssignUnownedOkay:(id)newValue {
- _unownedProp = [newValue retain];
- [_unownedProp release]; // no-warning
-}
-
-- (void)testAssignIvarOnlyOkay:(id)newValue {
- _ivarOnly = [newValue retain];
- [_ivarOnly release]; // no-warning
-}
-
-- (void)testAssignCFOkay:(CFTypeRef)newValue {
- _cfProp = CFRetain(newValue);
- CFRelease(_cfProp); // no-warning
-}
-
-- (void)testAssignReadonlyOkay:(id)newValue {
- _readonlyProp = [newValue retain];
- [_readonlyProp release]; // FIXME: no-warning{{not owned}}
-}
-
-- (void)testAssignImplicitManualOkay:(id)newValue {
- _implicitManualProp = [newValue retain];
- [_implicitManualProp release]; // FIXME: no-warning{{not owned}}
-}
-
-- (void)testAssignImplicitSynthOkay:(id)newValue {
- _implicitSynthProp = [newValue retain];
- [_implicitSynthProp release]; // FIXME: no-warning{{not owned}}
-}
-
-// rdar://problem/19862648
-- (void)establishIvarIsNilDuringLoops {
- extern id getRandomObject();
-
- int i = 4; // Must be at least 4 to trigger the bug.
- while (--i) {
- id x = 0;
- if (getRandomObject())
- x = _ivarOnly;
- if (!x)
- x = getRandomObject();
- [x myMethod];
- }
-}
-
-// rdar://problem/20335433
-- (void)retainIvarAndInvalidateSelf {
- extern void invalidate(id);
- [_unownedProp retain];
- invalidate(self);
- [_unownedProp release]; // no-warning
-}
-
-@end
-
-@interface Wrapper
-@property(nonatomic, readonly) int value;
-@end
-
-@implementation Wrapper
-@synthesize value;
-@end
-
-void testNoCrashWhenAccessPropertyAndThereAreNoDirectBindingsAtAll() {
- union {
- Wrapper *wrapper;
- } u = { 0 };
- [u.wrapper value];
-}
-
-#endif // non-ARC
-
diff --git a/test/Analysis/properties.mm b/test/Analysis/properties.mm
deleted file mode 100644
index 2d93d6dc6385..000000000000
--- a/test/Analysis/properties.mm
+++ /dev/null
@@ -1,79 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,debug.ExprInspection -analyzer-store=region -verify -Wno-objc-root-class %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,debug.ExprInspection -analyzer-store=region -verify -Wno-objc-root-class -fobjc-arc %s
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_checkInlined(bool);
-
-@interface IntWrapper
-@property (readonly) int &value;
-@end
-
-@implementation IntWrapper
-@synthesize value;
-@end
-
-void testReferenceConsistency(IntWrapper *w) {
- clang_analyzer_eval(w.value == w.value); // expected-warning{{TRUE}}
- clang_analyzer_eval(&w.value == &w.value); // expected-warning{{TRUE}}
-
- if (w.value != 42)
- return;
-
- clang_analyzer_eval(w.value == 42); // expected-warning{{TRUE}}
-}
-
-void testReferenceAssignment(IntWrapper *w) {
- w.value = 42;
- clang_analyzer_eval(w.value == 42); // expected-warning{{TRUE}}
-}
-
-
-struct IntWrapperStruct {
- int value;
-};
-
-@interface StructWrapper
-@property IntWrapperStruct inner;
-@end
-
-@implementation StructWrapper
-@synthesize inner;
-@end
-
-void testConsistencyStruct(StructWrapper *w) {
- clang_analyzer_eval(w.inner.value == w.inner.value); // expected-warning{{TRUE}}
-
- int origValue = w.inner.value;
- if (origValue != 42)
- return;
-
- clang_analyzer_eval(w.inner.value == 42); // expected-warning{{TRUE}}
-}
-
-
-class CustomCopy {
-public:
- CustomCopy() : value(0) {}
- CustomCopy(const CustomCopy &other) : value(other.value) {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- }
- int value;
-};
-
-@interface CustomCopyWrapper
-@property CustomCopy inner;
-@end
-
-@implementation CustomCopyWrapper
-//@synthesize inner;
-@end
-
-void testConsistencyCustomCopy(CustomCopyWrapper *w) {
- clang_analyzer_eval(w.inner.value == w.inner.value); // expected-warning{{TRUE}}
-
- int origValue = w.inner.value;
- if (origValue != 42)
- return;
-
- clang_analyzer_eval(w.inner.value == 42); // expected-warning{{TRUE}}
-}
diff --git a/test/Analysis/pthreadlock.c b/test/Analysis/pthreadlock.c
deleted file mode 100644
index 56a92d7d4d92..000000000000
--- a/test/Analysis/pthreadlock.c
+++ /dev/null
@@ -1,473 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.unix.PthreadLock -verify %s
-
-// Tests performing normal locking patterns and wrong locking orders
-
-#include "Inputs/system-header-simulator-for-pthread-lock.h"
-
-pthread_mutex_t mtx1, mtx2;
-pthread_mutex_t *pmtx;
-lck_mtx_t lck1, lck2;
-lck_grp_t grp1;
-
-#define NULL 0
-
-void
-ok1(void)
-{
- pthread_mutex_lock(&mtx1); // no-warning
-}
-
-void
-ok2(void)
-{
- pthread_mutex_unlock(&mtx1); // no-warning
-}
-
-void
-ok3(void)
-{
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
-}
-
-void
-ok4(void)
-{
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
- pthread_mutex_lock(&mtx2); // no-warning
- pthread_mutex_unlock(&mtx2); // no-warning
-}
-
-void
-ok5(void)
-{
- if (pthread_mutex_trylock(&mtx1) == 0) // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
-}
-
-void
-ok6(void)
-{
- lck_mtx_lock(&lck1); // no-warning
-}
-
-void
-ok7(void)
-{
- if (lck_mtx_try_lock(&lck1) != 0) // no-warning
- lck_mtx_unlock(&lck1); // no-warning
-}
-
-void
-ok8(void)
-{
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_lock(&mtx2); // no-warning
- pthread_mutex_unlock(&mtx2); // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
-}
-
-void
-ok9(void)
-{
- pthread_mutex_unlock(&mtx1); // no-warning
- if (pthread_mutex_trylock(&mtx1) == 0) // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
-}
-
-void
-ok10(void)
-{
- if (pthread_mutex_trylock(&mtx1) != 0) // no-warning
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
-}
-
-void
-ok11(void)
-{
- pthread_mutex_destroy(&mtx1); // no-warning
-}
-
-void
-ok12(void)
-{
- pthread_mutex_destroy(&mtx1); // no-warning
- pthread_mutex_destroy(&mtx2); // no-warning
-}
-
-void
-ok13(void)
-{
- pthread_mutex_unlock(&mtx1); // no-warning
- pthread_mutex_destroy(&mtx1); // no-warning
-}
-
-void
-ok14(void)
-{
- pthread_mutex_unlock(&mtx1); // no-warning
- pthread_mutex_destroy(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx2); // no-warning
- pthread_mutex_destroy(&mtx2); // no-warning
-}
-
-void
-ok15(void)
-{
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
- pthread_mutex_destroy(&mtx1); // no-warning
-}
-
-void
-ok16(void)
-{
- pthread_mutex_init(&mtx1, NULL); // no-warning
-}
-
-void
-ok17(void)
-{
- pthread_mutex_init(&mtx1, NULL); // no-warning
- pthread_mutex_init(&mtx2, NULL); // no-warning
-}
-
-void
-ok18(void)
-{
- pthread_mutex_destroy(&mtx1); // no-warning
- pthread_mutex_init(&mtx1, NULL); // no-warning
-}
-
-void
-ok19(void)
-{
- pthread_mutex_destroy(&mtx1); // no-warning
- pthread_mutex_init(&mtx1, NULL); // no-warning
- pthread_mutex_destroy(&mtx2); // no-warning
- pthread_mutex_init(&mtx2, NULL); // no-warning
-}
-
-void
-ok20(void)
-{
- pthread_mutex_unlock(&mtx1); // no-warning
- pthread_mutex_destroy(&mtx1); // no-warning
- pthread_mutex_init(&mtx1, NULL); // no-warning
- pthread_mutex_destroy(&mtx1); // no-warning
- pthread_mutex_init(&mtx1, NULL); // no-warning
-}
-
-void
-ok21(void) {
- pthread_mutex_lock(pmtx); // no-warning
- pthread_mutex_unlock(pmtx); // no-warning
-}
-
-void
-ok22(void) {
- pthread_mutex_lock(pmtx); // no-warning
- pthread_mutex_unlock(pmtx); // no-warning
- pthread_mutex_lock(pmtx); // no-warning
- pthread_mutex_unlock(pmtx); // no-warning
-}
-
-void ok23(void) {
- if (pthread_mutex_destroy(&mtx1) != 0) // no-warning
- pthread_mutex_destroy(&mtx1); // no-warning
-}
-
-void ok24(void) {
- if (pthread_mutex_destroy(&mtx1) != 0) // no-warning
- pthread_mutex_lock(&mtx1); // no-warning
-}
-
-void ok25(void) {
- if (pthread_mutex_destroy(&mtx1) != 0) // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
-}
-
-void ok26(void) {
- pthread_mutex_unlock(&mtx1); // no-warning
- if (pthread_mutex_destroy(&mtx1) != 0) // no-warning
- pthread_mutex_lock(&mtx1); // no-warning
-}
-
-void ok27(void) {
- pthread_mutex_unlock(&mtx1); // no-warning
- if (pthread_mutex_destroy(&mtx1) != 0) // no-warning
- pthread_mutex_lock(&mtx1); // no-warning
- else
- pthread_mutex_init(&mtx1, NULL); // no-warning
-}
-
-void ok28(void) {
- if (pthread_mutex_destroy(&mtx1) != 0) { // no-warning
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
- pthread_mutex_destroy(&mtx1); // no-warning
- }
-}
-
-void
-bad1(void)
-{
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_lock(&mtx1); // expected-warning{{This lock has already been acquired}}
-}
-
-void
-bad2(void)
-{
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_lock(&mtx1); // expected-warning{{This lock has already been acquired}}
-}
-
-void
-bad3(void)
-{
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_lock(&mtx2); // no-warning
- pthread_mutex_unlock(&mtx1); // expected-warning{{This was not the most recently acquired lock}}
- pthread_mutex_unlock(&mtx2);
-}
-
-void
-bad4(void)
-{
- if (pthread_mutex_trylock(&mtx1)) // no-warning
- return;
- pthread_mutex_lock(&mtx2); // no-warning
- pthread_mutex_unlock(&mtx1); // expected-warning{{This was not the most recently acquired lock}}
-}
-
-void
-bad5(void)
-{
- lck_mtx_lock(&lck1); // no-warning
- lck_mtx_lock(&lck1); // expected-warning{{This lock has already been acquired}}
-}
-
-void
-bad6(void)
-{
- lck_mtx_lock(&lck1); // no-warning
- lck_mtx_unlock(&lck1); // no-warning
- lck_mtx_lock(&lck1); // no-warning
- lck_mtx_lock(&lck1); // expected-warning{{This lock has already been acquired}}
-}
-
-void
-bad7(void)
-{
- lck_mtx_lock(&lck1); // no-warning
- lck_mtx_lock(&lck2); // no-warning
- lck_mtx_unlock(&lck1); // expected-warning{{This was not the most recently acquired lock}}
- lck_mtx_unlock(&lck2);
-}
-
-void
-bad8(void)
-{
- if (lck_mtx_try_lock(&lck1) == 0) // no-warning
- return;
- lck_mtx_lock(&lck2); // no-warning
- lck_mtx_unlock(&lck1); // expected-warning{{This was not the most recently acquired lock}}
-}
-
-void
-bad9(void)
-{
- lck_mtx_unlock(&lck1); // no-warning
- lck_mtx_unlock(&lck1); // expected-warning{{This lock has already been unlocked}}
-}
-
-void
-bad10(void)
-{
- lck_mtx_lock(&lck1); // no-warning
- lck_mtx_unlock(&lck1); // no-warning
- lck_mtx_unlock(&lck1); // expected-warning{{This lock has already been unlocked}}
-}
-
-static void
-bad11_sub(pthread_mutex_t *lock)
-{
- lck_mtx_unlock(lock); // expected-warning{{This lock has already been unlocked}}
-}
-
-void
-bad11(int i)
-{
- lck_mtx_lock(&lck1); // no-warning
- lck_mtx_unlock(&lck1); // no-warning
- if (i < 5)
- bad11_sub(&lck1);
-}
-
-void
-bad12(void)
-{
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx1); // expected-warning{{This lock has already been unlocked}}
-}
-
-void
-bad13(void)
-{
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
- pthread_mutex_lock(&mtx2); // no-warning
- pthread_mutex_unlock(&mtx2); // no-warning
- pthread_mutex_unlock(&mtx1); // expected-warning{{This lock has already been unlocked}}
-}
-
-void
-bad14(void)
-{
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_lock(&mtx2); // no-warning
- pthread_mutex_unlock(&mtx2); // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx2); // expected-warning{{This lock has already been unlocked}}
-}
-
-void
-bad15(void)
-{
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_lock(&mtx2); // no-warning
- pthread_mutex_unlock(&mtx2); // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx2); // expected-warning{{This lock has already been unlocked}}
-}
-
-void
-bad16(void)
-{
- pthread_mutex_destroy(&mtx1); // no-warning
- pthread_mutex_lock(&mtx1); // expected-warning{{This lock has already been destroyed}}
-}
-
-void
-bad17(void)
-{
- pthread_mutex_destroy(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx1); // expected-warning{{This lock has already been destroyed}}
-}
-
-void
-bad18(void)
-{
- pthread_mutex_destroy(&mtx1); // no-warning
- pthread_mutex_destroy(&mtx1); // expected-warning{{This lock has already been destroyed}}
-}
-
-void
-bad19(void)
-{
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_destroy(&mtx1); // expected-warning{{This lock is still locked}}
-}
-
-void
-bad20(void)
-{
- lck_mtx_destroy(&mtx1, &grp1); // no-warning
- lck_mtx_lock(&mtx1); // expected-warning{{This lock has already been destroyed}}
-}
-
-void
-bad21(void)
-{
- lck_mtx_destroy(&mtx1, &grp1); // no-warning
- lck_mtx_unlock(&mtx1); // expected-warning{{This lock has already been destroyed}}
-}
-
-void
-bad22(void)
-{
- lck_mtx_destroy(&mtx1, &grp1); // no-warning
- lck_mtx_destroy(&mtx1, &grp1); // expected-warning{{This lock has already been destroyed}}
-}
-
-void
-bad23(void)
-{
- lck_mtx_lock(&mtx1); // no-warning
- lck_mtx_destroy(&mtx1, &grp1); // expected-warning{{This lock is still locked}}
-}
-
-void
-bad24(void)
-{
- pthread_mutex_init(&mtx1, NULL); // no-warning
- pthread_mutex_init(&mtx1, NULL); // expected-warning{{This lock has already been initialized}}
-}
-
-void
-bad25(void)
-{
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_init(&mtx1, NULL); // expected-warning{{This lock is still being held}}
-}
-
-void
-bad26(void)
-{
- pthread_mutex_unlock(&mtx1); // no-warning
- pthread_mutex_init(&mtx1, NULL); // expected-warning{{This lock has already been initialized}}
-}
-
-void bad27(void) {
- pthread_mutex_unlock(&mtx1); // no-warning
- int ret = pthread_mutex_destroy(&mtx1); // no-warning
- if (ret != 0) // no-warning
- pthread_mutex_lock(&mtx1); // no-warning
- else
- pthread_mutex_unlock(&mtx1); // expected-warning{{This lock has already been destroyed}}
-}
-
-void bad28(void) {
- pthread_mutex_unlock(&mtx1); // no-warning
- int ret = pthread_mutex_destroy(&mtx1); // no-warning
- if (ret != 0) // no-warning
- pthread_mutex_lock(&mtx1); // no-warning
- else
- pthread_mutex_lock(&mtx1); // expected-warning{{This lock has already been destroyed}}
-}
-
-void bad29(void) {
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
- if (pthread_mutex_destroy(&mtx1) != 0) // no-warning
- pthread_mutex_init(&mtx1, NULL); // expected-warning{{This lock has already been initialized}}
- else
- pthread_mutex_init(&mtx1, NULL); // no-warning
-}
-
-void bad30(void) {
- pthread_mutex_lock(&mtx1); // no-warning
- pthread_mutex_unlock(&mtx1); // no-warning
- if (pthread_mutex_destroy(&mtx1) != 0) // no-warning
- pthread_mutex_init(&mtx1, NULL); // expected-warning{{This lock has already been initialized}}
- else
- pthread_mutex_destroy(&mtx1); // expected-warning{{This lock has already been destroyed}}
-}
-
-void bad31(void) {
- int ret = pthread_mutex_destroy(&mtx1); // no-warning
- pthread_mutex_lock(&mtx1); // expected-warning{{This lock has already been destroyed}}
- if (ret != 0)
- pthread_mutex_lock(&mtx1);
-}
diff --git a/test/Analysis/ptr-arith.c b/test/Analysis/ptr-arith.c
deleted file mode 100644
index 8c57ab827cf7..000000000000
--- a/test/Analysis/ptr-arith.c
+++ /dev/null
@@ -1,332 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.core.FixedAddr,alpha.core.PointerArithm,alpha.core.PointerSub,debug.ExprInspection -analyzer-store=region -verify -triple x86_64-apple-darwin9 -Wno-tautological-pointer-compare -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.core.FixedAddr,alpha.core.PointerArithm,alpha.core.PointerSub,debug.ExprInspection -analyzer-store=region -verify -triple i686-apple-darwin9 -Wno-tautological-pointer-compare -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(int);
-
-void f1() {
- int a[10];
- int *p = a;
- ++p;
-}
-
-char* foo();
-
-void f2() {
- char *p = foo();
- ++p;
-}
-
-// This test case checks if we get the right rvalue type of a TypedViewRegion.
-// The ElementRegion's type depends on the array region's rvalue type. If it was
-// a pointer type, we would get a loc::SymbolVal for '*p'.
-void* memchr();
-static int
-domain_port (const char *domain_b, const char *domain_e,
- const char **domain_e_ptr)
-{
- int port = 0;
-
- const char *p;
- const char *colon = memchr (domain_b, ':', domain_e - domain_b);
-
- for (p = colon + 1; p < domain_e ; p++)
- port = 10 * port + (*p - '0');
- return port;
-}
-
-void f3() {
- int x, y;
- int d = &y - &x; // expected-warning{{Subtraction of two pointers that do not point to the same memory chunk may cause incorrect result}}
-
- int a[10];
- int *p = &a[2];
- int *q = &a[8];
- d = q-p; // no-warning
-}
-
-void f4() {
- int *p;
- p = (int*) 0x10000; // expected-warning{{Using a fixed address is not portable because that address will probably not be valid in all environments or platforms}}
-}
-
-void f5() {
- int x, y;
- int *p;
- p = &x + 1; // expected-warning{{Pointer arithmetic on non-array variables relies on memory layout, which is dangerous}}
-
- int a[10];
- p = a + 1; // no-warning
-}
-
-// Allow arithmetic on different symbolic regions.
-void f6(int *p, int *q) {
- int d = q - p; // no-warning
-}
-
-void null_operand(int *a) {
-start:
- // LHS is a label, RHS is NULL
- clang_analyzer_eval(&&start != 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(&&start >= 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(&&start > 0); // expected-warning{{TRUE}}
- clang_analyzer_eval((&&start - 0) != 0); // expected-warning{{TRUE}}
-
- // LHS is a non-symbolic value, RHS is NULL
- clang_analyzer_eval(&a != 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(&a >= 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(&a > 0); // expected-warning{{TRUE}}
- clang_analyzer_eval((&a - 0) != 0); // expected-warning{{TRUE}}
-
- // LHS is NULL, RHS is non-symbolic
- // The same code is used for labels and non-symbolic values.
- clang_analyzer_eval(0 != &a); // expected-warning{{TRUE}}
- clang_analyzer_eval(0 <= &a); // expected-warning{{TRUE}}
- clang_analyzer_eval(0 < &a); // expected-warning{{TRUE}}
-
- // LHS is a symbolic value, RHS is NULL
- clang_analyzer_eval(a != 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a >= 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(a <= 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((a - 0) != 0); // expected-warning{{UNKNOWN}}
-
- // LHS is NULL, RHS is a symbolic value
- clang_analyzer_eval(0 != a); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(0 <= a); // expected-warning{{TRUE}}
- clang_analyzer_eval(0 < a); // expected-warning{{UNKNOWN}}
-}
-
-void const_locs() {
- char *a = (char*)0x1000;
- char *b = (char*)0x1100;
-start:
- clang_analyzer_eval(a != b); // expected-warning{{TRUE}}
- clang_analyzer_eval(a < b); // expected-warning{{TRUE}}
- clang_analyzer_eval(a <= b); // expected-warning{{TRUE}}
- clang_analyzer_eval((b-a) == 0x100); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(&&start == a); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == &&start); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(&a == (char**)a); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval((char**)a == &a); // expected-warning{{UNKNOWN}}
-}
-
-void array_matching_types() {
- int array[10];
- int *a = &array[2];
- int *b = &array[5];
-
- clang_analyzer_eval(a != b); // expected-warning{{TRUE}}
- clang_analyzer_eval(a < b); // expected-warning{{TRUE}}
- clang_analyzer_eval(a <= b); // expected-warning{{TRUE}}
- clang_analyzer_eval((b-a) != 0); // expected-warning{{TRUE}}
-}
-
-// This takes a different code path than array_matching_types()
-void array_different_types() {
- int array[10];
- int *a = &array[2];
- char *b = (char*)&array[5];
-
- clang_analyzer_eval(a != b); // expected-warning{{TRUE}} expected-warning{{comparison of distinct pointer types}}
- clang_analyzer_eval(a < b); // expected-warning{{TRUE}} expected-warning{{comparison of distinct pointer types}}
- clang_analyzer_eval(a <= b); // expected-warning{{TRUE}} expected-warning{{comparison of distinct pointer types}}
-}
-
-struct test { int x; int y; };
-void struct_fields() {
- struct test a, b;
-
- clang_analyzer_eval(&a.x != &a.y); // expected-warning{{TRUE}}
- clang_analyzer_eval(&a.x < &a.y); // expected-warning{{TRUE}}
- clang_analyzer_eval(&a.x <= &a.y); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(&a.x != &b.x); // expected-warning{{TRUE}}
- clang_analyzer_eval(&a.x > &b.x); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(&a.x >= &b.x); // expected-warning{{UNKNOWN}}
-}
-
-void mixed_region_types() {
- struct test s;
- int array[2];
- void *a = &array, *b = &s;
-
- clang_analyzer_eval(&a != &b); // expected-warning{{TRUE}}
- clang_analyzer_eval(&a > &b); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(&a >= &b); // expected-warning{{UNKNOWN}}
-}
-
-void symbolic_region(int *p) {
- int a;
-
- clang_analyzer_eval(&a != p); // expected-warning{{TRUE}}
- clang_analyzer_eval(&a > p); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(&a >= p); // expected-warning{{UNKNOWN}}
-}
-
-void PR7527 (int *p) {
- if (((int) p) & 1) // not crash
- return;
-}
-
-void use_symbols(int *lhs, int *rhs) {
- clang_analyzer_eval(lhs < rhs); // expected-warning{{UNKNOWN}}
- if (lhs < rhs)
- return;
- clang_analyzer_eval(lhs < rhs); // expected-warning{{FALSE}}
-
- clang_analyzer_eval(lhs - rhs); // expected-warning{{UNKNOWN}}
- if ((lhs - rhs) != 5)
- return;
- clang_analyzer_eval((lhs - rhs) == 5); // expected-warning{{TRUE}}
-}
-
-void equal_implies_zero(int *lhs, int *rhs) {
- clang_analyzer_eval(lhs == rhs); // expected-warning{{UNKNOWN}}
- if (lhs == rhs) {
- clang_analyzer_eval(lhs != rhs); // expected-warning{{FALSE}}
- clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{TRUE}}
- return;
- }
- clang_analyzer_eval(lhs == rhs); // expected-warning{{FALSE}}
- clang_analyzer_eval(lhs != rhs); // expected-warning{{TRUE}}
- clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{FALSE}}
-}
-
-void zero_implies_equal(int *lhs, int *rhs) {
- clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{UNKNOWN}}
- if ((rhs - lhs) == 0) {
- clang_analyzer_eval(lhs != rhs); // expected-warning{{FALSE}}
- clang_analyzer_eval(lhs == rhs); // expected-warning{{TRUE}}
- return;
- }
- clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(lhs == rhs); // expected-warning{{FALSE}}
- clang_analyzer_eval(lhs != rhs); // expected-warning{{TRUE}}
-}
-
-void comparisons_imply_size(int *lhs, int *rhs) {
- clang_analyzer_eval(lhs <= rhs); // expected-warning{{UNKNOWN}}
-
- if (lhs > rhs) {
- clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{FALSE}}
- return;
- }
-
- clang_analyzer_eval(lhs <= rhs); // expected-warning{{TRUE}}
-// FIXME: In Z3ConstraintManager, ptrdiff_t is mapped to signed bitvector. However, this does not directly imply the unsigned comparison.
-#ifdef ANALYZER_CM_Z3
- clang_analyzer_eval((rhs - lhs) >= 0); // expected-warning{{UNKNOWN}}
-#else
- clang_analyzer_eval((rhs - lhs) >= 0); // expected-warning{{TRUE}}
-#endif
- clang_analyzer_eval((rhs - lhs) > 0); // expected-warning{{UNKNOWN}}
-
- if (lhs >= rhs) {
- clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{TRUE}}
- return;
- }
-
- clang_analyzer_eval(lhs == rhs); // expected-warning{{FALSE}}
- clang_analyzer_eval(lhs < rhs); // expected-warning{{TRUE}}
-#ifdef ANALYZER_CM_Z3
- clang_analyzer_eval((rhs - lhs) > 0); // expected-warning{{UNKNOWN}}
-#else
- clang_analyzer_eval((rhs - lhs) > 0); // expected-warning{{TRUE}}
-#endif
-}
-
-void size_implies_comparison(int *lhs, int *rhs) {
- clang_analyzer_eval(lhs <= rhs); // expected-warning{{UNKNOWN}}
-
- if ((rhs - lhs) < 0) {
- clang_analyzer_eval(lhs == rhs); // expected-warning{{FALSE}}
- return;
- }
-
-#ifdef ANALYZER_CM_Z3
- clang_analyzer_eval(lhs <= rhs); // expected-warning{{UNKNOWN}}
-#else
- clang_analyzer_eval(lhs <= rhs); // expected-warning{{TRUE}}
-#endif
- clang_analyzer_eval((rhs - lhs) >= 0); // expected-warning{{TRUE}}
- clang_analyzer_eval((rhs - lhs) > 0); // expected-warning{{UNKNOWN}}
-
- if ((rhs - lhs) <= 0) {
- clang_analyzer_eval(lhs == rhs); // expected-warning{{TRUE}}
- return;
- }
-
- clang_analyzer_eval(lhs == rhs); // expected-warning{{FALSE}}
-#ifdef ANALYZER_CM_Z3
- clang_analyzer_eval(lhs < rhs); // expected-warning{{UNKNOWN}}
-#else
- clang_analyzer_eval(lhs < rhs); // expected-warning{{TRUE}}
-#endif
- clang_analyzer_eval((rhs - lhs) > 0); // expected-warning{{TRUE}}
-}
-
-void zero_implies_reversed_equal(int *lhs, int *rhs) {
- clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{UNKNOWN}}
- if ((rhs - lhs) == 0) {
- clang_analyzer_eval(rhs != lhs); // expected-warning{{FALSE}}
- clang_analyzer_eval(rhs == lhs); // expected-warning{{TRUE}}
- return;
- }
- clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(rhs == lhs); // expected-warning{{FALSE}}
- clang_analyzer_eval(rhs != lhs); // expected-warning{{TRUE}}
-}
-
-void canonical_equal(int *lhs, int *rhs) {
- clang_analyzer_eval(lhs == rhs); // expected-warning{{UNKNOWN}}
- if (lhs == rhs) {
- clang_analyzer_eval(rhs == lhs); // expected-warning{{TRUE}}
- return;
- }
- clang_analyzer_eval(lhs == rhs); // expected-warning{{FALSE}}
- clang_analyzer_eval(rhs == lhs); // expected-warning{{FALSE}}
-}
-
-void compare_element_region_and_base(int *p) {
- int *q = p - 1;
- clang_analyzer_eval(p == q); // expected-warning{{FALSE}}
-}
-
-struct Point {
- int x;
- int y;
-};
-void symbolicFieldRegion(struct Point *points, int i, int j) {
- clang_analyzer_eval(&points[i].x == &points[j].x);// expected-warning{{UNKNOWN}}
- clang_analyzer_eval(&points[i].x == &points[i].y);// expected-warning{{FALSE}}
- clang_analyzer_eval(&points[i].x < &points[i].y);// expected-warning{{TRUE}}
-}
-
-void negativeIndex(char *str) {
- *(str + 1) = 'a';
- clang_analyzer_eval(*(str + 1) == 'a'); // expected-warning{{TRUE}}
- clang_analyzer_eval(*(str - 1) == 'a'); // expected-warning{{UNKNOWN}}
-
- char *ptr1 = str - 1;
- clang_analyzer_eval(*ptr1 == 'a'); // expected-warning{{UNKNOWN}}
-
- char *ptr2 = str;
- ptr2 -= 1;
- clang_analyzer_eval(*ptr2 == 'a'); // expected-warning{{UNKNOWN}}
-
- char *ptr3 = str;
- --ptr3;
- clang_analyzer_eval(*ptr3 == 'a'); // expected-warning{{UNKNOWN}}
-}
-
-void test_no_crash_on_pointer_to_label() {
- char *a = &&label;
- a[0] = 0;
-label:;
-}
-
-typedef __attribute__((__ext_vector_type__(2))) float simd_float2;
-float test_nowarning_on_vector_deref() {
- simd_float2 x = {0, 1};
- return x[1]; // no-warning
-}
diff --git a/test/Analysis/ptr-arith.cpp b/test/Analysis/ptr-arith.cpp
deleted file mode 100644
index 1eec83c643e1..000000000000
--- a/test/Analysis/ptr-arith.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-// RUN: %clang_analyze_cc1 -Wno-unused-value -std=c++14 -analyzer-checker=core,debug.ExprInspection,alpha.core.PointerArithm -verify %s
-struct X {
- int *p;
- int zero;
- void foo () {
- reset(p - 1);
- }
- void reset(int *in) {
- while (in != p) // Loop must be entered.
- zero = 1;
- }
-};
-
-int test (int *in) {
- X littleX;
- littleX.zero = 0;
- littleX.p = in;
- littleX.foo();
- return 5/littleX.zero; // no-warning
-}
-
-
-class Base {};
-class Derived : public Base {};
-
-void checkPolymorphicUse() {
- Derived d[10];
-
- Base *p = d;
- ++p; // expected-warning{{Pointer arithmetic on a pointer to base class is dangerous}}
-}
-
-void checkBitCasts() {
- long l;
- char *p = (char*)&l;
- p = p+2;
-}
-
-void checkBasicarithmetic(int i) {
- int t[10];
- int *p = t;
- ++p;
- int a = 5;
- p = &a;
- ++p; // expected-warning{{Pointer arithmetic on non-array variables relies on memory layout, which is dangerous}}
- p = p + 2; // expected-warning{{}}
- p = 2 + p; // expected-warning{{}}
- p += 2; // expected-warning{{}}
- a += p[2]; // expected-warning{{}}
- p = i*0 + p;
- p = p + i*0;
- p += i*0;
-}
-
-void checkArithOnSymbolic(int*p) {
- ++p;
- p = p + 2;
- p = 2 + p;
- p += 2;
- (void)p[2];
-}
-
-struct S {
- int t[10];
-};
-
-void arrayInStruct() {
- S s;
- int * p = s.t;
- ++p;
- S *sp = new S;
- p = sp->t;
- ++p;
- delete sp;
-}
-
-void checkNew() {
- int *p = new int;
- p[1] = 1; // expected-warning{{}}
-}
-
-void InitState(int* state) {
- state[1] = 1; // expected-warning{{}}
-}
-
-int* getArray(int size) {
- if (size == 0)
- return new int;
- return new int[5];
-}
-
-void checkConditionalArray() {
- int* maybeArray = getArray(0);
- InitState(maybeArray);
-}
-
-void checkMultiDimansionalArray() {
- int a[5][5];
- *(*(a+1)+2) = 2;
-}
-
-unsigned ptrSubtractionNoCrash(char *Begin, char *End) {
- auto N = End - Begin;
- if (Begin)
- return 0;
- return N;
-}
-
-// Bug 34309
-bool ptrAsIntegerSubtractionNoCrash(__UINTPTR_TYPE__ x, char *p) {
- __UINTPTR_TYPE__ y = (__UINTPTR_TYPE__)p - 1;
- return y == x;
-}
-
-// Bug 34374
-bool integerAsPtrSubtractionNoCrash(char *p, __UINTPTR_TYPE__ m) {
- auto n = p - reinterpret_cast<char*>((__UINTPTR_TYPE__)1);
- return n == m;
-}
diff --git a/test/Analysis/qt_malloc.cpp b/test/Analysis/qt_malloc.cpp
deleted file mode 100644
index ad25634d87b0..000000000000
--- a/test/Analysis/qt_malloc.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,alpha.deadcode.UnreachableCode,alpha.core.CastSize,unix.Malloc,cplusplus -analyzer-store=region -verify %s
-// expected-no-diagnostics
-#include "Inputs/qt-simulator.h"
-
-void send(QObject *obj)
-{
- QEvent *e1 = new QEvent(QEvent::None);
- static_cast<QApplication *>(QCoreApplication::instance())->postEvent(obj, e1);
- QEvent *e2 = new QEvent(QEvent::None);
- QCoreApplication::instance()->postEvent(obj, e2);
- QEvent *e3 = new QEvent(QEvent::None);
- QCoreApplication::postEvent(obj, e3);
- QEvent *e4 = new QEvent(QEvent::None);
- QApplication::postEvent(obj, e4);
-}
-
-void connect(QObject *obj) {
- obj->connectImpl(nullptr, nullptr, nullptr, nullptr,
- new QtPrivate::QSlotObjectBase(), (Qt::ConnectionType)0,
- nullptr, nullptr);
-}
diff --git a/test/Analysis/range_casts.c b/test/Analysis/range_casts.c
deleted file mode 100644
index a01ab5d52097..000000000000
--- a/test/Analysis/range_casts.c
+++ /dev/null
@@ -1,156 +0,0 @@
-// This test checks that intersecting ranges does not cause 'system is over constrained' assertions in the case of eg: 32 bits unsigned integers getting their range from 64 bits signed integers.
-// RUN: %clang_analyze_cc1 -triple x86_64-pc-linux-gnu -analyzer-checker=core,debug.ExprInspection -analyzer-store=region -verify %s
-
-void clang_analyzer_warnIfReached();
-
-void f1(long foo)
-{
- unsigned index = -1;
- if (index < foo) index = foo;
- if (index + 1 == 0) // because of foo range, index is in range [0; UINT_MAX]
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- else
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void f2(unsigned long foo)
-{
- int index = -1;
- if (index < foo) index = foo; // index equals ULONG_MAX
- if (index + 1 == 0)
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- else
- clang_analyzer_warnIfReached(); // no-warning
-}
-
-void f3(unsigned long foo)
-{
- unsigned index = -1;
- if (index < foo) index = foo;
- if (index + 1 == 0)
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- else
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void f4(long foo)
-{
- int index = -1;
- if (index < foo) index = foo;
- if (index + 1 == 0)
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- else
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void f5(long foo)
-{
- unsigned index = -1;
- if (index < foo) index = foo;
- if (index == -1)
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- else
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void f6(long foo)
-{
- unsigned index = -1;
- if (index < foo) index = foo;
- if (index == -1)
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- else
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void f7(long foo)
-{
- unsigned index = -1;
- if (index < foo) index = foo;
- if (index - 1 == 0) // Was not reached prior fix.
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- else
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void f8(long foo)
-{
- unsigned index = -1;
- if (index < foo) index = foo;
- if (index + 1L == 0L)
- clang_analyzer_warnIfReached(); // no-warning
- else
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void f9(long foo)
-{
- unsigned index = -1;
- if (index < foo) index = foo;
- if (index - 1L == 0L) // Was not reached prior fix.
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- else
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void f10(long foo)
-{
- unsigned index = -1;
- if (index < foo) index = foo;
- if (index + 1 == 0L)
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- else
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void f11(long foo)
-{
- unsigned index = -1;
- if (index < foo) index = foo;
- if (index + 1UL == 0L)
- clang_analyzer_warnIfReached(); // no-warning
- else
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void f12(long foo)
-{
- unsigned index = -1;
- if (index < foo) index = foo;
- if (index - 1UL == 0L) // Was not reached prior fix.
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- else
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void f13(int foo)
-{
- unsigned short index = -1;
- if (index < foo) index = foo;
- if (index + 1 == 0)
- clang_analyzer_warnIfReached(); // no-warning
- else
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void f14(long foo)
-{
- unsigned index = -1;
- if (index < foo) index = foo;
- long bar = foo;
- if (index + 1 == 0)
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- else
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void f15(long foo)
-{
- unsigned index = -1;
- if (index < foo) index = foo;
- unsigned int tmp = index + 1;
- if (tmp == 0)
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- else
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
diff --git a/test/Analysis/rdar-6442306-1.m b/test/Analysis/rdar-6442306-1.m
deleted file mode 100644
index d84000076d79..000000000000
--- a/test/Analysis/rdar-6442306-1.m
+++ /dev/null
@@ -1,34 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-disable-checker=alpha.core.PointerArithm %s -analyzer-store=region -verify
-// expected-no-diagnostics
-
-typedef int bar_return_t;
-typedef struct {
- unsigned char int_rep;
-} Foo_record_t;
-extern Foo_record_t Foo_record;
-struct QuxSize {};
-typedef struct QuxSize QuxSize;
-typedef struct {
- Foo_record_t Foo;
- QuxSize size[0];
-} __Request__SetPortalSize_t;
-
-double __Foo_READSWAP__double(double*);
-
-static __inline__ bar_return_t
-__Beeble_check__Request__SetPortalSize_t(__Request__SetPortalSize_t *In0P) {
- if (In0P->Foo.int_rep != Foo_record.int_rep) {
- do {
- int __i__, __C__ = (2);
- for (__i__ = 0;
- __i__ < __C__;
- __i__++) do {
- *(&((double *)(&In0P->size))[__i__]) =
- __Foo_READSWAP__double(&((double *)(&In0P->size))[__i__]);
- }
- while (0);
- }
- while (0);
- }
- return 0;
-}
diff --git a/test/Analysis/rdar-6540084.m b/test/Analysis/rdar-6540084.m
deleted file mode 100644
index da7d42c3722e..000000000000
--- a/test/Analysis/rdar-6540084.m
+++ /dev/null
@@ -1,37 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-checker=deadcode.DeadStores -verify %s
-//
-// This test exercises the live variables analysis (LiveVariables.cpp).
-// The case originally identified a non-termination bug.
-//
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {} @end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-@class NSArray; // expected-note {{receiver is instance of class declared here}}
-@class NSMutableArray, NSIndexSet, NSView, NSPredicate, NSString, NSViewAnimation, NSTimer; // expected-note{{forward declaration of class here}}
-@interface FooBazController : NSObject {}
-@end
-typedef struct {} TazVersion;
-@class TazNode;
-@interface TazGuttenberg : NSObject {} typedef NSUInteger BugsBunnyType; @end // expected-note {{receiver is instance of class declared here}}
-@interface FooBaz : NSObject {}
-@property (nonatomic) BugsBunnyType matchType;
-@property (nonatomic, retain) NSArray *papyrus; @end
-@implementation FooBazController
-- (NSArray *)excitingStuff:(FooBaz *)options {
- BugsBunnyType matchType = options.matchType;
- NSPredicate *isSearchablePredicate = [NSPredicate predicateWithFormat:@"isSearchable == YES"]; // expected-warning{{receiver 'NSPredicate' is a forward class and corresponding}} // expected-warning{{return type defaults to 'id'}}
- for (TazGuttenberg *Guttenberg in options.papyrus) {
- NSArray *GuttenbergNodes = [Guttenberg nodes]; // expected-warning{{return type defaults to 'id'}}
- NSArray *searchableNodes = [GuttenbergNodes filteredArrayUsingPredicate:isSearchablePredicate]; // expected-warning{{return type defaults to 'id'}}
- for (TazNode *node in searchableNodes) {
- switch (matchType) {
- default: break;
- }
- }
- }
- while (1) {}
-}
-@end
diff --git a/test/Analysis/rdar-6541136-region.c b/test/Analysis/rdar-6541136-region.c
deleted file mode 100644
index dc75af43e491..000000000000
--- a/test/Analysis/rdar-6541136-region.c
+++ /dev/null
@@ -1,27 +0,0 @@
-// RUN: %clang_analyze_cc1 -verify -analyzer-checker=core,alpha.security.ArrayBound -analyzer-store=region %s
-
-struct tea_cheese { unsigned magic; };
-typedef struct tea_cheese kernel_tea_cheese_t;
-extern kernel_tea_cheese_t _wonky_gesticulate_cheese;
-
-// This test case exercises the ElementRegion::getRValueType() logic.
-
-void test1( void ) {
- kernel_tea_cheese_t *wonky = &_wonky_gesticulate_cheese;
- struct load_wine *cmd = (void*) &wonky[1];
- cmd = cmd;
- char *p = (void*) &wonky[1];
- kernel_tea_cheese_t *q = &wonky[1];
- // This test case tests both the RegionStore logic (doesn't crash) and
- // the out-of-bounds checking. We don't expect the warning for now since
- // out-of-bound checking is temporarily disabled.
- kernel_tea_cheese_t r = *q; // expected-warning{{Access out-of-bound array element (buffer overflow)}}
-}
-
-void test1_b( void ) {
- kernel_tea_cheese_t *wonky = &_wonky_gesticulate_cheese;
- struct load_wine *cmd = (void*) &wonky[1];
- cmd = cmd;
- char *p = (void*) &wonky[1];
- *p = 1; // expected-warning{{Access out-of-bound array element (buffer overflow)}}
-}
diff --git a/test/Analysis/rdar-6562655.m b/test/Analysis/rdar-6562655.m
deleted file mode 100644
index 8794cacb74a0..000000000000
--- a/test/Analysis/rdar-6562655.m
+++ /dev/null
@@ -1,65 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -verify %s
-// expected-no-diagnostics
-//
-// This test case mainly checks that the retain/release checker doesn't crash
-// on this file.
-//
-typedef int int32_t;
-typedef signed char BOOL;
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject - (BOOL)isEqual:(id)object;
-@end @protocol NSCopying - (id)copyWithZone:(NSZone *)zone;
-@end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
-@end @interface NSObject <NSObject> {}
-@end extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-@interface NSResponder : NSObject <NSCoding> {}
-@end @protocol NSAnimatablePropertyContainer - (id)animator;
-@end extern NSString *NSAnimationTriggerOrderIn ;
-@interface NSView : NSResponder <NSAnimatablePropertyContainer> {
-}
-@end enum {
-NSNullCellType = 0, NSTextCellType = 1, NSImageCellType = 2 };
-typedef struct __CFlags {
- unsigned int botnet:3;
-}
- _CFlags;
-@interface Bar : NSObject <NSCopying, NSCoding> {
- _CFlags _cFlags;
-@private id _support;
-}
-@end extern NSString *NSControlTintDidChangeNotification;
-typedef NSInteger NSBotnet;
-@interface NSControl : NSView {
-}
-@end @class NSAttributedString, NSFont, NSImage, NSSound;
-typedef int32_t Baz;
-@interface Bar(BarInternal) - (void)_setIsWhite:(BOOL)isWhite;
-@end
-@interface Bar (BarBotnetCompatibility)
-- (NSBotnet)_initialBotnetZorg;
-@end
-typedef struct _NSRunArrayItem {
- unsigned int botnetIsSet:1;
-} BarAuxFlags;
-@interface BarAuxiliary : NSObject {
-@public
- NSControl *controlView;
- BarAuxFlags auxCFlags;
-}
-@end
-@implementation Bar
-static Baz Qux = 0;
-- (id)copyWithZone:(NSZone *)zone { return 0; }
-- (void)encodeWithCoder:(NSCoder *)coder {}
-@end
-@implementation Bar (BarBotnet)
-- (NSBotnet)botnet {
- if (!(*(BarAuxiliary **)&self->_support)->auxCFlags.botnetIsSet) {
- _cFlags.botnet = [self _initialBotnetZorg];
- }
- while (1) {}
-}
-@end
diff --git a/test/Analysis/rdar-6600344-nil-receiver-undefined-struct-ret.m b/test/Analysis/rdar-6600344-nil-receiver-undefined-struct-ret.m
deleted file mode 100644
index 72dbe422b63a..000000000000
--- a/test/Analysis/rdar-6600344-nil-receiver-undefined-struct-ret.m
+++ /dev/null
@@ -1,26 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-store=region -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-typedef struct Foo { int x; } Bar;
-
-@interface MyClass {}
-- (Bar)foo;
-@end
-@implementation MyClass
-- (Bar)foo {
- struct Foo f = { 0 };
- return f;
-}
-@end
-
-void createFoo() {
- MyClass *obj = 0;
- Bar f = [obj foo]; // no-warning
-}
-
-void createFoo2() {
- MyClass *obj = 0;
- [obj foo]; // no-warning
- Bar f = [obj foo]; // no-warning
-}
-
diff --git a/test/Analysis/rdar-7168531.m b/test/Analysis/rdar-7168531.m
deleted file mode 100644
index b2b1511dd2ab..000000000000
--- a/test/Analysis/rdar-7168531.m
+++ /dev/null
@@ -1,18 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -triple i386-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -analyzer-store=region %s
-
-// Note that the target triple is important for this test case. It specifies that we use the
-// fragile Objective-C ABI.
-
-@interface Foo {
- int x;
-}
-@end
-
-@implementation Foo
-static Foo* bar(Foo *p) {
- if (p->x)
- return ++p; // This is only valid for the fragile ABI.
-
- return p;
-}
-@end
diff --git a/test/Analysis/redefined_system.c b/test/Analysis/redefined_system.c
deleted file mode 100644
index 4901b3ae616f..000000000000
--- a/test/Analysis/redefined_system.c
+++ /dev/null
@@ -1,18 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=osx,unix,core,alpha.security.taint -w -verify %s
-// expected-no-diagnostics
-
-// Make sure we don't crash when someone redefines a system function we reason about.
-
-char memmove ();
-char malloc();
-char system();
-char stdin();
-char memccpy();
-char free();
-char strdup();
-char atoi();
-
-int foo () {
- return memmove() + malloc() + system() + stdin() + memccpy() + free() + strdup() + atoi();
-
-}
diff --git a/test/Analysis/refcnt_naming.m b/test/Analysis/refcnt_naming.m
deleted file mode 100644
index c77909a0c277..000000000000
--- a/test/Analysis/refcnt_naming.m
+++ /dev/null
@@ -1,84 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -analyzer-config ipa=none -analyzer-store=region -verify %s
-
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-typedef const struct __CFURL * CFURLRef;
-extern CFURLRef CFURLCreateWithString(CFAllocatorRef allocator, CFStringRef URLString, CFURLRef baseURL);
-typedef signed char BOOL;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {} @end
-@class NSArray, NSString, NSURL;
-
-@interface NamingTest : NSObject {}
--(NSObject*)copyPhoto;
--(NSObject*)mutableCopyPhoto;
--(NSObject*)mutable;
--(NSObject*)mutableCopying;
--(NSObject*)photocopy; // read as "photocopy"
--(NSObject*)photoCopy; // read as "photo Copy"
--(NSObject*)__blebPRCopy; // read as "bleb PRCopy"
--(NSObject*)__blebPRcopy; // read as "bleb P Rcopy"
--(NSObject*)new_theprefixdoescount; // read as "new theprefixdoescount"
--(NSObject*)newestAwesomeStuff; // read as "newest awesome stuff"
-
-@end
-
-@interface MyClass : NSObject
-{
- id myObject;
-}
-- (NSURL *)myMethod:(NSString *)inString;
-- (NSURL *)getMethod:(NSString*)inString;
-- (NSURL *)getMethod2:(NSString*)inString;
-- (void)addObject:(id) __attribute__((ns_consumed)) X;
-- (void)addObject2:(id) X;
-@end
-
-@implementation MyClass
-
-- (NSURL *)myMethod:(NSString *)inString
-{
- NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0); // expected-warning{{leak}}
- return url;
-}
-
-- (NSURL *)getMethod:(NSString *)inString
-{
- NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0);
- [self addObject:url];
- return url; // no-warning
-}
-
-- (NSURL *)getMethod2:(NSString *)inString
-{
- NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0); // expected-warning{{leak}}
- [self addObject2:url];
- return url;
-}
-
-void testNames(NamingTest* x) {
- [x copyPhoto]; // expected-warning{{leak}}
- [x mutableCopyPhoto]; // expected-warning{{leak}}
- [x mutable]; // no-warning
- [x mutableCopying]; // no-warning
- [x photocopy]; // no-warning
- [x photoCopy]; // no-warning
- [x __blebPRCopy]; // no-warning
- [x __blebPRcopy]; // no-warning
- [x new_theprefixdoescount]; // expected-warning{{leak}}
- [x newestAwesomeStuff]; // no-warning
-}
-
-
-- (void)addObject:(id)X
-{
- myObject = X;
-}
-
-- (void)addObject2:(id)X
-{
- myObject = X;
-}
-
-@end
-
diff --git a/test/Analysis/reference.cpp b/test/Analysis/reference.cpp
deleted file mode 100644
index 9f3082a8b856..000000000000
--- a/test/Analysis/reference.cpp
+++ /dev/null
@@ -1,258 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify -Wno-null-dereference -Wno-tautological-undefined-compare -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(bool);
-
-typedef typeof(sizeof(int)) size_t;
-void malloc (size_t);
-
-void f1() {
- int const &i = 3;
- int b = i;
-
- int *p = 0;
-
- if (b != 3)
- *p = 1; // no-warning
-}
-
-char* ptr();
-char& ref();
-
-// These next two tests just shouldn't crash.
-char t1 () {
- ref() = 'c';
- return '0';
-}
-
-// just a sanity test, the same behavior as t1()
-char t2 () {
- *ptr() = 'c';
- return '0';
-}
-
-// Each of the tests below is repeated with pointers as well as references.
-// This is mostly a sanity check, but then again, both should work!
-char t3 () {
- char& r = ref();
- r = 'c'; // no-warning
- if (r) return r;
- return *(char*)0; // no-warning
-}
-
-char t4 () {
- char* p = ptr();
- *p = 'c'; // no-warning
- if (*p) return *p;
- return *(char*)0; // no-warning
-}
-
-char t5 (char& r) {
- r = 'c'; // no-warning
- if (r) return r;
- return *(char*)0; // no-warning
-}
-
-char t6 (char* p) {
- *p = 'c'; // no-warning
- if (*p) return *p;
- return *(char*)0; // no-warning
-}
-
-
-// PR13440 / <rdar://problem/11977113>
-// Test that the array-to-pointer decay works for array references as well.
-// More generally, when we want an lvalue for a reference field, we still need
-// to do one level of load.
-namespace PR13440 {
- typedef int T[1];
- struct S {
- T &x;
-
- int *m() { return x; }
- };
-
- struct S2 {
- int (&x)[1];
-
- int *m() { return x; }
-
- void testArrayToPointerDecayWithNonTypedValueRegion() {
- int *p = x;
- int *q = x;
- clang_analyzer_eval(p[0] == q[0]); // expected-warning{{TRUE}}
- }
-
- };
-
- void test() {
- int a[1];
- S s = { a };
- S2 s2 = { a };
-
- if (s.x != a) return;
- if (s2.x != a) return;
-
- a[0] = 42;
- clang_analyzer_eval(s.x[0] == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(s2.x[0] == 42); // expected-warning{{TRUE}}
- }
-}
-
-void testNullReference() {
- int *x = 0;
- int &y = *x; // expected-warning{{Dereference of null pointer}}
- y = 5;
-}
-
-void testRetroactiveNullReference(int *x) {
- // According to the C++ standard, there is no such thing as a
- // "null reference". So the 'if' statement ought to be dead code.
- // However, Clang (and other compilers) don't actually check that a pointer
- // value is non-null in the implementation of references, so it is possible
- // to produce a supposed "null reference" at runtime. The analyzer should
- // still warn when it can prove such errors.
- int &y = *x;
- if (x != 0)
- return;
- y = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-namespace TestReferenceAddress {
-struct S { int &x; };
-S getS();
-S *getSP();
-
-void testReferenceAddress(int &x) {
-// FIXME: Move non-zero reference assumption out of RangeConstraintManager.cpp:422
-#ifdef ANALYZER_CM_Z3
- clang_analyzer_eval(&x != 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(&ref() != 0); // expected-warning{{UNKNOWN}}
-#else
- clang_analyzer_eval(&x != 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(&ref() != 0); // expected-warning{{TRUE}}
-#endif
-
-#ifdef ANALYZER_CM_Z3
- clang_analyzer_eval(&getS().x != 0); // expected-warning{{UNKNOWN}}
-#else
- clang_analyzer_eval(&getS().x != 0); // expected-warning{{TRUE}}
-#endif
-
-#ifdef ANALYZER_CM_Z3
- clang_analyzer_eval(&getSP()->x != 0); // expected-warning{{UNKNOWN}}
-#else
- clang_analyzer_eval(&getSP()->x != 0); // expected-warning{{TRUE}}
-#endif
-}
-}
-
-void testFunctionPointerReturn(void *opaque) {
- typedef int &(*RefFn)();
-
- RefFn getRef = (RefFn)opaque;
-
- // Don't crash writing to or reading from this reference.
- int &x = getRef();
- x = 42;
- clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-}
-
-int &testReturnNullReference() {
- int *x = 0;
- return *x; // expected-warning{{Returning null reference}}
-}
-
-char &refFromPointer() {
- return *ptr();
-}
-
-void testReturnReference() {
- clang_analyzer_eval(ptr() == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(&refFromPointer() == 0); // expected-warning{{FALSE}}
-}
-
-void intRefParam(int &r) {
- ;
-}
-
-void test(int *ptr) {
- clang_analyzer_eval(ptr == 0); // expected-warning{{UNKNOWN}}
-
- extern void use(int &ref);
- use(*ptr);
-
- clang_analyzer_eval(ptr == 0); // expected-warning{{FALSE}}
-}
-
-void testIntRefParam() {
- int i = 0;
- intRefParam(i); // no-warning
-}
-
-int refParam(int &byteIndex) {
- return byteIndex;
-}
-
-void testRefParam(int *p) {
- if (p)
- ;
- refParam(*p); // expected-warning {{Forming reference to null pointer}}
-}
-
-int ptrRefParam(int *&byteIndex) {
- return *byteIndex; // expected-warning {{Dereference of null pointer}}
-}
-void testRefParam2() {
- int *p = 0;
- int *&rp = p;
- ptrRefParam(rp);
-}
-
-int *maybeNull() {
- extern bool coin();
- static int x;
- return coin() ? &x : 0;
-}
-
-void use(int &x) {
- x = 1; // no-warning
-}
-
-void testSuppression() {
- use(*maybeNull());
-}
-
-namespace rdar11212286 {
- class B{};
-
- B test() {
- B *x = 0;
- return *x; // expected-warning {{Forming reference to null pointer}}
- }
-
- B testif(B *x) {
- if (x)
- ;
- return *x; // expected-warning {{Forming reference to null pointer}}
- }
-
- void idc(B *x) {
- if (x)
- ;
- }
-
- B testidc(B *x) {
- idc(x);
- return *x; // no-warning
- }
-}
-
-namespace PR15694 {
- class C {
- bool bit : 1;
- template <class T> void bar(const T &obj) {}
- void foo() {
- bar(bit); // don't crash
- }
- };
-}
diff --git a/test/Analysis/reference.mm b/test/Analysis/reference.mm
deleted file mode 100644
index 1d73ccd6ead3..000000000000
--- a/test/Analysis/reference.mm
+++ /dev/null
@@ -1,17 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify -Wno-null-dereference %s
-
-@interface Foo
-- (int &)ref;
-@end
-
-Foo *getFoo() { return 0; }
-
-void testNullPointerSuppression() {
- getFoo().ref = 1;
-}
-
-void testPositiveNullReference() {
- Foo *x = 0;
- x.ref = 1; // expected-warning {{The receiver of message 'ref' is nil, which results in forming a null reference}}
-}
-
diff --git a/test/Analysis/region-1.m b/test/Analysis/region-1.m
deleted file mode 100644
index 3245bd4cf744..000000000000
--- a/test/Analysis/region-1.m
+++ /dev/null
@@ -1,92 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s
-// expected-no-diagnostics
-//
-// This test case simply should not crash. It evaluates the logic of not
-// using MemRegion::getRValueType in incorrect places.
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject - (BOOL)isEqual:(id)object;
-- (Class)class;
-- (BOOL)isLegOfClass:(Class)aClass;
-@end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
-@end @interface NSObject <NSObject> {
-}
-@end @class NSArray;
-@interface NSResponder : NSObject <NSCoding> {
-}
-@end @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView;
-@class JabasectItem;
-@protocol EcoClassifier;
-@protocol EcoClassInterfaceCommons <EcoClassifier> @end @protocol EcoImplementation;
-@protocol EcoBehavioredClassifier <EcoClassInterfaceCommons> - (NSArray *) implementations;
-@end enum {
-CK_UNRESTRICTED= 0, CK_READ_ONLY, CK_ADD_ONLY, CK_REMOVE_ONLY };
-@protocol EcoClass <EcoBehavioredClassifier> - (NSArray *) ownedAttributes;
-@end @protocol EcoNamespace;
-@protocol EcoType @end;
-@protocol EcoClassifier <EcoNamespace,EcoType> - (NSArray *) features;
-@end @protocol EcoComment;
-@protocol EcoElement <NSObject> - (NSArray *) ownedElements;
-@end @protocol EcoDirectedRelationship;
-@protocol EcoNamedElement <EcoElement> - (NSString *) name;
-@end extern NSString *const JabaPathSeparator;
-@protocol EcoNamespace <EcoNamedElement> - (NSArray *) Legs;
-@end enum {
-PDK_IN=0, PDK_INOUT, PDK_OUT, PDK_RETURN };
-@interface EcoElementImp : NSObject <EcoElement, NSCoding> {
-}
-@end @class EcoNamespace;
-@interface EcoNamedElementImp : EcoElementImp <EcoNamedElement>{
-}
-@end @interface EcoNamespaceImp : EcoNamedElementImp <EcoNamespace> {
-}
-@end @class JabaSCDocController, JabaSCDisplaySpecification;
-@interface JabaSCSharedDiagramViewController : NSObject {
-}
-@end extern NSString *const JabaSCsectGraphicNamesectIdentifier;
-@interface EcoClassifierImp : EcoNamespaceImp <EcoClassifier> {
-}
-@end @class EcoOperationImp;
-@interface EcoClassImp : EcoClassifierImp <EcoClass> {
-}
-@end extern NSString *const JabaAddedUMLElements;
-@class JabaSCClass, JabaSCInterface, JabaSCOperation;
-@class DosLegVaseSymbol, DosProtocolSymbol, DosMethodSymbol, DosFileReference;
-@interface HancodeFett : NSObject {
-}
-+ (DosLegVaseSymbol *) symbolFromClass: (JabaSCClass *) clz;
-@end enum _JabaSourceLanguage {
-JabaSourceUnknown=0, JabaSourcePrawn, JabaSourceC, JabaSourceCPP, JabaSourceObjectiveC };
-typedef NSUInteger JabaSourceLanguage;
-@protocol JabaSCClassifier <EcoClassInterfaceCommons> - (JabaSourceLanguage)language;
-@end @interface JabaSCClass : EcoClassImp <JabaSCClassifier> {
-}
-@end @class DosGlobalID, DosPQuLC, DosPQuUnLC;
-@protocol XCProxyObjectProtocol - (id) representedObject;
-@end typedef union _Dossymbollocation {
-}
- DosRecordArrPrl;
-@interface DosIndexEntry : NSObject {
-}
-@end @class DosProjectIndex, DosTextPapyruswiggle, DosDocPapyruswiggle, DosLegVaseSymbol;
-@interface DosSymbol : DosIndexEntry {
-}
-@end @interface DosLegVaseSymbol : DosSymbol {
-}
-@end typedef enum _DosTextRangeType {
-Dos_CharacterRangeType = 0, Dos_LineRangeType = 1 }
- DosTextRangeType;
-@implementation JabaSCSharedDiagramViewController + (NSImage *)findImageNamed:(NSString *)name {
- return 0;
-}
-- (void)revealSourceInEditor:(JabasectItem *)sectItem duperGesture:(BOOL)duperGesture {
- id <EcoNamedElement> selectedElement = [sectItem representedObject];
- id <EcoNamedElement> selectedClassifier = selectedElement;
- DosSymbol *symbol=((void *)0);
- if([selectedClassifier isLegOfClass:[JabaSCClass class]]) {
- symbol = [HancodeFett symbolFromClass:(JabaSCClass *) selectedClassifier];
- }
-}
-@end
diff --git a/test/Analysis/region-store.c b/test/Analysis/region-store.c
deleted file mode 100644
index f4b149d28207..000000000000
--- a/test/Analysis/region-store.c
+++ /dev/null
@@ -1,56 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s
-
-int printf(const char *restrict,...);
-
-// Testing core functionality of the region store.
-// radar://10127782
-int compoundLiteralTest() {
- int index = 0;
- for (index = 0; index < 2; index++) {
- int thing = (int []){0, 1}[index];
- printf("thing: %i\n", thing);
- }
- return 0;
-}
-
-int compoundLiteralTest2() {
- int index = 0;
- for (index = 0; index < 3; index++) {
- int thing = (int [][3]){{0,0,0}, {1,1,1}, {2,2,2}}[index][index];
- printf("thing: %i\n", thing);
- }
- return 0;
-}
-
-int concreteOffsetBindingIsInvalidatedBySymbolicOffsetAssignment(int length,
- int i) {
- int values[length];
- values[i] = 4;
- return values[0]; // no-warning
-}
-
-struct X{
- int mem;
-};
-int initStruct(struct X *st);
-int structOffsetBindingIsInvalidated(int length, int i){
- struct X l;
- initStruct(&l);
- return l.mem; // no-warning
-}
-
-void clang_analyzer_eval(int);
-void testConstraintOnRegionOffset(int *values, int length, int i){
- if (values[1] == 4) {
- values[i] = 5;
- clang_analyzer_eval(values[1] == 4);// expected-warning {{UNKNOWN}}
- }
-}
-
-int initArray(int *values);
-void testConstraintOnRegionOffsetStack(int *values, int length, int i) {
- if (values[0] == 4) {
- initArray(values);
- clang_analyzer_eval(values[0] == 4);// expected-warning {{UNKNOWN}}
- }
-}
diff --git a/test/Analysis/region-store.cpp b/test/Analysis/region-store.cpp
deleted file mode 100644
index ab179ceb1acc..000000000000
--- a/test/Analysis/region-store.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix -verify %s
-// expected-no-diagnostics
-
-class Loc {
- int x;
-};
-class P1 {
-public:
- Loc l;
- void setLoc(Loc L) {
- l = L;
- }
-
-};
-class P2 {
-public:
- int m;
- int accessBase() {
- return m;
- }
-};
-class Derived: public P1, public P2 {
-};
-int radar13445834(Derived *Builder, Loc l) {
- Builder->setLoc(l);
- return Builder->accessBase();
-
-}
diff --git a/test/Analysis/region_store_overflow.c b/test/Analysis/region_store_overflow.c
deleted file mode 100644
index 505965301bc2..000000000000
--- a/test/Analysis/region_store_overflow.c
+++ /dev/null
@@ -1,16 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyze -analyzer-checker=core -verify %s
-
-int **h;
-int overflow_in_memregion(long j) {
- for (int l = 0;; ++l) {
- if (j - l > 0)
- return h[j - l][0]; // no-crash
- }
- return 0;
-}
-
-void rdar39593879(long long *d) {
- long e, f;
- e = f = d[1]; // no-crash
- for (; d[e];) f-- > 0; // expected-warning{{relational comparison result unused}};
-}
diff --git a/test/Analysis/reinterpret-cast.cpp b/test/Analysis/reinterpret-cast.cpp
deleted file mode 100644
index 7b8c2f3ee9a4..000000000000
--- a/test/Analysis/reinterpret-cast.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(bool);
-
-typedef struct Opaque *Data;
-struct IntWrapper {
- int x;
-};
-
-struct Child : public IntWrapper {
- void set() { x = 42; }
-};
-
-void test(Data data) {
- Child *wrapper = reinterpret_cast<Child*>(data);
- // Don't crash when upcasting here.
- // We don't actually know if 'data' is a Child.
- wrapper->set();
- clang_analyzer_eval(wrapper->x == 42); // expected-warning{{TRUE}}
-}
-
-namespace PR14872 {
- class Base1 {};
- class Derived1 : public Base1 {};
-
- Derived1 *f1();
-
- class Base2 {};
- class Derived2 : public Base2 {};
-
- void f2(Base2 *foo);
-
- void f3(void** out)
- {
- Base1 *v;
- v = f1();
- *out = v;
- }
-
- void test()
- {
- Derived2 *p;
- f3(reinterpret_cast<void**>(&p));
- // Don't crash when upcasting here.
- // In this case, 'p' actually refers to a Derived1.
- f2(p);
- }
-}
-
-namespace rdar13249297 {
- struct IntWrapperSubclass : public IntWrapper {};
-
- struct IntWrapperWrapper {
- IntWrapper w;
- };
-
- void test(IntWrapperWrapper *ww) {
- reinterpret_cast<IntWrapperSubclass *>(ww)->x = 42;
- clang_analyzer_eval(reinterpret_cast<IntWrapperSubclass *>(ww)->x == 42); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(ww->w.x == 42); // expected-warning{{TRUE}}
- ww->w.x = 0;
-
- clang_analyzer_eval(reinterpret_cast<IntWrapperSubclass *>(ww)->x == 42); // expected-warning{{FALSE}}
- }
-}
-
-namespace PR15345 {
- class C {};
-
- class Base {
- public:
- void (*f)();
- int x;
- };
-
- class Derived : public Base {};
-
- void test() {
- Derived* p;
- *(reinterpret_cast<void**>(&p)) = new C;
- p->f();
-
- // We should still be able to do some reasoning about bindings.
- p->x = 42;
- clang_analyzer_eval(p->x == 42); // expected-warning{{TRUE}}
- };
-}
-
-int trackpointer_std_addressof() {
- int x;
- int *p = (int*)&reinterpret_cast<const volatile char&>(x);
- *p = 6;
- return x; // no warning
-}
-
-void set_x1(int *&);
-void set_x2(void *&);
-int radar_13146953(void) {
- int *x = 0, *y = 0;
-
- set_x1(x);
- set_x2((void *&)y);
- return *x + *y; // no warning
-}
-
-namespace PR25426 {
- struct Base {
- int field;
- };
-
- struct Derived : Base { };
-
- void foo(int &p) {
- Derived &d = (Derived &)(p);
- d.field = 2;
- }
-}
diff --git a/test/Analysis/retain-release-arc.m b/test/Analysis/retain-release-arc.m
deleted file mode 100644
index 31081e964abb..000000000000
--- a/test/Analysis/retain-release-arc.m
+++ /dev/null
@@ -1,165 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -fobjc-arc -fblocks -verify -Wno-objc-root-class %s -analyzer-output=text
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -fblocks -verify -Wno-objc-root-class %s -analyzer-output=text
-
-typedef __typeof(sizeof(int)) size_t;
-
-#define HAS_ARC __has_feature(objc_arc)
-
-typedef unsigned long long CFOptionFlags;
-typedef signed long long CFIndex;
-
-typedef CFIndex CFPropertyListFormat; enum {
- kCFPropertyListOpenStepFormat = 1,
- kCFPropertyListXMLFormat_v1_0 = 100,
- kCFPropertyListBinaryFormat_v1_0 = 200
-};
-
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-typedef struct __CFDictionary * CFDictionaryRef;
-typedef struct __CFError * CFErrorRef;
-typedef struct __CFDataRef * CFDataRef;
-typedef void * CFPropertyListRef;
-
-CFPropertyListRef CFPropertyListCreateWithData(CFAllocatorRef allocator, CFDataRef data, CFOptionFlags options, CFPropertyListFormat *format, CFErrorRef *error);
-
-typedef signed char BOOL;
-typedef struct _NSZone NSZone;
-@class NSDictionary;
-@class NSData;
-@class NSString;
-
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
-- (id)autorelease;
-- (NSString *)description;
-- (id)init;
-@end
-@interface NSObject <NSObject> {}
-+ (id)allocWithZone:(NSZone *)zone;
-+ (id)alloc;
-+ (id)new;
-- (void)dealloc;
-@end
-
-@interface NSDictionary : NSObject
-@end
-
-#define OS_OBJECT_RETURNS_RETAINED __attribute__((__ns_returns_retained__))
-#define DISPATCH_RETURNS_RETAINED OS_OBJECT_RETURNS_RETAINED
-
-@protocol OS_dispatch_object
-@end
-@protocol OS_dispatch_data <OS_dispatch_object>
-@end
-@protocol OS_dispatch_queue <OS_dispatch_object>
-@end
-
-typedef NSObject<OS_dispatch_object> *dispatch_object_t;
-typedef NSObject<OS_dispatch_data> *dispatch_data_t;
-typedef NSObject<OS_dispatch_queue> *dispatch_queue_t;
-
-typedef void (^dispatch_block_t)(void);
-
-dispatch_queue_t dispatch_get_main_queue(void);
-
-DISPATCH_RETURNS_RETAINED dispatch_data_t
-dispatch_data_create(const void *buffer, size_t size,
- dispatch_queue_t _Nullable queue,
- dispatch_block_t _Nullable destructor);
-
-void _dispatch_object_validate(dispatch_object_t object);
-
-#define dispatch_retain(object) \
- __extension__({ dispatch_object_t _o = (object); \
- _dispatch_object_validate(_o); \
- (void)[_o retain]; })
-#define dispatch_release(object) \
- __extension__({ dispatch_object_t _o = (object); \
- _dispatch_object_validate(_o); \
- [_o release]; })
-
-
-@interface SomeClass
-@end
-
-@implementation SomeClass
-- (NSDictionary *)copyTestWithBridgeReturningRetainable:(NSData *)plistData {
- CFErrorRef error;
- CFDictionaryRef testDict = CFPropertyListCreateWithData(kCFAllocatorDefault, (__bridge CFDataRef)plistData, 0, 0, &error);
-#if HAS_ARC
- // expected-note@-2 {{Call to function 'CFPropertyListCreateWithData' returns a Core Foundation object of type 'CFPropertyListRef' with a +1 retain count}}
-#endif
- return (__bridge NSDictionary *)testDict;
-#if HAS_ARC
- // expected-warning@-2 {{Potential leak of an object stored into 'testDict'}}
- // expected-note@-3 {{Object leaked: object allocated and stored into 'testDict' is returned from a method managed by Automatic Reference Counting}}
-#endif
-}
-
-- (NSDictionary *)copyTestWithoutBridgeReturningRetainable:(NSData *)plistData {
- NSDictionary *testDict = [[NSDictionary alloc] init];
- return testDict; // no-warning
-}
-
-- (NSDictionary *)copyTestWithBridgeTransferReturningRetainable:(NSData *)plistData {
- CFErrorRef error;
- CFDictionaryRef testDict = CFPropertyListCreateWithData(kCFAllocatorDefault, (__bridge CFDataRef)plistData, 0, 0, &error);
- return (__bridge_transfer NSDictionary *)testDict; // no-warning under ARC
-#if !HAS_ARC
- // expected-warning@-2 {{'__bridge_transfer' casts have no effect when not using ARC}} // Warning from Sema
-#endif
-}
-
-- (CFDictionaryRef)copyTestReturningCoreFoundation:(NSData *)plistData {
- CFErrorRef error;
- CFDictionaryRef testDict = CFPropertyListCreateWithData(kCFAllocatorDefault, (__bridge CFDataRef)plistData, 0, 0, &error);
- return testDict;
-}
-@end
-
-int buf[1024];
-
-void libdispatch_leaked_data() {
- dispatch_data_t data = dispatch_data_create(buf, 1024,
- dispatch_get_main_queue(), ^{});
-}
-#if !HAS_ARC
- // expected-warning@-2{{Potential leak of an object stored into 'data'}}
- // expected-note@-5{{Call to function 'dispatch_data_create' returns an Objective-C object with a +1 retain count}}
- // expected-note@-4{{Object leaked: object allocated and stored into 'data' is not referenced later in this execution path and has a retain count of +1}}
-#endif
-
-void libdispatch_dispatch_released_data() {
- dispatch_data_t data = dispatch_data_create(buf, 1024,
- dispatch_get_main_queue(), ^{});
-#if !HAS_ARC
- dispatch_release(data); // no-warning
-#endif
-}
-
-void libdispatch_objc_released_data() {
- dispatch_data_t data = dispatch_data_create(buf, 1024,
- dispatch_get_main_queue(), ^{});
-#if !HAS_ARC
- [data release]; // no-warning
-#endif
-}
-
-void libdispatch_leaked_retained_data() {
- dispatch_data_t data = dispatch_data_create(buf, 1024,
- dispatch_get_main_queue(), ^{});
-#if !HAS_ARC
- dispatch_retain(data);
- [data release];
-#endif
-}
-#if !HAS_ARC
-// expected-warning@-2{{Potential leak of an object stored into 'data'}}
-// expected-note@-9{{Call to function 'dispatch_data_create' returns an Objective-C object with a +1 retain count}}
-// expected-note@-7{{Reference count incremented. The object now has a +2 retain count}}
-// expected-note@-7{{Reference count decremented. The object now has a +1 retain count}}
-// expected-note@-6{{Object leaked: object allocated and stored into 'data' is not referenced later in this execution path and has a retain count of +1}}
-#endif
diff --git a/test/Analysis/retain-release-cache-out.m b/test/Analysis/retain-release-cache-out.m
deleted file mode 100644
index 5e9ebc4ad661..000000000000
--- a/test/Analysis/retain-release-cache-out.m
+++ /dev/null
@@ -1,27 +0,0 @@
-// RUN: %clang_analyze_cc1 %s -analyzer-checker=core,osx.cocoa.RetainCount -fblocks -verify
-
-// This test is checking behavior when a single checker runs only with the core
-// checkers, testing that the traversal order in the CFG does not affect the
-// reporting of an error.
-
-#import "Inputs/system-header-simulator-objc.h"
-
-void testDoubleRelease(BOOL z) {
- id x = [[NSObject alloc] init];
- if (z) {
- [x release];
- } else {
- ;
- }
- [x release]; // expected-warning {{Reference-counted object is used after it is released}}
-}
-
-void testDoubleRelease2(BOOL z) {
- id x = [[NSObject alloc] init];
- if (z) {
- ;
- } else {
- [x release];
- }
- [x release]; // expected-warning {{Reference-counted object is used after it is released}}
-}
diff --git a/test/Analysis/retain-release-cf-audited.m b/test/Analysis/retain-release-cf-audited.m
deleted file mode 100644
index 414ccd53b309..000000000000
--- a/test/Analysis/retain-release-cf-audited.m
+++ /dev/null
@@ -1,33 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,osx.cocoa.RetainCount -verify %s
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,osx.cocoa.RetainCount -verify %s -x objective-c++
-
-// The special thing about this file is that CFRetain and CFRelease are marked
-// as cf_audited_transfer.
-
-#pragma clang arc_cf_code_audited begin
-typedef const void * CFTypeRef;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-extern void CFRelease(CFTypeRef cf);
-
-extern CFTypeRef CFCreateSomethingAudited();
-#pragma clang arc_cf_code_audited end
-
-extern CFTypeRef CFCreateSomethingUnaudited();
-
-void testAudited() {
- CFTypeRef obj = CFCreateSomethingAudited(); // no-warning
- CFRelease(obj); // no-warning
-
- CFTypeRef obj2 = CFCreateSomethingAudited(); // expected-warning{{leak}}
- CFRetain(obj2); // no-warning
- CFRelease(obj2); // no-warning
-}
-
-void testUnaudited() {
- CFTypeRef obj = CFCreateSomethingUnaudited(); // no-warning
- CFRelease(obj); // no-warning
-
- CFTypeRef obj2 = CFCreateSomethingUnaudited(); // expected-warning{{leak}}
- CFRetain(obj2); // no-warning
- CFRelease(obj2); // no-warning
-}
diff --git a/test/Analysis/retain-release-cpp-classes.cpp b/test/Analysis/retain-release-cpp-classes.cpp
deleted file mode 100644
index 9ed1c0b3b567..000000000000
--- a/test/Analysis/retain-release-cpp-classes.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx -analyzer-output=text -verify %s
-
-// expected-no-diagnostics
-
-typedef void *CFTypeRef;
-typedef struct _CFURLCacheRef *CFURLCacheRef;
-
-CFTypeRef CustomCFRetain(CFTypeRef);
-void invalidate(void *);
-struct S1 {
- CFTypeRef s;
- CFTypeRef returnFieldAtPlus0() {
- return s;
- }
-};
-struct S2 {
- S1 *s1;
-};
-void foo(S1 *s1) {
- invalidate(s1);
- S2 s2;
- s2.s1 = s1;
- CustomCFRetain(s1->returnFieldAtPlus0());
-
- // Definitely no leak end-of-path note here. The retained pointer
- // is still accessible through s1 and s2.
- ((void) 0); // no-warning
-
- // FIXME: Ideally we need to warn after this invalidate(). The per-function
- // retain-release contract is violated: the programmer should release
- // the symbol after it was retained, within the same function.
- invalidate(&s2);
-}
diff --git a/test/Analysis/retain-release-inline.m b/test/Analysis/retain-release-inline.m
deleted file mode 100644
index 4fe6bca4a44a..000000000000
--- a/test/Analysis/retain-release-inline.m
+++ /dev/null
@@ -1,483 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -fblocks -verify %s
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from Mac OS X headers:
-//
-// #include <Cocoa/Cocoa.h>
-// #include <CoreFoundation/CoreFoundation.h>
-// #include <DiskArbitration/DiskArbitration.h>
-// #include <QuartzCore/QuartzCore.h>
-// #include <Quartz/Quartz.h>
-// #include <IOKit/IOKitLib.h>
-//
-// It includes the basic definitions for the test cases below.
-//===----------------------------------------------------------------------===//
-#define NULL 0
-typedef unsigned int __darwin_natural_t;
-typedef unsigned long uintptr_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
-typedef unsigned int UInt32;
-typedef signed long CFIndex;
-typedef CFIndex CFByteOrder;
-typedef struct {
- CFIndex location;
- CFIndex length;
-} CFRange;
-static __inline__ __attribute__((always_inline)) CFRange CFRangeMake(CFIndex loc, CFIndex len) {
- CFRange range;
- range.location = loc;
- range.length = len;
- return range;
-}
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-extern void CFRelease(CFTypeRef cf);
-typedef struct {
-}
-CFArrayCallBacks;
-extern const CFArrayCallBacks kCFTypeArrayCallBacks;
-typedef const struct __CFArray * CFArrayRef;
-typedef struct __CFArray * CFMutableArrayRef;
-extern CFMutableArrayRef CFArrayCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFArrayCallBacks *callBacks);
-extern const void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);
-extern void CFArrayAppendValue(CFMutableArrayRef theArray, const void *value);
-typedef struct {
-}
-CFDictionaryKeyCallBacks;
-extern const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks;
-typedef struct {
-}
-CFDictionaryValueCallBacks;
-extern const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef struct __CFDictionary * CFMutableDictionaryRef;
-extern CFMutableDictionaryRef CFDictionaryCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
-typedef UInt32 CFStringEncoding;
-enum {
-kCFStringEncodingMacRoman = 0, kCFStringEncodingWindowsLatin1 = 0x0500, kCFStringEncodingISOLatin1 = 0x0201, kCFStringEncodingNextStepLatin = 0x0B01, kCFStringEncodingASCII = 0x0600, kCFStringEncodingUnicode = 0x0100, kCFStringEncodingUTF8 = 0x08000100, kCFStringEncodingNonLossyASCII = 0x0BFF , kCFStringEncodingUTF16 = 0x0100, kCFStringEncodingUTF16BE = 0x10000100, kCFStringEncodingUTF16LE = 0x14000100, kCFStringEncodingUTF32 = 0x0c000100, kCFStringEncodingUTF32BE = 0x18000100, kCFStringEncodingUTF32LE = 0x1c000100 };
-extern CFStringRef CFStringCreateWithCString(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding);
-typedef double CFTimeInterval;
-typedef CFTimeInterval CFAbsoluteTime;
-extern CFAbsoluteTime CFAbsoluteTimeGetCurrent(void);
-typedef const struct __CFDate * CFDateRef;
-extern CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at);
-extern CFAbsoluteTime CFDateGetAbsoluteTime(CFDateRef theDate);
-typedef __darwin_natural_t natural_t;
-typedef natural_t mach_port_name_t;
-typedef mach_port_name_t mach_port_t;
-typedef int kern_return_t;
-typedef kern_return_t mach_error_t;
-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;
-typedef const struct __CFNumber * CFNumberRef;
-extern CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-typedef const struct __CFAttributedString *CFAttributedStringRef;
-typedef struct __CFAttributedString *CFMutableAttributedStringRef;
-extern CFAttributedStringRef CFAttributedStringCreate(CFAllocatorRef alloc, CFStringRef str, CFDictionaryRef attributes) ;
-extern CFMutableAttributedStringRef CFAttributedStringCreateMutableCopy(CFAllocatorRef alloc, CFIndex maxLength, CFAttributedStringRef aStr) ;
-extern void CFAttributedStringSetAttribute(CFMutableAttributedStringRef aStr, CFRange range, CFStringRef attrName, CFTypeRef value) ;
-typedef signed char BOOL;
-typedef unsigned long NSUInteger;
-@class NSString, Protocol;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
-- (id)autorelease;
-- (id)init;
-@end @protocol NSCopying - (id)copyWithZone:(NSZone *)zone;
-@end @protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone;
-@end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@interface NSObject <NSObject> {}
-+ (id)allocWithZone:(NSZone *)zone;
-+ (id)alloc;
-- (void)dealloc;
-@end
-@interface NSObject (NSCoderMethods)
-- (id)awakeAfterUsingCoder:(NSCoder *)aDecoder;
-@end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-typedef struct {
-}
-NSFastEnumerationState;
-@protocol NSFastEnumeration - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
-@end @class NSString, NSDictionary;
-@interface NSValue : NSObject <NSCopying, NSCoding> - (void)getValue:(void *)value;
-@end @interface NSNumber : NSValue - (char)charValue;
-- (id)initWithInt:(int)value;
-@end @class NSString;
-@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration> - (NSUInteger)count;
-@end @interface NSArray (NSArrayCreation) + (id)array;
-@end @interface NSAutoreleasePool : NSObject {
-}
-- (void)drain;
-@end extern NSString * const NSBundleDidLoadNotification;
-typedef double NSTimeInterval;
-@interface NSDate : NSObject <NSCopying, NSCoding> - (NSTimeInterval)timeIntervalSinceReferenceDate;
-@end typedef unsigned short unichar;
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-- (NSString *)stringByAppendingString:(NSString *)aString;
-- ( const char *)UTF8String;
-- (id)initWithUTF8String:(const char *)nullTerminatedCString;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
-@end @class NSString, NSURL, NSError;
-@interface NSData : NSObject <NSCopying, NSMutableCopying, NSCoding> - (NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b;
-@end @class NSLocale, NSDate, NSCalendar, NSTimeZone, NSError, NSArray, NSMutableDictionary;
-@interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration> - (NSUInteger)count;
-@end @interface NSMutableDictionary : NSDictionary - (void)removeObjectForKey:(id)aKey;
-- (void)setObject:(id)anObject forKey:(id)aKey;
-@end @interface NSMutableDictionary (NSMutableDictionaryCreation) + (id)dictionaryWithCapacity:(NSUInteger)numItems;
-@end typedef double CGFloat;
-struct CGSize {
-};
-typedef struct CGSize CGSize;
-struct CGRect {
-};
-typedef struct CGRect CGRect;
-typedef mach_port_t io_object_t;
-typedef char io_name_t[128];
-typedef io_object_t io_iterator_t;
-typedef io_object_t io_service_t;
-typedef struct IONotificationPort * IONotificationPortRef;
-typedef void (*IOServiceMatchingCallback)( void * refcon, io_iterator_t iterator );
-io_service_t IOServiceGetMatchingService( mach_port_t masterPort, CFDictionaryRef matching );
-kern_return_t IOServiceGetMatchingServices( mach_port_t masterPort, CFDictionaryRef matching, io_iterator_t * existing );
-kern_return_t IOServiceAddNotification( mach_port_t masterPort, const io_name_t notificationType, CFDictionaryRef matching, mach_port_t wakePort, uintptr_t reference, io_iterator_t * notification ) __attribute__((deprecated));
-kern_return_t IOServiceAddMatchingNotification( IONotificationPortRef notifyPort, const io_name_t notificationType, CFDictionaryRef matching, IOServiceMatchingCallback callback, void * refCon, io_iterator_t * notification );
-CFMutableDictionaryRef IOServiceMatching( const char * name );
-CFMutableDictionaryRef IOServiceNameMatching( const char * name );
-CFMutableDictionaryRef IOBSDNameMatching( mach_port_t masterPort, uint32_t options, const char * bsdName );
-CFMutableDictionaryRef IOOpenFirmwarePathMatching( mach_port_t masterPort, uint32_t options, const char * path );
-CFMutableDictionaryRef IORegistryEntryIDMatching( uint64_t entryID );
-typedef struct __DASession * DASessionRef;
-extern DASessionRef DASessionCreate( CFAllocatorRef allocator );
-typedef struct __DADisk * DADiskRef;
-extern DADiskRef DADiskCreateFromBSDName( CFAllocatorRef allocator, DASessionRef session, const char * name );
-extern DADiskRef DADiskCreateFromIOMedia( CFAllocatorRef allocator, DASessionRef session, io_service_t media );
-extern CFDictionaryRef DADiskCopyDescription( DADiskRef disk );
-extern DADiskRef DADiskCopyWholeDisk( DADiskRef disk );
-@interface NSTask : NSObject - (id)init;
-@end typedef struct CGColorSpace *CGColorSpaceRef;
-typedef struct CGImage *CGImageRef;
-typedef struct CGLayer *CGLayerRef;
-@interface NSResponder : NSObject <NSCoding> {
-}
-@end @protocol NSAnimatablePropertyContainer - (id)animator;
-@end extern NSString *NSAnimationTriggerOrderIn ;
-@interface NSView : NSResponder <NSAnimatablePropertyContainer> {
-}
-@end @protocol NSValidatedUserInterfaceItem - (SEL)action;
-@end @protocol NSUserInterfaceValidations - (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem;
-@end @class NSDate, NSDictionary, NSError, NSException, NSNotification;
-@interface NSApplication : NSResponder <NSUserInterfaceValidations> {
-}
-@end enum {
-NSTerminateCancel = 0, NSTerminateNow = 1, NSTerminateLater = 2 };
-typedef NSUInteger NSApplicationTerminateReply;
-@protocol NSApplicationDelegate <NSObject> @optional - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
-@end @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView, NSTextView;
-@interface NSCell : NSObject <NSCopying, NSCoding> {
-}
-@end @class NSTextField, NSPanel, NSArray, NSWindow, NSImage, NSButton, NSError;
-typedef struct {
-}
-CVTimeStamp;
-@interface CIImage : NSObject <NSCoding, NSCopying> {
-}
-typedef int CIFormat;
-@end enum {
-kDAReturnSuccess = 0, kDAReturnError = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x01, kDAReturnBusy = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x02, kDAReturnBadArgument = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x03, kDAReturnExclusiveAccess = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x04, kDAReturnNoResources = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x05, kDAReturnNotFound = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x06, kDAReturnNotMounted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x07, kDAReturnNotPermitted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x08, kDAReturnNotPrivileged = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x09, kDAReturnNotReady = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0A, kDAReturnNotWritable = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0B, kDAReturnUnsupported = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0C };
-typedef mach_error_t DAReturn;
-typedef const struct __DADissenter * DADissenterRef;
-extern DADissenterRef DADissenterCreate( CFAllocatorRef allocator, DAReturn status, CFStringRef string );
-@interface CIContext: NSObject {
-}
-- (CGImageRef)createCGImage:(CIImage *)im fromRect:(CGRect)r;
-- (CGImageRef)createCGImage:(CIImage *)im fromRect:(CGRect)r format:(CIFormat)f colorSpace:(CGColorSpaceRef)cs;
-- (CGLayerRef)createCGLayerWithSize:(CGSize)size info:(CFDictionaryRef)d;
-@end extern NSString* const QCRendererEventKey;
-@protocol QCCompositionRenderer - (NSDictionary*) attributes;
-@end @interface QCRenderer : NSObject <QCCompositionRenderer> {
-}
-- (id) createSnapshotImageOfType:(NSString*)type;
-@end extern NSString* const QCViewDidStartRenderingNotification;
-@interface QCView : NSView <QCCompositionRenderer> {
-}
-- (id) createSnapshotImageOfType:(NSString*)type;
-@end enum {
-ICEXIFOrientation1 = 1, ICEXIFOrientation2 = 2, ICEXIFOrientation3 = 3, ICEXIFOrientation4 = 4, ICEXIFOrientation5 = 5, ICEXIFOrientation6 = 6, ICEXIFOrientation7 = 7, ICEXIFOrientation8 = 8, };
-@class ICDevice;
-@protocol ICDeviceDelegate <NSObject> @required - (void)didRemoveDevice:(ICDevice*)device;
-@end extern NSString *const ICScannerStatusWarmingUp;
-@class ICScannerDevice;
-@protocol ICScannerDeviceDelegate <ICDeviceDelegate> @optional - (void)scannerDeviceDidBecomeAvailable:(ICScannerDevice*)scanner;
-@end
-
-typedef long unsigned int __darwin_size_t;
-typedef __darwin_size_t size_t;
-typedef unsigned long CFTypeID;
-struct CGPoint {
- CGFloat x;
- CGFloat y;
-};
-typedef struct CGPoint CGPoint;
-typedef struct CGGradient *CGGradientRef;
-typedef uint32_t CGGradientDrawingOptions;
-extern CFTypeID CGGradientGetTypeID(void);
-extern CGGradientRef CGGradientCreateWithColorComponents(CGColorSpaceRef
- space, const CGFloat components[], const CGFloat locations[], size_t count);
-extern CGGradientRef CGGradientCreateWithColors(CGColorSpaceRef space,
- CFArrayRef colors, const CGFloat locations[]);
-extern CGGradientRef CGGradientRetain(CGGradientRef gradient);
-extern void CGGradientRelease(CGGradientRef gradient);
-typedef struct CGContext *CGContextRef;
-extern void CGContextDrawLinearGradient(CGContextRef context,
- CGGradientRef gradient, CGPoint startPoint, CGPoint endPoint,
- CGGradientDrawingOptions options);
-extern CGColorSpaceRef CGColorSpaceCreateDeviceRGB(void);
-
-@interface NSMutableArray : NSObject
-- (void)addObject:(id)object;
-+ (id)array;
-@end
-
-enum {
- NSASCIIStringEncoding = 1,
- NSNEXTSTEPStringEncoding = 2,
- NSJapaneseEUCStringEncoding = 3,
- NSUTF8StringEncoding = 4,
- NSISOLatin1StringEncoding = 5,
- NSSymbolStringEncoding = 6,
- NSNonLossyASCIIStringEncoding = 7,
-};
-typedef struct __CFString * CFMutableStringRef;
-typedef NSUInteger NSStringEncoding;
-
-extern CFStringRef CFStringCreateWithCStringNoCopy(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding, CFAllocatorRef contentsDeallocator);
-
-typedef struct {
- int ref;
-} isl_basic_map;
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-void foo(id x) {
- [x retain];
-}
-
-void bar(id x) {
- [x release];
-}
-
-void test() {
- NSString *s = [[NSString alloc] init]; // expected-warning {{Potential leak}}
- foo(s);
- foo(s);
- bar(s);
-}
-
-void test_neg() {
- NSString *s = [[NSString alloc] init]; // no-warning
- foo(s);
- foo(s);
- bar(s);
- bar(s);
- bar(s);
-}
-
-__attribute__((annotate("rc_ownership_returns_retained"))) isl_basic_map *isl_basic_map_cow(__attribute__((annotate("rc_ownership_consumed"))) isl_basic_map *bmap);
-void free(void *);
-
-void callee_side_parameter_checking_leak(__attribute__((annotate("rc_ownership_consumed"))) isl_basic_map *bmap) { // expected-warning {{Potential leak of an object}}
-}
-
-// As 'isl_basic_map_free' is annotated with 'rc_ownership_trusted_implementation', RetainCountChecker trusts its
-// implementation and doesn't analyze its body. If the annotation 'rc_ownership_trusted_implementation' is removed,
-// a leak warning is raised by RetainCountChecker as the analyzer is unable to detect a decrement in the reference
-// count of 'bmap' along the path in 'isl_basic_map_free' assuming the predicate of the second 'if' branch to be
-// true or assuming both the predicates in the function to be false.
-__attribute__((annotate("rc_ownership_trusted_implementation"))) isl_basic_map *isl_basic_map_free(__attribute__((annotate("rc_ownership_consumed"))) isl_basic_map *bmap) {
- if (!bmap)
- return NULL;
-
- if (--bmap->ref > 0)
- return NULL;
-
- free(bmap);
- return NULL;
-}
-
-// As 'isl_basic_map_copy' is annotated with 'rc_ownership_trusted_implementation', RetainCountChecker trusts its
-// implementation and doesn't analyze its body. If that annotation is removed, a 'use-after-release' warning might
-// be raised by RetainCountChecker as the pointer which is passed as an argument to this function and the pointer
-// which is returned from the function point to the same memory location.
-__attribute__((annotate("rc_ownership_trusted_implementation"))) __attribute__((annotate("rc_ownership_returns_retained"))) isl_basic_map *isl_basic_map_copy(isl_basic_map *bmap) {
- if (!bmap)
- return NULL;
-
- bmap->ref++;
- return bmap;
-}
-
-void test_use_after_release_with_trusted_implementation_annotate_attribute(__attribute__((annotate("rc_ownership_consumed"))) isl_basic_map *bmap) {
- // After this call, 'bmap' has a +1 reference count.
- bmap = isl_basic_map_cow(bmap);
- // After the call to 'isl_basic_map_copy', 'bmap' has a +1 reference count.
- isl_basic_map *temp = isl_basic_map_cow(isl_basic_map_copy(bmap));
- // After this call, 'bmap' has a +0 reference count.
- isl_basic_map *temp2 = isl_basic_map_cow(bmap); // no-warning
- isl_basic_map_free(temp2);
- isl_basic_map_free(temp);
-}
-
-void test_leak_with_trusted_implementation_annotate_attribute(__attribute__((annotate("rc_ownership_consumed"))) isl_basic_map *bmap) {
- // After this call, 'bmap' has a +1 reference count.
- bmap = isl_basic_map_cow(bmap); // no-warning
- // After this call, 'bmap' has a +0 reference count.
- isl_basic_map_free(bmap);
-}
-
-void callee_side_parameter_checking_incorrect_rc_decrement(isl_basic_map *bmap) {
- isl_basic_map_free(bmap); // expected-warning {{Incorrect decrement of the reference count}}
-}
-
-__attribute__((annotate("rc_ownership_returns_retained"))) isl_basic_map *callee_side_parameter_checking_return_notowned_object(isl_basic_map *bmap) {
- return bmap; // expected-warning {{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-
-__attribute__((annotate("rc_ownership_returns_retained"))) isl_basic_map *callee_side_parameter_checking_assign_consumed_parameter_leak_return(__attribute__((annotate("rc_ownership_consumed"))) isl_basic_map *bmap1, __attribute__((annotate("rc_ownership_consumed"))) isl_basic_map *bmap2) { // expected-warning {{Potential leak of an object}}
- bmap1 = bmap2;
- isl_basic_map_free(bmap2);
- return bmap1;
-}
-
-__attribute__((annotate("rc_ownership_returns_retained"))) isl_basic_map *callee_side_parameter_checking_assign_consumed_parameter_leak(__attribute__((annotate("rc_ownership_consumed"))) isl_basic_map *bmap1, __attribute__((annotate("rc_ownership_consumed"))) isl_basic_map *bmap2) { // expected-warning {{Potential leak of an object}}
- bmap1 = bmap2;
- isl_basic_map_free(bmap1);
- return bmap2;
-}
-
-__attribute__((annotate("rc_ownership_returns_retained"))) isl_basic_map *error_path_leak(__attribute__((annotate("rc_ownership_consumed"))) isl_basic_map *bmap1, __attribute__((annotate("rc_ownership_consumed"))) isl_basic_map *bmap2) { // expected-warning {{Potential leak of an object}}
- bmap1 = isl_basic_map_cow(bmap1);
- if (!bmap1 || !bmap2)
- goto error;
-
- isl_basic_map_free(bmap2);
- return bmap1;
-error:
- return isl_basic_map_free(bmap1);
-}
-
-//===----------------------------------------------------------------------===//
-// Test returning retained and not-retained values.
-//===----------------------------------------------------------------------===//
-
-// On return (intraprocedural), assume CF objects are leaked.
-CFStringRef test_return_ratained_CF(char *bytes) {
- CFStringRef str;
- return CFStringCreateWithCStringNoCopy(0, bytes, NSNEXTSTEPStringEncoding, 0); // expected-warning {{leak}}
-}
-
-// On return (intraprocedural), assume NSObjects are not leaked.
-id test_return_retained_NS() {
- return [[NSString alloc] init]; // no-warning
-}
-
-void test_test_return_retained() {
- id x = test_return_retained_NS(); // expected-warning {{leak}}
- [x retain];
- [x release];
-}
-
-//===----------------------------------------------------------------------===//
-// Test not applying "double effects" from inlining and RetainCountChecker summaries.
-// If we inline a call, we should already see its retain/release semantics.
-//===----------------------------------------------------------------------===//
-
-__attribute__((cf_returns_retained)) CFStringRef test_return_inline(CFStringRef x) {
- CFRetain(x);
- return x;
-}
-
-void test_test_return_inline(char *bytes) {
- CFStringRef str = CFStringCreateWithCStringNoCopy(0, bytes, NSNEXTSTEPStringEncoding, 0);
- // After this call, 'str' really has +2 reference count.
- CFStringRef str2 = test_return_inline(str);
- // After this call, 'str' really has a +1 reference count.
- CFRelease(str);
- // After this call, 'str2' and 'str' has a +0 reference count.
- CFRelease(str2);
-}
-
-void test_test_return_inline_2(char *bytes) {
- CFStringRef str = CFStringCreateWithCStringNoCopy(0, bytes, NSNEXTSTEPStringEncoding, 0); // expected-warning {{leak}}
- // After this call, 'str' really has +2 reference count.
- CFStringRef str2 = test_return_inline(str);
- // After this call, 'str' really has a +1 reference count.
- CFRelease(str);
-}
-
-extern CFStringRef getString(void);
-CFStringRef testCovariantReturnType(void) __attribute__((cf_returns_retained));
-
-void usetestCovariantReturnType() {
- CFStringRef S = ((void*)0);
- S = testCovariantReturnType();
- if (S)
- CFRelease(S);
-}
-
-CFStringRef testCovariantReturnType() {
- CFStringRef Str = ((void*)0);
- Str = getString();
- if (Str) {
- CFRetain(Str);
- }
- return Str;
-}
-
-// Test that we reanalyze ObjC methods which have been inlined. When reanalyzing
-// them, make sure we inline very small functions.
-id returnInputParam(id x) {
- return x;
-}
-
-@interface MyClass : NSObject
-- (id)test_reanalyze_as_top_level;
-- (void)test_inline_tiny_when_reanalyzing;
-- (void)inline_test_reanalyze_as_top_level;
-@end
-
-@implementation MyClass
-- (void)test_inline_tiny_when_reanalyzing {
- id x = [[NSString alloc] init]; // no-warning
- x = returnInputParam(x);
- [x release];
-}
-
-- (id)test_reanalyze_as_top_level {
- // This method does not follow naming conventions, so a warning will be
- // reported when it is reanalyzed at top level.
- return [[NSString alloc] init]; // expected-warning {{leak}}
-}
-
-- (void)inline_test_reanalyze_as_top_level {
- id x = [self test_reanalyze_as_top_level];
- [x release];
- [self test_inline_tiny_when_reanalyzing];
-}
-@end
diff --git a/test/Analysis/retain-release-path-notes.m b/test/Analysis/retain-release-path-notes.m
deleted file mode 100644
index 23171eda1cc3..000000000000
--- a/test/Analysis/retain-release-path-notes.m
+++ /dev/null
@@ -1,331 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -analyzer-store=region -analyzer-output=text -verify %s
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -analyzer-store=region -analyzer-output=plist-multi-file %s -o %t
-// RUN: cat %t | %diff_plist %S/Inputs/expected-plists/retain-release-path-notes.m.plist -
-
-/***
-This file is for testing the path-sensitive notes for retain/release errors.
-Its goal is to have simple branch coverage of any path-based diagnostics,
-not to actually check all possible retain/release errors.
-
-This file includes notes that only appear in a ref-counted analysis.
-GC-specific notes should go in retain-release-path-notes-gc.m.
-***/
-
-@interface NSObject
-+ (id)alloc;
-- (id)init;
-- (void)dealloc;
-
-- (Class)class;
-
-- (id)retain;
-- (void)release;
-- (void)autorelease;
-@end
-
-@interface Foo : NSObject
-- (id)methodWithValue;
-@property(retain) id propertyValue;
-
-- (id)objectAtIndexedSubscript:(unsigned)index;
-- (id)objectForKeyedSubscript:(id)key;
-@end
-
-typedef struct CFType *CFTypeRef;
-CFTypeRef CFRetain(CFTypeRef);
-void CFRelease(CFTypeRef);
-CFTypeRef CFAutorelease(CFTypeRef __attribute__((cf_consumed)));
-
-id NSMakeCollectable(CFTypeRef);
-CFTypeRef CFMakeCollectable(CFTypeRef);
-
-CFTypeRef CFCreateSomething();
-CFTypeRef CFGetSomething();
-
-
-void creationViaAlloc () {
- id leaked = [[NSObject alloc] init]; // expected-note{{Method returns an instance of NSObject with a +1 retain count}}
- return; // expected-warning{{leak}} expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
-}
-
-void creationViaCFCreate () {
- CFTypeRef leaked = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object of type 'CFTypeRef' with a +1 retain count}}
- return; // expected-warning{{leak}} expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
-}
-
-void acquisitionViaMethod (Foo *foo) {
- id leaked = [foo methodWithValue]; // expected-note{{Method returns an Objective-C object with a +0 retain count}}
- [leaked retain]; // expected-note{{Reference count incremented. The object now has a +1 retain count}}
- [leaked retain]; // expected-note{{Reference count incremented. The object now has a +2 retain count}}
- [leaked release]; // expected-note{{Reference count decremented. The object now has a +1 retain count}}
- return; // expected-warning{{leak}} expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
-}
-
-void acquisitionViaProperty (Foo *foo) {
- id leaked = foo.propertyValue; // expected-note{{Property returns an Objective-C object with a +0 retain count}}
- [leaked retain]; // expected-note{{Reference count incremented. The object now has a +1 retain count}}
- return; // expected-warning{{leak}} expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
-}
-
-void acquisitionViaCFFunction () {
- CFTypeRef leaked = CFGetSomething(); // expected-note{{Call to function 'CFGetSomething' returns a Core Foundation object of type 'CFTypeRef' with a +0 retain count}}
- CFRetain(leaked); // expected-note{{Reference count incremented. The object now has a +1 retain count}}
- return; // expected-warning{{leak}} expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
-}
-
-void explicitDealloc () {
- id object = [[NSObject alloc] init]; // expected-note{{Method returns an instance of NSObject with a +1 retain count}}
- [object dealloc]; // expected-note{{Object released by directly sending the '-dealloc' message}}
- [object class]; // expected-warning{{Reference-counted object is used after it is released}} // expected-note{{Reference-counted object is used after it is released}}
-}
-
-void implicitDealloc () {
- id object = [[NSObject alloc] init]; // expected-note{{Method returns an instance of NSObject with a +1 retain count}}
- [object release]; // expected-note{{Object released}}
- [object class]; // expected-warning{{Reference-counted object is used after it is released}} // expected-note{{Reference-counted object is used after it is released}}
-}
-
-void overAutorelease () {
- id object = [[NSObject alloc] init]; // expected-note{{Method returns an instance of NSObject with a +1 retain count}}
- [object autorelease]; // expected-note{{Object autoreleased}}
- [object autorelease]; // expected-note{{Object autoreleased}}
- return; // expected-warning{{Object autoreleased too many times}} expected-note{{Object was autoreleased 2 times but the object has a +1 retain count}}
-}
-
-void autoreleaseUnowned (Foo *foo) {
- id object = foo.propertyValue; // expected-note{{Property returns an Objective-C object with a +0 retain count}}
- [object autorelease]; // expected-note{{Object autoreleased}}
- return; // expected-warning{{Object autoreleased too many times}} expected-note{{Object was autoreleased but has a +0 retain count}}
-}
-
-void makeCollectableIgnored() {
- CFTypeRef leaked = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object of type 'CFTypeRef' with a +1 retain count}}
- CFMakeCollectable(leaked);
- NSMakeCollectable(leaked);
- return; // expected-warning{{leak}} expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
-}
-
-CFTypeRef CFCopyRuleViolation () {
- CFTypeRef object = CFGetSomething(); // expected-note{{Call to function 'CFGetSomething' returns a Core Foundation object of type 'CFTypeRef' with a +0 retain count}}
- return object; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}} expected-note{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-
-CFTypeRef CFGetRuleViolation () {
- CFTypeRef object = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object of type 'CFTypeRef' with a +1 retain count}}
- return object; // expected-warning{{leak}} expected-note{{Object leaked: object allocated and stored into 'object' is returned from a function whose name ('CFGetRuleViolation') does not contain 'Copy' or 'Create'. This violates the naming convention rules given in the Memory Management Guide for Core Foundation}}
-}
-
-@implementation Foo (FundamentalMemoryManagementRules)
-- (id)copyViolation {
- id result = self.propertyValue; // expected-note{{Property returns an Objective-C object with a +0 retain count}}
- return result; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}} expected-note{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-
-- (id)copyViolationIndexedSubscript {
- id result = self[0]; // expected-note{{Subscript returns an Objective-C object with a +0 retain count}}
- return result; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}} expected-note{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-
-- (id)copyViolationKeyedSubscript {
- id result = self[self]; // expected-note{{Subscript returns an Objective-C object with a +0 retain count}}
- return result; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}} expected-note{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-
-- (id)getViolation {
- id result = [[Foo alloc] init]; // expected-note{{Method returns an instance of Foo with a +1 retain count}}
- return result; // expected-warning{{leak}} expected-note{{Object leaked: object allocated and stored into 'result' is returned from a method whose name ('getViolation') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'. This violates the naming convention rules given in the Memory Management Guide for Cocoa}}
-}
-
-- (id)copyAutorelease {
- id result = [[Foo alloc] init]; // expected-note{{Method returns an instance of Foo with a +1 retain count}}
- [result autorelease]; // expected-note{{Object autoreleased}}
- return result; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}} expected-note{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-@end
-
-
-typedef unsigned long NSUInteger;
-
-@interface NSValue : NSObject
-@end
-
-@interface NSNumber : NSValue
-+ (NSNumber *)numberWithInt:(int)i;
-@end
-
-@interface NSString : NSObject
-+ (NSString *)stringWithUTF8String:(const char *)str;
-@end
-
-@interface NSArray : NSObject
-+ (NSArray *)arrayWithObjects:(const id [])objects count:(NSUInteger)count;
-@end
-
-@interface NSDictionary : NSObject
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id /* <NSCopying> */ [])keys count:(NSUInteger)count;
-@end
-
-
-void testNumericLiteral() {
- id result = @1; // expected-note{{NSNumber literal is an object with a +0 retain count}}
- [result release]; // expected-warning{{decrement}} expected-note{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-void testBoxedInt(int x) {
- id result = @(x); // expected-note{{NSNumber boxed expression produces an object with a +0 retain count}}
- [result release]; // expected-warning{{decrement}} expected-note{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-void testBoxedString(const char *str) {
- id result = @(str); // expected-note{{NSString boxed expression produces an object with a +0 retain count}}
- [result release]; // expected-warning{{decrement}} expected-note{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-void testArray(id obj) {
- id result = @[obj]; // expected-note{{NSArray literal is an object with a +0 retain count}}
- [result release]; // expected-warning{{decrement}} expected-note{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-void testDictionary(id key, id value) {
- id result = @{key: value}; // expected-note{{NSDictionary literal is an object with a +0 retain count}}
- [result release]; // expected-warning{{decrement}} expected-note{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-// Test that we step into the init method when the allocated object is leaked due to early escape within init.
-
-static int Cond;
-@interface MyObj : NSObject
--(id)initX;
--(id)initY;
--(id)initZ;
-+(void)test;
-@end
-
-@implementation MyObj
-
--(id)initX {
- if (Cond) // expected-note {{Assuming 'Cond' is not equal to 0}}
- // expected-note@-1{{Taking true branch}}
- return 0;
- self = [super init];
- return self;
-}
-
--(id)initY {
- self = [super init]; //expected-note {{Method returns an instance of MyObj with a +1 retain count}}
- return self;
-}
-
--(id)initZ {
- self = [super init];
- return self;
-}
-
-+(void)test {
- // initX is inlined since we explicitly mark it as interesting
- id x = [[MyObj alloc] initX]; // expected-warning {{Potential leak of an object}}
- // expected-note@-1 {{Method returns an instance of MyObj with a +1 retain count}}
- // expected-note@-2 {{Calling 'initX'}}
- // expected-note@-3 {{Returning from 'initX'}}
- // expected-note@-4 {{Object leaked: allocated object of type 'MyObj *' is not referenced later in this execution path and has a retain count of +1}}
- // initI is inlined because the allocation happens within initY
- id y = [[MyObj alloc] initY];
- // expected-note@-1 {{Calling 'initY'}}
- // expected-note@-2 {{Returning from 'initY'}}
-
- // initZ is not inlined
- id z = [[MyObj alloc] initZ]; // expected-warning {{Potential leak of an object}}
- // expected-note@-1 {{Object leaked: object allocated and stored into 'y' is not referenced later in this execution path and has a retain count of +1}}
-
- [x release];
- [z release];
-}
-@end
-
-
-void CFOverAutorelease() {
- CFTypeRef object = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object of type 'CFTypeRef' with a +1 retain count}}
- CFAutorelease(object); // expected-note{{Object autoreleased}}
- CFAutorelease(object); // expected-note{{Object autoreleased}}
- return; // expected-warning{{Object autoreleased too many times}} expected-note{{Object was autoreleased 2 times but the object has a +1 retain count}}
-}
-
-void CFAutoreleaseUnowned() {
- CFTypeRef object = CFGetSomething(); // expected-note{{Call to function 'CFGetSomething' returns a Core Foundation object of type 'CFTypeRef' with a +0 retain count}}
- CFAutorelease(object); // expected-note{{Object autoreleased}}
- return; // expected-warning{{Object autoreleased too many times}} expected-note{{Object was autoreleased but has a +0 retain count}}
-}
-
-void CFAutoreleaseUnownedMixed() {
- CFTypeRef object = CFGetSomething(); // expected-note{{Call to function 'CFGetSomething' returns a Core Foundation object of type 'CFTypeRef' with a +0 retain count}}
- CFAutorelease(object); // expected-note{{Object autoreleased}}
- [(id)object autorelease]; // expected-note{{Object autoreleased}}
- return; // expected-warning{{Object autoreleased too many times}} expected-note{{Object was autoreleased 2 times but the object has a +0 retain count}}
-}
-
-@interface PropertiesAndIvars : NSObject
-@property (strong) id ownedProp;
-@property (unsafe_unretained) id unownedProp;
-@property (nonatomic, strong) id manualProp;
-@end
-
-@interface NSObject (PropertiesAndIvarsHelper)
-- (void)myMethod;
-@end
-
-@implementation PropertiesAndIvars {
- id _ivarOnly;
-}
-
-- (id)manualProp {
- return _manualProp;
-}
-
-- (void)testOverreleaseUnownedIvar {
- [_unownedProp retain]; // FIXME-note {{Object loaded from instance variable}}
- // FIXME-note@-1 {{Reference count incremented. The object now has a +1 retain count}}
- [_unownedProp release]; // FIXME-note {{Reference count decremented}}
- [_unownedProp release]; // FIXME-note {{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
- // FIXME-warning@-1 {{not owned at this point by the caller}}
-}
-
-- (void)testOverreleaseOwnedIvarUse {
- [_ownedProp retain]; // FIXME-note {{Object loaded from instance variable}}
- // FIXME-note@-1 {{Reference count incremented. The object now has a +1 retain count}}
- [_ownedProp release]; // FIXME-note {{Reference count decremented}}
- [_ownedProp release]; // FIXME-note {{Strong instance variable relinquished. Object released}}
- [_ownedProp myMethod]; // FIXME-note {{Reference-counted object is used after it is released}}
- // FIXME-warning@-1 {{used after it is released}}
-}
-
-- (void)testOverreleaseIvarOnlyUse {
- [_ivarOnly retain]; // FIXME-note {{Object loaded from instance variable}}
- // FIXME-note@-1 {{Reference count incremented. The object now has a +1 retain count}}
- [_ivarOnly release]; // FIXME-note {{Reference count decremented}}
- [_ivarOnly release]; // FIXME-note {{Strong instance variable relinquished. Object released}}
- [_ivarOnly myMethod]; // FIXME-note {{Reference-counted object is used after it is released}}
- // FIXME-warning@-1 {{used after it is released}}
-}
-
-- (void)testOverreleaseOwnedIvarAutorelease {
- [_ownedProp retain]; // FIXME-note {{Object loaded from instance variable}}
- // FIXME-note@-1 {{Reference count incremented. The object now has a +1 retain count}}
- [_ownedProp release]; // FIXME-note {{Reference count decremented}}
- [_ownedProp autorelease]; // FIXME-note {{Object autoreleased}}
- [_ownedProp autorelease]; // FIXME-note {{Object autoreleased}}
- // FIXME-note@+1 {{Object was autoreleased 2 times but the object has a +0 retain count}}
-} // FIXME-warning{{Object autoreleased too many times}}
-
-- (void)testOverreleaseIvarOnlyAutorelease {
- [_ivarOnly retain]; // FIXME-note {{Object loaded from instance variable}}
- // FIXME-note@-1 {{Reference count incremented. The object now has a +1 retain count}}
- [_ivarOnly release]; // FIXME-note {{Reference count decremented}}
- [_ivarOnly autorelease]; // FIXME-note {{Object autoreleased}}
- [_ivarOnly autorelease]; // FIXME-note {{Object autoreleased}}
- // FIXME-note@+1 {{Object was autoreleased 2 times but the object has a +0 retain count}}
-} // FIXME-warning{{Object autoreleased too many times}}
-
-@end
-
-
-
diff --git a/test/Analysis/retain-release-region-store.m b/test/Analysis/retain-release-region-store.m
deleted file mode 100644
index 65a31cc91ada..000000000000
--- a/test/Analysis/retain-release-region-store.m
+++ /dev/null
@@ -1,257 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple %itanium_abi_triple -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -analyzer-max-loop 6 -verify %s
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from
-// Foundation.h (Mac OS X).
-//
-// It includes the basic definitions for the test cases below.
-// Not including Foundation.h directly makes this test case both svelte and
-// portable to non-Mac platforms.
-//===----------------------------------------------------------------------===//
-
-typedef unsigned int __darwin_natural_t;
-typedef unsigned long UInt32;
-typedef signed long CFIndex;
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-extern void CFRelease(CFTypeRef cf);
-typedef struct {
-}
-CFArrayCallBacks;
-extern const CFArrayCallBacks kCFTypeArrayCallBacks;
-typedef const struct __CFArray * CFArrayRef;
-typedef struct __CFArray * CFMutableArrayRef;
-extern CFMutableArrayRef CFArrayCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFArrayCallBacks *callBacks);
-extern const void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef UInt32 CFStringEncoding;
-enum {
-kCFStringEncodingMacRoman = 0, kCFStringEncodingWindowsLatin1 = 0x0500, kCFStringEncodingISOLatin1 = 0x0201, kCFStringEncodingNextStepLatin = 0x0B01, kCFStringEncodingASCII = 0x0600, kCFStringEncodingUnicode = 0x0100, kCFStringEncodingUTF8 = 0x08000100, kCFStringEncodingNonLossyASCII = 0x0BFF , kCFStringEncodingUTF16 = 0x0100, kCFStringEncodingUTF16BE = 0x10000100, kCFStringEncodingUTF16LE = 0x14000100, kCFStringEncodingUTF32 = 0x0c000100, kCFStringEncodingUTF32BE = 0x18000100, kCFStringEncodingUTF32LE = 0x1c000100 };
-extern CFStringRef CFStringCreateWithCString(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding);
-typedef double CFTimeInterval;
-typedef CFTimeInterval CFAbsoluteTime;
-typedef const struct __CFDate * CFDateRef;
-extern CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at);
-extern CFAbsoluteTime CFDateGetAbsoluteTime(CFDateRef theDate);
-typedef __darwin_natural_t natural_t;
-typedef natural_t mach_port_name_t;
-typedef mach_port_name_t mach_port_t;
-typedef signed char BOOL;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
-@end @protocol NSCopying - (id)copyWithZone:(NSZone *)zone;
-@end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@interface NSObject <NSObject> {}
-- (id)init;
-+ (id)allocWithZone:(NSZone *)zone;
-+ (id)alloc;
-- (void)dealloc;
-@end
-typedef float CGFloat;
-typedef double NSTimeInterval;
-@interface NSDate : NSObject <NSCopying, NSCoding> - (NSTimeInterval)timeIntervalSinceReferenceDate;
-@end enum {
-NSObjCNoType = 0, NSObjCVoidType = 'v', NSObjCCharType = 'c', NSObjCShortType = 's', NSObjCLongType = 'l', NSObjCLonglongType = 'q', NSObjCFloatType = 'f', NSObjCDoubleType = 'd', NSObjCBoolType = 'B', NSObjCSelectorType = ':', NSObjCObjectType = '@', NSObjCStructType = '{', NSObjCPointerType = '^', NSObjCStringType = '*', NSObjCArrayType = '[', NSObjCUnionType = '(', NSObjCBitfield = 'b' }
-__attribute__((deprecated));
-typedef int kern_return_t;
-typedef kern_return_t mach_error_t;
-typedef mach_port_t io_object_t;
-typedef io_object_t io_service_t;
-typedef struct __DASession * DASessionRef;
-extern DASessionRef DASessionCreate( CFAllocatorRef allocator );
-typedef struct __DADisk * DADiskRef;
-extern DADiskRef DADiskCreateFromBSDName( CFAllocatorRef allocator, DASessionRef session, const char * name );
-extern DADiskRef DADiskCreateFromIOMedia( CFAllocatorRef allocator, DASessionRef session, io_service_t media );
-extern CFDictionaryRef DADiskCopyDescription( DADiskRef disk );
-extern DADiskRef DADiskCopyWholeDisk( DADiskRef disk );
-@interface NSAppleEventManager : NSObject {
-}
-@end enum {
-kDAReturnSuccess = 0, kDAReturnError = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x01, kDAReturnBusy = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x02, kDAReturnBadArgument = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x03, kDAReturnExclusiveAccess = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x04, kDAReturnNoResources = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x05, kDAReturnNotFound = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x06, kDAReturnNotMounted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x07, kDAReturnNotPermitted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x08, kDAReturnNotPrivileged = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x09, kDAReturnNotReady = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0A, kDAReturnNotWritable = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0B, kDAReturnUnsupported = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0C };
-typedef mach_error_t DAReturn;
-typedef const struct __DADissenter * DADissenterRef;
-extern DADissenterRef DADissenterCreate( CFAllocatorRef allocator, DAReturn status, CFStringRef string );
-@interface NSNumber : NSObject
-- (id)initWithInt:(int)value;
-@end
-typedef unsigned long NSUInteger;
-@interface NSArray : NSObject
--(id) initWithObjects:(const id *)objects count:(NSUInteger) cnt;
-@end
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-// Test to see if we *issue* an error when we store the pointer
-// to a struct. This differs from basic store.
-
-CFAbsoluteTime CFAbsoluteTimeGetCurrent(void);
-
-struct foo {
- NSDate* f;
-};
-
-// FIXME: We should be warning about a use-after-free here, but we
-// temporarily "escape" retain counted objects stored to structs very eagerly
-// until we can properly tell whether they have escaped via a return value
-// or not.
-CFAbsoluteTime f4() {
- struct foo x;
-
- CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
- CFDateRef date = CFDateCreate(0, t);
- [((NSDate*) date) retain];
- CFRelease(date);
- CFDateGetAbsoluteTime(date); // no-warning
- x.f = (NSDate*) date;
- [((NSDate*) date) release];
- // FIXME: the following line should warn.
- t = CFDateGetAbsoluteTime(date); // no-warning
- return t;
-}
-
-// Test that assigning to an self.ivar loses track of an object.
-// This is a temporary hack to reduce false positives.
-@interface Test3 : NSObject {
- id myObj;
-}
-- (void)test_self_assign_ivar;
-@end
-
-@implementation Test3
-- (void)test_self_assign_ivar {
- CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
- CFDateRef date = CFDateCreate(0, t); // no-warning
- myObj = (id) date;
-}
-@end
-
-//===------------------------------------------------------------------------------------------===//
-// <rdar://problem/7257223> (also <rdar://problem/7283470>) - False positive due to not invalidating
-// the reference count of a tracked region that was itself invalidated.
-//===------------------------------------------------------------------------------------------===//
-
-typedef struct __rdar_7257223 { CFDateRef x; } RDar7257223;
-void rdar_7257223_aux(RDar7257223 *p);
-
-CFDateRef rdar7257223_Create(void) {
- RDar7257223 s;
- CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
- s.x = CFDateCreate(0, t); // no-warning
- rdar_7257223_aux(&s);
- return s.x;
-}
-
-CFDateRef rdar7257223_Create_2(void) {
- RDar7257223 s;
- CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
- s.x = CFDateCreate(0, t); // no-warning
- return s.x;
-}
-
-void rdar7283470(void) {
- NSNumber *numbers[] = {
- [[NSNumber alloc] initWithInt:1], // no-warning
- [[NSNumber alloc] initWithInt:2], // no-warning
- [[NSNumber alloc] initWithInt:3], // no-warning
- [[NSNumber alloc] initWithInt:4], // no-warning
- [[NSNumber alloc] initWithInt:5] // no-warning
- };
-
- for (unsigned i = 0 ; i < sizeof(numbers) / sizeof(numbers[0]) ; ++i)
- [numbers[i] release];
-}
-
-void rdar7283470_positive(void) {
- NSNumber *numbers[] = {
- [[NSNumber alloc] initWithInt:1], // expected-warning{{leak}}
- [[NSNumber alloc] initWithInt:2], // expected-warning{{leak}}
- [[NSNumber alloc] initWithInt:3], // expected-warning{{leak}}
- [[NSNumber alloc] initWithInt:4], // expected-warning{{leak}}
- [[NSNumber alloc] initWithInt:5] // expected-warning{{leak}}
- };
-}
-
-void rdar7283470_2(void) {
- NSNumber *numbers[] = {
- [[NSNumber alloc] initWithInt:1], // no-warning
- [[NSNumber alloc] initWithInt:2], // no-warning
- [[NSNumber alloc] initWithInt:3], // no-warning
- [[NSNumber alloc] initWithInt:4], // no-warning
- [[NSNumber alloc] initWithInt:5] // no-warning
- };
-
- NSArray *s_numbers =[[NSArray alloc] initWithObjects:&numbers[0] count:sizeof(numbers) / sizeof(numbers[0])];
-
- for (unsigned i = 0 ; i < sizeof(numbers) / sizeof(numbers[0]) ; ++i)
- [numbers[i] release];
-
- [s_numbers release];
-}
-
-void rdar7283470_2_positive(void) {
- NSNumber *numbers[] = {
- [[NSNumber alloc] initWithInt:1], // no-warning
- [[NSNumber alloc] initWithInt:2], // no-warning
- [[NSNumber alloc] initWithInt:3], // no-warning
- [[NSNumber alloc] initWithInt:4], // no-warning
- [[NSNumber alloc] initWithInt:5] // no-warning
- };
-
- NSArray *s_numbers =[[NSArray alloc] initWithObjects: &numbers[0] count:sizeof(numbers) / sizeof(numbers[0])]; // expected-warning{{leak}}
-
- for (unsigned i = 0 ; i < sizeof(numbers) / sizeof(numbers[0]) ; ++i)
- [numbers[i] release];
-}
-
-void pr6699(int x) {
- CFDateRef values[2];
- values[0] = values[1] = 0;
-
- if (x) {
- CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
- values[1] = CFDateCreate(0, t);
- }
-
- if (values[1]) {
- // A bug in RegionStore::RemoveDeadBindings caused 'values[1]' to get prematurely
- // pruned from the store.
- CFRelease(values[1]); // no-warning
- }
-}
-
-// <rdar://problem/8261992> Idempotent operation checker false positive with ObjC ivars
-@interface R8261992 : NSObject {
- @package int myIvar;
-}
-@end
-
-static void R8261992_ChangeMyIvar(R8261992 *tc) {
- tc->myIvar = 5;
-}
-
-void R8261992_test(R8261992 *tc) {
- int temp = tc->myIvar;
- // The ivar binding for tc->myIvar gets invalidated.
- R8261992_ChangeMyIvar(tc);
- tc->myIvar = temp; // no-warning
- tc = [[R8261992 alloc] init];
- temp = tc->myIvar; // no-warning
- // The ivar binding for tc->myIvar gets invalidated.
- R8261992_ChangeMyIvar(tc);
- tc->myIvar = temp;
- [tc release]; // no-warning
- // did we analyze this?
- int *p = 0x0;
- *p = 0xDEADBEEF; // expected-warning{{null}}
-}
-
diff --git a/test/Analysis/retain-release-safe.c b/test/Analysis/retain-release-safe.c
deleted file mode 100644
index 6cd150093679..000000000000
--- a/test/Analysis/retain-release-safe.c
+++ /dev/null
@@ -1,93 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.RetainCount -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.RetainCount -analyzer-inline-max-stack-depth=0 -verify %s
-
-#pragma clang arc_cf_code_audited begin
-typedef const void * CFTypeRef;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-extern void CFRelease(CFTypeRef cf);
-#pragma clang arc_cf_code_audited end
-
-#define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))
-#define CF_CONSUMED __attribute__((cf_consumed))
-
-extern CFTypeRef CFCreate() CF_RETURNS_RETAINED;
-
-// A "safe" variant of CFRetain that doesn't crash when a null pointer is
-// retained. This is often defined by users in a similar manner. The
-// CF_RETURNS_RETAINED annotation is misleading here, because the function
-// is not supposed to return an object with a +1 retain count. Instead, it
-// is supposed to return an object with +(N+1) retain count, where N is
-// the original retain count of 'cf'. However, there is no good annotation
-// to use in this case, and it is pointless to provide such annotation
-// because the only use cases would be CFRetain and SafeCFRetain.
-// So instead we teach the analyzer to be able to accept such code
-// and ignore the misplaced annotation.
-CFTypeRef SafeCFRetain(CFTypeRef cf) CF_RETURNS_RETAINED {
- if (cf) {
- return CFRetain(cf);
- }
- return cf;
-}
-
-// A "safe" variant of CFRelease that doesn't crash when a null pointer is
-// released. The CF_CONSUMED annotation seems reasonable here.
-void SafeCFRelease(CFTypeRef CF_CONSUMED cf) {
- if (cf)
- CFRelease(cf); // no-warning (when inlined)
-}
-
-// The same thing, just with a different naming style.
-CFTypeRef retainCFType(CFTypeRef cf) CF_RETURNS_RETAINED {
- if (cf) {
- return CFRetain(cf);
- }
- return cf;
-}
-
-void releaseCFType(CFTypeRef CF_CONSUMED cf) {
- if (cf)
- CFRelease(cf); // no-warning (when inlined)
-}
-
-void escape(CFTypeRef cf);
-
-void makeSureTestsWork() {
- CFTypeRef cf = CFCreate();
- CFRelease(cf);
- CFRelease(cf); // expected-warning{{Reference-counted object is used after it is released}}
-}
-
-// Make sure we understand that the second SafeCFRetain doesn't return an
-// object with +1 retain count, which we won't be able to release twice.
-void falseOverrelease(CFTypeRef cf) {
- SafeCFRetain(cf);
- SafeCFRetain(cf);
- SafeCFRelease(cf);
- SafeCFRelease(cf); // no-warning after inlining this.
-}
-
-// Regular CFRelease() should behave similarly.
-void sameWithNormalRelease(CFTypeRef cf) {
- SafeCFRetain(cf);
- SafeCFRetain(cf);
- CFRelease(cf);
- CFRelease(cf); // no-warning
-}
-
-// Make sure we understand that the second SafeCFRetain doesn't return an
-// object with +1 retain count, which would no longer be owned by us after
-// it escapes to escape() and released once.
-void falseReleaseNotOwned(CFTypeRef cf) {
- SafeCFRetain(cf);
- SafeCFRetain(cf);
- escape(cf);
- SafeCFRelease(cf);
- SafeCFRelease(cf); // no-warning after inlining this.
-}
-
-void testTheOtherNamingConvention(CFTypeRef cf) {
- retainCFType(cf);
- retainCFType(cf);
- releaseCFType(cf);
- releaseCFType(cf); // no-warning
-}
diff --git a/test/Analysis/retain-release.m b/test/Analysis/retain-release.m
deleted file mode 100644
index 5e858f9f543e..000000000000
--- a/test/Analysis/retain-release.m
+++ /dev/null
@@ -1,2371 +0,0 @@
-// RUN: rm -f %t.objc.plist %t.objcpp.plist
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10\
-// RUN: -analyzer-checker=core,osx.coreFoundation.CFRetainRelease\
-// RUN: -analyzer-checker=osx.cocoa.ClassRelease,osx.cocoa.RetainCount\
-// RUN: -analyzer-checker=debug.ExprInspection -fblocks -verify %s\
-// RUN: -Wno-objc-root-class -analyzer-output=plist -o %t.objc.plist
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10\
-// RUN: -analyzer-checker=core,osx.coreFoundation.CFRetainRelease\
-// RUN: -analyzer-checker=osx.cocoa.ClassRelease,osx.cocoa.RetainCount\
-// RUN: -analyzer-checker=debug.ExprInspection -fblocks -verify %s\
-// RUN: -Wno-objc-root-class -analyzer-output=plist -o %t.objcpp.plist\
-// RUN: -x objective-c++ -std=gnu++98
-// RUN: cat %t.objcpp.plist | %diff_plist %S/Inputs/expected-plists/retain-release.m.objcpp.plist -
-// RUN: cat %t.objc.plist | %diff_plist %S/Inputs/expected-plists/retain-release.m.objc.plist -
-
-void clang_analyzer_eval(int);
-
-#if __has_feature(attribute_ns_returns_retained)
-#define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))
-#endif
-#if __has_feature(attribute_cf_returns_retained)
-#define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))
-#endif
-#if __has_feature(attribute_ns_returns_not_retained)
-#define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
-#endif
-#if __has_feature(attribute_cf_returns_not_retained)
-#define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained))
-#endif
-#if __has_feature(attribute_ns_consumes_self)
-#define NS_CONSUMES_SELF __attribute__((ns_consumes_self))
-#endif
-#if __has_feature(attribute_ns_consumed)
-#define NS_CONSUMED __attribute__((ns_consumed))
-#endif
-#if __has_feature(attribute_cf_consumed)
-#define CF_CONSUMED __attribute__((cf_consumed))
-#endif
-#if __has_attribute(ns_returns_autoreleased)
-#define NS_RETURNS_AUTORELEASED __attribute__((ns_returns_autoreleased))
-#endif
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from Mac OS X headers:
-//
-// #include <Cocoa/Cocoa.h>
-// #include <CoreFoundation/CoreFoundation.h>
-// #include <DiskArbitration/DiskArbitration.h>
-// #include <QuartzCore/QuartzCore.h>
-// #include <Quartz/Quartz.h>
-// #include <IOKit/IOKitLib.h>
-//
-// It includes the basic definitions for the test cases below.
-//===----------------------------------------------------------------------===//
-
-typedef unsigned int __darwin_natural_t;
-typedef unsigned long uintptr_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
-typedef unsigned int UInt32;
-typedef signed long CFIndex;
-typedef CFIndex CFByteOrder;
-typedef struct {
- CFIndex location;
- CFIndex length;
-} CFRange;
-static __inline__ __attribute__((always_inline)) CFRange CFRangeMake(CFIndex loc, CFIndex len) {
- CFRange range;
- range.location = loc;
- range.length = len;
- return range;
-}
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-
-extern CFTypeRef CFRetain(CFTypeRef cf);
-extern void CFRelease(CFTypeRef cf);
-extern CFTypeRef CFMakeCollectable(CFTypeRef cf);
-extern CFTypeRef CFAutorelease(CFTypeRef CF_CONSUMED cf);
-
-typedef struct {
-}
-CFArrayCallBacks;
-extern const CFArrayCallBacks kCFTypeArrayCallBacks;
-typedef const struct __CFArray * CFArrayRef;
-typedef struct __CFArray * CFMutableArrayRef;
-extern CFMutableArrayRef CFArrayCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFArrayCallBacks *callBacks);
-extern const void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);
-extern void CFArrayAppendValue(CFMutableArrayRef theArray, const void *value);
-typedef struct {
-}
-CFDictionaryKeyCallBacks;
-extern const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks;
-typedef struct {
-}
-CFDictionaryValueCallBacks;
-extern const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef struct __CFDictionary * CFMutableDictionaryRef;
-extern CFMutableDictionaryRef CFDictionaryCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
-typedef UInt32 CFStringEncoding;
-enum {
-kCFStringEncodingMacRoman = 0, kCFStringEncodingWindowsLatin1 = 0x0500, kCFStringEncodingISOLatin1 = 0x0201, kCFStringEncodingNextStepLatin = 0x0B01, kCFStringEncodingASCII = 0x0600, kCFStringEncodingUnicode = 0x0100, kCFStringEncodingUTF8 = 0x08000100, kCFStringEncodingNonLossyASCII = 0x0BFF , kCFStringEncodingUTF16 = 0x0100, kCFStringEncodingUTF16BE = 0x10000100, kCFStringEncodingUTF16LE = 0x14000100, kCFStringEncodingUTF32 = 0x0c000100, kCFStringEncodingUTF32BE = 0x18000100, kCFStringEncodingUTF32LE = 0x1c000100 };
-extern CFStringRef CFStringCreateWithCString(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding);
-typedef double CFTimeInterval;
-typedef CFTimeInterval CFAbsoluteTime;
-extern CFAbsoluteTime CFAbsoluteTimeGetCurrent(void);
-typedef const struct __CFDate * CFDateRef;
-extern CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at);
-extern CFAbsoluteTime CFDateGetAbsoluteTime(CFDateRef theDate);
-typedef __darwin_natural_t natural_t;
-typedef natural_t mach_port_name_t;
-typedef mach_port_name_t mach_port_t;
-typedef int kern_return_t;
-typedef kern_return_t mach_error_t;
-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;
-typedef const struct __CFNumber * CFNumberRef;
-extern CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-typedef const struct __CFAttributedString *CFAttributedStringRef;
-typedef struct __CFAttributedString *CFMutableAttributedStringRef;
-extern CFAttributedStringRef CFAttributedStringCreate(CFAllocatorRef alloc, CFStringRef str, CFDictionaryRef attributes) ;
-extern CFMutableAttributedStringRef CFAttributedStringCreateMutableCopy(CFAllocatorRef alloc, CFIndex maxLength, CFAttributedStringRef aStr) ;
-extern void CFAttributedStringSetAttribute(CFMutableAttributedStringRef aStr, CFRange range, CFStringRef attrName, CFTypeRef value) ;
-typedef signed char BOOL;
-typedef unsigned long NSUInteger;
-@class NSString, Protocol;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
-- (id)autorelease;
-- (NSString *)description;
-- (id)init;
-@end
-@protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
-@end
-@protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone;
-@end
-@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@interface NSObject <NSObject> {}
-+ (id)allocWithZone:(NSZone *)zone;
-+ (id)alloc;
-+ (id)new;
-- (void)dealloc;
-@end
-@interface NSObject (NSCoderMethods)
-- (id)awakeAfterUsingCoder:(NSCoder *)aDecoder;
-@end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-typedef struct {
-}
-NSFastEnumerationState;
-@protocol NSFastEnumeration
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
-@end
-@class NSString, NSDictionary;
-@interface NSValue : NSObject <NSCopying, NSCoding> - (void)getValue:(void *)value;
-@end
-@interface NSNumber : NSValue
-- (char)charValue;
-- (id)initWithInt:(int)value;
-+ (NSNumber *)numberWithInt:(int)value;
-@end
-@class NSString;
-@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
-- (id)initWithObjects:(const id [])objects count:(NSUInteger)cnt;
-+ (id)arrayWithObject:(id)anObject;
-+ (id)arrayWithObjects:(const id [])objects count:(NSUInteger)cnt;
-+ (id)arrayWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-- (id)initWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-- (id)initWithArray:(NSArray *)array;
-@end @interface NSArray (NSArrayCreation) + (id)array;
-@end @interface NSAutoreleasePool : NSObject {
-}
-- (void)drain;
-@end extern NSString * const NSBundleDidLoadNotification;
-typedef double NSTimeInterval;
-@interface NSDate : NSObject <NSCopying, NSCoding> - (NSTimeInterval)timeIntervalSinceReferenceDate;
-@end typedef unsigned short unichar;
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-- (NSString *)stringByAppendingString:(NSString *)aString;
-- ( const char *)UTF8String;
-- (id)initWithUTF8String:(const char *)nullTerminatedCString;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
-@end @class NSString, NSURL, NSError;
-@interface NSData : NSObject <NSCopying, NSMutableCopying, NSCoding> - (NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b;
-@end @class NSLocale, NSDate, NSCalendar, NSTimeZone, NSError, NSArray, NSMutableDictionary;
-@interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
-+ (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id <NSCopying> [])keys count:(NSUInteger)cnt;
-@end
-@interface NSMutableDictionary : NSDictionary - (void)removeObjectForKey:(id)aKey;
-- (void)setObject:(id)anObject forKey:(id)aKey;
-@end
-@interface NSMutableDictionary (NSMutableDictionaryCreation) + (id)dictionaryWithCapacity:(NSUInteger)numItems;
-@end
-
-@interface NSNull : NSObject
-+ (NSNull*) null;
-@end
-
-typedef double CGFloat;
-struct CGSize {
-};
-typedef struct CGSize CGSize;
-struct CGRect {
-};
-typedef struct CGRect CGRect;
-typedef mach_port_t io_object_t;
-typedef char io_name_t[128];
-typedef io_object_t io_iterator_t;
-typedef io_object_t io_service_t;
-typedef struct IONotificationPort * IONotificationPortRef;
-typedef void (*IOServiceMatchingCallback)( void * refcon, io_iterator_t iterator );
-io_service_t IOServiceGetMatchingService( mach_port_t masterPort, CFDictionaryRef matching );
-kern_return_t IOServiceGetMatchingServices( mach_port_t masterPort, CFDictionaryRef matching, io_iterator_t * existing );
-kern_return_t IOServiceAddNotification( mach_port_t masterPort, const io_name_t notificationType, CFDictionaryRef matching, mach_port_t wakePort, uintptr_t reference, io_iterator_t * notification ) __attribute__((deprecated)); // expected-note {{'IOServiceAddNotification' has been explicitly marked deprecated here}}
-kern_return_t IOServiceAddMatchingNotification( IONotificationPortRef notifyPort, const io_name_t notificationType, CFDictionaryRef matching, IOServiceMatchingCallback callback, void * refCon, io_iterator_t * notification );
-CFMutableDictionaryRef IOServiceMatching( const char * name );
-CFMutableDictionaryRef IOServiceNameMatching( const char * name );
-CFMutableDictionaryRef IOBSDNameMatching( mach_port_t masterPort, uint32_t options, const char * bsdName );
-CFMutableDictionaryRef IOOpenFirmwarePathMatching( mach_port_t masterPort, uint32_t options, const char * path );
-CFMutableDictionaryRef IORegistryEntryIDMatching( uint64_t entryID );
-typedef struct __DASession * DASessionRef;
-extern DASessionRef DASessionCreate( CFAllocatorRef allocator );
-typedef struct __DADisk * DADiskRef;
-extern DADiskRef DADiskCreateFromBSDName( CFAllocatorRef allocator, DASessionRef session, const char * name );
-extern DADiskRef DADiskCreateFromIOMedia( CFAllocatorRef allocator, DASessionRef session, io_service_t media );
-extern CFDictionaryRef DADiskCopyDescription( DADiskRef disk );
-extern DADiskRef DADiskCopyWholeDisk( DADiskRef disk );
-@interface NSTask : NSObject - (id)init;
-@end typedef struct CGColorSpace *CGColorSpaceRef;
-typedef struct CGImage *CGImageRef;
-typedef struct CGLayer *CGLayerRef;
-@interface NSResponder : NSObject <NSCoding> {
-}
-@end @protocol NSAnimatablePropertyContainer - (id)animator;
-@end extern NSString *NSAnimationTriggerOrderIn ;
-@interface NSView : NSResponder <NSAnimatablePropertyContainer> {
-}
-@end @protocol NSValidatedUserInterfaceItem - (SEL)action;
-@end @protocol NSUserInterfaceValidations - (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem;
-@end @class NSDate, NSDictionary, NSError, NSException, NSNotification;
-@class NSTextField, NSPanel, NSArray, NSWindow, NSImage, NSButton, NSError;
-@interface NSApplication : NSResponder <NSUserInterfaceValidations> {
-}
-- (void)beginSheet:(NSWindow *)sheet modalForWindow:(NSWindow *)docWindow modalDelegate:(id)modalDelegate didEndSelector:(SEL)didEndSelector contextInfo:(void *)contextInfo;
-@end enum {
-NSTerminateCancel = 0, NSTerminateNow = 1, NSTerminateLater = 2 };
-typedef NSUInteger NSApplicationTerminateReply;
-@protocol NSApplicationDelegate <NSObject> @optional - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
-@end @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView, NSTextView;
-@interface NSCell : NSObject <NSCopying, NSCoding> {
-}
-@end
-typedef struct {
-}
-CVTimeStamp;
-@interface CIImage : NSObject <NSCoding, NSCopying> {
-}
-typedef int CIFormat;
-@end enum {
-kDAReturnSuccess = 0, kDAReturnError = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x01, kDAReturnBusy = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x02, kDAReturnBadArgument = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x03, kDAReturnExclusiveAccess = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x04, kDAReturnNoResources = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x05, kDAReturnNotFound = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x06, kDAReturnNotMounted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x07, kDAReturnNotPermitted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x08, kDAReturnNotPrivileged = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x09, kDAReturnNotReady = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0A, kDAReturnNotWritable = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0B, kDAReturnUnsupported = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0C };
-typedef mach_error_t DAReturn;
-typedef const struct __DADissenter * DADissenterRef;
-extern DADissenterRef DADissenterCreate( CFAllocatorRef allocator, DAReturn status, CFStringRef string );
-@interface CIContext: NSObject {
-}
-- (CGImageRef)createCGImage:(CIImage *)im fromRect:(CGRect)r;
-- (CGImageRef)createCGImage:(CIImage *)im fromRect:(CGRect)r format:(CIFormat)f colorSpace:(CGColorSpaceRef)cs;
-- (CGLayerRef)createCGLayerWithSize:(CGSize)size info:(CFDictionaryRef)d;
-@end extern NSString* const QCRendererEventKey;
-@protocol QCCompositionRenderer - (NSDictionary*) attributes;
-@end @interface QCRenderer : NSObject <QCCompositionRenderer> {
-}
-- (id) createSnapshotImageOfType:(NSString*)type;
-@end extern NSString* const QCViewDidStartRenderingNotification;
-@interface QCView : NSView <QCCompositionRenderer> {
-}
-- (id) createSnapshotImageOfType:(NSString*)type;
-@end enum {
-ICEXIFOrientation1 = 1, ICEXIFOrientation2 = 2, ICEXIFOrientation3 = 3, ICEXIFOrientation4 = 4, ICEXIFOrientation5 = 5, ICEXIFOrientation6 = 6, ICEXIFOrientation7 = 7, ICEXIFOrientation8 = 8, };
-@class ICDevice;
-@protocol ICDeviceDelegate <NSObject> @required - (void)didRemoveDevice:(ICDevice*)device;
-@end extern NSString *const ICScannerStatusWarmingUp;
-@class ICScannerDevice;
-@protocol ICScannerDeviceDelegate <ICDeviceDelegate> @optional - (void)scannerDeviceDidBecomeAvailable:(ICScannerDevice*)scanner;
-@end
-
-typedef long unsigned int __darwin_size_t;
-typedef __darwin_size_t size_t;
-typedef unsigned long CFTypeID;
-struct CGPoint {
- CGFloat x;
- CGFloat y;
-};
-typedef struct CGPoint CGPoint;
-typedef struct CGGradient *CGGradientRef;
-typedef uint32_t CGGradientDrawingOptions;
-extern CFTypeID CGGradientGetTypeID(void);
-extern CGGradientRef CGGradientCreateWithColorComponents(CGColorSpaceRef
- space, const CGFloat components[], const CGFloat locations[], size_t count);
-extern CGGradientRef CGGradientCreateWithColors(CGColorSpaceRef space,
- CFArrayRef colors, const CGFloat locations[]);
-extern CGGradientRef CGGradientRetain(CGGradientRef gradient);
-extern void CGGradientRelease(CGGradientRef gradient);
-typedef struct CGContext *CGContextRef;
-extern void CGContextDrawLinearGradient(CGContextRef context,
- CGGradientRef gradient, CGPoint startPoint, CGPoint endPoint,
- CGGradientDrawingOptions options);
-extern CGColorSpaceRef CGColorSpaceCreateDeviceRGB(void);
-
-@interface NSMutableArray : NSObject
-- (void)addObject:(id)object;
-+ (id)array;
-@end
-
-// This is how NSMakeCollectable is declared in the OS X 10.8 headers.
-id NSMakeCollectable(CFTypeRef __attribute__((cf_consumed))) __attribute__((ns_returns_retained));
-
-typedef const struct __CFUUID * CFUUIDRef;
-
-extern
-void *CFPlugInInstanceCreate(CFAllocatorRef allocator, CFUUIDRef factoryUUID, CFUUIDRef typeUUID);
-typedef struct {
- int ref;
-} isl_basic_map;
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-CFAbsoluteTime f1() {
- CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
- CFDateRef date = CFDateCreate(0, t);
- CFRetain(date);
- CFRelease(date);
- CFDateGetAbsoluteTime(date); // no-warning
- CFRelease(date);
- t = CFDateGetAbsoluteTime(date); // expected-warning{{Reference-counted object is used after it is released}}
- return t;
-}
-
-CFAbsoluteTime f2() {
- CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
- CFDateRef date = CFDateCreate(0, t);
- [((NSDate*) date) retain];
- CFRelease(date);
- CFDateGetAbsoluteTime(date); // no-warning
- [((NSDate*) date) release];
- t = CFDateGetAbsoluteTime(date); // expected-warning{{Reference-counted object is used after it is released}}
- return t;
-}
-
-
-NSDate* global_x;
-
-// Test to see if we suppress an error when we store the pointer
-// to a global.
-
-CFAbsoluteTime f3() {
- CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
- CFDateRef date = CFDateCreate(0, t);
- [((NSDate*) date) retain];
- CFRelease(date);
- CFDateGetAbsoluteTime(date); // no-warning
- global_x = (NSDate*) date;
- [((NSDate*) date) release];
- t = CFDateGetAbsoluteTime(date); // no-warning
- return t;
-}
-
-//---------------------------------------------------------------------------
-// Test case 'f4' differs for region store and basic store. See
-// retain-release-region-store.m and retain-release-basic-store.m.
-//---------------------------------------------------------------------------
-
-// Test a leak.
-
-CFAbsoluteTime f5(int x) {
- CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
- CFDateRef date = CFDateCreate(0, t); // expected-warning{{leak}}
-
- if (x)
- CFRelease(date);
-
- return t;
-}
-
-// Test a leak involving the return.
-
-CFDateRef f6(int x) {
- CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent()); // expected-warning{{leak}}
- CFRetain(date);
- return date;
-}
-
-// Test a leak involving an overwrite.
-
-CFDateRef f7() {
- CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent()); //expected-warning{{leak}}
- CFRetain(date);
- date = CFDateCreate(0, CFAbsoluteTimeGetCurrent()); // expected-warning {{leak}}
- return date;
-}
-
-// Generalization of Create rule. MyDateCreate returns a CFXXXTypeRef, and
-// has the word create.
-CFDateRef MyDateCreate();
-
-CFDateRef f8() {
- CFDateRef date = MyDateCreate(); // expected-warning{{leak}}
- CFRetain(date);
- return date;
-}
-
-__attribute__((cf_returns_retained)) CFDateRef f9() {
- CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent()); // no-warning
- int *p = 0;
- // When allocations fail, CFDateCreate can return null.
- if (!date) *p = 1; // expected-warning{{null}}
- return date;
-}
-
-// Handle DiskArbitration API:
-//
-// http://developer.apple.com/DOCUMENTATION/DARWIN/Reference/DiscArbitrationFramework/
-//
-void f10(io_service_t media, DADiskRef d, CFStringRef s) {
- DADiskRef disk = DADiskCreateFromBSDName(kCFAllocatorDefault, 0, "hello"); // expected-warning{{leak}}
- if (disk) NSLog(@"ok");
-
- disk = DADiskCreateFromIOMedia(kCFAllocatorDefault, 0, media); // expected-warning{{leak}}
- if (disk) NSLog(@"ok");
-
- CFDictionaryRef dict = DADiskCopyDescription(d); // expected-warning{{leak}}
- if (dict) NSLog(@"ok");
-
- disk = DADiskCopyWholeDisk(d); // expected-warning{{leak}}
- if (disk) NSLog(@"ok");
-
- DADissenterRef dissenter = DADissenterCreate(kCFAllocatorDefault, // expected-warning{{leak}}
- kDAReturnSuccess, s);
- if (dissenter) NSLog(@"ok");
-
- DASessionRef session = DASessionCreate(kCFAllocatorDefault); // expected-warning{{leak}}
- if (session) NSLog(@"ok");
-}
-
-
-// Handle CoreMedia API
-
-struct CMFoo;
-typedef struct CMFoo *CMFooRef;
-
-CMFooRef CMCreateFooRef();
-CMFooRef CMGetFooRef();
-
-typedef signed long SInt32;
-typedef SInt32 OSStatus;
-OSStatus CMCreateFooAndReturnViaOutParameter(CMFooRef * CF_RETURNS_RETAINED fooOut);
-
-void testLeakCoreMediaReferenceType() {
- CMFooRef f = CMCreateFooRef(); // expected-warning{{leak}}
-}
-
-void testOverReleaseMediaReferenceType() {
- CMFooRef f = CMGetFooRef();
- CFRelease(f); // expected-warning{{Incorrect decrement of the reference count}}
-}
-
-void testOkToReleaseReturnsRetainedOutParameter() {
- CMFooRef foo = 0;
- OSStatus status = CMCreateFooAndReturnViaOutParameter(&foo);
-
- if (status != 0)
- return;
-
- CFRelease(foo); // no-warning
-}
-
-void testLeakWithReturnsRetainedOutParameter() {
- CMFooRef foo = 0;
- OSStatus status = CMCreateFooAndReturnViaOutParameter(&foo);
-
- if (status != 0)
- return;
-
- // FIXME: Ideally we would report a leak here since it is the caller's
- // responsibility to release 'foo'. However, we don't currently have
- // a mechanism in this checker to only require a release when a successful
- // status is returned.
-}
-
-typedef CFTypeRef CMBufferRef;
-
-typedef CFTypeRef *CMBufferQueueRef;
-
-CMBufferRef CMBufferQueueDequeueAndRetain(CMBufferQueueRef);
-
-void testCMBufferQueueDequeueAndRetain(CMBufferQueueRef queue) {
- CMBufferRef buffer = CMBufferQueueDequeueAndRetain(queue); // expected-warning{{Potential leak of an object stored into 'buffer'}}
- // There's a state split due to the eagerly-assume behavior.
- // The point here is that we don't treat CMBufferQueueDequeueAndRetain
- // as some sort of CFRetain() that returns its argument.
- clang_analyzer_eval((CMFooRef)buffer == (CMFooRef)queue); // expected-warning{{TRUE}}
- // expected-warning@-1{{FALSE}}
-}
-
-// Test retain/release checker with CFString and CFMutableArray.
-void f11() {
- // Create the array.
- CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-
- // Create a string.
- CFStringRef s1 = CFStringCreateWithCString(0, "hello world",
- kCFStringEncodingUTF8);
-
- // Add the string to the array.
- CFArrayAppendValue(A, s1);
-
- // Decrement the reference count.
- CFRelease(s1); // no-warning
-
- // Get the string. We don't own it.
- s1 = (CFStringRef) CFArrayGetValueAtIndex(A, 0);
-
- // Release the array.
- CFRelease(A); // no-warning
-
- // Release the string. This is a bug.
- CFRelease(s1); // expected-warning{{Incorrect decrement of the reference count}}
-}
-
-// PR 3337: Handle functions declared using typedefs.
-typedef CFTypeRef CREATEFUN();
-CREATEFUN MyCreateFun;
-
-void f12() {
- CFTypeRef o = MyCreateFun(); // expected-warning {{leak}}
-}
-
-void f13_autorelease() {
- CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
- [(id) A autorelease]; // no-warning
-}
-
-void f13_autorelease_b() {
- CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
- [(id) A autorelease];
- [(id) A autorelease];
-} // expected-warning{{Object autoreleased too many times}}
-
-CFMutableArrayRef f13_autorelease_c() {
- CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
- [(id) A autorelease];
- [(id) A autorelease];
- return A; // expected-warning{{Object autoreleased too many times}}
-}
-
-CFMutableArrayRef f13_autorelease_d() {
- CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
- [(id) A autorelease];
- [(id) A autorelease];
- CFMutableArrayRef B = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{Object autoreleased too many times}}
- CFRelease(B); // no-warning
- while (1) {}
-}
-
-
-// This case exercises the logic where the leak site is the same as the allocation site.
-void f14_leakimmediately() {
- CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{leak}}
-}
-
-// Test that we track an allocated object beyond the point where the *name*
-// of the variable storing the reference is no longer live.
-void f15() {
- // Create the array.
- CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
- CFMutableArrayRef *B = &A;
- // At this point, the name 'A' is no longer live.
- CFRelease(*B); // no-warning
-}
-
-// Test when we pass NULL to CFRetain/CFRelease/CFMakeCollectable/CFAutorelease.
-void f16(int x, CFTypeRef p) {
- if (p)
- return;
-
- switch (x) {
- case 0:
- CFRelease(p); // expected-warning{{Null pointer argument in call to CFRelease}}
- break;
- case 1:
- CFRetain(p); // expected-warning{{Null pointer argument in call to CFRetain}}
- break;
- case 2:
- CFMakeCollectable(p); // expected-warning{{Null pointer argument in call to CFMakeCollectable}}
- break;
- case 3:
- CFAutorelease(p); // expected-warning{{Null pointer argument in call to CFAutorelease}}
- break;
- default:
- break;
- }
-}
-
-// Test that an object is non-null after CFRetain/CFRelease/CFMakeCollectable/CFAutorelease.
-void f17(int x, CFTypeRef p) {
- switch (x) {
- case 0:
- CFRelease(p);
- if (!p)
- CFRelease(0); // no-warning
- break;
- case 1:
- CFRetain(p);
- if (!p)
- CFRetain(0); // no-warning
- break;
- case 2:
- CFMakeCollectable(p);
- if (!p)
- CFMakeCollectable(0); // no-warning
- break;
- case 3:
- CFAutorelease(p);
- if (!p)
- CFAutorelease(0); // no-warning
- break;
- default:
- break;
- }
-}
-
-__attribute__((annotate("rc_ownership_returns_retained"))) isl_basic_map *isl_basic_map_cow(__attribute__((annotate("rc_ownership_consumed"))) isl_basic_map *bmap);
-
-// Test custom diagnostics for generalized objects.
-void f18(__attribute__((annotate("rc_ownership_consumed"))) isl_basic_map *bmap) {
- // After this call, 'bmap' has a +1 reference count.
- bmap = isl_basic_map_cow(bmap); // expected-warning {{Potential leak of an object}}
-}
-
-// Test basic tracking of ivars associated with 'self'. For the retain/release
-// checker we currently do not want to flag leaks associated with stores
-// of tracked objects to ivars.
-@interface SelfIvarTest : NSObject {
- id myObj;
-}
-- (void)test_self_tracking;
-@end
-
-@implementation SelfIvarTest
-- (void)test_self_tracking {
- myObj = (id) CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-@end
-
-// Test return of non-owned objects in contexts where an owned object
-// is expected.
-@interface TestReturnNotOwnedWhenExpectedOwned
-- (NSString*)newString;
-@end
-
-@implementation TestReturnNotOwnedWhenExpectedOwned
-- (NSString*)newString {
- NSString *s = [NSString stringWithUTF8String:"hello"];
- return s; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-@end
-
-// <rdar://problem/6659160>
-int isFoo(char c);
-
-static void rdar_6659160(char *inkind, char *inname)
-{
- // We currently expect that [NSObject alloc] cannot fail. This
- // will be a toggled flag in the future. It can indeed return null, but
- // Cocoa programmers generally aren't expected to reason about out-of-memory
- // conditions.
- NSString *kind = [[NSString alloc] initWithUTF8String:inkind]; // expected-warning{{leak}}
-
- // We do allow stringWithUTF8String to fail. This isn't really correct, as
- // far as returning 0. In most error conditions it will throw an exception.
- // If allocation fails it could return 0, but again this
- // isn't expected.
- NSString *name = [NSString stringWithUTF8String:inname];
- if(!name)
- return;
-
- const char *kindC = 0;
- const char *nameC = 0;
-
- // In both cases, we cannot reach a point down below where we
- // dereference kindC or nameC with either being null. This is because
- // we assume that [NSObject alloc] doesn't fail and that we have the guard
- // up above.
-
- if(kind)
- kindC = [kind UTF8String];
- if(name)
- nameC = [name UTF8String];
- if(!isFoo(kindC[0])) // expected-warning{{null}}
- return;
- if(!isFoo(nameC[0])) // no-warning
- return;
-
- [kind release];
- [name release]; // expected-warning{{Incorrect decrement of the reference count}}
-}
-
-// PR 3677 - 'allocWithZone' should be treated as following the Cocoa naming
-// conventions with respect to 'return'ing ownership.
-@interface PR3677: NSObject @end
-@implementation PR3677
-+ (id)allocWithZone:(NSZone *)inZone {
- return [super allocWithZone:inZone]; // no-warning
-}
-@end
-
-// PR 3820 - Reason about calls to -dealloc
-void pr3820_DeallocInsteadOfRelease(void)
-{
- id foo = [[NSString alloc] init]; // no-warning
- [foo dealloc];
- // foo is not leaked, since it has been deallocated.
-}
-
-void pr3820_ReleaseAfterDealloc(void)
-{
- id foo = [[NSString alloc] init];
- [foo dealloc];
- [foo release]; // expected-warning{{used after it is release}}
- // NSInternalInconsistencyException: message sent to deallocated object
-}
-
-void pr3820_DeallocAfterRelease(void)
-{
- NSLog(@"\n\n[%s]", __FUNCTION__);
- id foo = [[NSString alloc] init];
- [foo release];
- [foo dealloc]; // expected-warning{{used after it is released}}
- // message sent to released object
-}
-
-// From <rdar://problem/6704930>. The problem here is that 'length' binds to
-// '($0 - 1)' after '--length', but SimpleConstraintManager doesn't know how to
-// reason about '($0 - 1) > constant'. As a temporary hack, we drop the value
-// of '($0 - 1)' and conjure a new symbol.
-void rdar6704930(unsigned char *s, unsigned int length) {
- NSString* name = 0;
- if (s != 0) {
- if (length > 0) {
- while (length > 0) {
- if (*s == ':') {
- ++s;
- --length;
- name = [[NSString alloc] init]; // no-warning
- break;
- }
- ++s;
- --length;
- }
- if ((length == 0) && (name != 0)) {
- [name release];
- name = 0;
- }
- if (length == 0) { // no ':' found -> use it all as name
- name = [[NSString alloc] init]; // no-warning
- }
- }
- }
-
- if (name != 0) {
- [name release];
- }
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6833332>
-// One build of the analyzer accidentally stopped tracking the allocated
-// object after the 'retain'.
-//===----------------------------------------------------------------------===//
-
-@interface rdar_6833332 : NSObject <NSApplicationDelegate> {
- NSWindow *window;
-}
-@property (nonatomic, retain) NSWindow *window;
-@end
-
-@implementation rdar_6833332
-@synthesize window;
-- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
- NSMutableDictionary *dict = [[NSMutableDictionary dictionaryWithCapacity:4] retain]; // expected-warning{{leak}}
-
- [dict setObject:@"foo" forKey:@"bar"];
-
- NSLog(@"%@", dict);
-}
-- (void)dealloc {
- [window release];
- [super dealloc];
-}
-
-- (void)radar10102244 {
- NSMutableDictionary *dict = [[NSMutableDictionary dictionaryWithCapacity:4] retain]; // expected-warning{{leak}}
- if (window)
- NSLog(@"%@", window);
-}
-@end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6257780> clang checker fails to catch use-after-release
-//===----------------------------------------------------------------------===//
-
-int rdar_6257780_Case1() {
- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
- NSArray *array = [NSArray array];
- [array release]; // expected-warning{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
- [pool drain];
- return 0;
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/10640253> Analyzer is confused about NSAutoreleasePool -allocWithZone:.
-//===----------------------------------------------------------------------===//
-
-void rdar_10640253_autorelease_allocWithZone() {
- NSAutoreleasePool *pool = [[NSAutoreleasePool allocWithZone:(NSZone*)0] init];
- (void) pool;
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6866843> Checker should understand new/setObject:/release constructs
-//===----------------------------------------------------------------------===//
-
-void rdar_6866843() {
- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
- NSMutableDictionary* dictionary = [[NSMutableDictionary alloc] init];
- NSArray* array = [[NSArray alloc] init];
- [dictionary setObject:array forKey:@"key"];
- [array release];
- // Using 'array' here should be fine
- NSLog(@"array = %@\n", array); // no-warning
- // Now the array is released
- [dictionary release];
- [pool drain];
-}
-
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6877235> Classes typedef-ed to CF objects should get the same treatment as CF objects
-//===----------------------------------------------------------------------===//
-
-typedef CFTypeRef OtherRef;
-
-@interface RDar6877235 : NSObject {}
-- (CFTypeRef)_copyCFTypeRef;
-- (OtherRef)_copyOtherRef;
-@end
-
-@implementation RDar6877235
-- (CFTypeRef)_copyCFTypeRef {
- return [[NSString alloc] init]; // no-warning
-}
-- (OtherRef)_copyOtherRef {
- return [[NSString alloc] init]; // no-warning
-}
-@end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6320065> false positive - init method returns an object
-// owned by caller
-//===----------------------------------------------------------------------===//
-
-@interface RDar6320065 : NSObject {
- NSString *_foo;
-}
-- (id)initReturningNewClass;
-- (id)_initReturningNewClassBad;
-- (id)initReturningNewClassBad2;
-@end
-
-@interface RDar6320065Subclass : RDar6320065
-@end
-
-@implementation RDar6320065
-- (id)initReturningNewClass {
- [self release];
- self = [[RDar6320065Subclass alloc] init]; // no-warning
- return self;
-}
-- (id)_initReturningNewClassBad {
- [self release];
- [[RDar6320065Subclass alloc] init]; // expected-warning {{leak}}
- return self;
-}
-- (id)initReturningNewClassBad2 {
- [self release];
- self = [[RDar6320065Subclass alloc] init];
- return [self autorelease]; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-
-@end
-
-@implementation RDar6320065Subclass
-@end
-
-int RDar6320065_test() {
- RDar6320065 *test = [[RDar6320065 alloc] init]; // no-warning
- [test release];
- return 0;
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7129086> -awakeAfterUsingCoder: returns an owned object
-// and claims the receiver
-//===----------------------------------------------------------------------===//
-
-@interface RDar7129086 : NSObject {} @end
-@implementation RDar7129086
-- (id)awakeAfterUsingCoder:(NSCoder *)aDecoder {
- [self release]; // no-warning
- return [NSString alloc]; // no-warning
-}
-@end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6859457> [NSData dataWithBytesNoCopy] does not return a
-// retained object
-//===----------------------------------------------------------------------===//
-
-@interface RDar6859457 : NSObject {}
-- (NSString*) NoCopyString;
-- (NSString*) noCopyString;
-@end
-
-@implementation RDar6859457
-- (NSString*) NoCopyString { return [[NSString alloc] init]; } // expected-warning{{leak}}
-- (NSString*) noCopyString { return [[NSString alloc] init]; } // expected-warning{{leak}}
-@end
-
-void test_RDar6859457(RDar6859457 *x, void *bytes, NSUInteger dataLength) {
- [x NoCopyString]; // expected-warning{{leak}}
- [x noCopyString]; // expected-warning{{leak}}
- [NSData dataWithBytesNoCopy:bytes length:dataLength]; // no-warning
- [NSData dataWithBytesNoCopy:bytes length:dataLength freeWhenDone:1]; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// PR 4230 - an autorelease pool is not necessarily leaked during a premature
-// return
-//===----------------------------------------------------------------------===//
-
-static void PR4230(void)
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // no-warning
- NSString *object = [[[NSString alloc] init] autorelease]; // no-warning
- return;
-}
-
-static void PR4230_new(void)
-{
- NSAutoreleasePool *pool = [NSAutoreleasePool new]; // no-warning
- NSString *object = [[[NSString alloc] init] autorelease]; // no-warning
- return;
-}
-
-//===----------------------------------------------------------------------===//
-// Method name that has a null IdentifierInfo* for its first selector slot.
-// This test just makes sure that we handle it.
-//===----------------------------------------------------------------------===//
-
-@interface TestNullIdentifier
-@end
-
-@implementation TestNullIdentifier
-+ (id):(int)x, ... {
- return [[NSString alloc] init]; // expected-warning{{leak}}
-}
-@end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6893565> don't flag leaks for return types that cannot be
-// determined to be CF types
-//===----------------------------------------------------------------------===//
-
-// We don't know if 'struct s6893565' represents a Core Foundation type, so
-// we shouldn't emit an error here.
-typedef struct s6893565* TD6893565;
-
-@interface RDar6893565 {}
--(TD6893565)newThing;
-@end
-
-@implementation RDar6893565
--(TD6893565)newThing {
- return (TD6893565) [[NSString alloc] init]; // no-warning
-}
-@end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6902710> clang: false positives w/QC and CoreImage methods
-//===----------------------------------------------------------------------===//
-
-void rdar6902710(QCView *view, QCRenderer *renderer, CIContext *context,
- NSString *str, CIImage *img, CGRect rect,
- CIFormat form, CGColorSpaceRef cs) {
- [view createSnapshotImageOfType:str]; // expected-warning{{leak}}
- [renderer createSnapshotImageOfType:str]; // expected-warning{{leak}}
- [context createCGImage:img fromRect:rect]; // expected-warning{{leak}}
- [context createCGImage:img fromRect:rect format:form colorSpace:cs]; // expected-warning{{leak}}
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6945561> -[CIContext createCGLayerWithSize:info:]
-// misinterpreted by clang scan-build
-//===----------------------------------------------------------------------===//
-
-void rdar6945561(CIContext *context, CGSize size, CFDictionaryRef d) {
- [context createCGLayerWithSize:size info:d]; // expected-warning{{leak}}
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6961230> add knowledge of IOKit functions to retain/release
-// checker
-//===----------------------------------------------------------------------===//
-
-void IOBSDNameMatching_wrapper(mach_port_t masterPort, uint32_t options, const char * bsdName) {
- IOBSDNameMatching(masterPort, options, bsdName); // expected-warning{{leak}}
-}
-
-void IOServiceMatching_wrapper(const char * name) {
- IOServiceMatching(name); // expected-warning{{leak}}
-}
-
-void IOServiceNameMatching_wrapper(const char * name) {
- IOServiceNameMatching(name); // expected-warning{{leak}}
-}
-
-CF_RETURNS_RETAINED CFDictionaryRef CreateDict();
-
-void IOServiceAddNotification_wrapper(mach_port_t masterPort, const io_name_t notificationType,
- mach_port_t wakePort, uintptr_t reference, io_iterator_t * notification ) {
-
- CFDictionaryRef matching = CreateDict();
- CFRelease(matching);
- IOServiceAddNotification(masterPort, notificationType, matching, // expected-warning{{used after it is released}} expected-warning{{deprecated}}
- wakePort, reference, notification);
-}
-
-void IORegistryEntryIDMatching_wrapper(uint64_t entryID ) {
- IORegistryEntryIDMatching(entryID); // expected-warning{{leak}}
-}
-
-void IOOpenFirmwarePathMatching_wrapper(mach_port_t masterPort, uint32_t options,
- const char * path) {
- IOOpenFirmwarePathMatching(masterPort, options, path); // expected-warning{{leak}}
-}
-
-void IOServiceGetMatchingService_wrapper(mach_port_t masterPort) {
- CFDictionaryRef matching = CreateDict();
- IOServiceGetMatchingService(masterPort, matching);
- CFRelease(matching); // expected-warning{{used after it is released}}
-}
-
-void IOServiceGetMatchingServices_wrapper(mach_port_t masterPort, io_iterator_t *existing) {
- CFDictionaryRef matching = CreateDict();
- IOServiceGetMatchingServices(masterPort, matching, existing);
- CFRelease(matching); // expected-warning{{used after it is released}}
-}
-
-void IOServiceAddMatchingNotification_wrapper(IONotificationPortRef notifyPort, const io_name_t notificationType,
- IOServiceMatchingCallback callback, void * refCon, io_iterator_t * notification) {
-
- CFDictionaryRef matching = CreateDict();
- IOServiceAddMatchingNotification(notifyPort, notificationType, matching, callback, refCon, notification);
- CFRelease(matching); // expected-warning{{used after it is released}}
-}
-
-//===----------------------------------------------------------------------===//
-// Test of handling objects whose references "escape" to containers.
-//===----------------------------------------------------------------------===//
-
-void CFDictionaryAddValue(CFMutableDictionaryRef, void *, void *);
-
-// <rdar://problem/6539791>
-void rdar_6539791(CFMutableDictionaryRef y, void* key, void* val_key) {
- CFMutableDictionaryRef x = CFDictionaryCreateMutable(kCFAllocatorDefault, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
- CFDictionaryAddValue(y, key, x);
- CFRelease(x); // the dictionary keeps a reference, so the object isn't deallocated yet
- signed z = 1;
- CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z);
- if (value) {
- CFDictionaryAddValue(x, val_key, (void*)value); // no-warning
- CFRelease(value);
- CFDictionaryAddValue(y, val_key, (void*)value); // no-warning
- }
-}
-
-// <rdar://problem/6560661>
-// Same issue, except with "AppendValue" functions.
-void rdar_6560661(CFMutableArrayRef x) {
- signed z = 1;
- CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z);
- // CFArrayAppendValue keeps a reference to value.
- CFArrayAppendValue(x, value);
- CFRelease(value);
- CFRetain(value);
- CFRelease(value); // no-warning
-}
-
-// <rdar://problem/7152619>
-// Same issue, excwept with "CFAttributeStringSetAttribute".
-void rdar_7152619(CFStringRef str) {
- CFAttributedStringRef string = CFAttributedStringCreate(kCFAllocatorDefault, str, 0);
- CFMutableAttributedStringRef attrString = CFAttributedStringCreateMutableCopy(kCFAllocatorDefault, 100, string);
- CFRelease(string);
- NSNumber *number = [[NSNumber alloc] initWithInt:5]; // expected-warning{{leak}}
- CFAttributedStringSetAttribute(attrString, CFRangeMake(0, 1), str, number);
- [number release];
- [number retain];
- CFRelease(attrString);
-}
-
-//===----------------------------------------------------------------------===//
-// Test of handling CGGradientXXX functions.
-//===----------------------------------------------------------------------===//
-
-void rdar_7184450(CGContextRef myContext, CGFloat x, CGPoint myStartPoint,
- CGPoint myEndPoint) {
- size_t num_locations = 6;
- CGFloat locations[6] = { 0.0, 0.265, 0.28, 0.31, 0.36, 1.0 };
- CGFloat components[28] = { 239.0/256.0, 167.0/256.0, 170.0/256.0,
- x, // Start color
- 207.0/255.0, 39.0/255.0, 39.0/255.0, x,
- 147.0/255.0, 21.0/255.0, 22.0/255.0, x,
- 175.0/255.0, 175.0/255.0, 175.0/255.0, x,
- 255.0/255.0,255.0/255.0, 255.0/255.0, x,
- 255.0/255.0,255.0/255.0, 255.0/255.0, x
- }; // End color
-
- CGGradientRef myGradient =
- CGGradientCreateWithColorComponents(CGColorSpaceCreateDeviceRGB(), // expected-warning{{leak}}
- components, locations, num_locations);
-
- CGContextDrawLinearGradient(myContext, myGradient, myStartPoint, myEndPoint,
- 0);
- CGGradientRelease(myGradient);
-}
-
-void rdar_7184450_pos(CGContextRef myContext, CGFloat x, CGPoint myStartPoint,
- CGPoint myEndPoint) {
- size_t num_locations = 6;
- CGFloat locations[6] = { 0.0, 0.265, 0.28, 0.31, 0.36, 1.0 };
- CGFloat components[28] = { 239.0/256.0, 167.0/256.0, 170.0/256.0,
- x, // Start color
- 207.0/255.0, 39.0/255.0, 39.0/255.0, x,
- 147.0/255.0, 21.0/255.0, 22.0/255.0, x,
- 175.0/255.0, 175.0/255.0, 175.0/255.0, x,
- 255.0/255.0,255.0/255.0, 255.0/255.0, x,
- 255.0/255.0,255.0/255.0, 255.0/255.0, x
- }; // End color
-
- CGGradientRef myGradient =
- CGGradientCreateWithColorComponents(CGColorSpaceCreateDeviceRGB(), components, locations, num_locations); // expected-warning 2 {{leak}}
-
- CGContextDrawLinearGradient(myContext, myGradient, myStartPoint, myEndPoint,
- 0);
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7299394> clang false positive: retained instance passed to
-// thread in pthread_create marked as leak
-//
-// Until we have full IPA, the analyzer should stop tracking the reference
-// count of objects passed to pthread_create.
-//
-//===----------------------------------------------------------------------===//
-
-struct _opaque_pthread_t {};
-struct _opaque_pthread_attr_t {};
-typedef struct _opaque_pthread_t *__darwin_pthread_t;
-typedef struct _opaque_pthread_attr_t __darwin_pthread_attr_t;
-typedef __darwin_pthread_t pthread_t;
-typedef __darwin_pthread_attr_t pthread_attr_t;
-typedef unsigned long __darwin_pthread_key_t;
-typedef __darwin_pthread_key_t pthread_key_t;
-
-int pthread_create(pthread_t *, const pthread_attr_t *,
- void *(*)(void *), void *);
-
-int pthread_setspecific(pthread_key_t key, const void *value);
-
-void *rdar_7299394_start_routine(void *p) {
- [((id) p) release];
- return 0;
-}
-void rdar_7299394(pthread_attr_t *attr, pthread_t *thread, void *args) {
- NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
- pthread_create(thread, attr, rdar_7299394_start_routine, number);
-}
-void rdar_7299394_positive(pthread_attr_t *attr, pthread_t *thread) {
- NSNumber *number = [[NSNumber alloc] initWithInt:5]; // expected-warning{{leak}}
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/11282706> false positive with not understanding thread
-// local storage
-//===----------------------------------------------------------------------===//
-
-void rdar11282706(pthread_key_t key) {
- NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
- pthread_setspecific(key, (void*) number);
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7283567> False leak associated with call to
-// CVPixelBufferCreateWithBytes ()
-//
-// According to the Core Video Reference (ADC), CVPixelBufferCreateWithBytes and
-// CVPixelBufferCreateWithPlanarBytes can release (via a callback) the
-// pixel buffer object. These test cases show how the analyzer stops tracking
-// the reference count for the objects passed for this argument. This
-// could be made smarter.
-//===----------------------------------------------------------------------===//
-
-typedef int int32_t;
-typedef UInt32 FourCharCode;
-typedef FourCharCode OSType;
-typedef uint64_t CVOptionFlags;
-typedef int32_t CVReturn;
-typedef struct __CVBuffer *CVBufferRef;
-typedef CVBufferRef CVImageBufferRef;
-typedef CVImageBufferRef CVPixelBufferRef;
-typedef void (*CVPixelBufferReleaseBytesCallback)( void *releaseRefCon, const void *baseAddress );
-
-extern CVReturn CVPixelBufferCreateWithBytes(CFAllocatorRef allocator,
- size_t width,
- size_t height,
- OSType pixelFormatType,
- void *baseAddress,
- size_t bytesPerRow,
- CVPixelBufferReleaseBytesCallback releaseCallback,
- void *releaseRefCon,
- CFDictionaryRef pixelBufferAttributes,
- CVPixelBufferRef *pixelBufferOut) ;
-
-typedef void (*CVPixelBufferReleasePlanarBytesCallback)( void *releaseRefCon, const void *dataPtr, size_t dataSize, size_t numberOfPlanes, const void *planeAddresses[] );
-
-extern CVReturn CVPixelBufferCreateWithPlanarBytes(CFAllocatorRef allocator,
- size_t width,
- size_t height,
- OSType pixelFormatType,
- void *dataPtr,
- size_t dataSize,
- size_t numberOfPlanes,
- void *planeBaseAddress[],
- size_t planeWidth[],
- size_t planeHeight[],
- size_t planeBytesPerRow[],
- CVPixelBufferReleasePlanarBytesCallback releaseCallback,
- void *releaseRefCon,
- CFDictionaryRef pixelBufferAttributes,
- CVPixelBufferRef *pixelBufferOut) ;
-
-extern CVReturn CVPixelBufferCreateWithBytes(CFAllocatorRef allocator,
- size_t width,
- size_t height,
- OSType pixelFormatType,
- void *baseAddress,
- size_t bytesPerRow,
- CVPixelBufferReleaseBytesCallback releaseCallback,
- void *releaseRefCon,
- CFDictionaryRef pixelBufferAttributes,
- CVPixelBufferRef *pixelBufferOut) ;
-
-CVReturn rdar_7283567(CFAllocatorRef allocator, size_t width, size_t height,
- OSType pixelFormatType, void *baseAddress,
- size_t bytesPerRow,
- CVPixelBufferReleaseBytesCallback releaseCallback,
- CFDictionaryRef pixelBufferAttributes,
- CVPixelBufferRef *pixelBufferOut) {
-
- // For the allocated object, it doesn't really matter what type it is
- // for the purpose of this test. All we want to show is that
- // this is freed later by the callback.
- NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
-
- return CVPixelBufferCreateWithBytes(allocator, width, height, pixelFormatType,
- baseAddress, bytesPerRow, releaseCallback,
- number, // potentially released by callback
- pixelBufferAttributes, pixelBufferOut) ;
-}
-
-CVReturn rdar_7283567_2(CFAllocatorRef allocator, size_t width, size_t height,
- OSType pixelFormatType, void *dataPtr, size_t dataSize,
- size_t numberOfPlanes, void *planeBaseAddress[],
- size_t planeWidth[], size_t planeHeight[], size_t planeBytesPerRow[],
- CVPixelBufferReleasePlanarBytesCallback releaseCallback,
- CFDictionaryRef pixelBufferAttributes,
- CVPixelBufferRef *pixelBufferOut) {
-
- // For the allocated object, it doesn't really matter what type it is
- // for the purpose of this test. All we want to show is that
- // this is freed later by the callback.
- NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
-
- return CVPixelBufferCreateWithPlanarBytes(allocator,
- width, height, pixelFormatType, dataPtr, dataSize,
- numberOfPlanes, planeBaseAddress, planeWidth,
- planeHeight, planeBytesPerRow, releaseCallback,
- number, // potentially released by callback
- pixelBufferAttributes, pixelBufferOut) ;
-}
-
-#pragma clang arc_cf_code_audited begin
-typedef struct SomeOpaqueStruct *CMSampleBufferRef;
-CVImageBufferRef _Nonnull CMSampleBufferGetImageBuffer(CMSampleBufferRef _Nonnull sbuf);
-#pragma clang arc_cf_code_audited end
-
-CVBufferRef _Nullable CVBufferRetain(CVBufferRef _Nullable buffer);
-void CVBufferRelease(CF_CONSUMED CVBufferRef _Nullable buffer);
-
-void testCVPrefixRetain(CMSampleBufferRef sbuf) {
- // Make sure RetainCountChecker treats CVFooRetain() as a CF-style retain.
- CVPixelBufferRef pixelBuf = CMSampleBufferGetImageBuffer(sbuf);
- CVBufferRetain(pixelBuf);
- CVBufferRelease(pixelBuf); // no-warning
-
-
- // Make sure result of CVFooRetain() is the same as its argument.
- CVPixelBufferRef pixelBufAlias = CVBufferRetain(pixelBuf);
- CVBufferRelease(pixelBufAlias); // no-warning
-}
-
-typedef signed long SInt32;
-typedef SInt32 OSStatus;
-typedef FourCharCode CMVideoCodecType;
-
-
-typedef UInt32 VTEncodeInfoFlags; enum {
- kVTEncodeInfo_Asynchronous = 1UL << 0,
- kVTEncodeInfo_FrameDropped = 1UL << 1,
-};
-typedef struct
-{
- int ignore;
-} CMTime;
-
-
-typedef void (*VTCompressionOutputCallback)(
- void * _Nullable outputCallbackRefCon,
- void * _Nullable sourceFrameRefCon,
- OSStatus status,
- VTEncodeInfoFlags infoFlags,
- _Nullable CMSampleBufferRef sampleBuffer );
-
-typedef struct OpaqueVTCompressionSession* VTCompressionSessionRef;
-
-extern OSStatus
-VTCompressionSessionCreate(_Nullable CFAllocatorRef allocator,
- int32_t width,
- int32_t height,
- CMVideoCodecType codecType,
- _Nullable CFDictionaryRef encoderSpecification,
- _Nullable CFDictionaryRef sourceImageBufferAttributes,
- _Nullable CFAllocatorRef compressedDataAllocator,
- _Nullable VTCompressionOutputCallback outputCallback,
- void * _Nullable outputCallbackRefCon,
- CF_RETURNS_RETAINED _Nullable VTCompressionSessionRef * _Nonnull compressionSessionOut);
-
-extern OSStatus
-VTCompressionSessionEncodeFrame(
- _Nonnull VTCompressionSessionRef session,
- _Nonnull CVImageBufferRef imageBuffer,
- CMTime presentationTimeStamp,
- CMTime duration,
- _Nullable CFDictionaryRef frameProperties,
- void * _Nullable sourceFrameRefCon,
- VTEncodeInfoFlags * _Nullable infoFlagsOut);
-
-OSStatus test_VTCompressionSessionCreateAndEncode_CallbackReleases(
- _Nullable CFAllocatorRef allocator,
- int32_t width,
- int32_t height,
- CMVideoCodecType codecType,
- _Nullable CFDictionaryRef encoderSpecification,
- _Nullable CFDictionaryRef sourceImageBufferAttributes,
- _Nullable CFAllocatorRef compressedDataAllocator,
- _Nullable VTCompressionOutputCallback outputCallback,
-
- _Nonnull CVImageBufferRef imageBuffer,
- CMTime presentationTimeStamp,
- CMTime duration,
- _Nullable CFDictionaryRef frameProperties
-) {
-
- // The outputCallback is passed both contexts and so can release either.
- NSNumber *contextForCreate = [[NSNumber alloc] initWithInt:5]; // no-warning
- NSNumber *contextForEncode = [[NSNumber alloc] initWithInt:6]; // no-warning
-
- VTCompressionSessionRef session = 0;
- OSStatus status = VTCompressionSessionCreate(allocator,
- width, height, codecType, encoderSpecification,
- sourceImageBufferAttributes,
- compressedDataAllocator, outputCallback, contextForCreate,
- &session);
-
- VTEncodeInfoFlags encodeInfoFlags;
-
- status = VTCompressionSessionEncodeFrame(session, imageBuffer,
- presentationTimeStamp, duration, frameProperties, contextForEncode,
- &encodeInfoFlags);
-
- return status;
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7358899> False leak associated with
-// CGBitmapContextCreateWithData
-//===----------------------------------------------------------------------===//
-typedef uint32_t CGBitmapInfo;
-typedef void (*CGBitmapContextReleaseDataCallback)(void *releaseInfo, void *data);
-
-CGContextRef CGBitmapContextCreateWithData(void *data,
- size_t width, size_t height, size_t bitsPerComponent,
- size_t bytesPerRow, CGColorSpaceRef space, CGBitmapInfo bitmapInfo,
- CGBitmapContextReleaseDataCallback releaseCallback, void *releaseInfo);
-
-void rdar_7358899(void *data,
- size_t width, size_t height, size_t bitsPerComponent,
- size_t bytesPerRow, CGColorSpaceRef space, CGBitmapInfo bitmapInfo,
- CGBitmapContextReleaseDataCallback releaseCallback) {
-
- // For the allocated object, it doesn't really matter what type it is
- // for the purpose of this test. All we want to show is that
- // this is freed later by the callback.
- NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
-
- CGBitmapContextCreateWithData(data, width, height, bitsPerComponent, // expected-warning{{leak}}
- bytesPerRow, space, bitmapInfo, releaseCallback, number);
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7265711> allow 'new', 'copy', 'alloc', 'init' prefix to
-// start before '_' when determining Cocoa fundamental rule
-//
-// Previously the retain/release checker just skipped prefixes before the
-// first '_' entirely. Now the checker honors the prefix if it results in a
-// recognizable naming convention (e.g., 'new', 'init').
-//===----------------------------------------------------------------------===//
-
-@interface RDar7265711 {}
-- (id) new_stuff;
-@end
-
-void rdar7265711_a(RDar7265711 *x) {
- id y = [x new_stuff]; // expected-warning{{leak}}
-}
-
-void rdar7265711_b(RDar7265711 *x) {
- id y = [x new_stuff]; // no-warning
- [y release];
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7306898> clang thinks [NSCursor dragCopyCursor] returns a
-// retained reference
-//===----------------------------------------------------------------------===//
-
-@interface NSCursor : NSObject
-+ (NSCursor *)dragCopyCursor;
-@end
-
-void rdar7306898(void) {
- // 'dragCopyCursor' does not follow Cocoa's fundamental rule. It is a noun, not an sentence
- // implying a 'copy' of something.
- NSCursor *c = [NSCursor dragCopyCursor]; // no-warning
- NSNumber *number = [[NSNumber alloc] initWithInt:5]; // expected-warning{{leak}}
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7252064> sending 'release', 'retain', etc. to a Class
-// directly is not likely what the user intended
-//===----------------------------------------------------------------------===//
-
-@interface RDar7252064 : NSObject @end
-void rdar7252064(void) {
- [RDar7252064 release]; // expected-warning{{The 'release' message should be sent to instances of class 'RDar7252064' and not the class directly}}
- [RDar7252064 retain]; // expected-warning{{The 'retain' message should be sent to instances of class 'RDar7252064' and not the class directly}}
- [RDar7252064 autorelease]; // expected-warning{{The 'autorelease' message should be sent to instances of class 'RDar7252064' and not the class directly}}
- [NSAutoreleasePool drain]; // expected-warning{{method '+drain' not found}} expected-warning{{The 'drain' message should be sent to instances of class 'NSAutoreleasePool' and not the class directly}}
-}
-
-//===----------------------------------------------------------------------===//
-// Tests of ownership attributes.
-//===----------------------------------------------------------------------===//
-
-typedef NSString* MyStringTy;
-
-@protocol FooP;
-
-@interface TestOwnershipAttr : NSObject
-- (NSString*) returnsAnOwnedString NS_RETURNS_RETAINED; // no-warning
-- (NSString*) returnsAnOwnedCFString CF_RETURNS_RETAINED; // no-warning
-- (MyStringTy) returnsAnOwnedTypedString NS_RETURNS_RETAINED; // no-warning
-- (NSString*) newString NS_RETURNS_NOT_RETAINED; // no-warning
-- (NSString*) newString_auto NS_RETURNS_AUTORELEASED; // no-warning
-- (NSString*) newStringNoAttr;
-- (int) returnsAnOwnedInt NS_RETURNS_RETAINED; // expected-warning{{'ns_returns_retained' attribute only applies to methods that return an Objective-C object}}
-- (id) pseudoInit NS_CONSUMES_SELF NS_RETURNS_RETAINED;
-+ (void) consume:(id) NS_CONSUMED x;
-+ (void) consume2:(id) CF_CONSUMED x;
-@end
-
-static int ownership_attribute_doesnt_go_here NS_RETURNS_RETAINED; // expected-warning{{'ns_returns_retained' only applies to function types; type here is 'int'}}
-
-void test_attr_1(TestOwnershipAttr *X) {
- NSString *str = [X returnsAnOwnedString]; // expected-warning{{leak}}
-}
-
-void test_attr_1b(TestOwnershipAttr *X) {
- NSString *str = [X returnsAnOwnedCFString]; // expected-warning{{leak}}
-}
-
-void test_attr1c(TestOwnershipAttr *X) {
- NSString *str = [X newString]; // no-warning
- NSString *str2 = [X newStringNoAttr]; // expected-warning{{leak}}
- NSString *str3 = [X newString_auto]; // no-warning
- NSString *str4 = [[X newString_auto] retain]; // expected-warning {{leak}}
-}
-
-void testattr2_a() {
- TestOwnershipAttr *x = [TestOwnershipAttr alloc]; // expected-warning{{leak}}
-}
-
-void testattr2_b() {
- TestOwnershipAttr *x = [[TestOwnershipAttr alloc] pseudoInit]; // expected-warning{{leak}}
-}
-
-void testattr2_b_11358224_self_assign_looses_the_leak() {
- TestOwnershipAttr *x = [[TestOwnershipAttr alloc] pseudoInit];// expected-warning{{leak}}
- x = x;
-}
-
-void testattr2_c() {
- TestOwnershipAttr *x = [[TestOwnershipAttr alloc] pseudoInit]; // no-warning
- [x release];
-}
-
-void testattr3() {
- TestOwnershipAttr *x = [TestOwnershipAttr alloc]; // no-warning
- [TestOwnershipAttr consume:x];
- TestOwnershipAttr *y = [TestOwnershipAttr alloc]; // no-warning
- [TestOwnershipAttr consume2:y];
-}
-
-void consume_ns(id NS_CONSUMED x);
-void consume_cf(id CF_CONSUMED x);
-
-void testattr4() {
- TestOwnershipAttr *x = [TestOwnershipAttr alloc]; // no-warning
- consume_ns(x);
- TestOwnershipAttr *y = [TestOwnershipAttr alloc]; // no-warning
- consume_cf(y);
-}
-
-@interface TestOwnershipAttr2 : NSObject
-- (NSString*) newString NS_RETURNS_NOT_RETAINED; // no-warning
-@end
-
-@implementation TestOwnershipAttr2
-- (NSString*) newString {
- return [NSString alloc]; // expected-warning {{Potential leak of an object}}
-}
-@end
-
-@interface MyClassTestCFAttr : NSObject {}
-- (NSDate*) returnsCFRetained CF_RETURNS_RETAINED;
-- (CFDateRef) returnsCFRetainedAsCF CF_RETURNS_RETAINED;
-- (CFDateRef) newCFRetainedAsCF CF_RETURNS_NOT_RETAINED;
-- (CFDateRef) newCFRetainedAsCFNoAttr;
-- (NSDate*) alsoReturnsRetained;
-- (CFDateRef) alsoReturnsRetainedAsCF;
-- (NSDate*) returnsNSRetained NS_RETURNS_RETAINED;
-@end
-
-CF_RETURNS_RETAINED
-CFDateRef returnsRetainedCFDate() {
- return CFDateCreate(0, CFAbsoluteTimeGetCurrent());
-}
-
-@implementation MyClassTestCFAttr
-- (NSDate*) returnsCFRetained {
- return (NSDate*) returnsRetainedCFDate(); // No leak.
-}
-
-- (CFDateRef) returnsCFRetainedAsCF {
- return returnsRetainedCFDate(); // No leak.
-}
-
-- (CFDateRef) newCFRetainedAsCF {
- return (CFDateRef)[(id)[self returnsCFRetainedAsCF] autorelease];
-}
-
-- (CFDateRef) newCFRetainedAsCFNoAttr {
- return (CFDateRef)[(id)[self returnsCFRetainedAsCF] autorelease]; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-
-- (NSDate*) alsoReturnsRetained {
- return (NSDate*) returnsRetainedCFDate(); // expected-warning{{leak}}
-}
-
-- (CFDateRef) alsoReturnsRetainedAsCF {
- return returnsRetainedCFDate(); // expected-warning{{leak}}
-}
-
-
-- (NSDate*) returnsNSRetained {
- return (NSDate*) returnsRetainedCFDate(); // no-warning
-}
-@end
-
-//===----------------------------------------------------------------------===//
-// Test that leaks post-dominated by "panic" functions are not reported.
-//
-// <rdar://problem/5905851> do not report a leak when post-dominated by a call
-// to a noreturn or panic function
-//===----------------------------------------------------------------------===//
-
-void panic() __attribute__((noreturn));
-void panic_not_in_hardcoded_list() __attribute__((noreturn));
-
-void test_panic_negative() {
- signed z = 1;
- CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z); // expected-warning{{leak}}
-}
-
-void test_panic_positive() {
- signed z = 1;
- CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z); // no-warning
- panic();
-}
-
-void test_panic_neg_2(int x) {
- signed z = 1;
- CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z); // expected-warning{{leak}}
- if (x)
- panic();
-}
-
-void test_panic_pos_2(int x) {
- signed z = 1;
- CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z); // no-warning
- if (x)
- panic();
- if (!x) {
- // This showed up in <rdar://problem/7796563>, where we silently missed checking
- // the function type for noreturn. "panic()" is a hard-coded known panic function
- // that isn't always noreturn.
- panic_not_in_hardcoded_list();
- }
-}
-
-//===----------------------------------------------------------------------===//
-// Test uses of blocks (closures)
-//===----------------------------------------------------------------------===//
-
-void test_blocks_1_pos(void) {
- NSNumber *number = [[NSNumber alloc] initWithInt:5]; // expected-warning{{leak}}
- ^{}();
-}
-
-void test_blocks_1_indirect_release(void) {
- NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
- ^{ [number release]; }();
-}
-
-void test_blocks_1_indirect_retain(void) {
- // Eventually this should be reported as a leak.
- NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
- ^{ [number retain]; }();
-}
-
-void test_blocks_1_indirect_release_via_call(void) {
- NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
- ^(NSObject *o){ [o release]; }(number);
-}
-
-void test_blocks_1_indirect_retain_via_call(void) {
- NSNumber *number = [[NSNumber alloc] initWithInt:5]; // expected-warning {{leak}}
- ^(NSObject *o){ [o retain]; }(number);
-}
-
-//===--------------------------------------------------------------------===//
-// Test sending message to super that returns an object alias. Previously
-// this caused a crash in the analyzer.
-//===--------------------------------------------------------------------===//
-
-@interface Rdar8015556 : NSObject {} @end
-@implementation Rdar8015556
-- (id)retain {
- return [super retain];
-}
-@end
-
-// <rdar://problem/8272168> - Correcly handle Class<...> in Cocoa Conventions
-// detector.
-
-@protocol Prot_R8272168 @end
-Class <Prot_R8272168> GetAClassThatImplementsProt_R8272168();
-void r8272168() {
- GetAClassThatImplementsProt_R8272168();
-}
-
-// Test case for <rdar://problem/8356342>, which in the past triggered
-// a false positive.
-@interface RDar8356342
-- (NSDate*) rdar8356342:(NSDate *)inValue;
-@end
-
-@implementation RDar8356342
-- (NSDate*) rdar8356342:(NSDate*)inValue {
- NSDate *outValue = inValue;
- if (outValue == 0)
- outValue = [[NSDate alloc] init]; // no-warning
-
- if (outValue != inValue)
- [outValue autorelease];
-
- return outValue;
-}
-@end
-
-// <rdar://problem/8724287> - This test case previously crashed because
-// of a bug in BugReporter.
-extern const void *CFDictionaryGetValue(CFDictionaryRef theDict, const void *key);
-typedef struct __CFError * CFErrorRef;
-extern const CFStringRef kCFErrorUnderlyingErrorKey;
-extern CFDictionaryRef CFErrorCopyUserInfo(CFErrorRef err);
-static void rdar_8724287(CFErrorRef error)
-{
- CFErrorRef error_to_dump;
-
- error_to_dump = error;
- while (error_to_dump != ((void*)0)) {
- CFDictionaryRef info;
-
- info = CFErrorCopyUserInfo(error_to_dump); // expected-warning{{Potential leak of an object}}
-
- if (info != ((void*)0)) {
- }
-
- error_to_dump = (CFErrorRef) CFDictionaryGetValue(info, kCFErrorUnderlyingErrorKey);
- }
-}
-
-// <rdar://problem/9234108> - Make sure the model applies cf_consumed
-// correctly in argument positions besides the first.
-extern void *CFStringCreate(void);
-extern void rdar_9234108_helper(void *key, void * CF_CONSUMED value);
-void rdar_9234108() {
- rdar_9234108_helper(0, CFStringCreate());
-}
-
-// <rdar://problem/9726279> - Make sure that objc_method_family works
-// to override naming conventions.
-struct TwoDoubles {
- double one;
- double two;
-};
-typedef struct TwoDoubles TwoDoubles;
-
-@interface NSValue (Mine)
-- (id)_prefix_initWithTwoDoubles:(TwoDoubles)twoDoubles __attribute__((objc_method_family(init)));
-@end
-
-@implementation NSValue (Mine)
-- (id)_prefix_initWithTwoDoubles:(TwoDoubles)twoDoubles
-{
- return [self init];
-}
-@end
-
-void rdar9726279() {
- TwoDoubles twoDoubles = { 0.0, 0.0 };
- NSValue *value = [[NSValue alloc] _prefix_initWithTwoDoubles:twoDoubles];
- [value release];
-}
-
-// <rdar://problem/9732321>
-// Test camelcase support for CF conventions. While Core Foundation APIs
-// don't use camel casing, other code is allowed to use it.
-CFArrayRef camelcase_create_1() {
- return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-CFArrayRef camelcase_createno() {
- return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning {{leak}}
-}
-
-CFArrayRef camelcase_copy() {
- return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-CFArrayRef camelcase_copying() {
- return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning {{leak}}
-}
-
-CFArrayRef copyCamelCase() {
- return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-CFArrayRef __copyCamelCase() {
- return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-CFArrayRef __createCamelCase() {
- return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-CFArrayRef camel_create() {
- return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-
-CFArrayRef camel_creat() {
- return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning {{leak}}
-}
-
-CFArrayRef camel_copy() {
- return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-CFArrayRef camel_copyMachine() {
- return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-CFArrayRef camel_copymachine() {
- return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning {{leak}}
-}
-
-// rdar://problem/8024350
-@protocol F18P
-- (id) clone; // expected-note 2 {{method declared here}}
-@end
-@interface F18 : NSObject<F18P> @end
-@interface F18(Cat)
-- (id) clone NS_RETURNS_RETAINED; // expected-warning {{overriding method has mismatched ns_returns_retained attributes}}
-@end
-
-@implementation F18
-- (id) clone { // expected-warning {{overriding method has mismatched ns_returns_retained attributes}}
- return [F18 alloc];
-}
-@end
-
-// Radar 6582778.
-void rdar6582778(void) {
- CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
- CFTypeRef vals[] = { CFDateCreate(0, t) }; // expected-warning {{leak}}
-}
-
-CFTypeRef global;
-
-void rdar6582778_2(void) {
- CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
- global = CFDateCreate(0, t); // no-warning
-}
-
-// <rdar://problem/10232019> - Test that objects passed to containers
-// are marked "escaped".
-
-void rdar10232019() {
- NSMutableArray *array = [NSMutableArray array];
-
- NSString *string = [[NSString alloc] initWithUTF8String:"foo"];
- [array addObject:string];
- [string release];
-
- NSString *otherString = [string stringByAppendingString:@"bar"]; // no-warning
- NSLog(@"%@", otherString);
-}
-
-void rdar10232019_positive() {
- NSMutableArray *array = [NSMutableArray array];
-
- NSString *string = [[NSString alloc] initWithUTF8String:"foo"];
- [string release];
-
- NSString *otherString = [string stringByAppendingString:@"bar"]; // expected-warning {{Reference-counted object is used after it is release}}
- NSLog(@"%@", otherString);
-}
-
-// RetainCountChecker support for XPC.
-// <rdar://problem/9658496>
-typedef void * xpc_object_t;
-xpc_object_t _CFXPCCreateXPCObjectFromCFObject(CFTypeRef cf);
-void xpc_release(xpc_object_t object);
-
-void rdar9658496() {
- CFStringRef cf;
- xpc_object_t xpc;
- cf = CFStringCreateWithCString( ((CFAllocatorRef)0), "test", kCFStringEncodingUTF8 ); // no-warning
- xpc = _CFXPCCreateXPCObjectFromCFObject( cf );
- CFRelease(cf);
- xpc_release(xpc);
-}
-
-// Support annotations with method families.
-@interface RDar10824732 : NSObject
-- (id)initWithObj:(id CF_CONSUMED)obj;
-@end
-
-@implementation RDar10824732
-- (id)initWithObj:(id)obj {
- [obj release];
- return [super init];
-}
-@end
-
-void rdar_10824732() {
- @autoreleasepool {
- NSString *obj = @"test";
- RDar10824732 *foo = [[RDar10824732 alloc] initWithObj:obj]; // no-warning
- [foo release];
- }
-}
-
-// Stop tracking objects passed to functions, which take callbacks as parameters.
-// radar://10973977
-typedef int (*CloseCallback) (void *);
-void ReaderForIO(CloseCallback ioclose, void *ioctx);
-int IOClose(void *context);
-
-@protocol SInS <NSObject>
-@end
-
-@interface radar10973977 : NSObject
-- (id<SInS>)inputS;
-- (void)reader;
-@end
-
-@implementation radar10973977
-- (void)reader
-{
- id<SInS> inputS = [[self inputS] retain];
- ReaderForIO(IOClose, inputS);
-}
-- (id<SInS>)inputS
-{
- return 0;
-}
-@end
-
-// Object escapes through a selector callback: radar://11398514
-extern id NSApp;
-@interface MySheetController
-- (id<SInS>)inputS;
-- (void)showDoSomethingSheetAction:(id)action;
-- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo;
-@end
-
-@implementation MySheetController
-- (id<SInS>)inputS {
- return 0;
-}
-- (void)showDoSomethingSheetAction:(id)action {
- id<SInS> inputS = [[self inputS] retain];
- [NSApp beginSheet:0
- modalForWindow:0
- modalDelegate:0
- didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:)
- contextInfo:(void *)inputS]; // no - warning
-}
-- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo {
-
- id contextObject = (id)contextInfo;
- [contextObject release];
-}
-
-- (id)copyAutoreleaseRadar13081402 {
- id x = [[[NSString alloc] initWithUTF8String:"foo"] autorelease];
- [x retain];
- return x; // no warning
-}
-
-@end
-//===----------------------------------------------------------------------===//
-// Test returning allocated memory in a struct.
-//
-// We currently don't have a general way to track pointers that "escape".
-// Here we test that RetainCountChecker doesn't get excited about returning
-// allocated CF objects in struct fields.
-//===----------------------------------------------------------------------===//
-void *malloc(size_t);
-struct rdar11104566 { CFStringRef myStr; };
-struct rdar11104566 test_rdar11104566() {
- CFStringRef cf = CFStringCreateWithCString( ((CFAllocatorRef)0), "test", kCFStringEncodingUTF8 ); // no-warning
- struct rdar11104566 V;
- V.myStr = cf;
- return V; // no-warning
-}
-
-struct rdar11104566 *test_2_rdar11104566() {
- CFStringRef cf = CFStringCreateWithCString( ((CFAllocatorRef)0), "test", kCFStringEncodingUTF8 ); // no-warning
- struct rdar11104566 *V = (struct rdar11104566 *) malloc(sizeof(*V));
- V->myStr = cf;
- return V; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// ObjC literals support.
-//===----------------------------------------------------------------------===//
-
-void test_objc_arrays() {
- { // CASE ONE -- OBJECT IN ARRAY CREATED DIRECTLY
- NSObject *o = [[NSObject alloc] init];
- NSArray *a = [[NSArray alloc] initWithObjects:o, (void*)0]; // expected-warning {{leak}}
- [o release];
- [a description];
- [o description];
- }
-
- { // CASE TWO -- OBJECT IN ARRAY CREATED BY DUPING AUTORELEASED ARRAY
- NSObject *o = [[NSObject alloc] init];
- NSArray *a1 = [NSArray arrayWithObjects:o, (void*)0];
- NSArray *a2 = [[NSArray alloc] initWithArray:a1]; // expected-warning {{leak}}
- [o release];
- [a2 description];
- [o description];
- }
-
- { // CASE THREE -- OBJECT IN RETAINED @[]
- NSObject *o = [[NSObject alloc] init];
- NSArray *a3 = [@[o] retain]; // expected-warning {{leak}}
- [o release];
- [a3 description];
- [o description];
- }
-
- { // CASE FOUR -- OBJECT IN ARRAY CREATED BY DUPING @[]
- NSObject *o = [[NSObject alloc] init];
- NSArray *a = [[NSArray alloc] initWithArray:@[o]]; // expected-warning {{leak}}
- [o release];
-
- [a description];
- [o description];
- }
-
- { // CASE FIVE -- OBJECT IN RETAINED @{}
- NSValue *o = [[NSValue alloc] init];
- NSDictionary *a = [@{o : o} retain]; // expected-warning {{leak}}
- [o release];
-
- [a description];
- [o description];
- }
-}
-
-void test_objc_integer_literals() {
- id value = [@1 retain]; // expected-warning {{leak}}
- [value description];
-}
-
-void test_objc_boxed_expressions(int x, const char *y) {
- id value = [@(x) retain]; // expected-warning {{leak}}
- [value description];
-
- value = [@(y) retain]; // expected-warning {{leak}}
- [value description];
-}
-
-// Test NSLog doesn't escape tracked objects.
-void rdar11400885(int y)
-{
- @autoreleasepool {
- NSString *printString;
- if(y > 2)
- printString = [[NSString alloc] init];
- else
- printString = [[NSString alloc] init];
- NSLog(@"Once %@", printString);
- [printString release];
- NSLog(@"Again: %@", printString); // expected-warning {{Reference-counted object is used after it is released}}
- }
-}
-
-id makeCollectableNonLeak() {
- extern CFTypeRef CFCreateSomething();
-
- CFTypeRef object = CFCreateSomething(); // +1
- CFRetain(object); // +2
- id objCObject = NSMakeCollectable(object); // +2
- [objCObject release]; // +1
- return [objCObject autorelease]; // +0
-}
-
-void consumeAndStopTracking(id NS_CONSUMED obj, void (^callback)(void));
-void CFConsumeAndStopTracking(CFTypeRef CF_CONSUMED obj, void (^callback)(void));
-
-void testConsumeAndStopTracking() {
- id retained = [@[] retain]; // +1
- consumeAndStopTracking(retained, ^{}); // no-warning
-
- id doubleRetained = [[@[] retain] retain]; // +2
- consumeAndStopTracking(doubleRetained, ^{
- [doubleRetained release];
- }); // no-warning
-
- id unretained = @[]; // +0
- consumeAndStopTracking(unretained, ^{}); // expected-warning {{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-void testCFConsumeAndStopTracking() {
- id retained = [@[] retain]; // +1
- CFConsumeAndStopTracking((CFTypeRef)retained, ^{}); // no-warning
-
- id doubleRetained = [[@[] retain] retain]; // +2
- CFConsumeAndStopTracking((CFTypeRef)doubleRetained, ^{
- [doubleRetained release];
- }); // no-warning
-
- id unretained = @[]; // +0
- CFConsumeAndStopTracking((CFTypeRef)unretained, ^{}); // expected-warning {{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-//===----------------------------------------------------------------------===//
-// Test 'pragma clang arc_cf_code_audited' support.
-//===----------------------------------------------------------------------===//
-
-typedef void *MyCFType;
-#pragma clang arc_cf_code_audited begin
-MyCFType CreateMyCFType();
-#pragma clang arc_cf_code_audited end
-
-void test_custom_cf() {
- MyCFType x = CreateMyCFType(); // expected-warning {{leak of an object stored into 'x'}}
-}
-
-//===----------------------------------------------------------------------===//
-// Test calling CFPlugInInstanceCreate, which appears in CF but doesn't
-// return a CF object.
-//===----------------------------------------------------------------------===//
-
-void test_CFPlugInInstanceCreate(CFUUIDRef factoryUUID, CFUUIDRef typeUUID) {
- CFPlugInInstanceCreate(kCFAllocatorDefault, factoryUUID, typeUUID); // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// PR14927: -drain only has retain-count semantics on NSAutoreleasePool.
-//===----------------------------------------------------------------------===//
-
-@interface PR14927 : NSObject
-- (void)drain;
-@end
-
-void test_drain() {
- PR14927 *obj = [[PR14927 alloc] init];
- [obj drain];
- [obj release]; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// Allow cf_returns_retained and cf_returns_not_retained to mark a return
-// value as tracked, even if the object isn't a known CF type.
-//===----------------------------------------------------------------------===//
-
-MyCFType getCustom() __attribute__((cf_returns_not_retained));
-MyCFType makeCustom() __attribute__((cf_returns_retained));
-
-void testCustomReturnsRetained() {
- MyCFType obj = makeCustom(); // expected-warning {{leak of an object stored into 'obj'}}
-}
-
-void testCustomReturnsNotRetained() {
- CFRelease(getCustom()); // expected-warning {{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-//===----------------------------------------------------------------------===//
-// Don't print variables which are out of the current scope.
-//===----------------------------------------------------------------------===//
-@interface MyObj12706177 : NSObject
--(id)initX;
-+(void)test12706177;
-@end
-static int Cond;
-@implementation MyObj12706177
--(id)initX {
- if (Cond)
- return 0;
- self = [super init];
- return self;
-}
-+(void)test12706177 {
- id x = [[MyObj12706177 alloc] initX]; //expected-warning {{Potential leak of an object}}
- [x release];
-}
-@end
-
-//===----------------------------------------------------------------------===//
-// CFAutorelease
-//===----------------------------------------------------------------------===//
-
-CFTypeRef getAutoreleasedCFType() {
- extern CFTypeRef CFCreateSomething();
- return CFAutorelease(CFCreateSomething()); // no-warning
-}
-
-CFTypeRef getIncorrectlyAutoreleasedCFType() {
- extern CFTypeRef CFGetSomething();
- return CFAutorelease(CFGetSomething()); // expected-warning{{Object autoreleased too many times}}
-}
-
-CFTypeRef createIncorrectlyAutoreleasedCFType() {
- extern CFTypeRef CFCreateSomething();
- return CFAutorelease(CFCreateSomething()); // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-
-void useAfterAutorelease() {
- extern CFTypeRef CFCreateSomething();
- CFTypeRef obj = CFCreateSomething();
- CFAutorelease(obj);
-
- extern void useCF(CFTypeRef);
- useCF(obj); // no-warning
-}
-
-void useAfterRelease() {
- // Sanity check that the previous example would have warned with CFRelease.
- extern CFTypeRef CFCreateSomething();
- CFTypeRef obj = CFCreateSomething();
- CFRelease(obj);
-
- extern void useCF(CFTypeRef);
- useCF(obj); // expected-warning{{Reference-counted object is used after it is released}}
-}
-
-void testAutoreleaseReturnsInput() {
- extern CFTypeRef CFCreateSomething();
- CFTypeRef obj = CFCreateSomething(); // expected-warning{{Potential leak of an object stored into 'obj'}}
- CFTypeRef second = CFAutorelease(obj);
- CFRetain(second);
-}
-
-CFTypeRef testAutoreleaseReturnsInputSilent() {
- extern CFTypeRef CFCreateSomething();
- CFTypeRef obj = CFCreateSomething();
- CFTypeRef alias = CFAutorelease(obj);
- CFRetain(alias);
- CFRelease(obj);
- return obj; // no-warning
-}
-
-void autoreleaseTypedObject() {
- CFArrayRef arr = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
- CFAutorelease((CFTypeRef)arr); // no-warning
-}
-
-void autoreleaseReturningTypedObject() {
- CFArrayRef arr = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{Potential leak of an object stored into 'arr'}}
- CFArrayRef alias = (CFArrayRef)CFAutorelease((CFTypeRef)arr);
- CFRetain(alias);
-}
-
-CFArrayRef autoreleaseReturningTypedObjectSilent() {
- CFArrayRef arr = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
- CFArrayRef alias = (CFArrayRef)CFAutorelease((CFTypeRef)arr);
- CFRetain(alias);
- CFRelease(arr);
- return alias; // no-warning
-}
-
-void autoreleaseObjC() {
- id obj = [@1 retain];
- CFAutorelease(obj); // no-warning
-
- id anotherObj = @1;
- CFAutorelease(anotherObj);
-} // expected-warning{{Object autoreleased too many times}}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/13783514> xpc_connection_set_finalizer_f
-//===----------------------------------------------------------------------===//
-
-typedef xpc_object_t xpc_connection_t;
-typedef void (*xpc_finalizer_t)(void *value);
-void xpc_connection_set_context(xpc_connection_t connection, void *ctx);
-void xpc_connection_set_finalizer_f(xpc_connection_t connection,
- xpc_finalizer_t finalizer);
-void releaseAfterXPC(void *context) {
- [(NSArray *)context release];
-}
-
-void rdar13783514(xpc_connection_t connection) {
- xpc_connection_set_context(connection, [[NSMutableArray alloc] init]);
- xpc_connection_set_finalizer_f(connection, releaseAfterXPC);
-} // no-warning
-
-// Do not report leaks when object is cleaned up with __attribute__((cleanup ..)).
-inline static void cleanupFunction(void *tp) {
- CFTypeRef x = *(CFTypeRef *)tp;
- if (x) {
- CFRelease(x);
- }
-}
-#define ADDCLEANUP __attribute__((cleanup(cleanupFunction)))
-void foo() {
- ADDCLEANUP CFStringRef myString;
- myString = CFStringCreateWithCString(0, "hello world", kCFStringEncodingUTF8);
- ADDCLEANUP CFStringRef myString2 =
- CFStringCreateWithCString(0, "hello world", kCFStringEncodingUTF8);
-}
-
-//===----------------------------------------------------------------------===//
-// Handle NSNull
-//===----------------------------------------------------------------------===//
-
-__attribute__((ns_returns_retained))
-id returnNSNull() {
- return [NSNull null]; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// cf_returns_[not_]retained on parameters
-//===----------------------------------------------------------------------===//
-
-void testCFReturnsNotRetained() {
- extern void getViaParam(CFTypeRef * CF_RETURNS_NOT_RETAINED outObj);
- CFTypeRef obj;
- getViaParam(&obj);
- CFRelease(obj); // // expected-warning {{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-void testCFReturnsNotRetainedAnnotated() {
- extern void getViaParam2(CFTypeRef * _Nonnull CF_RETURNS_NOT_RETAINED outObj);
- CFTypeRef obj;
- getViaParam2(&obj);
- CFRelease(obj); // // expected-warning {{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-void testCFReturnsRetained() {
- extern int copyViaParam(CFTypeRef * CF_RETURNS_RETAINED outObj);
- CFTypeRef obj;
- copyViaParam(&obj);
- CFRelease(obj);
- CFRelease(obj); // // FIXME-warning {{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-void testCFReturnsRetainedError() {
- extern int copyViaParam(CFTypeRef * CF_RETURNS_RETAINED outObj);
- CFTypeRef obj;
- if (copyViaParam(&obj) == -42)
- return; // no-warning
- CFRelease(obj);
-}
diff --git a/test/Analysis/retain-release.mm b/test/Analysis/retain-release.mm
deleted file mode 100644
index 5dc8f857d87d..000000000000
--- a/test/Analysis/retain-release.mm
+++ /dev/null
@@ -1,487 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -analyzer-store=region -fblocks -verify %s
-
-#if __has_feature(attribute_ns_returns_retained)
-#define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))
-#endif
-#if __has_feature(attribute_cf_returns_retained)
-#define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))
-#endif
-#if __has_feature(attribute_ns_returns_not_retained)
-#define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
-#endif
-#if __has_feature(attribute_cf_returns_not_retained)
-#define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained))
-#endif
-#if __has_feature(attribute_ns_consumes_self)
-#define NS_CONSUMES_SELF __attribute__((ns_consumes_self))
-#endif
-#if __has_feature(attribute_ns_consumed)
-#define NS_CONSUMED __attribute__((ns_consumed))
-#endif
-#if __has_feature(attribute_cf_consumed)
-#define CF_CONSUMED __attribute__((cf_consumed))
-#endif
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from Mac OS X headers:
-//
-// #include <Cocoa/Cocoa.h>
-// #include <CoreFoundation/CoreFoundation.h>
-// #include <DiskArbitration/DiskArbitration.h>
-// #include <QuartzCore/QuartzCore.h>
-// #include <Quartz/Quartz.h>
-// #include <IOKit/IOKitLib.h>
-//
-// It includes the basic definitions for the test cases below.
-//===----------------------------------------------------------------------===//
-
-typedef unsigned int __darwin_natural_t;
-typedef unsigned long uintptr_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
-typedef unsigned int UInt32;
-typedef signed long CFIndex;
-typedef struct {
- CFIndex location;
- CFIndex length;
-} CFRange;
-static __inline__ __attribute__((always_inline)) CFRange CFRangeMake(CFIndex loc, CFIndex len) {
- CFRange range;
- range.location = loc;
- range.length = len;
- return range;
-}
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-extern void CFRelease(CFTypeRef cf);
-typedef struct {
-}
-CFArrayCallBacks;
-extern const CFArrayCallBacks kCFTypeArrayCallBacks;
-typedef const struct __CFArray * CFArrayRef;
-typedef struct __CFArray * CFMutableArrayRef;
-extern CFMutableArrayRef CFArrayCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFArrayCallBacks *callBacks);
-void abort(void) __attribute__((noreturn));
-CFArrayRef CFArrayCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFArrayCallBacks *callBacks);
-extern const void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);
-extern void CFArrayAppendValue(CFMutableArrayRef theArray, const void *value);
-typedef struct {
-}
-CFDictionaryKeyCallBacks;
-extern const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks;
-typedef struct {
-}
-CFDictionaryValueCallBacks;
-extern const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef struct __CFDictionary * CFMutableDictionaryRef;
-extern CFMutableDictionaryRef CFDictionaryCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
-typedef UInt32 CFStringEncoding;
-enum {
-kCFStringEncodingMacRoman = 0, kCFStringEncodingWindowsLatin1 = 0x0500, kCFStringEncodingISOLatin1 = 0x0201, kCFStringEncodingNextStepLatin = 0x0B01, kCFStringEncodingASCII = 0x0600, kCFStringEncodingUnicode = 0x0100, kCFStringEncodingUTF8 = 0x08000100, kCFStringEncodingNonLossyASCII = 0x0BFF , kCFStringEncodingUTF16 = 0x0100, kCFStringEncodingUTF16BE = 0x10000100, kCFStringEncodingUTF16LE = 0x14000100, kCFStringEncodingUTF32 = 0x0c000100, kCFStringEncodingUTF32BE = 0x18000100, kCFStringEncodingUTF32LE = 0x1c000100 };
-extern CFStringRef CFStringCreateWithCString(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding);
-extern CFStringRef CFStringCreateCopy(CFAllocatorRef alloc, CFStringRef theString);
-typedef double CFTimeInterval;
-typedef CFTimeInterval CFAbsoluteTime;
-extern CFAbsoluteTime CFAbsoluteTimeGetCurrent(void);
-typedef const struct __CFDate * CFDateRef;
-extern CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at);
-extern CFAbsoluteTime CFDateGetAbsoluteTime(CFDateRef theDate);
-typedef __darwin_natural_t natural_t;
-typedef natural_t mach_port_name_t;
-typedef mach_port_name_t mach_port_t;
-typedef int kern_return_t;
-typedef kern_return_t mach_error_t;
-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;
-typedef const struct __CFNumber * CFNumberRef;
-extern CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-typedef const struct __CFAttributedString *CFAttributedStringRef;
-typedef struct __CFAttributedString *CFMutableAttributedStringRef;
-extern CFAttributedStringRef CFAttributedStringCreate(CFAllocatorRef alloc, CFStringRef str, CFDictionaryRef attributes) ;
-extern CFMutableAttributedStringRef CFAttributedStringCreateMutableCopy(CFAllocatorRef alloc, CFIndex maxLength, CFAttributedStringRef aStr) ;
-extern void CFAttributedStringSetAttribute(CFMutableAttributedStringRef aStr, CFRange range, CFStringRef attrName, CFTypeRef value) ;
-typedef signed char BOOL;
-typedef unsigned long NSUInteger;
-@class NSString, Protocol;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (id)copy;
-- (oneway void)release;
-- (id)autorelease;
-@end @protocol NSCopying - (id)copyWithZone:(NSZone *)zone;
-@end @protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone;
-@end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@interface NSObject <NSObject> {}
-+ (id)allocWithZone:(NSZone *)zone;
-+ (id)alloc;
-- (void)dealloc;
-- (id)init;
-@end
-@interface NSObject (NSCoderMethods)
-- (id)awakeAfterUsingCoder:(NSCoder *)aDecoder;
-@end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-typedef struct {
-}
-NSFastEnumerationState;
-@protocol NSFastEnumeration - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
-@end @class NSString, NSDictionary;
-@interface NSValue : NSObject <NSCopying, NSCoding> - (void)getValue:(void *)value;
-@end @interface NSNumber : NSValue - (char)charValue;
-- (id)initWithInt:(int)value;
-@end @class NSString;
-@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration> - (NSUInteger)count;
-@end @interface NSArray (NSArrayCreation) + (id)array;
-@end @interface NSAutoreleasePool : NSObject {
-}
-- (void)drain;
-@end extern NSString * const NSBundleDidLoadNotification;
-typedef double NSTimeInterval;
-@interface NSDate : NSObject <NSCopying, NSCoding> - (NSTimeInterval)timeIntervalSinceReferenceDate;
-@end typedef unsigned short unichar;
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding> - (NSUInteger)length;
-- ( const char *)UTF8String;
-- (id)initWithUTF8String:(const char *)nullTerminatedCString;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
-@end @class NSString, NSURL, NSError;
-@interface NSData : NSObject <NSCopying, NSMutableCopying, NSCoding> - (NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b;
-@end @class NSLocale, NSDate, NSCalendar, NSTimeZone, NSError, NSArray, NSMutableDictionary;
-@interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration> - (NSUInteger)count;
-@end @interface NSMutableDictionary : NSDictionary - (void)removeObjectForKey:(id)aKey;
-- (void)setObject:(id)anObject forKey:(id)aKey;
-@end @interface NSMutableDictionary (NSMutableDictionaryCreation) + (id)dictionaryWithCapacity:(NSUInteger)numItems;
-@end typedef double CGFloat;
-struct CGSize {
-};
-typedef struct CGSize CGSize;
-struct CGRect {
-};
-typedef struct CGRect CGRect;
-typedef mach_port_t io_object_t;
-typedef char io_name_t[128];
-typedef io_object_t io_iterator_t;
-typedef io_object_t io_service_t;
-typedef struct IONotificationPort * IONotificationPortRef;
-typedef void (*IOServiceMatchingCallback)( void * refcon, io_iterator_t iterator );
-io_service_t IOServiceGetMatchingService( mach_port_t masterPort, CFDictionaryRef matching );
-kern_return_t IOServiceGetMatchingServices( mach_port_t masterPort, CFDictionaryRef matching, io_iterator_t * existing );
-kern_return_t IOServiceAddNotification( mach_port_t masterPort, const io_name_t notificationType, CFDictionaryRef matching, mach_port_t wakePort, uintptr_t reference, io_iterator_t * notification ) __attribute__((deprecated));
-kern_return_t IOServiceAddMatchingNotification( IONotificationPortRef notifyPort, const io_name_t notificationType, CFDictionaryRef matching, IOServiceMatchingCallback callback, void * refCon, io_iterator_t * notification );
-CFMutableDictionaryRef IOServiceMatching( const char * name );
-CFMutableDictionaryRef IOServiceNameMatching( const char * name );
-CFMutableDictionaryRef IOBSDNameMatching( mach_port_t masterPort, uint32_t options, const char * bsdName );
-CFMutableDictionaryRef IOOpenFirmwarePathMatching( mach_port_t masterPort, uint32_t options, const char * path );
-CFMutableDictionaryRef IORegistryEntryIDMatching( uint64_t entryID );
-typedef struct __DASession * DASessionRef;
-extern DASessionRef DASessionCreate( CFAllocatorRef allocator );
-typedef struct __DADisk * DADiskRef;
-extern DADiskRef DADiskCreateFromBSDName( CFAllocatorRef allocator, DASessionRef session, const char * name );
-extern DADiskRef DADiskCreateFromIOMedia( CFAllocatorRef allocator, DASessionRef session, io_service_t media );
-extern CFDictionaryRef DADiskCopyDescription( DADiskRef disk );
-extern DADiskRef DADiskCopyWholeDisk( DADiskRef disk );
-@interface NSTask : NSObject - (id)init;
-@end typedef struct CGColorSpace *CGColorSpaceRef;
-typedef struct CGImage *CGImageRef;
-typedef struct CGLayer *CGLayerRef;
-@interface NSResponder : NSObject <NSCoding> {
-}
-@end @protocol NSAnimatablePropertyContainer - (id)animator;
-@end extern NSString *NSAnimationTriggerOrderIn ;
-@interface NSView : NSResponder <NSAnimatablePropertyContainer> {
-}
-@end @protocol NSValidatedUserInterfaceItem - (SEL)action;
-@end @protocol NSUserInterfaceValidations - (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem;
-@end @class NSDate, NSDictionary, NSError, NSException, NSNotification;
-@interface NSApplication : NSResponder <NSUserInterfaceValidations> {
-}
-@end enum {
-NSTerminateCancel = 0, NSTerminateNow = 1, NSTerminateLater = 2 };
-typedef NSUInteger NSApplicationTerminateReply;
-@protocol NSApplicationDelegate <NSObject> @optional - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
-@end @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView, NSTextView;
-@interface NSCell : NSObject <NSCopying, NSCoding> {
-}
-@end @class NSTextField, NSPanel, NSArray, NSWindow, NSImage, NSButton, NSError;
-typedef struct {
-}
-CVTimeStamp;
-@interface CIImage : NSObject <NSCoding, NSCopying> {
-}
-typedef int CIFormat;
-@end enum {
-kDAReturnSuccess = 0, kDAReturnError = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x01, kDAReturnBusy = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x02, kDAReturnBadArgument = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x03, kDAReturnExclusiveAccess = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x04, kDAReturnNoResources = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x05, kDAReturnNotFound = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x06, kDAReturnNotMounted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x07, kDAReturnNotPermitted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x08, kDAReturnNotPrivileged = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x09, kDAReturnNotReady = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0A, kDAReturnNotWritable = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0B, kDAReturnUnsupported = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0C };
-typedef mach_error_t DAReturn;
-typedef const struct __DADissenter * DADissenterRef;
-extern DADissenterRef DADissenterCreate( CFAllocatorRef allocator, DAReturn status, CFStringRef string );
-@interface CIContext: NSObject {
-}
-- (CGImageRef)createCGImage:(CIImage *)im fromRect:(CGRect)r;
-- (CGImageRef)createCGImage:(CIImage *)im fromRect:(CGRect)r format:(CIFormat)f colorSpace:(CGColorSpaceRef)cs;
-- (CGLayerRef)createCGLayerWithSize:(CGSize)size info:(CFDictionaryRef)d;
-@end extern NSString* const QCRendererEventKey;
-@protocol QCCompositionRenderer - (NSDictionary*) attributes;
-@end @interface QCRenderer : NSObject <QCCompositionRenderer> {
-}
-- (id) createSnapshotImageOfType:(NSString*)type;
-@end extern NSString* const QCViewDidStartRenderingNotification;
-@interface QCView : NSView <QCCompositionRenderer> {
-}
-- (id) createSnapshotImageOfType:(NSString*)type;
-@end enum {
-ICEXIFOrientation1 = 1, ICEXIFOrientation2 = 2, ICEXIFOrientation3 = 3, ICEXIFOrientation4 = 4, ICEXIFOrientation5 = 5, ICEXIFOrientation6 = 6, ICEXIFOrientation7 = 7, ICEXIFOrientation8 = 8, };
-@class ICDevice;
-@protocol ICDeviceDelegate <NSObject> @required - (void)didRemoveDevice:(ICDevice*)device;
-@end extern NSString *const ICScannerStatusWarmingUp;
-@class ICScannerDevice;
-@protocol ICScannerDeviceDelegate <ICDeviceDelegate> @optional - (void)scannerDeviceDidBecomeAvailable:(ICScannerDevice*)scanner;
-@end
-
-typedef long unsigned int __darwin_size_t;
-typedef __darwin_size_t size_t;
-typedef unsigned long CFTypeID;
-struct CGPoint {
- CGFloat x;
- CGFloat y;
-};
-typedef struct CGPoint CGPoint;
-typedef struct CGGradient *CGGradientRef;
-typedef uint32_t CGGradientDrawingOptions;
-extern CFTypeID CGGradientGetTypeID(void);
-extern CGGradientRef CGGradientCreateWithColorComponents(CGColorSpaceRef
- space, const CGFloat components[], const CGFloat locations[], size_t count);
-extern CGGradientRef CGGradientCreateWithColors(CGColorSpaceRef space,
- CFArrayRef colors, const CGFloat locations[]);
-extern CGGradientRef CGGradientRetain(CGGradientRef gradient);
-extern void CGGradientRelease(CGGradientRef gradient);
-typedef struct CGContext *CGContextRef;
-extern void CGContextDrawLinearGradient(CGContextRef context,
- CGGradientRef gradient, CGPoint startPoint, CGPoint endPoint,
- CGGradientDrawingOptions options);
-extern CGColorSpaceRef CGColorSpaceCreateDeviceRGB(void);
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-class SmartPointer {
- id x;
-public:
- SmartPointer(id x) : x(x) {}
- ~SmartPointer() { [x release]; }
-
- void adopt(id x);
- void noAdopt(id x);
-};
-
-void test_positive() {
- id x = [[NSObject alloc] init]; // expected-warning {{leak}}
-}
-
-void test_smartpointer_1() {
- id x = [[NSObject alloc] init]; // no-warning
- SmartPointer foo(x);
-}
-
-void test_smartpointer_2() {
- id x = [[NSObject alloc] init]; // no-warning
- SmartPointer foo(0);
- foo.adopt(x);
-}
-
-// FIXME: Eventually we want annotations to say whether or not
-// a C++ method claims ownership of an Objective-C object.
-void test_smartpointer_3() {
- id x = [[NSObject alloc] init]; // no-warning
- SmartPointer foo(0);
- foo.noAdopt(x);
-}
-
-void test_smartpointer_4() {
- id x = [[NSObject alloc] init]; // no-warning
- SmartPointer *foo = new SmartPointer(x);
- delete foo;
-}
-
-extern CFStringRef ElectronMicroscopyEngage(void);
-void test_microscopy() {
- NSString *token = (NSString*) ElectronMicroscopyEngage();
- [token release]; // expected-warning {{object that is not owned}}
-}
-
-extern CFStringRef Scopy(void);
-void test_Scopy() {
- NSString *token = (NSString*) Scopy();
- [token release]; // expected-warning {{object that is not owned}}
-}
-
-//===----------------------------------------------------------------------===//
-// Test handling of template functions used to do magic with
-// tracked retained pointers.
-//===----------------------------------------------------------------------===//
-
-template <typename T, typename U> T static_objc_cast(U* value)
-{
- // ...debugging code omitted...
- return static_cast<T>(value);
-}
-
-int rdar10553686(void)
-{
- NSObject* bar = static_objc_cast<NSObject*>([[NSObject alloc] init]);
- [bar release];
- return 0;
-}
-int rdar10553686_positive(void)
-{
- NSObject* bar = static_objc_cast<NSObject*>([[NSObject alloc] init]);
- [bar release];
- [bar retain]; // expected-warning {{used after it is released}}
- return 0;
-}
-
-@interface NSMapTable : NSObject <NSCopying, NSCoding, NSFastEnumeration>
-@end
-extern void *NSMapGet(NSMapTable *table, const void *key);
-extern void NSMapInsert(NSMapTable *table, const void *key, const void *value);
-extern void NSMapInsertKnownAbsent(NSMapTable *table, const void *key, const void *value);
-char *strdup(const char *s);
-
-NSString * radar11152419(NSString *string1, NSString *key1, NSMapTable *map) {
- NSString *string = ( NSString *)NSMapGet(map, key1);
- if (!string) {
- string = [string1 copy];
- NSString *key = [key1 copy];
- NSMapInsert(map, (void*) key, (void*)string); // no warning
- NSMapInsertKnownAbsent(map, (void*)key, (void*)string); // no warning
- }
- return string;
-}
-
-//===----------------------------------------------------------------------===//
-// Don't crash on non-member functions with "callbacks" but without names.
-//===----------------------------------------------------------------------===//
-
-struct IntWrapper {
- int arg;
-};
-
-int operator>> (const IntWrapper &W, int (*f)(int)) {
- return f(W.arg);
-}
-
-void testCallback() {
- IntWrapper val = { 42 };
-
- extern int process(int);
- val >> process;
-}
-
-//===----------------------------------------------------------------------===//
-// Test handling static initializers.
-//===----------------------------------------------------------------------===//
-
-@interface radar13227740 : NSObject
-@end
-
-@implementation radar13227740
-- (CFArrayRef)test {
- static CFArrayRef array = ::CFArrayCreate(0, 0, 0, 0);
- do { if (!((0 != array)/1)) { abort(); } } while (false);
- return array;
-}
-
-// Previously this reported a bogus leak.
-- (void)test2 {
- (void)[self test];
- (void)[self test];
-}
-@end
-
-//===----------------------------------------------------------------------===//
-// Don't crash on getting a null expression from CallEnter corresponding to a
-// destructor.
-//===----------------------------------------------------------------------===//
-
-template <typename X>
-class Holder {
-public:
- Holder() throw();
- ~Holder() throw() {}
- X* get() const throw();
- void reset(X* p) throw();
-private:
- X* ptr_;
-};
-
-template<typename X>
-inline
-Holder<X>::Holder() throw()
-: ptr_(0){}
-
-template <typename X>
-inline
-X* Holder<X>::get() const throw() {
- return ptr_;
-}
-
-template <typename X>
-inline
-void Holder<X>::reset(X* p) throw() {
- if (ptr_ != p) {
- if (ptr_ != 0) {
- ::CFRelease( ptr_ );
- }
- ptr_ = p;
- }
-}
-
-class radar13722286 {
-public:
- radar13722286() {}
-private:
- void PrepareBitmap();
- Holder<const struct __CFString> mStr;
-};
-
-void radar13722286::PrepareBitmap() {
- if (mStr.get() != 0) {
- Holder<const struct __CFString> str1;
- mStr.reset( CFStringCreateCopy( 0, str1.get() ) ); //expected-warning {{Potential leak of an object}}
- }
-}
-
-// rdar://34210609
-void _() { _(); }; // no-warning
-
-// Do not assume that IOBSDNameMatching increments a reference counter,
-// unless return type is CFMutableDictionaryRef.
-void* IOBSDNameMatching();
-void rdar33832412() {
- void* x = IOBSDNameMatching(); // no-warning
-}
-
-
-namespace member_CFRetains {
-class Foo {
-public:
- void CFRetain(const Foo &) {}
- void CFRetain(int) {}
-};
-
-void bar() {
- Foo foo;
- foo.CFRetain(foo); // no-warning
- foo.CFRetain(0); // no-warning
-}
-}
diff --git a/test/Analysis/retaincountchecker-compoundregion.m b/test/Analysis/retaincountchecker-compoundregion.m
deleted file mode 100644
index 83857e268d98..000000000000
--- a/test/Analysis/retaincountchecker-compoundregion.m
+++ /dev/null
@@ -1,25 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx -fblocks -verify -Wno-objc-root-class %s
-typedef const void *CFTypeRef;
-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 const struct __CFAllocator * CFAllocatorRef;
-typedef signed long CFIndex;
-typedef CFIndex CFNumberType;
-typedef const struct __CFNumber * CFNumberRef;
-extern CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-
-void foo(CFAllocatorRef allocator) {
- int width = 0;
- int height = 0;
- CFTypeRef* values = (CFTypeRef[]){
- CFNumberCreate(allocator, kCFNumberSInt32Type, &width), //expected-warning{{Potential leak of an object of type 'CFNumberRef'}}
- CFNumberCreate(allocator, kCFNumberSInt32Type, &height), //expected-warning{{Potential leak of an object of type 'CFNumberRef'}}
- };
-}
diff --git a/test/Analysis/return-ptr-range.cpp b/test/Analysis/return-ptr-range.cpp
deleted file mode 100644
index dd5dcd5d5d19..000000000000
--- a/test/Analysis/return-ptr-range.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.security.ReturnPtrRange -verify %s
-
-int arr[10];
-int *ptr;
-
-int conjure_index();
-
-int *test_element_index_lifetime() {
- do {
- int x = conjure_index();
- ptr = arr + x;
- if (x != 20)
- return arr; // no-warning
- } while (0);
- return ptr; // expected-warning{{Returned pointer value points outside the original object (potential buffer overflow)}}
-}
-
-int *test_element_index_lifetime_with_local_ptr() {
- int *local_ptr;
- do {
- int x = conjure_index();
- local_ptr = arr + x;
- if (x != 20)
- return arr; // no-warning
- } while (0);
- return local_ptr; // expected-warning{{Returned pointer value points outside the original object (potential buffer overflow)}}
-}
diff --git a/test/Analysis/return-stmt-merge.cpp b/test/Analysis/return-stmt-merge.cpp
deleted file mode 100644
index a6bacc514575..000000000000
--- a/test/Analysis/return-stmt-merge.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.AnalysisOrder,debug.ExprInspection -analyzer-config debug.AnalysisOrder:PreCall=true,debug.AnalysisOrder:PostCall=true,debug.AnalysisOrder:LiveSymbols=true %s 2>&1 | FileCheck %s
-
-// This test ensures that check::LiveSymbols is called as many times on the
-// path through the second "return" as it is through the first "return"
-// (three), and therefore the two paths were not merged prematurely before the
-// respective return statement is evaluated.
-// The paths would still be merged later, so we'd have only one post-call for
-// foo(), but it is incorrect to merge them in the middle of evaluating two
-// different statements.
-int coin();
-
-void foo() {
- int x = coin();
- if (x > 0)
- return;
- else
- return;
-}
-
-void bar() {
- foo();
-}
-
-// CHECK: LiveSymbols
-// CHECK-NEXT: LiveSymbols
-// CHECK-NEXT: PreCall (foo)
-// CHECK-NEXT: LiveSymbols
-// CHECK-NEXT: LiveSymbols
-// CHECK-NEXT: PreCall (coin)
-// CHECK-NEXT: PostCall (coin)
-// CHECK-NEXT: LiveSymbols
-// CHECK-NEXT: LiveSymbols
-// CHECK-NEXT: LiveSymbols
-// CHECK-NEXT: PostCall (foo)
-// CHECK-NEXT: LiveSymbols
-// CHECK-NEXT: LiveSymbols
-// CHECK-NEXT: LiveSymbols
diff --git a/test/Analysis/scopes-cfg-output.cpp b/test/Analysis/scopes-cfg-output.cpp
deleted file mode 100644
index f8d84b60deb1..000000000000
--- a/test/Analysis/scopes-cfg-output.cpp
+++ /dev/null
@@ -1,1170 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -analyze -analyzer-checker=debug.DumpCFG -analyzer-config cfg-scopes=true %s > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-
-class A {
-public:
-// CHECK: [B1 (ENTRY)]
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
- A() {}
-
-// CHECK: [B1 (ENTRY)]
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
- ~A() {}
-
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: 1
-// CHECK-NEXT: 2: return [B1.1];
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
- operator int() const { return 1; }
-};
-
-int getX();
-extern const bool UV;
-
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: CFGScopeBegin(a)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B1.3], class A [2])
-// CHECK-NEXT: 3: A a[2];
-// CHECK-NEXT: 4: (CXXConstructExpr, [B1.5], class A [0])
-// CHECK-NEXT: 5: A b[0];
-// CHECK-NEXT: 6: [B1.3].~A() (Implicit destructor)
-// CHECK-NEXT: 7: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_array() {
- A a[2];
- A b[0];
-}
-
-// CHECK: [B2 (ENTRY)]
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK-NEXT: 1: CFGScopeBegin(a)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B1.3], class A)
-// CHECK-NEXT: 3: A a;
-// CHECK-NEXT: 4: CFGScopeBegin(c)
-// CHECK-NEXT: 5: (CXXConstructExpr, [B1.6], class A)
-// CHECK-NEXT: 6: A c;
-// CHECK-NEXT: 7: (CXXConstructExpr, [B1.8], class A)
-// CHECK-NEXT: 8: A d;
-// CHECK-NEXT: 9: [B1.8].~A() (Implicit destructor)
-// CHECK-NEXT: 10: [B1.6].~A() (Implicit destructor)
-// CHECK-NEXT: 11: CFGScopeEnd(c)
-// CHECK-NEXT: 12: (CXXConstructExpr, [B1.13], class A)
-// CHECK-NEXT: 13: A b;
-// CHECK-NEXT: 14: [B1.13].~A() (Implicit destructor)
-// CHECK-NEXT: 15: [B1.3].~A() (Implicit destructor)
-// CHECK-NEXT: 16: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_scope() {
- A a;
- { A c;
- A d;
- }
- A b;
-}
-
-// CHECK: [B4 (ENTRY)]
-// CHECK-NEXT: Succs (1): B3
-// CHECK: [B1]
-// CHECK-NEXT: 1: (CXXConstructExpr, [B1.2], class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B1.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B3.5].~A() (Implicit destructor)
-// CHECK-NEXT: 5: [B3.3].~A() (Implicit destructor)
-// CHECK-NEXT: 6: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B3.5].~A() (Implicit destructor)
-// CHECK-NEXT: 3: [B3.3].~A() (Implicit destructor)
-// CHECK-NEXT: 4: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B3]
-// CHECK-NEXT: 1: CFGScopeBegin(a)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B3.3], class A)
-// CHECK-NEXT: 3: A a;
-// CHECK-NEXT: 4: (CXXConstructExpr, [B3.5], class A)
-// CHECK-NEXT: 5: A b;
-// CHECK-NEXT: 6: UV
-// CHECK-NEXT: 7: [B3.6] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B3.7]
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (2): B2 B1
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (2): B1 B2
-void test_return() {
- A a;
- A b;
- if (UV) return;
- A c;
-}
-
-// CHECK: [B5 (ENTRY)]
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B4.8].~A() (Implicit destructor)
-// CHECK-NEXT: 2: CFGScopeEnd(b)
-// CHECK-NEXT: 3: [B4.3].~A() (Implicit destructor)
-// CHECK-NEXT: 4: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (2): B2 B3
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: CFGScopeBegin(c)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B2.3], class A)
-// CHECK-NEXT: 3: A c;
-// CHECK-NEXT: 4: [B2.3].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(c)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B3]
-// CHECK-NEXT: 1: CFGScopeBegin(c)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B3.3], class A)
-// CHECK-NEXT: 3: A c;
-// CHECK-NEXT: 4: [B3.3].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(c)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B4]
-// CHECK-NEXT: 1: CFGScopeBegin(a)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B4.3], class A)
-// CHECK-NEXT: 3: A a;
-// CHECK-NEXT: 4: CFGScopeBegin(b)
-// CHECK-NEXT: 5: a
-// CHECK-NEXT: 6: [B4.5] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 7: [B4.6] (CXXConstructExpr, [B4.8], class A)
-// CHECK-NEXT: 8: A b = a;
-// CHECK-NEXT: 9: b
-// CHECK-NEXT: 10: [B4.9] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 11: [B4.10].operator int
-// CHECK-NEXT: 12: [B4.10]
-// CHECK-NEXT: 13: [B4.12] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK-NEXT: 14: [B4.13] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: if [B4.14]
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (2): B3 B2
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_if_implicit_scope() {
- A a;
- if (A b = a)
- A c;
- else A c;
-}
-
-// CHECK: [B9 (ENTRY)]
-// CHECK-NEXT: Succs (1): B8
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B8.8].~A() (Implicit destructor)
-// CHECK-NEXT: 2: CFGScopeEnd(b)
-// CHECK-NEXT: 3: (CXXConstructExpr, [B1.4], class A)
-// CHECK-NEXT: 4: A e;
-// CHECK-NEXT: 5: [B1.4].~A() (Implicit destructor)
-// CHECK-NEXT: 6: [B8.3].~A() (Implicit destructor)
-// CHECK-NEXT: 7: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (2): B2 B5
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: (CXXConstructExpr, [B2.2], class A)
-// CHECK-NEXT: 2: A d;
-// CHECK-NEXT: 3: [B2.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B4.3].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(c)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B3]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B4.3].~A() (Implicit destructor)
-// CHECK-NEXT: 3: CFGScopeEnd(c)
-// CHECK-NEXT: 4: [B8.8].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(b)
-// CHECK-NEXT: 6: [B8.3].~A() (Implicit destructor)
-// CHECK-NEXT: 7: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B4]
-// CHECK-NEXT: 1: CFGScopeBegin(c)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B4.3], class A)
-// CHECK-NEXT: 3: A c;
-// CHECK-NEXT: 4: UV
-// CHECK-NEXT: 5: [B4.4] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B4.5]
-// CHECK-NEXT: Preds (1): B8
-// CHECK-NEXT: Succs (2): B3 B2
-// CHECK: [B5]
-// CHECK-NEXT: 1: (CXXConstructExpr, [B5.2], class A)
-// CHECK-NEXT: 2: A d;
-// CHECK-NEXT: 3: [B5.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B7.3].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(c)
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B6]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B7.3].~A() (Implicit destructor)
-// CHECK-NEXT: 3: CFGScopeEnd(c)
-// CHECK-NEXT: 4: [B8.8].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(b)
-// CHECK-NEXT: 6: [B8.3].~A() (Implicit destructor)
-// CHECK-NEXT: 7: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B7]
-// CHECK-NEXT: 1: CFGScopeBegin(c)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B7.3], class A)
-// CHECK-NEXT: 3: A c;
-// CHECK-NEXT: 4: UV
-// CHECK-NEXT: 5: [B7.4] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B7.5]
-// CHECK-NEXT: Preds (1): B8
-// CHECK-NEXT: Succs (2): B6 B5
-// CHECK: [B8]
-// CHECK-NEXT: 1: CFGScopeBegin(a)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B8.3], class A)
-// CHECK-NEXT: 3: A a;
-// CHECK-NEXT: 4: CFGScopeBegin(b)
-// CHECK-NEXT: 5: a
-// CHECK-NEXT: 6: [B8.5] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 7: [B8.6] (CXXConstructExpr, [B8.8], class A)
-// CHECK-NEXT: 8: A b = a;
-// CHECK-NEXT: 9: b
-// CHECK-NEXT: 10: [B8.9] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 11: [B8.10].operator int
-// CHECK-NEXT: 12: [B8.10]
-// CHECK-NEXT: 13: [B8.12] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK-NEXT: 14: [B8.13] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: if [B8.14]
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (2): B7 B4
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (3): B1 B3 B6
-void test_if_jumps() {
- A a;
- if (A b = a) {
- A c;
- if (UV) return;
- A d;
- } else {
- A c;
- if (UV) return;
- A d;
- }
- A e;
-}
-
-// CHECK: [B6 (ENTRY)]
-// CHECK-NEXT: Succs (1): B5
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B4.5].~A() (Implicit destructor)
-// CHECK-NEXT: 2: CFGScopeEnd(b)
-// CHECK-NEXT: 3: [B5.3].~A() (Implicit destructor)
-// CHECK-NEXT: 4: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B3]
-// CHECK-NEXT: 1: CFGScopeBegin(c)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B3.3], class A)
-// CHECK-NEXT: 3: A c;
-// CHECK-NEXT: 4: [B3.3].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(c)
-// CHECK-NEXT: 6: [B4.5].~A() (Implicit destructor)
-// CHECK-NEXT: 7: CFGScopeEnd(b)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: CFGScopeBegin(b)
-// CHECK-NEXT: 2: a
-// CHECK-NEXT: 3: [B4.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 4: [B4.3] (CXXConstructExpr, [B4.5], class A)
-// CHECK-NEXT: 5: A b = a;
-// CHECK-NEXT: 6: b
-// CHECK-NEXT: 7: [B4.6] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 8: [B4.7].operator int
-// CHECK-NEXT: 9: [B4.7]
-// CHECK-NEXT: 10: [B4.9] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK-NEXT: 11: [B4.10] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: while [B4.11]
-// CHECK-NEXT: Preds (2): B2 B5
-// CHECK-NEXT: Succs (2): B3 B1
-// CHECK: [B5]
-// CHECK-NEXT: 1: CFGScopeBegin(a)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B5.3], class A)
-// CHECK-NEXT: 3: A a;
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_while_implicit_scope() {
- A a;
- while (A b = a)
- A c;
-}
-
-// CHECK: [B12 (ENTRY)]
-// CHECK-NEXT: Succs (1): B11
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B10.5].~A() (Implicit destructor)
-// CHECK-NEXT: 2: CFGScopeEnd(b)
-// CHECK-NEXT: 3: (CXXConstructExpr, [B1.4], class A)
-// CHECK-NEXT: 4: A e;
-// CHECK-NEXT: 5: [B1.4].~A() (Implicit destructor)
-// CHECK-NEXT: 6: [B11.3].~A() (Implicit destructor)
-// CHECK-NEXT: 7: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (2): B8 B10
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: Preds (2): B3 B6
-// CHECK-NEXT: Succs (1): B10
-// CHECK: [B3]
-// CHECK-NEXT: 1: (CXXConstructExpr, [B3.2], class A)
-// CHECK-NEXT: 2: A d;
-// CHECK-NEXT: 3: [B3.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B9.3].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(c)
-// CHECK-NEXT: 6: [B10.5].~A() (Implicit destructor)
-// CHECK-NEXT: 7: CFGScopeEnd(b)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B9.3].~A() (Implicit destructor)
-// CHECK-NEXT: 3: CFGScopeEnd(c)
-// CHECK-NEXT: 4: [B10.5].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(b)
-// CHECK-NEXT: 6: [B11.3].~A() (Implicit destructor)
-// CHECK-NEXT: 7: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B5]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B5.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B5.2]
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (2): B4 B3
-// CHECK: [B6]
-// CHECK-NEXT: 1: [B9.3].~A() (Implicit destructor)
-// CHECK-NEXT: 2: CFGScopeEnd(c)
-// CHECK-NEXT: 3: [B10.5].~A() (Implicit destructor)
-// CHECK-NEXT: 4: CFGScopeEnd(b)
-// CHECK-NEXT: T: continue;
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B7]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B7.2]
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (2): B6 B5
-// CHECK: [B8]
-// CHECK-NEXT: 1: [B9.3].~A() (Implicit destructor)
-// CHECK-NEXT: 2: CFGScopeEnd(c)
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B9]
-// CHECK-NEXT: 1: CFGScopeBegin(c)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B9.3], class A)
-// CHECK-NEXT: 3: A c;
-// CHECK-NEXT: 4: UV
-// CHECK-NEXT: 5: [B9.4] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B9.5]
-// CHECK-NEXT: Preds (1): B10
-// CHECK-NEXT: Succs (2): B8 B7
-// CHECK: [B10]
-// CHECK-NEXT: 1: CFGScopeBegin(b)
-// CHECK-NEXT: 2: a
-// CHECK-NEXT: 3: [B10.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 4: [B10.3] (CXXConstructExpr, [B10.5], class A)
-// CHECK-NEXT: 5: A b = a;
-// CHECK-NEXT: 6: b
-// CHECK-NEXT: 7: [B10.6] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 8: [B10.7].operator int
-// CHECK-NEXT: 9: [B10.7]
-// CHECK-NEXT: 10: [B10.9] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK-NEXT: 11: [B10.10] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: while [B10.11]
-// CHECK-NEXT: Preds (2): B2 B11
-// CHECK-NEXT: Succs (2): B9 B1
-// CHECK: [B11]
-// CHECK-NEXT: 1: CFGScopeBegin(a)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B11.3], class A)
-// CHECK-NEXT: 3: A a;
-// CHECK-NEXT: Preds (1): B12
-// CHECK-NEXT: Succs (1): B10
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (2): B1 B4
-void test_while_jumps() {
- A a;
- while (A b = a) {
- A c;
- if (UV) break;
- if (UV) continue;
- if (UV) return;
- A d;
- }
- A e;
-}
-
-// CHECK: [B12 (ENTRY)]
-// CHECK-NEXT: Succs (1): B11
-// CHECK: [B1]
-// CHECK-NEXT: 1: (CXXConstructExpr, [B1.2], class A)
-// CHECK-NEXT: 2: A d;
-// CHECK-NEXT: 3: [B1.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B11.3].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (2): B8 B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B2.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: do ... while [B2.2]
-// CHECK-NEXT: Preds (2): B3 B6
-// CHECK-NEXT: Succs (2): B10 B1
-// CHECK: [B3]
-// CHECK-NEXT: 1: (CXXConstructExpr, [B3.2], class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B3.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B9.3].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(b)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B9.3].~A() (Implicit destructor)
-// CHECK-NEXT: 3: CFGScopeEnd(b)
-// CHECK-NEXT: 4: [B11.3].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B5]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B5.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B5.2]
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (2): B4 B3
-// CHECK: [B6]
-// CHECK-NEXT: 1: [B9.3].~A() (Implicit destructor)
-// CHECK-NEXT: 2: CFGScopeEnd(b)
-// CHECK-NEXT: T: continue;
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B7]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B7.2]
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (2): B6 B5
-// CHECK: [B8]
-// CHECK-NEXT: 1: [B9.3].~A() (Implicit destructor)
-// CHECK-NEXT: 2: CFGScopeEnd(b)
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B9]
-// CHECK-NEXT: 1: CFGScopeBegin(b)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B9.3], class A)
-// CHECK-NEXT: 3: A b;
-// CHECK-NEXT: 4: UV
-// CHECK-NEXT: 5: [B9.4] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B9.5]
-// CHECK-NEXT: Preds (2): B10 B11
-// CHECK-NEXT: Succs (2): B8 B7
-// CHECK: [B10]
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B9
-// CHECK: [B11]
-// CHECK-NEXT: 1: CFGScopeBegin(a)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B11.3], class A)
-// CHECK-NEXT: 3: A a;
-// CHECK-NEXT: Preds (1): B12
-// CHECK-NEXT: Succs (1): B9
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (2): B1 B4
-void test_do_jumps() {
- A a;
- do {
- A b;
- if (UV) break;
- if (UV) continue;
- if (UV) return;
- A c;
- } while (UV);
- A d;
-}
-
-// CHECK: [B6 (ENTRY)]
-// CHECK-NEXT: Succs (1): B5
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B4.5].~A() (Implicit destructor)
-// CHECK-NEXT: 2: CFGScopeEnd(b)
-// CHECK-NEXT: 3: [B5.3].~A() (Implicit destructor)
-// CHECK-NEXT: 4: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B3]
-// CHECK-NEXT: 1: CFGScopeBegin(c)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B3.3], class A)
-// CHECK-NEXT: 3: A c;
-// CHECK-NEXT: 4: [B3.3].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(c)
-// CHECK-NEXT: 6: [B4.5].~A() (Implicit destructor)
-// CHECK-NEXT: 7: CFGScopeEnd(b)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: CFGScopeBegin(b)
-// CHECK-NEXT: 2: a
-// CHECK-NEXT: 3: [B4.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 4: [B4.3] (CXXConstructExpr, [B4.5], class A)
-// CHECK-NEXT: 5: A b = a;
-// CHECK-NEXT: 6: b
-// CHECK-NEXT: 7: [B4.6] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 8: [B4.7].operator int
-// CHECK-NEXT: 9: [B4.7]
-// CHECK-NEXT: 10: [B4.9] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK-NEXT: 11: [B4.10] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: for (...; [B4.11]; )
-// CHECK-NEXT: Preds (2): B2 B5
-// CHECK-NEXT: Succs (2): B3 B1
-// CHECK: [B5]
-// CHECK-NEXT: 1: CFGScopeBegin(a)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B5.3], class A)
-// CHECK-NEXT: 3: A a;
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_for_implicit_scope() {
- for (A a; A b = a; )
- A c;
-}
-
-// CHECK: [B12 (ENTRY)]
-// CHECK-NEXT: Succs (1): B11
-// CHECK: [B1]
-// CHECK-NEXT: 1: [B10.5].~A() (Implicit destructor)
-// CHECK-NEXT: 2: CFGScopeEnd(c)
-// CHECK-NEXT: 3: [B11.6].~A() (Implicit destructor)
-// CHECK-NEXT: 4: CFGScopeEnd(b)
-// CHECK-NEXT: 5: (CXXConstructExpr, [B1.6], class A)
-// CHECK-NEXT: 6: A f;
-// CHECK-NEXT: 7: [B1.6].~A() (Implicit destructor)
-// CHECK-NEXT: 8: [B11.3].~A() (Implicit destructor)
-// CHECK-NEXT: 9: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (2): B8 B10
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: Preds (2): B3 B6
-// CHECK-NEXT: Succs (1): B10
-// CHECK: [B3]
-// CHECK-NEXT: 1: (CXXConstructExpr, [B3.2], class A)
-// CHECK-NEXT: 2: A e;
-// CHECK-NEXT: 3: [B3.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B9.3].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(d)
-// CHECK-NEXT: 6: [B10.5].~A() (Implicit destructor)
-// CHECK-NEXT: 7: CFGScopeEnd(c)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: return;
-// CHECK-NEXT: 2: [B9.3].~A() (Implicit destructor)
-// CHECK-NEXT: 3: CFGScopeEnd(d)
-// CHECK-NEXT: 4: [B10.5].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(c)
-// CHECK-NEXT: 6: [B11.6].~A() (Implicit destructor)
-// CHECK-NEXT: 7: CFGScopeEnd(b)
-// CHECK-NEXT: 8: [B11.3].~A() (Implicit destructor)
-// CHECK-NEXT: 9: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B5]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B5.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B5.2]
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (2): B4 B3
-// CHECK: [B6]
-// CHECK-NEXT: 1: [B9.3].~A() (Implicit destructor)
-// CHECK-NEXT: 2: CFGScopeEnd(d)
-// CHECK-NEXT: T: continue;
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B7]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B7.2]
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (2): B6 B5
-// CHECK: [B8]
-// CHECK-NEXT: 1: [B9.3].~A() (Implicit destructor)
-// CHECK-NEXT: 2: CFGScopeEnd(d)
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B9
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B9]
-// CHECK-NEXT: 1: CFGScopeBegin(d)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B9.3], class A)
-// CHECK-NEXT: 3: A d;
-// CHECK-NEXT: 4: UV
-// CHECK-NEXT: 5: [B9.4] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B9.5]
-// CHECK-NEXT: Preds (1): B10
-// CHECK-NEXT: Succs (2): B8 B7
-// CHECK: [B10]
-// CHECK-NEXT: 1: CFGScopeBegin(c)
-// CHECK-NEXT: 2: b
-// CHECK-NEXT: 3: [B10.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 4: [B10.3] (CXXConstructExpr, [B10.5], class A)
-// CHECK-NEXT: 5: A c = b;
-// CHECK-NEXT: 6: c
-// CHECK-NEXT: 7: [B10.6] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 8: [B10.7].operator int
-// CHECK-NEXT: 9: [B10.7]
-// CHECK-NEXT: 10: [B10.9] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK-NEXT: 11: [B10.10] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT: T: for (...; [B10.11]; )
-// CHECK-NEXT: Preds (2): B2 B11
-// CHECK-NEXT: Succs (2): B9 B1
-// CHECK: [B11]
-// CHECK-NEXT: 1: CFGScopeBegin(a)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B11.3], class A)
-// CHECK-NEXT: 3: A a;
-// CHECK-NEXT: 4: CFGScopeBegin(b)
-// CHECK-NEXT: 5: (CXXConstructExpr, [B11.6], class A)
-// CHECK-NEXT: 6: A b;
-// CHECK-NEXT: Preds (1): B12
-// CHECK-NEXT: Succs (1): B10
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (2): B1 B4
-void test_for_jumps() {
- A a;
- for (A b; A c = b; ) {
- A d;
- if (UV) break;
- if (UV) continue;
- if (UV) return;
- A e;
- }
- A f;
-}
-
-// CHECK: [B8 (ENTRY)]
-// CHECK-NEXT: Succs (1): B7
-// CHECK: [B1]
-// CHECK-NEXT: l1:
-// CHECK-NEXT: 1: (CXXConstructExpr, [B1.2], class A)
-// CHECK-NEXT: 2: A c;
-// CHECK-NEXT: 3: [B1.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B6.5].~A() (Implicit destructor)
-// CHECK-NEXT: 5: [B6.3].~A() (Implicit destructor)
-// CHECK-NEXT: 6: [B7.3].~A() (Implicit destructor)
-// CHECK-NEXT: 7: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (2): B2 B3
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: (CXXConstructExpr, [B2.2], class A)
-// CHECK-NEXT: 2: A b;
-// CHECK-NEXT: 3: [B2.2].~A() (Implicit destructor)
-// CHECK-NEXT: 4: [B6.8].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B3]
-// CHECK-NEXT: 1: [B6.8].~A() (Implicit destructor)
-// CHECK-NEXT: 2: CFGScopeEnd(a)
-// CHECK-NEXT: T: goto l1;
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B4]
-// CHECK-NEXT: 1: UV
-// CHECK-NEXT: 2: [B4.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B4.2]
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (2): B3 B2
-// CHECK: [B5]
-// CHECK-NEXT: 1: [B6.8].~A() (Implicit destructor)
-// CHECK-NEXT: 2: [B6.5].~A() (Implicit destructor)
-// CHECK-NEXT: 3: [B6.3].~A() (Implicit destructor)
-// CHECK-NEXT: 4: CFGScopeEnd(cb)
-// CHECK-NEXT: T: goto l0;
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (1): B6
-// CHECK: [B6]
-// CHECK-NEXT: l0:
-// CHECK-NEXT: 1: CFGScopeBegin(cb)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B6.3], class A)
-// CHECK-NEXT: 3: A cb;
-// CHECK-NEXT: 4: (CXXConstructExpr, [B6.5], class A)
-// CHECK-NEXT: 5: A b;
-// CHECK-NEXT: 6: CFGScopeBegin(a)
-// CHECK-NEXT: 7: (CXXConstructExpr, [B6.8], class A)
-// CHECK-NEXT: 8: A a;
-// CHECK-NEXT: 9: UV
-// CHECK-NEXT: 10: [B6.9] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK-NEXT: T: if [B6.10]
-// CHECK-NEXT: Preds (2): B7 B5
-// CHECK-NEXT: Succs (2): B5 B4
-// CHECK: [B7]
-// CHECK-NEXT: 1: CFGScopeBegin(a)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B7.3], class A)
-// CHECK-NEXT: 3: A a;
-// CHECK-NEXT: Preds (1): B8
-// CHECK-NEXT: Succs (1): B6
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_goto() {
- A a;
-l0:
- A cb;
- A b;
- { A a;
- if (UV) goto l0;
- if (UV) goto l1;
- A b;
- }
-l1:
- A c;
-}
-
-// CHECK: [B7 (ENTRY)]
-// CHECK-NEXT: Succs (1): B6
-// CHECK: [B1]
-// CHECK-NEXT: 1: CFGScopeEnd(i)
-// CHECK-NEXT: 2: CFGScopeBegin(unused2)
-// CHECK-NEXT: 3: int unused2;
-// CHECK-NEXT: 4: CFGScopeEnd(unused2)
-// CHECK-NEXT: Preds (2): B4 B5
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: ++[B2.1]
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B5
-// CHECK: [B3]
-// CHECK-NEXT: 1: CFGScopeEnd(unused1)
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: CFGScopeBegin(unused1)
-// CHECK-NEXT: 2: int unused1;
-// CHECK-NEXT: 3: CFGScopeEnd(unused1)
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B5]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: [B5.1] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: 3: 3
-// CHECK-NEXT: 4: [B5.2] < [B5.3]
-// CHECK-NEXT: T: for (...; [B5.4]; ...)
-// CHECK-NEXT: Preds (2): B2 B6
-// CHECK-NEXT: Succs (2): B4 B1
-// CHECK: [B6]
-// CHECK-NEXT: 1: CFGScopeBegin(i)
-// CHECK-NEXT: 2: 0
-// CHECK-NEXT: 3: int i = 0;
-// CHECK-NEXT: Preds (1): B7
-// CHECK-NEXT: Succs (1): B5
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_for_compound_and_break() {
- for (int i = 0; i < 3; ++i) {
- {
- int unused1;
- break;
- }
- }
- {
- int unused2;
- }
-}
-
-// CHECK: [B6 (ENTRY)]
-// CHECK-NEXT: Succs (1): B5
-// CHECK: [B1]
-// CHECK-NEXT: 1: CFGScopeEnd(__end1)
-// CHECK-NEXT: 2: CFGScopeEnd(__begin1)
-// CHECK-NEXT: 3: CFGScopeEnd(__range1)
-// CHECK-NEXT: 4: [B5.3].~A() (Implicit destructor)
-// CHECK-NEXT: 5: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: __begin1
-// CHECK-NEXT: 2: [B2.1] (ImplicitCastExpr, LValueToRValue, class A *)
-// CHECK-NEXT: 3: __end1
-// CHECK-NEXT: 4: [B2.3] (ImplicitCastExpr, LValueToRValue, class A *)
-// CHECK-NEXT: 5: [B2.2] != [B2.4]
-// CHECK-NEXT: T: for (auto &i : [B5.4])
-// CHECK: [B4.11];
-// CHECK: Preds (2): B3 B5
-// CHECK-NEXT: Succs (2): B4 B1
-// CHECK: [B3]
-// CHECK-NEXT: 1: __begin1
-// CHECK-NEXT: 2: ++[B3.1]
-// CHECK-NEXT: Preds (1): B4
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: CFGScopeBegin(i)
-// CHECK-NEXT: 2: __begin1
-// CHECK-NEXT: 3: [B4.2] (ImplicitCastExpr, LValueToRValue, class A *)
-// CHECK-NEXT: 4: *[B4.3]
-// CHECK-NEXT: 5: auto &i = *__begin1;
-// CHECK-NEXT: 6: operator=
-// CHECK-NEXT: 7: [B4.6] (ImplicitCastExpr, FunctionToPointerDecay, class A &(*)(const class A &)
-// CHECK-NEXT: 8: i
-// CHECK-NEXT: 9: b
-// CHECK-NEXT: 10: [B4.9] (ImplicitCastExpr, NoOp, const class A)
-// CHECK-NEXT: 11: [B4.8] = [B4.10] (OperatorCall)
-// CHECK-NEXT: 12: CFGScopeEnd(i)
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B3
-// CHECK: [B5]
-// CHECK-NEXT: 1: CFGScopeBegin(a)
-// CHECK-NEXT: 2: (CXXConstructExpr, [B5.3], class A [10])
-// CHECK-NEXT: 3: A a[10];
-// CHECK-NEXT: 4: a
-// CHECK-NEXT: 5: auto &&__range1 = a;
-// CHECK-NEXT: 6: CFGScopeBegin(__end1)
-// CHECK-NEXT: 7: __range1
-// CHECK-NEXT: 8: [B5.7] (ImplicitCastExpr, ArrayToPointerDecay, class A *)
-// CHECK-NEXT: 9: 10
-// CHECK-NEXT: 10: [B5.8] + [B5.9]
-// CHECK-NEXT: 11: auto __end1 = __range1 + 10
-// CHECK-NEXT: 12: __range1
-// CHECK-NEXT: 13: [B5.12] (ImplicitCastExpr, ArrayToPointerDecay, class A *)
-// CHECK-NEXT: 14: auto __begin1 = __range1;
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_range_for(A &b) {
- A a[10];
- for (auto &i : a)
- i = b;
-}
-
-// CHECK: [B8 (ENTRY)]
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B1]
-// CHECK-NEXT: 1: CFGScopeEnd(i)
-// CHECK-NEXT: 2: 1
-// CHECK-NEXT: 3: int k = 1;
-// CHECK-NEXT: 4: CFGScopeEnd(c)
-// CHECK-NEXT: Preds (3): B3 B5 B6
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: CFGScopeBegin(c)
-// CHECK-NEXT: 2: '1'
-// CHECK-NEXT: 3: char c = '1';
-// CHECK-NEXT: 4: CFGScopeBegin(i)
-// CHECK-NEXT: 5: getX
-// CHECK-NEXT: 6: [B2.5] (ImplicitCastExpr, FunctionToPointerDecay, int (*)(void))
-// CHECK-NEXT: 7: [B2.6]()
-// CHECK-NEXT: 8: int i = getX();
-// CHECK-NEXT: 9: i
-// CHECK-NEXT: 10: [B2.9] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: T: switch [B2.10]
-// CHECK-NEXT: Preds (1): B8
-// CHECK-NEXT: Succs (5): B4 B5 B6 B7 B3
-// CHECK: [B3]
-// CHECK-NEXT: default:
-// CHECK-NEXT: 1: CFGScopeBegin(a)
-// CHECK-NEXT: 2: 0
-// CHECK-NEXT: 3: int a = 0;
-// CHECK-NEXT: 4: i
-// CHECK-NEXT: 5: ++[B3.4]
-// CHECK-NEXT: 6: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (2): B4 B2
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B4]
-// CHECK-NEXT: case 3:
-// CHECK-NEXT: 1: '2'
-// CHECK-NEXT: 2: c
-// CHECK-NEXT: 3: [B4.2] = [B4.1]
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B3
-// CHECK: [B5]
-// CHECK-NEXT: case 2:
-// CHECK-NEXT: 1: '2'
-// CHECK-NEXT: 2: c
-// CHECK-NEXT: 3: [B5.2] = [B5.1]
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B6]
-// CHECK-NEXT: case 1:
-// CHECK-NEXT: 1: '3'
-// CHECK-NEXT: 2: c
-// CHECK-NEXT: 3: [B6.2] = [B6.1]
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (2): B2 B7
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B7]
-// CHECK-NEXT: case 0:
-// CHECK-NEXT: 1: '2'
-// CHECK-NEXT: 2: c
-// CHECK-NEXT: 3: [B7.2] = [B7.1]
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B6
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_switch_with_compound_with_default() {
- char c = '1';
- switch (int i = getX()) {
- case 0:
- c = '2';
- case 1:
- c = '3';
- break;
- case 2: {
- c = '2';
- break;
- }
- case 3:
- c = '2';
- default: {
- int a = 0;
- ++i;
- }
- }
- int k = 1;
-}
-
-// CHECK: [B6 (ENTRY)]
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B1]
-// CHECK-NEXT: 1: CFGScopeEnd(i)
-// CHECK-NEXT: 2: 3
-// CHECK-NEXT: 3: int k = 3;
-// CHECK-NEXT: 4: CFGScopeEnd(c)
-// CHECK-NEXT: Preds (3): B3 B4 B2
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: CFGScopeBegin(c)
-// CHECK-NEXT: 2: '1'
-// CHECK-NEXT: 3: char c = '1';
-// CHECK-NEXT: 4: CFGScopeBegin(i)
-// CHECK-NEXT: 5: getX
-// CHECK-NEXT: 6: [B2.5] (ImplicitCastExpr, FunctionToPointerDecay, int (*)(void))
-// CHECK-NEXT: 7: [B2.6]()
-// CHECK-NEXT: 8: int i = getX();
-// CHECK-NEXT: 9: i
-// CHECK-NEXT: 10: [B2.9] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: T: switch [B2.10]
-// CHECK-NEXT: Preds (1): B6
-// CHECK-NEXT: Succs (4): B3 B4 B5 B1
-// CHECK: [B3]
-// CHECK-NEXT: case 2:
-// CHECK-NEXT: 1: '3'
-// CHECK-NEXT: 2: c
-// CHECK-NEXT: 3: [B3.2] = [B3.1]
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B4]
-// CHECK-NEXT: case 1:
-// CHECK-NEXT: 1: '1'
-// CHECK-NEXT: 2: c
-// CHECK-NEXT: 3: [B4.2] = [B4.1]
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (2): B2 B5
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B5]
-// CHECK-NEXT: case 0:
-// CHECK-NEXT: 1: '2'
-// CHECK-NEXT: 2: c
-// CHECK-NEXT: 3: [B5.2] = [B5.1]
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-int test_switch_with_compound_without_default() {
- char c = '1';
- switch (int i = getX()) {
- case 0:
- c = '2';
- case 1:
- c = '1';
- break;
- case 2:
- c = '3';
- break;
- }
- int k = 3;
-}
-
-// CHECK: [B5 (ENTRY)]
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B1]
-// CHECK-NEXT: 1: CFGScopeEnd(i)
-// CHECK-NEXT: 2: 1
-// CHECK-NEXT: 3: int k = 1;
-// CHECK-NEXT: 4: CFGScopeEnd(s)
-// CHECK-NEXT: Preds (1): B3
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: CFGScopeBegin(s)
-// CHECK-NEXT: 2: '1'
-// CHECK-NEXT: 3: char s = '1';
-// CHECK-NEXT: 4: CFGScopeBegin(i)
-// CHECK-NEXT: 5: getX
-// CHECK-NEXT: 6: [B2.5] (ImplicitCastExpr, FunctionToPointerDecay, int (*)(void))
-// CHECK-NEXT: 7: [B2.6]()
-// CHECK-NEXT: 8: int i = getX();
-// CHECK-NEXT: 9: i
-// CHECK-NEXT: 10: [B2.9] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: T: switch [B2.10]
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (2): B4 B3
-// CHECK: [B3]
-// CHECK-NEXT: default:
-// CHECK-NEXT: 1: CFGScopeBegin(a)
-// CHECK-NEXT: 2: 0
-// CHECK-NEXT: 3: int a = 0;
-// CHECK-NEXT: 4: i
-// CHECK-NEXT: 5: ++[B3.4]
-// CHECK-NEXT: 6: CFGScopeEnd(a)
-// CHECK-NEXT: Preds (2): B4 B2
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B4]
-// CHECK-NEXT: case 0:
-// CHECK-NEXT: Preds (1): B2
-// CHECK-NEXT: Succs (1): B3
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_without_compound() {
- char s = '1';
- switch (int i = getX())
- case 0:
- default: {
- int a = 0;
- ++i;
- }
- int k = 1;
-}
-
-// CHECK: [B12 (ENTRY)]
-// CHECK-NEXT: Succs (1): B11
-// CHECK: [B1]
-// CHECK-NEXT: 1: CFGScopeEnd(i)
-// CHECK-NEXT: Preds (2): B4 B10
-// CHECK-NEXT: Succs (1): B0
-// CHECK: [B2]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: ++[B2.1]
-// CHECK-NEXT: Preds (2): B3 B7
-// CHECK-NEXT: Succs (1): B10
-// CHECK: [B3]
-// CHECK-NEXT: 1: CFGScopeEnd(z)
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B4]
-// CHECK-NEXT: 1: CFGScopeBegin(z)
-// CHECK-NEXT: 2: 5
-// CHECK-NEXT: 3: int z = 5;
-// CHECK-NEXT: 4: CFGScopeEnd(z)
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (2): B6 B8
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B5]
-// CHECK-NEXT: 1: x
-// CHECK-NEXT: 2: [B5.1] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: T: switch [B5.2]
-// CHECK-NEXT: Preds (1): B10
-// CHECK-NEXT: Succs (4): B7 B8 B9 B6
-// CHECK: [B6]
-// CHECK-NEXT: default:
-// CHECK-NEXT: 1: 3
-// CHECK-NEXT: 2: y
-// CHECK-NEXT: 3: [B6.2] = [B6.1]
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B7]
-// CHECK-NEXT: case 2:
-// CHECK-NEXT: 1: 4
-// CHECK-NEXT: 2: y
-// CHECK-NEXT: 3: [B7.2] = [B7.1]
-// CHECK-NEXT: T: continue;
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B2
-// CHECK: [B8]
-// CHECK-NEXT: case 1:
-// CHECK-NEXT: 1: 2
-// CHECK-NEXT: 2: y
-// CHECK-NEXT: 3: [B8.2] = [B8.1]
-// CHECK-NEXT: T: break;
-// CHECK-NEXT: Preds (2): B5 B9
-// CHECK-NEXT: Succs (1): B4
-// CHECK: [B9]
-// CHECK-NEXT: case 0:
-// CHECK-NEXT: 1: 1
-// CHECK-NEXT: 2: y
-// CHECK-NEXT: 3: [B9.2] = [B9.1]
-// CHECK-NEXT: Preds (1): B5
-// CHECK-NEXT: Succs (1): B8
-// CHECK: [B10]
-// CHECK-NEXT: 1: i
-// CHECK-NEXT: 2: [B10.1] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK-NEXT: 3: 1000
-// CHECK-NEXT: 4: [B10.2] < [B10.3]
-// CHECK-NEXT: T: for (...; [B10.4]; ...)
-// CHECK-NEXT: Preds (2): B2 B11
-// CHECK-NEXT: Succs (2): B5 B1
-// CHECK: [B11]
-// CHECK-NEXT: 1: CFGScopeBegin(i)
-// CHECK-NEXT: 2: int i;
-// CHECK-NEXT: 3: int x;
-// CHECK-NEXT: 4: int y;
-// CHECK-NEXT: 5: 0
-// CHECK-NEXT: 6: i
-// CHECK-NEXT: 7: [B11.6] = [B11.5]
-// CHECK-NEXT: Preds (1): B12
-// CHECK-NEXT: Succs (1): B10
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (1): B1
-void test_for_switch_in_for() {
- int i, x, y;
- for (i = 0; i < 1000; ++i) {
- switch (x) {
- case 0:
- y = 1;
- case 1:
- y = 2;
- break; // break from switch
- case 2:
- y = 4;
- continue; // continue in loop
- default:
- y = 3;
- }
- {
- int z = 5;
- break; // break from loop
- }
- }
-}
diff --git a/test/Analysis/security-syntax-checks-no-emit.c b/test/Analysis/security-syntax-checks-no-emit.c
deleted file mode 100644
index 29dd2017745e..000000000000
--- a/test/Analysis/security-syntax-checks-no-emit.c
+++ /dev/null
@@ -1,34 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i686-pc-linux-gnu -analyzer-checker=security.insecureAPI,security.FloatLoopCounter %s -verify
-// expected-no-diagnostics
-
-// This file complements 'security-syntax-checks.m', but tests that we omit
-// specific checks on platforms where they don't make sense.
-
-// Omit the 'rand' check since 'arc4random' is not available on Linux.
-int rand(void);
-double drand48(void);
-double erand48(unsigned short[3]);
-long jrand48(unsigned short[3]);
-void lcong48(unsigned short[7]);
-long lrand48(void);
-long mrand48(void);
-long nrand48(unsigned short[3]);
-long random(void);
-int rand_r(unsigned *);
-
-void test_rand()
-{
- unsigned short a[7];
- unsigned b;
-
- rand(); // no-warning
- drand48(); // no-warning
- erand48(a); // no-warning
- jrand48(a); // no-warning
- lcong48(a); // no-warning
- lrand48(); // no-warning
- mrand48(); // no-warning
- nrand48(a); // no-warning
- rand_r(&b); // no-warning
- random(); // no-warning
-}
diff --git a/test/Analysis/security-syntax-checks.m b/test/Analysis/security-syntax-checks.m
deleted file mode 100644
index 1fd00dffe4f8..000000000000
--- a/test/Analysis/security-syntax-checks.m
+++ /dev/null
@@ -1,240 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -analyzer-checker=security.insecureAPI,security.FloatLoopCounter %s -verify
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -DUSE_BUILTINS -analyzer-checker=security.insecureAPI,security.FloatLoopCounter %s -verify
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -DVARIANT -analyzer-checker=security.insecureAPI,security.FloatLoopCounter %s -verify
-// RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -DUSE_BUILTINS -DVARIANT -analyzer-checker=security.insecureAPI,security.FloatLoopCounter %s -verify
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-cloudabi -analyzer-checker=security.insecureAPI,security.FloatLoopCounter %s -verify
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-cloudabi -DUSE_BUILTINS -analyzer-checker=security.insecureAPI,security.FloatLoopCounter %s -verify
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-cloudabi -DVARIANT -analyzer-checker=security.insecureAPI,security.FloatLoopCounter %s -verify
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-cloudabi -DUSE_BUILTINS -DVARIANT -analyzer-checker=security.insecureAPI,security.FloatLoopCounter %s -verify
-
-#ifdef USE_BUILTINS
-# define BUILTIN(f) __builtin_ ## f
-#else /* USE_BUILTINS */
-# define BUILTIN(f) f
-#endif /* USE_BUILTINS */
-
-typedef typeof(sizeof(int)) size_t;
-
-
-// <rdar://problem/6336718> rule request: floating point used as loop
-// condition (FLP30-C, FLP-30-CPP)
-//
-// For reference: https://www.securecoding.cert.org/confluence/display/seccode/FLP30-C.+Do+not+use+floating+point+variables+as+loop+counters
-//
-void test_float_condition() {
- for (float x = 0.1f; x <= 1.0f; x += 0.1f) {} // expected-warning{{Variable 'x' with floating point type 'float'}}
- for (float x = 100000001.0f; x <= 100000010.0f; x += 1.0f) {} // expected-warning{{Variable 'x' with floating point type 'float'}}
- for (float x = 100000001.0f; x <= 100000010.0f; x++ ) {} // expected-warning{{Variable 'x' with floating point type 'float'}}
- for (double x = 100000001.0; x <= 100000010.0; x++ ) {} // expected-warning{{Variable 'x' with floating point type 'double'}}
- for (double x = 100000001.0; ((x)) <= 100000010.0; ((x))++ ) {} // expected-warning{{Variable 'x' with floating point type 'double'}}
-
- for (double x = 100000001.0; 100000010.0 >= x; x = x + 1.0 ) {} // expected-warning{{Variable 'x' with floating point type 'double'}}
-
- int i = 0;
- for (double x = 100000001.0; ((x)) <= 100000010.0; ((x))++, ++i ) {} // expected-warning{{Variable 'x' with floating point type 'double'}}
-
- typedef float FooType;
- for (FooType x = 100000001.0f; x <= 100000010.0f; x++ ) {} // expected-warning{{Variable 'x' with floating point type 'FooType'}}
-}
-
-// Obsolete function bcmp
-int bcmp(void *, void *, size_t);
-
-int test_bcmp(void *a, void *b, size_t n) {
- return bcmp(a, b, n); // expected-warning{{The bcmp() function is obsoleted by memcmp()}}
-}
-
-// Obsolete function bcopy
-void bcopy(void *, void *, size_t);
-
-void test_bcopy(void *a, void *b, size_t n) {
- bcopy(a, b, n); // expected-warning{{The bcopy() function is obsoleted by memcpy() or memmove(}}
-}
-
-// Obsolete function bzero
-void bzero(void *, size_t);
-
-void test_bzero(void *a, size_t n) {
- bzero(a, n); // expected-warning{{The bzero() function is obsoleted by memset()}}
-}
-
-// <rdar://problem/6335715> rule request: gets() buffer overflow
-// Part of recommendation: 300-BSI (buildsecurityin.us-cert.gov)
-char* gets(char *buf);
-
-void test_gets() {
- char buff[1024];
- gets(buff); // expected-warning{{Call to function 'gets' is extremely insecure as it can always result in a buffer overflow}}
-}
-
-int getpw(unsigned int uid, char *buf);
-
-void test_getpw() {
- char buff[1024];
- getpw(2, buff); // expected-warning{{The getpw() function is dangerous as it may overflow the provided buffer. It is obsoleted by getpwuid()}}
-}
-
-// <rdar://problem/6337132> CWE-273: Failure to Check Whether Privileges Were
-// Dropped Successfully
-typedef unsigned int __uint32_t;
-typedef __uint32_t __darwin_uid_t;
-typedef __uint32_t __darwin_gid_t;
-typedef __darwin_uid_t uid_t;
-typedef __darwin_gid_t gid_t;
-int setuid(uid_t);
-int setregid(gid_t, gid_t);
-int setreuid(uid_t, uid_t);
-extern void check(int);
-void abort(void);
-
-void test_setuid()
-{
- setuid(2); // expected-warning{{The return value from the call to 'setuid' is not checked. If an error occurs in 'setuid', the following code may execute with unexpected privileges}}
- setuid(0); // expected-warning{{The return value from the call to 'setuid' is not checked. If an error occurs in 'setuid', the following code may execute with unexpected privileges}}
- if (setuid (2) != 0)
- abort();
-
- // Currently the 'setuid' check is not flow-sensitive, and only looks
- // at whether the function was called in a compound statement. This
- // will lead to false negatives, but there should be no false positives.
- int t = setuid(2); // no-warning
- (void)setuid (2); // no-warning
-
- check(setuid (2)); // no-warning
-
- setreuid(2,2); // expected-warning{{The return value from the call to 'setreuid' is not checked. If an error occurs in 'setreuid', the following code may execute with unexpected privileges}}
- setregid(2,2); // expected-warning{{The return value from the call to 'setregid' is not checked. If an error occurs in 'setregid', the following code may execute with unexpected privileges}}
-}
-
-// <rdar://problem/6337100> CWE-338: Use of cryptographically weak prng
-typedef unsigned short *ushort_ptr_t; // Test that sugar doesn't confuse the warning.
-int rand(void);
-double drand48(void);
-double erand48(unsigned short[3]);
-long jrand48(ushort_ptr_t);
-void lcong48(unsigned short[7]);
-long lrand48(void);
-long mrand48(void);
-long nrand48(unsigned short[3]);
-long random(void);
-int rand_r(unsigned *);
-
-void test_rand()
-{
- unsigned short a[7];
- unsigned b;
-
- rand(); // expected-warning{{Function 'rand' is obsolete because it implements a poor random number generator. Use 'arc4random' instead}}
- drand48(); // expected-warning{{Function 'drand48' is obsolete because it implements a poor random number generator. Use 'arc4random' instead}}
- erand48(a); // expected-warning{{Function 'erand48' is obsolete because it implements a poor random number generator. Use 'arc4random' instead}}
- jrand48(a); // expected-warning{{Function 'jrand48' is obsolete because it implements a poor random number generator. Use 'arc4random' instead}}
- lcong48(a); // expected-warning{{Function 'lcong48' is obsolete because it implements a poor random number generator. Use 'arc4random' instead}}
- lrand48(); // expected-warning{{Function 'lrand48' is obsolete because it implements a poor random number generator. Use 'arc4random' instead}}
- mrand48(); // expected-warning{{Function 'mrand48' is obsolete because it implements a poor random number generator. Use 'arc4random' instead}}
- nrand48(a); // expected-warning{{Function 'nrand48' is obsolete because it implements a poor random number generator. Use 'arc4random' instead}}
- rand_r(&b); // expected-warning{{Function 'rand_r' is obsolete because it implements a poor random number generator. Use 'arc4random' instead}}
- random(); // expected-warning{{The 'random' function produces a sequence of values that an adversary may be able to predict. Use 'arc4random' instead}}
-}
-
-char *mktemp(char *buf);
-
-void test_mktemp() {
- char *x = mktemp("/tmp/zxcv"); // expected-warning{{Call to function 'mktemp' is insecure as it always creates or uses insecure temporary file}}
-}
-
-
-//===----------------------------------------------------------------------===
-// strcpy()
-//===----------------------------------------------------------------------===
-#ifdef VARIANT
-
-#define __strcpy_chk BUILTIN(__strcpy_chk)
-char *__strcpy_chk(char *restrict s1, const char *restrict s2, size_t destlen);
-
-#define strcpy(a,b) __strcpy_chk(a,b,(size_t)-1)
-
-#else /* VARIANT */
-
-#define strcpy BUILTIN(strcpy)
-char *strcpy(char *restrict s1, const char *restrict s2);
-
-#endif /* VARIANT */
-
-void test_strcpy() {
- char x[4];
- char *y;
-
- strcpy(x, y); //expected-warning{{Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119}}
-}
-
-void test_strcpy_2() {
- char x[4];
- strcpy(x, "abcd"); //expected-warning{{Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119}}
-}
-
-void test_strcpy_safe() {
- char x[5];
- strcpy(x, "abcd");
-}
-
-void test_strcpy_safe_2() {
- struct {char s1[100];} s;
- strcpy(s.s1, "hello");
-}
-
-//===----------------------------------------------------------------------===
-// strcat()
-//===----------------------------------------------------------------------===
-#ifdef VARIANT
-
-#define __strcat_chk BUILTIN(__strcat_chk)
-char *__strcat_chk(char *restrict s1, const char *restrict s2, size_t destlen);
-
-#define strcat(a,b) __strcat_chk(a,b,(size_t)-1)
-
-#else /* VARIANT */
-
-#define strcat BUILTIN(strcat)
-char *strcat(char *restrict s1, const char *restrict s2);
-
-#endif /* VARIANT */
-
-void test_strcat() {
- char x[4];
- char *y;
-
- strcat(x, y); //expected-warning{{Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119}}
-}
-
-//===----------------------------------------------------------------------===
-// vfork()
-//===----------------------------------------------------------------------===
-typedef int __int32_t;
-typedef __int32_t pid_t;
-pid_t vfork(void);
-
-void test_vfork() {
- vfork(); //expected-warning{{Call to function 'vfork' is insecure as it can lead to denial of service situations in the parent process}}
-}
-
-//===----------------------------------------------------------------------===
-// mkstemp()
-//===----------------------------------------------------------------------===
-
-char *mkdtemp(char *template);
-int mkstemps(char *template, int suffixlen);
-int mkstemp(char *template);
-char *mktemp(char *template);
-
-void test_mkstemp() {
- mkstemp("XX"); // expected-warning {{Call to 'mkstemp' should have at least 6 'X's in the format string to be secure (2 'X's seen)}}
- mkstemp("XXXXXX");
- mkstemp("XXXXXXX");
- mkstemps("XXXXXX", 0);
- mkstemps("XXXXXX", 1); // expected-warning {{5 'X's seen}}
- mkstemps("XXXXXX", 2); // expected-warning {{Call to 'mkstemps' should have at least 6 'X's in the format string to be secure (4 'X's seen, 2 characters used as a suffix)}}
- mkdtemp("XX"); // expected-warning {{2 'X's seen}}
- mkstemp("X"); // expected-warning {{Call to 'mkstemp' should have at least 6 'X's in the format string to be secure (1 'X' seen)}}
- mkdtemp("XXXXXX");
-}
-
diff --git a/test/Analysis/self-assign.cpp b/test/Analysis/self-assign.cpp
deleted file mode 100644
index ca28c534f1e2..000000000000
--- a/test/Analysis/self-assign.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=core,cplusplus,unix.Malloc,debug.ExprInspection -analyzer-config eagerly-assume=false %s -verify -analyzer-output=text
-
-extern "C" char *strdup(const char* s);
-extern "C" void free(void* ptr);
-
-namespace std {
-template<class T> struct remove_reference { typedef T type; };
-template<class T> struct remove_reference<T&> { typedef T type; };
-template<class T> struct remove_reference<T&&> { typedef T type; };
-template<class T> typename remove_reference<T>::type&& move(T&& t);
-}
-
-void clang_analyzer_eval(int);
-
-class StringUsed {
-public:
- StringUsed(const char *s = "") : str(strdup(s)) {}
- StringUsed(const StringUsed &rhs) : str(strdup(rhs.str)) {}
- ~StringUsed();
- StringUsed& operator=(const StringUsed &rhs);
- StringUsed& operator=(StringUsed &&rhs);
- operator const char*() const;
-private:
- char *str;
-};
-
-StringUsed::~StringUsed() {
- free(str);
-}
-
-StringUsed& StringUsed::operator=(const StringUsed &rhs) { // expected-note{{Assuming rhs == *this}} expected-note{{Assuming rhs == *this}} expected-note{{Assuming rhs != *this}}
- clang_analyzer_eval(*this == rhs); // expected-warning{{TRUE}} expected-warning{{UNKNOWN}} expected-note{{TRUE}} expected-note{{UNKNOWN}}
- free(str); // expected-note{{Memory is released}}
- str = strdup(rhs.str); // expected-warning{{Use of memory after it is freed}} expected-note{{Use of memory after it is freed}}
-// expected-note@-1{{Memory is allocated}}
- return *this;
-}
-
-StringUsed& StringUsed::operator=(StringUsed &&rhs) { // expected-note{{Assuming rhs == *this}} expected-note{{Assuming rhs != *this}}
- clang_analyzer_eval(*this == rhs); // expected-warning{{TRUE}} expected-warning{{UNKNOWN}} expected-note{{TRUE}} expected-note{{UNKNOWN}}
- str = rhs.str;
- rhs.str = nullptr; // expected-warning{{Potential memory leak}} expected-note{{Potential memory leak}}
- return *this;
-}
-
-StringUsed::operator const char*() const {
- return str;
-}
-
-class StringUnused {
-public:
- StringUnused(const char *s = "") : str(strdup(s)) {}
- StringUnused(const StringUnused &rhs) : str(strdup(rhs.str)) {}
- ~StringUnused();
- StringUnused& operator=(const StringUnused &rhs);
- StringUnused& operator=(StringUnused &&rhs);
- operator const char*() const;
-private:
- char *str;
-};
-
-StringUnused::~StringUnused() {
- free(str);
-}
-
-StringUnused& StringUnused::operator=(const StringUnused &rhs) { // expected-note{{Assuming rhs == *this}} expected-note{{Assuming rhs == *this}} expected-note{{Assuming rhs != *this}}
- clang_analyzer_eval(*this == rhs); // expected-warning{{TRUE}} expected-warning{{UNKNOWN}} expected-note{{TRUE}} expected-note{{UNKNOWN}}
- free(str); // expected-note{{Memory is released}}
- str = strdup(rhs.str); // expected-warning{{Use of memory after it is freed}} expected-note{{Use of memory after it is freed}}
- return *this;
-}
-
-StringUnused& StringUnused::operator=(StringUnused &&rhs) { // expected-note{{Assuming rhs == *this}} expected-note{{Assuming rhs != *this}}
- clang_analyzer_eval(*this == rhs); // expected-warning{{TRUE}} expected-warning{{UNKNOWN}} expected-note{{TRUE}} expected-note{{UNKNOWN}}
- str = rhs.str;
- rhs.str = nullptr; // FIXME: An improved leak checker should warn here
- return *this;
-}
-
-StringUnused::operator const char*() const {
- return str;
-}
-
-
-int main() {
- StringUsed s1 ("test"), s2;
- s2 = s1; // expected-note{{Calling copy assignment operator for 'StringUsed'}} // expected-note{{Returned allocated memory}}
- s2 = std::move(s1); // expected-note{{Calling move assignment operator for 'StringUsed'}}
- return 0;
-}
diff --git a/test/Analysis/self-init.m b/test/Analysis/self-init.m
deleted file mode 100644
index cb1a321e8bbb..000000000000
--- a/test/Analysis/self-init.m
+++ /dev/null
@@ -1,308 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=osx.cocoa.SelfInit -analyzer-config ipa=dynamic -fno-builtin %s -verify
-// RUN: %clang_analyze_cc1 -analyzer-checker=osx.cocoa.SelfInit -fno-builtin %s -verify
-
-@class NSZone, NSCoder;
-@protocol NSObject
-- (id)self;
-@end
-@protocol NSCopying - (id)copyWithZone:(NSZone *)zone;
-@end
-@protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone;
-@end
-@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@interface NSObject <NSObject> {}
-+ (id)allocWithZone:(NSZone *)zone;
-+ (id)alloc;
-- (void)dealloc;
--(id)class;
--(id)init;
--(id)release;
-@end
-@interface NSProxy <NSObject> {}
-@end
-
-//#import "Foundation/NSObject.h"
-typedef unsigned NSUInteger;
-typedef long NSInteger;
-
-@interface NSInvocation : NSObject {}
-- (void)getArgument:(void *)argumentLocation atIndex:(NSInteger)idx;
-- (void)setArgument:(void *)argumentLocation atIndex:(NSInteger)idx;
-@end
-
-@class NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
-@end extern NSString * const NSBundleDidLoadNotification;
-@interface NSAssertionHandler : NSObject {}
-+ (NSAssertionHandler *)currentHandler;
-- (void)handleFailureInMethod:(SEL)selector object:(id)object file:(NSString *)fileName lineNumber:(NSInteger)line description:(NSString *)format,...;
-@end
-extern NSString * const NSConnectionReplyMode;
-
-@interface NSBundle : NSObject
-+(id)loadNibNamed:(NSString*)s owner:(id)o;
-@end
-
-void log(void *obj);
-extern void *somePtr;
-
-@class MyObj;
-extern id _commonInit(MyObj *self);
-
-@interface MyObj : NSObject {
- id myivar;
- int myint;
-}
--(id)_init;
--(id)initWithSomething:(int)x;
--(void)doSomething;
-+(id)commonInitMember:(id)s;
-@end
-
-@interface MyProxyObj : NSProxy {}
--(id)init;
-@end
-
-@implementation MyObj
-
--(id)init {
- do { if (!((somePtr != 0))) { [[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd object:self file:[NSString stringWithUTF8String:"init.m"] lineNumber:21 description:(@"Invalid parameter not satisfying: %s"), ("x != 0"), (0), (0), (0), (0)]; } } while(0);
- return [self initWithSomething:0];
-}
-
--(id)init2 {
- self = [self initWithSomething:0];
- return self;
-}
-
--(id)init3 {
- log([self class]);
- return [self initWithSomething:0];
-}
-
--(id)init4 {
- self = [super init];
- if (self) {
- log(&self);
- }
- return self;
-}
-
--(id)init4_w {
- [super init];
- if (self) {
- log(&self);
- }
- return self; // expected-warning {{Returning 'self' while it is not set to the result of '[(super or self) init...]'}}
-}
-
-- (id)initWithSomething:(int)x {
- if ((self = [super init]))
- myint = x;
- return self;
-}
-
--(id)_init {
- myivar = 0;
- return self;
-}
-
--(id)init5 {
- [NSBundle loadNibNamed:@"Window" owner:self];
- return [self initWithSomething:0];
-}
-
--(id)init6 {
- [NSBundle loadNibNamed:@"Window" owner:myivar]; // no-warning
- return [self initWithSomething:0];
-}
-
--(id)init7 {
- if (0 != (self = [self _init]))
- myivar = 0;
- return self;
-}
-
--(id)init8 {
- if ((self = [super init])) {
- log(&self);
- myivar = 0;
- }
- return self;
-}
-
--(id)init9 {
- [self doSomething];
- return self; // no-warning
-}
-
--(id)init10 {
- myivar = 0; // no-warning
- return self;
-}
-
--(id)init11 {
- return self; // no-warning
-}
-
--(id)init12 {
- [super init];
- return self; // expected-warning {{Returning 'self'}}
-}
-
--(id)init13 {
- if (self == [super init]) {
- myivar = 0; // expected-warning {{Instance variable used}}
- }
- return self; // expected-warning {{Returning 'self'}}
-}
-
--(id)init14 {
- if (!(self = _commonInit(self)))
- return 0;
- return self;
-}
-
--(id)init14_w {
- [super init];
- self = _commonInit(self);
- return self; // expected-warning {{Returning 'self' while it is not set to the result of '[(super or self) init...]'}}
-}
-
--(id)init15 {
- if (!(self = [super init]))
- return 0;
- return self;
-}
-
--(id)init16 {
- somePtr = [super init];
- self = somePtr;
- myivar = 0;
- return self;
-}
-
--(id)init17 {
- somePtr = [super init];
- myivar = 0; // expected-warning {{Instance variable used}}
- return 0;
-}
-
--(id)init18 {
- self = [super init];
- self = _commonInit(self);
- return self;
-}
-
-+(id)commonInitMember:(id)s {
- return s;
-}
-
--(id)init19 {
- self = [super init];
- self = [MyObj commonInitMember:self];
- return self;
-}
-
--(id)init19_w {
- [super init];
- self = [MyObj commonInitMember:self];
- return self; // expected-warning {{Returning 'self'}}
-}
-
--(void)doSomething {}
-
-@end
-
-@implementation MyProxyObj
-
-- (id)init { return self; }
-
-@end
-
-
-// Test for radar://10973514 : self should not be invalidated by a method call.
-@interface Test : NSObject {
- NSInvocation *invocation_;
-}
-@end
-@implementation Test
--(id) initWithTarget:(id) rec selector:(SEL) cb {
- if (self=[super init]) {
- [invocation_ setArgument:&self atIndex:2];
- }
- return self;
-}
-@end
-
-// Test radar:11235991 - passing self to a call to super.
-@protocol MyDelegate
-@end
-@interface Object : NSObject
-- (id) initWithObject: (id)i;
-@end
-@interface Derived: Object <MyDelegate>
-- (id) initWithInt: (int)t;
-@property (nonatomic, retain, readwrite) Object *size;
-@end
-@implementation Derived
-- (id) initWithInt: (int)t {
- if ((self = [super initWithObject:self])) {
- _size = [[Object alloc] init];
- }
- return self;
-}
-@end
-
-// Test for radar://11125870: init constructing a special instance.
-typedef signed char BOOL;
-@interface MyClass : NSObject
-@end
-@implementation MyClass
-+ (id)specialInstance {
- return [[MyClass alloc] init];
-}
-- (id)initSpecially:(BOOL)handleSpecially {
- if ((self = [super init])) {
- if (handleSpecially) {
- self = [MyClass specialInstance];
- }
- }
- return self;
-}
-- (id)initSelfSelf {
- if ((self = [super init])) {
- self = self;
- }
- return self;
-}
-@end
-
-// Test for radar://12838705.
-@interface ABCClass : NSObject
-@property (nonatomic, strong) NSString *foo;
-@property (nonatomic, strong) NSString *bar;
-@property (nonatomic, strong) NSString *baz;
-@end
-
-@implementation ABCClass
-@synthesize foo = foo_;
-@synthesize bar = bar_;
-@synthesize baz = baz_;
-
-- (id)initWithABC:(ABCClass *)abc {
- self = [super init];
- baz_ = abc->baz_;
- return self;
-}
-
-- (ABCClass *)abcWithFoo:(NSString *)foo {
- ABCClass *copy = [[ABCClass alloc] initWithABC:self];
- return copy;
-}
-
-@end
-
diff --git a/test/Analysis/shallow-mode.m b/test/Analysis/shallow-mode.m
deleted file mode 100644
index 1c71e1b38fce..000000000000
--- a/test/Analysis/shallow-mode.m
+++ /dev/null
@@ -1,29 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config mode=shallow -verify %s
-// expected-no-diagnostics
-
-void clang_analyzer_checkInlined(unsigned);
-
-typedef signed char BOOL;
-typedef struct objc_class *Class;
-typedef struct objc_object {
- Class isa;
-} *id;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
-@end
-
-@interface MyClass : NSObject
-+ (void)callee;
-+ (void)caller;
-@end
-
-@implementation MyClass
-+ (void)caller {
- [MyClass callee];
-}
-+ (void)callee {
- clang_analyzer_checkInlined(0); // The call is not inlined.
-}
-@end \ No newline at end of file
diff --git a/test/Analysis/simple-stream-checks.c b/test/Analysis/simple-stream-checks.c
deleted file mode 100644
index f37a7039f5e3..000000000000
--- a/test/Analysis/simple-stream-checks.c
+++ /dev/null
@@ -1,96 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.unix.SimpleStream -verify %s
-
-#include "Inputs/system-header-simulator-for-simple-stream.h"
-
-void checkDoubleFClose(int *Data) {
- FILE *F = fopen("myfile.txt", "w");
- if (F != 0) {
- fputs ("fopen example", F);
- if (!Data)
- fclose(F);
- else
- fputc(*Data, F);
- fclose(F); // expected-warning {{Closing a previously closed file stream}}
- }
-}
-
-int checkLeak(int *Data) {
- FILE *F = fopen("myfile.txt", "w");
- if (F != 0) {
- fputs ("fopen example", F);
- }
-
- if (Data) // expected-warning {{Opened file is never closed; potential resource leak}}
- return *Data;
- else
- return 0;
-}
-
-void checkLeakFollowedByAssert(int *Data) {
- FILE *F = fopen("myfile.txt", "w");
- if (F != 0) {
- fputs ("fopen example", F);
- if (!Data)
- exit(0);
- fclose(F);
- }
-}
-
-void CloseOnlyOnValidFileHandle() {
- FILE *F = fopen("myfile.txt", "w");
- if (F)
- fclose(F);
- int x = 0; // no warning
-}
-
-void leakOnEnfOfPath1(int *Data) {
- FILE *F = fopen("myfile.txt", "w");
-} // expected-warning {{Opened file is never closed; potential resource leak}}
-
-void leakOnEnfOfPath2(int *Data) {
- FILE *F = fopen("myfile.txt", "w");
- return; // expected-warning {{Opened file is never closed; potential resource leak}}
-}
-
-FILE *leakOnEnfOfPath3(int *Data) {
- FILE *F = fopen("myfile.txt", "w");
- return F;
-}
-
-void myfclose(FILE *F);
-void SymbolEscapedThroughFunctionCall() {
- FILE *F = fopen("myfile.txt", "w");
- myfclose(F);
- return; // no warning
-}
-
-FILE *GlobalF;
-void SymbolEscapedThroughAssignmentToGlobal() {
- FILE *F = fopen("myfile.txt", "w");
- GlobalF = F;
- return; // no warning
-}
-
-void SymbolDoesNotEscapeThoughStringAPIs(char *Data) {
- FILE *F = fopen("myfile.txt", "w");
- fputc(*Data, F);
- return; // expected-warning {{Opened file is never closed; potential resource leak}}
-}
-
-void passConstPointer(const FILE * F);
-void testPassConstPointer() {
- FILE *F = fopen("myfile.txt", "w");
- passConstPointer(F);
- return; // expected-warning {{Opened file is never closed; potential resource leak}}
-}
-
-void testPassToSystemHeaderFunctionIndirectly() {
- FileStruct fs;
- fs.p = fopen("myfile.txt", "w");
- fakeSystemHeaderCall(&fs); // invalidates fs, making fs.p unreachable
-} // no-warning
-
-void testOverwrite() {
- FILE *fp = fopen("myfile.txt", "w");
- fp = 0;
-} // expected-warning {{Opened file is never closed; potential resource leak}}
diff --git a/test/Analysis/sizeofpointer.c b/test/Analysis/sizeofpointer.c
deleted file mode 100644
index 14ddbd1a8b10..000000000000
--- a/test/Analysis/sizeofpointer.c
+++ /dev/null
@@ -1,8 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.core.SizeofPtr -verify %s
-
-struct s {
-};
-
-int f(struct s *p) {
- return sizeof(p); // expected-warning{{The code calls sizeof() on a pointer type. This can produce an unexpected result}}
-}
diff --git a/test/Analysis/stack-addr-ps.c b/test/Analysis/stack-addr-ps.c
deleted file mode 100644
index 721051ffaf11..000000000000
--- a/test/Analysis/stack-addr-ps.c
+++ /dev/null
@@ -1,99 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-store=region -fblocks -verify %s
-
-int* f1() {
- int x = 0;
- return &x; // expected-warning{{Address of stack memory associated with local variable 'x' returned}} expected-warning{{address of stack memory associated with local variable 'x' returned}}
-}
-
-int* f2(int y) {
- return &y; // expected-warning{{Address of stack memory associated with local variable 'y' returned}} expected-warning{{address of stack memory associated with parameter 'y' returned}}
-}
-
-int* f3(int x, int *y) {
- int w = 0;
-
- if (x)
- y = &w;
-
- return y; // expected-warning{{Address of stack memory associated with local variable 'w' returned to caller}}
-}
-
-void* compound_literal(int x, int y) {
- if (x)
- return &(unsigned short){((unsigned short)0x22EF)}; // expected-warning{{Address of stack memory}}
-
- int* array[] = {};
- struct s { int z; double y; int w; };
-
- if (y)
- return &((struct s){ 2, 0.4, 5 * 8 }); // expected-warning{{Address of stack memory}}
-
-
- void* p = &((struct s){ 42, 0.4, x ? 42 : 0 });
- return p; // expected-warning{{Address of stack memory}}
-}
-
-void* alloca_test() {
- void* p = __builtin_alloca(10);
- return p; // expected-warning{{Address of stack memory}}
-}
-
-int array_test(int x[2]) {
- return x[0]; // no-warning
-}
-
-struct baz {
- int x;
- int y[2];
-};
-
-int struct_test(struct baz byVal, int flag) {
- if (flag)
- return byVal.x; // no-warning
- else {
- return byVal.y[0]; // no-warning
- }
-}
-
-typedef int (^ComparatorBlock)(int a, int b);
-ComparatorBlock test_return_block(void) {
- // This block is a global since it has no captures.
- ComparatorBlock b = ^int(int a, int b){ return a > b; };
- return b; // no-warning
-}
-
-ComparatorBlock test_return_block_with_capture(int x) {
- // This block is stack allocated because it has captures.
- ComparatorBlock b = ^int(int a, int b){ return a > b + x; };
- return b; // expected-warning{{Address of stack-allocated block}}
-}
-
-ComparatorBlock test_return_block_neg_aux(void);
-ComparatorBlock test_return_block_neg(void) {
- ComparatorBlock b = test_return_block_neg_aux();
- return b; // no-warning
-}
-
-// <rdar://problem/7523821>
-int *rdar_7523821_f2() {
- int a[3];
- return a; // expected-warning 2 {{ddress of stack memory associated with local variable 'a' returned}}
-};
-
-// Handle blocks that have no captures or are otherwise declared 'static'.
-// <rdar://problem/10348049>
-typedef int (^RDar10348049)(int value);
-RDar10348049 test_rdar10348049(void) {
- static RDar10348049 b = ^int(int x) {
- return x + 2;
- };
- return b; // no-warning
-}
-
-void testRegister(register const char *reg) {
- if (reg) (void)reg[0];
-}
-void callTestRegister() {
- char buf[20];
- testRegister(buf); // no-warning
-}
diff --git a/test/Analysis/stack-addr-ps.cpp b/test/Analysis/stack-addr-ps.cpp
deleted file mode 100644
index e1f06835c784..000000000000
--- a/test/Analysis/stack-addr-ps.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-store=region -verify %s -Wno-undefined-bool-conversion
-
-typedef __INTPTR_TYPE__ intptr_t;
-
-const int& g() {
- int s;
- return s; // expected-warning{{Address of stack memory associated with local variable 's' returned}} expected-warning{{reference to stack memory associated with local variable 's' returned}}
-}
-
-const int& g2() {
- int s1;
- int &s2 = s1; // expected-note {{binding reference variable 's2' here}}
- return s2; // expected-warning{{Address of stack memory associated with local variable 's1' returned}} expected-warning {{reference to stack memory associated with local variable 's1' returned}}
-}
-
-const int& g3() {
- int s1;
- int &s2 = s1; // expected-note {{binding reference variable 's2' here}}
- int &s3 = s2; // expected-note {{binding reference variable 's3' here}}
- return s3; // expected-warning{{Address of stack memory associated with local variable 's1' returned}} expected-warning {{reference to stack memory associated with local variable 's1' returned}}
-}
-
-void g4() {
- static const int &x = 3; // no warning
-}
-
-int get_value();
-
-const int &get_reference1() { return get_value(); } // expected-warning{{Address of stack memory associated with temporary object of type 'int' returned}} expected-warning {{returning reference to local temporary}}
-
-const int &get_reference2() {
- const int &x = get_value(); // expected-note {{binding reference variable 'x' here}}
- return x; // expected-warning{{Address of stack memory associated with temporary object of type 'int' returned}} expected-warning {{returning reference to local temporary}}
-}
-
-const int &get_reference3() {
- const int &x1 = get_value(); // expected-note {{binding reference variable 'x1' here}}
- const int &x2 = x1; // expected-note {{binding reference variable 'x2' here}}
- return x2; // expected-warning{{Address of stack memory associated with temporary object of type 'int' returned}} expected-warning {{returning reference to local temporary}}
-}
-
-int global_var;
-int *f1() {
- int &y = global_var;
- return &y;
-}
-
-int *f2() {
- int x1;
- int &x2 = x1; // expected-note {{binding reference variable 'x2' here}}
- return &x2; // expected-warning{{Address of stack memory associated with local variable 'x1' returned}} expected-warning {{address of stack memory associated with local variable 'x1' returned}}
-}
-
-int *f3() {
- int x1;
- int *const &x2 = &x1; // expected-note {{binding reference variable 'x2' here}}
- return x2; // expected-warning {{address of stack memory associated with local variable 'x1' returned}} expected-warning {{Address of stack memory associated with local variable 'x1' returned to caller}}
-}
-
-const int *f4() {
- const int &x1 = get_value(); // expected-note {{binding reference variable 'x1' here}}
- const int &x2 = x1; // expected-note {{binding reference variable 'x2' here}}
- return &x2; // expected-warning{{Address of stack memory associated with temporary object of type 'int' returned}} expected-warning {{returning address of local temporary}}
-}
-
-struct S {
- int x;
-};
-
-int *mf() {
- S s1;
- S &s2 = s1; // expected-note {{binding reference variable 's2' here}}
- int &x = s2.x; // expected-note {{binding reference variable 'x' here}}
- return &x; // expected-warning{{Address of stack memory associated with local variable 's1' returned}} expected-warning {{address of stack memory associated with local variable 's1' returned}}
-}
-
-void *lf() {
- label:
- void *const &x = &&label; // expected-note {{binding reference variable 'x' here}}
- return x; // expected-warning {{returning address of label, which is local}}
-}
-
-template <typename T>
-struct TS {
- int *get();
- int *m() {
- int *&x = get();
- return x;
- }
-};
-
-// rdar://11345441
-int* f5() {
- int& i = i; // expected-warning {{Assigned value is garbage or undefined}} expected-warning{{reference 'i' is not yet bound to a value when used within its own initialization}}
- return &i;
-}
-
-void *radar13226577() {
- void *p = &p;
- return p; // expected-warning {{stack memory associated with local variable 'p' returned to caller}}
-}
-
-namespace rdar13296133 {
- class ConvertsToBool {
- public:
- operator bool() const { return this; }
- };
-
- class ConvertsToIntptr {
- public:
- operator intptr_t() const { return reinterpret_cast<intptr_t>(this); }
- };
-
- class ConvertsToPointer {
- public:
- operator const void *() const { return this; }
- };
-
- intptr_t returnAsNonLoc() {
- ConvertsToIntptr obj;
- return obj; // expected-warning{{Address of stack memory associated with local variable 'obj' returned to caller}}
- }
-
- bool returnAsBool() {
- ConvertsToBool obj;
- return obj; // no-warning
- }
-
- intptr_t returnAsNonLocViaPointer() {
- ConvertsToPointer obj;
- return reinterpret_cast<intptr_t>(static_cast<const void *>(obj)); // expected-warning{{Address of stack memory associated with local variable 'obj' returned to caller}}
- }
-
- bool returnAsBoolViaPointer() {
- ConvertsToPointer obj;
- return obj; // no-warning
- }
-}
-
diff --git a/test/Analysis/stack-block-returned.cpp b/test/Analysis/stack-block-returned.cpp
deleted file mode 100644
index b45cf6335b90..000000000000
--- a/test/Analysis/stack-block-returned.cpp
+++ /dev/null
@@ -1,9 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-store=region -fblocks -verify %s
-
-typedef void (^bptr)(void);
-
-bptr bf(int j) {
- __block int i;
- const bptr &qq = ^{ i=0; }; // expected-note {{binding reference variable 'qq' here}}
- return qq; // expected-error {{returning block that lives on the local stack}}
-}
diff --git a/test/Analysis/stack-capture-leak-arc.mm b/test/Analysis/stack-capture-leak-arc.mm
deleted file mode 100644
index 1ffee934c890..000000000000
--- a/test/Analysis/stack-capture-leak-arc.mm
+++ /dev/null
@@ -1,189 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,alpha.core.StackAddressAsyncEscape -fblocks -fobjc-arc -verify %s
-
-typedef struct dispatch_queue_s *dispatch_queue_t;
-typedef void (^dispatch_block_t)(void);
-void dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
-typedef long dispatch_once_t;
-void dispatch_once(dispatch_once_t *predicate, dispatch_block_t block);
-typedef long dispatch_time_t;
-void dispatch_after(dispatch_time_t when, dispatch_queue_t queue, dispatch_block_t block);
-void dispatch_barrier_sync(dispatch_queue_t queue, dispatch_block_t block);
-
-extern dispatch_queue_t queue;
-extern dispatch_once_t *predicate;
-extern dispatch_time_t when;
-
-void test_block_expr_async() {
- int x = 123;
- int *p = &x;
-
- dispatch_async(queue, ^{
- *p = 321;
- });
- // expected-warning@-3 {{Address of stack memory associated with local variable 'x' \
-is captured by an asynchronously-executed block}}
-}
-
-void test_block_expr_once_no_leak() {
- int x = 123;
- int *p = &x;
- // synchronous, no warning
- dispatch_once(predicate, ^{
- *p = 321;
- });
-}
-
-void test_block_expr_after() {
- int x = 123;
- int *p = &x;
- dispatch_after(when, queue, ^{
- *p = 321;
- });
- // expected-warning@-3 {{Address of stack memory associated with local variable 'x' \
-is captured by an asynchronously-executed block}}
-}
-
-void test_block_expr_async_no_leak() {
- int x = 123;
- int *p = &x;
- // no leak
- dispatch_async(queue, ^{
- int y = x;
- ++y;
- });
-}
-
-void test_block_var_async() {
- int x = 123;
- int *p = &x;
- void (^b)(void) = ^void(void) {
- *p = 1;
- };
- dispatch_async(queue, b);
- // expected-warning@-1 {{Address of stack memory associated with local variable 'x' \
-is captured by an asynchronously-executed block}}
-}
-
-void test_block_with_ref_async() {
- int x = 123;
- int &r = x;
- void (^b)(void) = ^void(void) {
- r = 1;
- };
- dispatch_async(queue, b);
- // expected-warning@-1 {{Address of stack memory associated with local variable 'x' \
-is captured by an asynchronously-executed block}}
-}
-
-dispatch_block_t get_leaking_block() {
- int leaked_x = 791;
- int *p = &leaked_x;
- return ^void(void) {
- *p = 1;
- };
- // expected-warning@-3 {{Address of stack memory associated with local variable 'leaked_x' \
-is captured by a returned block}}
-}
-
-void test_returned_from_func_block_async() {
- dispatch_async(queue, get_leaking_block());
- // expected-warning@-1 {{Address of stack memory associated with local variable 'leaked_x' \
-is captured by an asynchronously-executed block}}
-}
-
-// synchronous, no leak
-void test_block_var_once() {
- int x = 123;
- int *p = &x;
- void (^b)(void) = ^void(void) {
- *p = 1;
- };
- dispatch_once(predicate, b); // no-warning
-}
-
-void test_block_var_after() {
- int x = 123;
- int *p = &x;
- void (^b)(void) = ^void(void) {
- *p = 1;
- };
- dispatch_after(when, queue, b);
- // expected-warning@-1 {{Address of stack memory associated with local variable 'x' \
-is captured by an asynchronously-executed block}}
-}
-
-void test_block_var_async_no_leak() {
- int x = 123;
- int *p = &x;
- void (^b)(void) = ^void(void) {
- int y = x;
- ++y;
- };
- dispatch_async(queue, b); // no-warning
-}
-
-void test_block_inside_block_async_no_leak() {
- int x = 123;
- int *p = &x;
- void (^inner)(void) = ^void(void) {
- int y = x;
- ++y;
- };
- void (^outer)(void) = ^void(void) {
- int z = x;
- ++z;
- inner();
- };
- dispatch_async(queue, outer); // no-warning
-}
-
-dispatch_block_t accept_and_pass_back_block(dispatch_block_t block) {
- block();
- return block; // no-warning
-}
-
-void test_passing_continuation_no_leak() {
- int x = 123;
- int *p = &x;
- void (^cont)(void) = ^void(void) {
- *p = 128;
- };
- accept_and_pass_back_block(cont); // no-warning
-}
-
-@interface NSObject
-@end
-@protocol OS_dispatch_semaphore
-@end
-typedef NSObject<OS_dispatch_semaphore> *dispatch_semaphore_t;
-dispatch_semaphore_t dispatch_semaphore_create(long value);
-long dispatch_semaphore_wait(dispatch_semaphore_t dsema, dispatch_time_t timeout);
-long dispatch_semaphore_signal(dispatch_semaphore_t dsema);
-
-void test_no_leaks_on_semaphore_pattern() {
- int x = 0;
- int *p = &x;
- dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
- dispatch_async(queue, ^{
- *p = 1;
- // Some work.
- dispatch_semaphore_signal(semaphore);
- }); // no-warning
-
- // Do some other work concurrently with the asynchronous work
- // Wait for the asynchronous work to finish
- dispatch_semaphore_wait(semaphore, 1000);
-}
-
-void test_dispatch_barrier_sync() {
- int buf[16];
- for (int n = 0; n < 16; ++n) {
- int *ptr = &buf[n];
- // FIXME: Should not warn. The dispatch_barrier_sync() call ensures
- // that the block does not outlive 'buf'.
- dispatch_async(queue, ^{ // expected-warning{{Address of stack memory associated with local variable 'buf' is captured by an asynchronously-executed block}}
- (void)ptr;
- });
- }
- dispatch_barrier_sync(queue, ^{});
-}
diff --git a/test/Analysis/stack-capture-leak-no-arc.mm b/test/Analysis/stack-capture-leak-no-arc.mm
deleted file mode 100644
index 33829f52e727..000000000000
--- a/test/Analysis/stack-capture-leak-no-arc.mm
+++ /dev/null
@@ -1,37 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,alpha.core.StackAddressAsyncEscape -fblocks -verify %s
-
-typedef struct dispatch_queue_s *dispatch_queue_t;
-typedef void (^dispatch_block_t)(void);
-void dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
-extern dispatch_queue_t queue;
-
-void test_block_inside_block_async_no_leak() {
- int x = 123;
- int *p = &x;
- void (^inner)(void) = ^void(void) {
- int y = x;
- ++y;
- };
- // Block_copy(...) copies the captured block ("inner") too,
- // there is no leak in this case.
- dispatch_async(queue, ^void(void) {
- int z = x;
- ++z;
- inner();
- }); // no-warning
-}
-
-dispatch_block_t test_block_inside_block_async_leak() {
- int x = 123;
- void (^inner)(void) = ^void(void) {
- int y = x;
- ++y;
- };
- void (^outer)(void) = ^void(void) {
- int z = x;
- ++z;
- inner();
- };
- return outer; // expected-warning-re{{Address of stack-allocated block declared on line {{.+}} is captured by a returned block}}
-}
-
diff --git a/test/Analysis/stackaddrleak.c b/test/Analysis/stackaddrleak.c
deleted file mode 100644
index 8a1519e7874f..000000000000
--- a/test/Analysis/stackaddrleak.c
+++ /dev/null
@@ -1,58 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify -std=c99 -Dbool=_Bool -Wno-bool-conversion %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify -x c++ -Wno-bool-conversion %s
-
-typedef __INTPTR_TYPE__ intptr_t;
-char const *p;
-
-void f0() {
- char const str[] = "This will change";
- p = str;
-} // expected-warning{{Address of stack memory associated with local variable 'str' is still referred to by the global variable 'p' upon returning to the caller. This will be a dangling reference}}
-
-void f1() {
- char const str[] = "This will change";
- p = str;
- p = 0; // no-warning
-}
-
-void f2() {
- p = (const char *) __builtin_alloca(12);
-} // expected-warning{{Address of stack memory allocated by call to alloca() on line 19 is still referred to by the global variable 'p' upon returning to the caller. This will be a dangling reference}}
-
-// PR 7383 - previously the stack address checker would crash on this example
-// because it would attempt to do a direct load from 'pr7383_list'.
-static int pr7383(__const char *__)
-{
- return 0;
-}
-extern __const char *__const pr7383_list[];
-
-// Test that we catch multiple returns via globals when analyzing a function.
-void test_multi_return() {
- static int *a, *b;
- int x;
- a = &x;
- b = &x;
-} // expected-warning{{Address of stack memory associated with local variable 'x' is still referred to by the static variable 'a' upon returning}} expected-warning{{Address of stack memory associated with local variable 'x' is still referred to by the static variable 'b' upon returning}}
-
-intptr_t returnAsNonLoc() {
- int x;
- return (intptr_t)&x; // expected-warning{{Address of stack memory associated with local variable 'x' returned to caller}} expected-warning{{address of stack memory associated with local variable 'x' returned}}
-}
-
-bool returnAsBool() {
- int x;
- return &x; // no-warning
-}
-
-void assignAsNonLoc() {
- extern intptr_t ip;
- int x;
- ip = (intptr_t)&x;
-} // expected-warning{{Address of stack memory associated with local variable 'x' is still referred to by the global variable 'ip' upon returning}}
-
-void assignAsBool() {
- extern bool b;
- int x;
- b = &x;
-} // no-warning
diff --git a/test/Analysis/static_local.m b/test/Analysis/static_local.m
deleted file mode 100644
index daa7ef54c9f8..000000000000
--- a/test/Analysis/static_local.m
+++ /dev/null
@@ -1,19 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-// Test reasoning about static locals in ObjCMethods.
-int *getValidPtr();
-@interface Radar11275803
-- (int) useStaticInMethod;
-@end
-@implementation Radar11275803
-
-- (int) useStaticInMethod
-{
- static int *explInit = 0;
- static int implInit;
- if (!implInit)
- explInit = getValidPtr();
- return *explInit; //no-warning
-}
-@end \ No newline at end of file
diff --git a/test/Analysis/stats.c b/test/Analysis/stats.c
deleted file mode 100644
index eca83c0ad96e..000000000000
--- a/test/Analysis/stats.c
+++ /dev/null
@@ -1,9 +0,0 @@
-// REQUIRES: asserts
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-stats %s 2>&1 | FileCheck %s
-
-void foo() {
- int x;
-}
-// CHECK: ... Statistics Collected ...
-// CHECK:100 AnalysisConsumer - The % of reachable basic blocks.
-// CHECK:The # of times RemoveDeadBindings is called
diff --git a/test/Analysis/std-c-library-functions-inlined.c b/test/Analysis/std-c-library-functions-inlined.c
deleted file mode 100644
index e22df1408572..000000000000
--- a/test/Analysis/std-c-library-functions-inlined.c
+++ /dev/null
@@ -1,17 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=apiModeling.StdCLibraryFunctions -verify %s
-// RUN: %clang_analyze_cc1 -triple i686-unknown-linux -analyzer-checker=apiModeling.StdCLibraryFunctions -verify %s
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux -analyzer-checker=apiModeling.StdCLibraryFunctions -verify %s
-// RUN: %clang_analyze_cc1 -triple armv7-a15-linux -analyzer-checker=apiModeling.StdCLibraryFunctions -verify %s
-// RUN: %clang_analyze_cc1 -triple thumbv7-a15-linux -analyzer-checker=apiModeling.StdCLibraryFunctions -verify %s
-
-// This test tests crashes that occur when standard functions are available
-// for inlining.
-
-// expected-no-diagnostics
-
-int isdigit(int _) { return !0; }
-void test_redefined_isdigit(int x) {
- int (*func)(int) = isdigit;
- for (; func(x);) // no-crash
- ;
-}
diff --git a/test/Analysis/std-c-library-functions.c b/test/Analysis/std-c-library-functions.c
deleted file mode 100644
index 9fb8833175be..000000000000
--- a/test/Analysis/std-c-library-functions.c
+++ /dev/null
@@ -1,187 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=apiModeling.StdCLibraryFunctions,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -triple i686-unknown-linux -analyzer-checker=apiModeling.StdCLibraryFunctions,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux -analyzer-checker=apiModeling.StdCLibraryFunctions,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -triple armv7-a15-linux -analyzer-checker=apiModeling.StdCLibraryFunctions,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -triple thumbv7-a15-linux -analyzer-checker=apiModeling.StdCLibraryFunctions,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(int);
-
-int glob;
-
-typedef struct FILE FILE;
-#define EOF -1
-
-int getc(FILE *);
-void test_getc(FILE *fp) {
- int x;
- while ((x = getc(fp)) != EOF) {
- clang_analyzer_eval(x > 255); // expected-warning{{FALSE}}
- clang_analyzer_eval(x >= 0); // expected-warning{{TRUE}}
- }
-}
-
-int fgetc(FILE *);
-void test_fgets(FILE *fp) {
- clang_analyzer_eval(fgetc(fp) < 256); // expected-warning{{TRUE}}
- clang_analyzer_eval(fgetc(fp) >= 0); // expected-warning{{UNKNOWN}}
-}
-
-
-typedef typeof(sizeof(int)) size_t;
-typedef signed long ssize_t;
-ssize_t read(int, void *, size_t);
-ssize_t write(int, const void *, size_t);
-void test_read_write(int fd, char *buf) {
- glob = 1;
- ssize_t x = write(fd, buf, 10);
- clang_analyzer_eval(glob); // expected-warning{{UNKNOWN}}
- if (x >= 0) {
- clang_analyzer_eval(x <= 10); // expected-warning{{TRUE}}
- ssize_t y = read(fd, &glob, sizeof(glob));
- if (y >= 0) {
- clang_analyzer_eval(y <= sizeof(glob)); // expected-warning{{TRUE}}
- } else {
- // -1 overflows on promotion!
- clang_analyzer_eval(y <= sizeof(glob)); // expected-warning{{FALSE}}
- }
- } else {
- clang_analyzer_eval(x == -1); // expected-warning{{TRUE}}
- }
-}
-
-size_t fread(void *, size_t, size_t, FILE *);
-size_t fwrite(const void *restrict, size_t, size_t, FILE *restrict);
-void test_fread_fwrite(FILE *fp, int *buf) {
- size_t x = fwrite(buf, sizeof(int), 10, fp);
- clang_analyzer_eval(x <= 10); // expected-warning{{TRUE}}
- size_t y = fread(buf, sizeof(int), 10, fp);
- clang_analyzer_eval(y <= 10); // expected-warning{{TRUE}}
- size_t z = fwrite(buf, sizeof(int), y, fp);
- clang_analyzer_eval(z <= y); // expected-warning{{TRUE}}
-}
-
-ssize_t getline(char **, size_t *, FILE *);
-void test_getline(FILE *fp) {
- char *line = 0;
- size_t n = 0;
- ssize_t len;
- while ((len = getline(&line, &n, fp)) != -1) {
- clang_analyzer_eval(len == 0); // expected-warning{{FALSE}}
- }
-}
-
-int isascii(int);
-void test_isascii(int x) {
- clang_analyzer_eval(isascii(123)); // expected-warning{{TRUE}}
- clang_analyzer_eval(isascii(-1)); // expected-warning{{FALSE}}
- if (isascii(x)) {
- clang_analyzer_eval(x < 128); // expected-warning{{TRUE}}
- clang_analyzer_eval(x >= 0); // expected-warning{{TRUE}}
- } else {
- if (x > 42)
- clang_analyzer_eval(x >= 128); // expected-warning{{TRUE}}
- else
- clang_analyzer_eval(x < 0); // expected-warning{{TRUE}}
- }
- glob = 1;
- isascii('a');
- clang_analyzer_eval(glob); // expected-warning{{TRUE}}
-}
-
-int islower(int);
-void test_islower(int x) {
- clang_analyzer_eval(islower('x')); // expected-warning{{TRUE}}
- clang_analyzer_eval(islower('X')); // expected-warning{{FALSE}}
- if (islower(x))
- clang_analyzer_eval(x < 'a'); // expected-warning{{FALSE}}
-}
-
-int getchar(void);
-void test_getchar() {
- int x = getchar();
- if (x == EOF)
- return;
- clang_analyzer_eval(x < 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(x < 256); // expected-warning{{TRUE}}
-}
-
-int isalpha(int);
-void test_isalpha() {
- clang_analyzer_eval(isalpha(']')); // expected-warning{{FALSE}}
- clang_analyzer_eval(isalpha('Q')); // expected-warning{{TRUE}}
- clang_analyzer_eval(isalpha(128)); // expected-warning{{UNKNOWN}}
-}
-
-int isalnum(int);
-void test_alnum() {
- clang_analyzer_eval(isalnum('1')); // expected-warning{{TRUE}}
- clang_analyzer_eval(isalnum(')')); // expected-warning{{FALSE}}
-}
-
-int isblank(int);
-void test_isblank() {
- clang_analyzer_eval(isblank('\t')); // expected-warning{{TRUE}}
- clang_analyzer_eval(isblank(' ')); // expected-warning{{TRUE}}
- clang_analyzer_eval(isblank('\n')); // expected-warning{{FALSE}}
-}
-
-int ispunct(int);
-void test_ispunct(int x) {
- clang_analyzer_eval(ispunct(' ')); // expected-warning{{FALSE}}
- clang_analyzer_eval(ispunct(-1)); // expected-warning{{FALSE}}
- clang_analyzer_eval(ispunct('#')); // expected-warning{{TRUE}}
- clang_analyzer_eval(ispunct('_')); // expected-warning{{TRUE}}
- if (ispunct(x))
- clang_analyzer_eval(x < 127); // expected-warning{{TRUE}}
-}
-
-int isupper(int);
-void test_isupper(int x) {
- if (isupper(x))
- clang_analyzer_eval(x < 'A'); // expected-warning{{FALSE}}
-}
-
-int isgraph(int);
-int isprint(int);
-void test_isgraph_isprint(int x) {
- char y = x;
- if (isgraph(y))
- clang_analyzer_eval(isprint(x)); // expected-warning{{TRUE}}
-}
-
-int isdigit(int);
-void test_mixed_branches(int x) {
- if (isdigit(x)) {
- clang_analyzer_eval(isgraph(x)); // expected-warning{{TRUE}}
- clang_analyzer_eval(isblank(x)); // expected-warning{{FALSE}}
- } else if (isascii(x)) {
- // isalnum() bifurcates here.
- clang_analyzer_eval(isalnum(x)); // expected-warning{{TRUE}} // expected-warning{{FALSE}}
- clang_analyzer_eval(isprint(x)); // expected-warning{{TRUE}} // expected-warning{{FALSE}}
- }
-}
-
-int isspace(int);
-void test_isspace(int x) {
- if (!isascii(x))
- return;
- char y = x;
- if (y == ' ')
- clang_analyzer_eval(isspace(x)); // expected-warning{{TRUE}}
-}
-
-int isxdigit(int);
-void test_isxdigit(int x) {
- if (isxdigit(x) && isupper(x)) {
- clang_analyzer_eval(x >= 'A'); // expected-warning{{TRUE}}
- clang_analyzer_eval(x <= 'F'); // expected-warning{{TRUE}}
- }
-}
-
-void test_call_by_pointer() {
- typedef int (*func)(int);
- func f = isascii;
- clang_analyzer_eval(f('A')); // expected-warning{{TRUE}}
- f = ispunct;
- clang_analyzer_eval(f('A')); // expected-warning{{FALSE}}
-}
diff --git a/test/Analysis/std-c-library-functions.cpp b/test/Analysis/std-c-library-functions.cpp
deleted file mode 100644
index 87f84fa88118..000000000000
--- a/test/Analysis/std-c-library-functions.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux -analyzer-checker=apiModeling.StdCLibraryFunctions,debug.ExprInspection -verify %s
-
-// Test that we don't model functions with broken prototypes.
-// Because they probably work differently as well.
-//
-// This test lives in a separate file because we wanted to test all functions
-// in the .c file, however in C there are no overloads.
-
-void clang_analyzer_eval(bool);
-bool isalpha(char);
-
-void test() {
- clang_analyzer_eval(isalpha('A')); // no-crash // expected-warning{{UNKNOWN}}
-}
diff --git a/test/Analysis/stream.c b/test/Analysis/stream.c
deleted file mode 100644
index 7adf14be34d9..000000000000
--- a/test/Analysis/stream.c
+++ /dev/null
@@ -1,85 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.unix.Stream -analyzer-store region -verify %s
-
-typedef __typeof__(sizeof(int)) size_t;
-typedef struct _IO_FILE FILE;
-#define SEEK_SET 0 /* Seek from beginning of file. */
-#define SEEK_CUR 1 /* Seek from current position. */
-#define SEEK_END 2 /* Seek from end of file. */
-extern FILE *fopen(const char *path, const char *mode);
-extern FILE *tmpfile(void);
-extern int fclose(FILE *fp);
-extern size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
-extern int fseek (FILE *__stream, long int __off, int __whence);
-extern long int ftell (FILE *__stream);
-extern void rewind (FILE *__stream);
-
-void f1(void) {
- FILE *p = fopen("foo", "r");
- char buf[1024];
- fread(buf, 1, 1, p); // expected-warning {{Stream pointer might be NULL}}
- fclose(p);
-}
-
-void f2(void) {
- FILE *p = fopen("foo", "r");
- fseek(p, 1, SEEK_SET); // expected-warning {{Stream pointer might be NULL}}
- fclose(p);
-}
-
-void f3(void) {
- FILE *p = fopen("foo", "r");
- ftell(p); // expected-warning {{Stream pointer might be NULL}}
- fclose(p);
-}
-
-void f4(void) {
- FILE *p = fopen("foo", "r");
- rewind(p); // expected-warning {{Stream pointer might be NULL}}
- fclose(p);
-}
-
-void f5(void) {
- FILE *p = fopen("foo", "r");
- if (!p)
- return;
- fseek(p, 1, SEEK_SET); // no-warning
- fseek(p, 1, 3); // expected-warning {{The whence argument to fseek() should be SEEK_SET, SEEK_END, or SEEK_CUR}}
- fclose(p);
-}
-
-void f6(void) {
- FILE *p = fopen("foo", "r");
- fclose(p);
- fclose(p); // expected-warning {{Try to close a file Descriptor already closed. Cause undefined behaviour}}
-}
-
-void f7(void) {
- FILE *p = tmpfile();
- ftell(p); // expected-warning {{Stream pointer might be NULL}}
- fclose(p);
-}
-
-void f8(int c) {
- FILE *p = fopen("foo.c", "r");
- if(c)
- return; // expected-warning {{Opened File never closed. Potential Resource leak}}
- fclose(p);
-}
-
-FILE *f9(void) {
- FILE *p = fopen("foo.c", "r");
- if (p)
- return p; // no-warning
- else
- return 0;
-}
-
-void pr7831(FILE *fp) {
- fclose(fp); // no-warning
-}
-
-// PR 8081 - null pointer crash when 'whence' is not an integer constant
-void pr8081(FILE *stream, long offset, int whence) {
- fseek(stream, offset, whence);
-}
-
diff --git a/test/Analysis/string-fail.c b/test/Analysis/string-fail.c
deleted file mode 100644
index ff95ea9ee28f..000000000000
--- a/test/Analysis/string-fail.c
+++ /dev/null
@@ -1,113 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.cstring,debug.ExprInspection -analyzer-store=region -verify %s
-// RUN: %clang_analyze_cc1 -DUSE_BUILTINS -analyzer-checker=core,unix.cstring,debug.ExprInspection -analyzer-store=region -verify %s
-// XFAIL: *
-
-// This file is for tests that may eventually go into string.c, or may be
-// deleted outright. At one point these tests passed, but only because we
-// weren't correctly modelling the behavior of the relevant string functions.
-// The tests aren't incorrect, but require the analyzer to be smarter about
-// conjured values than it currently is.
-
-//===----------------------------------------------------------------------===
-// Declarations
-//===----------------------------------------------------------------------===
-
-// Some functions are so similar to each other that they follow the same code
-// path, such as memcpy and __memcpy_chk, or memcmp and bcmp. If VARIANT is
-// defined, make sure to use the variants instead to make sure they are still
-// checked by the analyzer.
-
-// Some functions are implemented as builtins. These should be #defined as
-// BUILTIN(f), which will prepend "__builtin_" if USE_BUILTINS is defined.
-
-// Functions that have variants and are also available as builtins should be
-// declared carefully! See memcpy() for an example.
-
-#ifdef USE_BUILTINS
-# define BUILTIN(f) __builtin_ ## f
-#else /* USE_BUILTINS */
-# define BUILTIN(f) f
-#endif /* USE_BUILTINS */
-
-#define NULL 0
-typedef typeof(sizeof(int)) size_t;
-
-void clang_analyzer_eval(int);
-
-//===----------------------------------------------------------------------===
-// strnlen()
-//===----------------------------------------------------------------------===
-
-#define strnlen BUILTIN(strnlen)
-size_t strnlen(const char *s, size_t maxlen);
-
-void strnlen_liveness(const char *x) {
- if (strnlen(x, 10) < 5)
- return;
- clang_analyzer_eval(strnlen(x, 10) < 5); // expected-warning{{FALSE}}
-}
-
-void strnlen_subregion() {
- struct two_stringsn { char a[2], b[2]; };
- extern void use_two_stringsn(struct two_stringsn *);
-
- struct two_stringsn z;
- use_two_stringsn(&z);
-
- size_t a = strnlen(z.a, 10);
- z.b[0] = 5;
- size_t b = strnlen(z.a, 10);
- if (a == 0)
- clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
-
- use_two_stringsn(&z);
-
- size_t c = strnlen(z.a, 10);
- if (a == 0)
- clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-extern void use_stringn(char *);
-void strnlen_argument(char *x) {
- size_t a = strnlen(x, 10);
- size_t b = strnlen(x, 10);
- if (a == 0)
- clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
-
- use_stringn(x);
-
- size_t c = strnlen(x, 10);
- if (a == 0)
- clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-extern char global_strn[];
-void strnlen_global() {
- size_t a = strnlen(global_strn, 10);
- size_t b = strnlen(global_strn, 10);
- if (a == 0)
- clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
-
- // Call a function with unknown effects, which should invalidate globals.
- use_stringn(0);
-
- size_t c = strnlen(global_strn, 10);
- if (a == 0)
- clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-void strnlen_indirect(char *x) {
- size_t a = strnlen(x, 10);
- char *p = x;
- char **p2 = &p;
- size_t b = strnlen(x, 10);
- if (a == 0)
- clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
-
- extern void use_stringn_ptr(char*const*);
- use_stringn_ptr(p2);
-
- size_t c = strnlen(x, 10);
- if (a == 0)
- clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
diff --git a/test/Analysis/string-with-signedness.c b/test/Analysis/string-with-signedness.c
deleted file mode 100644
index 1b00971a834c..000000000000
--- a/test/Analysis/string-with-signedness.c
+++ /dev/null
@@ -1,10 +0,0 @@
-// RUN: %clang_analyze_cc1 -Wno-incompatible-library-redeclaration -analyzer-checker=core,unix.cstring,alpha.unix.cstring -verify %s
-
-// expected-no-diagnostics
-
-void *strcpy(unsigned char *, unsigned char *);
-
-unsigned char a, b;
-void testUnsignedStrcpy() {
- strcpy(&a, &b);
-}
diff --git a/test/Analysis/string.c b/test/Analysis/string.c
deleted file mode 100644
index 024e224a2b5b..000000000000
--- a/test/Analysis/string.c
+++ /dev/null
@@ -1,1550 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.cstring,unix.Malloc,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -Wno-null-dereference -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -DUSE_BUILTINS -analyzer-checker=core,unix.cstring,unix.Malloc,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -Wno-null-dereference -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -DVARIANT -analyzer-checker=core,unix.cstring,unix.Malloc,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -Wno-null-dereference -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -DUSE_BUILTINS -DVARIANT -analyzer-checker=alpha.security.taint,core,unix.cstring,unix.Malloc,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -Wno-null-dereference -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -DSUPPRESS_OUT_OF_BOUND -analyzer-checker=core,unix.cstring,unix.Malloc,alpha.unix.cstring.BufferOverlap,alpha.unix.cstring.NotNullTerminated,debug.ExprInspection -analyzer-store=region -Wno-null-dereference -verify -analyzer-config eagerly-assume=false %s
-
-//===----------------------------------------------------------------------===
-// Declarations
-//===----------------------------------------------------------------------===
-
-// Some functions are so similar to each other that they follow the same code
-// path, such as memcpy and __memcpy_chk, or memcmp and bcmp. If VARIANT is
-// defined, make sure to use the variants instead to make sure they are still
-// checked by the analyzer.
-
-// Some functions are implemented as builtins. These should be #defined as
-// BUILTIN(f), which will prepend "__builtin_" if USE_BUILTINS is defined.
-
-// Functions that have variants and are also available as builtins should be
-// declared carefully! See memcpy() for an example.
-
-#ifdef USE_BUILTINS
-# define BUILTIN(f) __builtin_ ## f
-#else /* USE_BUILTINS */
-# define BUILTIN(f) f
-#endif /* USE_BUILTINS */
-
-#define NULL 0
-typedef typeof(sizeof(int)) size_t;
-
-void clang_analyzer_eval(int);
-
-int scanf(const char *restrict format, ...);
-void *malloc(size_t);
-void free(void *);
-
-//===----------------------------------------------------------------------===
-// strlen()
-//===----------------------------------------------------------------------===
-
-#define strlen BUILTIN(strlen)
-size_t strlen(const char *s);
-
-void strlen_constant0() {
- clang_analyzer_eval(strlen("123") == 3); // expected-warning{{TRUE}}
-}
-
-void strlen_constant1() {
- const char *a = "123";
- clang_analyzer_eval(strlen(a) == 3); // expected-warning{{TRUE}}
-}
-
-void strlen_constant2(char x) {
- char a[] = "123";
- clang_analyzer_eval(strlen(a) == 3); // expected-warning{{TRUE}}
-
- a[0] = x;
- clang_analyzer_eval(strlen(a) == 3); // expected-warning{{UNKNOWN}}
-}
-
-size_t strlen_null() {
- return strlen(0); // expected-warning{{Null pointer argument in call to string length function}}
-}
-
-size_t strlen_fn() {
- return strlen((char*)&strlen_fn); // expected-warning{{Argument to string length function is the address of the function 'strlen_fn', which is not a null-terminated string}}
-}
-
-size_t strlen_nonloc() {
-label:
- return strlen((char*)&&label); // expected-warning{{Argument to string length function is the address of the label 'label', which is not a null-terminated string}}
-}
-
-void strlen_subregion() {
- struct two_strings { char a[2], b[2]; };
- extern void use_two_strings(struct two_strings *);
-
- struct two_strings z;
- use_two_strings(&z);
-
- size_t a = strlen(z.a);
- z.b[0] = 5;
- size_t b = strlen(z.a);
- if (a == 0)
- clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
-
- use_two_strings(&z);
-
- size_t c = strlen(z.a);
- if (a == 0)
- clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-extern void use_string(char *);
-void strlen_argument(char *x) {
- size_t a = strlen(x);
- size_t b = strlen(x);
- if (a == 0)
- clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
-
- use_string(x);
-
- size_t c = strlen(x);
- if (a == 0)
- clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-extern char global_str[];
-void strlen_global() {
- size_t a = strlen(global_str);
- size_t b = strlen(global_str);
- if (a == 0) {
- clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
- // Make sure clang_analyzer_eval does not invalidate globals.
- clang_analyzer_eval(strlen(global_str) == 0); // expected-warning{{TRUE}}
- }
-
- // Call a function with unknown effects, which should invalidate globals.
- use_string(0);
-
- size_t c = strlen(global_str);
- if (a == 0)
- clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-void strlen_indirect(char *x) {
- size_t a = strlen(x);
- char *p = x;
- char **p2 = &p;
- size_t b = strlen(x);
- if (a == 0)
- clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
-
- extern void use_string_ptr(char*const*);
- use_string_ptr(p2);
-
- size_t c = strlen(x);
- if (a == 0)
- clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-void strlen_indirect2(char *x) {
- size_t a = strlen(x);
- char *p = x;
- char **p2 = &p;
- extern void use_string_ptr2(char**);
- use_string_ptr2(p2);
-
- size_t c = strlen(x);
- if (a == 0)
- clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-void strlen_liveness(const char *x) {
- if (strlen(x) < 5)
- return;
- clang_analyzer_eval(strlen(x) < 5); // expected-warning{{FALSE}}
-}
-
-
-size_t strlenWrapper(const char *str) {
- return strlen(str);
-}
-
-extern void invalidate(char *s);
-
-void testStrlenCallee() {
- char str[42];
- invalidate(str);
- size_t lenBefore = strlenWrapper(str);
- invalidate(str);
- size_t lenAfter = strlenWrapper(str);
- clang_analyzer_eval(lenBefore == lenAfter); // expected-warning{{UNKNOWN}}
-}
-
-
-//===----------------------------------------------------------------------===
-// strnlen()
-//===----------------------------------------------------------------------===
-
-size_t strnlen(const char *s, size_t maxlen);
-
-void strnlen_constant0() {
- clang_analyzer_eval(strnlen("123", 10) == 3); // expected-warning{{TRUE}}
-}
-
-void strnlen_constant1() {
- const char *a = "123";
- clang_analyzer_eval(strnlen(a, 10) == 3); // expected-warning{{TRUE}}
-}
-
-void strnlen_constant2(char x) {
- char a[] = "123";
- clang_analyzer_eval(strnlen(a, 10) == 3); // expected-warning{{TRUE}}
- a[0] = x;
- clang_analyzer_eval(strnlen(a, 10) == 3); // expected-warning{{UNKNOWN}}
-}
-
-void strnlen_constant4() {
- clang_analyzer_eval(strnlen("123456", 3) == 3); // expected-warning{{TRUE}}
-}
-
-void strnlen_constant5() {
- const char *a = "123456";
- clang_analyzer_eval(strnlen(a, 3) == 3); // expected-warning{{TRUE}}
-}
-
-void strnlen_constant6(char x) {
- char a[] = "123456";
- clang_analyzer_eval(strnlen(a, 3) == 3); // expected-warning{{TRUE}}
- a[0] = x;
- clang_analyzer_eval(strnlen(a, 3) == 3); // expected-warning{{UNKNOWN}}
-}
-
-size_t strnlen_null() {
- return strnlen(0, 3); // expected-warning{{Null pointer argument in call to string length function}}
-}
-
-size_t strnlen_fn() {
- return strnlen((char*)&strlen_fn, 3); // expected-warning{{Argument to string length function is the address of the function 'strlen_fn', which is not a null-terminated string}}
-}
-
-size_t strnlen_nonloc() {
-label:
- return strnlen((char*)&&label, 3); // expected-warning{{Argument to string length function is the address of the label 'label', which is not a null-terminated string}}
-}
-
-void strnlen_zero() {
- clang_analyzer_eval(strnlen("abc", 0) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(strnlen(NULL, 0) == 0); // expected-warning{{TRUE}}
-}
-
-size_t strnlen_compound_literal() {
- // This used to crash because we don't model the string lengths of
- // compound literals.
- return strnlen((char[]) { 'a', 'b', 0 }, 1);
-}
-
-size_t strnlen_unknown_limit(float f) {
- // This used to crash because we don't model the integer values of floats.
- return strnlen("abc", (int)f);
-}
-
-void strnlen_is_not_strlen(char *x) {
- clang_analyzer_eval(strnlen(x, 10) == strlen(x)); // expected-warning{{UNKNOWN}}
-}
-
-void strnlen_at_limit(char *x) {
- size_t len = strnlen(x, 10);
- clang_analyzer_eval(len <= 10); // expected-warning{{TRUE}}
- clang_analyzer_eval(len == 10); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(len < 10); // expected-warning{{UNKNOWN}}
-}
-
-void strnlen_at_actual(size_t limit) {
- size_t len = strnlen("abc", limit);
- clang_analyzer_eval(len <= 3); // expected-warning{{TRUE}}
- // This is due to eager assertion in strnlen.
- if (limit == 0) {
- clang_analyzer_eval(len == 0); // expected-warning{{TRUE}}
- } else {
- clang_analyzer_eval(len == 3); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(len < 3); // expected-warning{{UNKNOWN}}
- }
-}
-
-//===----------------------------------------------------------------------===
-// strcpy()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __strcpy_chk BUILTIN(__strcpy_chk)
-char *__strcpy_chk(char *restrict s1, const char *restrict s2, size_t destlen);
-
-#define strcpy(a,b) __strcpy_chk(a,b,(size_t)-1)
-
-#else /* VARIANT */
-
-#define strcpy BUILTIN(strcpy)
-char *strcpy(char *restrict s1, const char *restrict s2);
-
-#endif /* VARIANT */
-
-
-void strcpy_null_dst(char *x) {
- strcpy(NULL, x); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strcpy_null_src(char *x) {
- strcpy(x, NULL); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strcpy_fn(char *x) {
- strcpy(x, (char*)&strcpy_fn); // expected-warning{{Argument to string copy function is the address of the function 'strcpy_fn', which is not a null-terminated string}}
-}
-
-void strcpy_fn_const(char *x) {
- strcpy(x, (const char*)&strcpy_fn); // expected-warning{{Argument to string copy function is the address of the function 'strcpy_fn', which is not a null-terminated string}}
-}
-
-extern int globalInt;
-void strcpy_effects(char *x, char *y) {
- char a = x[0];
- if (globalInt != 42)
- return;
-
- clang_analyzer_eval(strcpy(x, y) == x); // expected-warning{{TRUE}}
- clang_analyzer_eval(strlen(x) == strlen(y)); // expected-warning{{TRUE}}
- clang_analyzer_eval(a == x[0]); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(globalInt == 42); // expected-warning{{TRUE}}
-}
-
-#ifndef SUPPRESS_OUT_OF_BOUND
-void strcpy_overflow(char *y) {
- char x[4];
- if (strlen(y) == 4)
- strcpy(x, y); // expected-warning{{String copy function overflows destination buffer}}
-}
-#endif
-
-void strcpy_no_overflow(char *y) {
- char x[4];
- if (strlen(y) == 3)
- strcpy(x, y); // no-warning
-}
-
-//===----------------------------------------------------------------------===
-// stpcpy()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __stpcpy_chk BUILTIN(__stpcpy_chk)
-char *__stpcpy_chk(char *restrict s1, const char *restrict s2, size_t destlen);
-
-#define stpcpy(a,b) __stpcpy_chk(a,b,(size_t)-1)
-
-#else /* VARIANT */
-
-#define stpcpy BUILTIN(stpcpy)
-char *stpcpy(char *restrict s1, const char *restrict s2);
-
-#endif /* VARIANT */
-
-
-void stpcpy_effect(char *x, char *y) {
- char a = x[0];
-
- clang_analyzer_eval(stpcpy(x, y) == &x[strlen(y)]); // expected-warning{{TRUE}}
- clang_analyzer_eval(strlen(x) == strlen(y)); // expected-warning{{TRUE}}
- clang_analyzer_eval(a == x[0]); // expected-warning{{UNKNOWN}}
-}
-
-#ifndef SUPPRESS_OUT_OF_BOUND
-void stpcpy_overflow(char *y) {
- char x[4];
- if (strlen(y) == 4)
- stpcpy(x, y); // expected-warning{{String copy function overflows destination buffer}}
-}
-#endif
-
-void stpcpy_no_overflow(char *y) {
- char x[4];
- if (strlen(y) == 3)
- stpcpy(x, y); // no-warning
-}
-
-//===----------------------------------------------------------------------===
-// strcat()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __strcat_chk BUILTIN(__strcat_chk)
-char *__strcat_chk(char *restrict s1, const char *restrict s2, size_t destlen);
-
-#define strcat(a,b) __strcat_chk(a,b,(size_t)-1)
-
-#else /* VARIANT */
-
-#define strcat BUILTIN(strcat)
-char *strcat(char *restrict s1, const char *restrict s2);
-
-#endif /* VARIANT */
-
-
-void strcat_null_dst(char *x) {
- strcat(NULL, x); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strcat_null_src(char *x) {
- strcat(x, NULL); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strcat_fn(char *x) {
- strcat(x, (char*)&strcat_fn); // expected-warning{{Argument to string copy function is the address of the function 'strcat_fn', which is not a null-terminated string}}
-}
-
-void strcat_effects(char *y) {
- char x[8] = "123";
- size_t orig_len = strlen(x);
- char a = x[0];
-
- if (strlen(y) != 4)
- return;
-
- clang_analyzer_eval(strcat(x, y) == x); // expected-warning{{TRUE}}
- clang_analyzer_eval((int)strlen(x) == (orig_len + strlen(y))); // expected-warning{{TRUE}}
-}
-
-#ifndef SUPPRESS_OUT_OF_BOUND
-void strcat_overflow_0(char *y) {
- char x[4] = "12";
- if (strlen(y) == 4)
- strcat(x, y); // expected-warning{{String copy function overflows destination buffer}}
-}
-
-void strcat_overflow_1(char *y) {
- char x[4] = "12";
- if (strlen(y) == 3)
- strcat(x, y); // expected-warning{{String copy function overflows destination buffer}}
-}
-
-void strcat_overflow_2(char *y) {
- char x[4] = "12";
- if (strlen(y) == 2)
- strcat(x, y); // expected-warning{{String copy function overflows destination buffer}}
-}
-#endif
-
-void strcat_no_overflow(char *y) {
- char x[5] = "12";
- if (strlen(y) == 2)
- strcat(x, y); // no-warning
-}
-
-void strcat_symbolic_dst_length(char *dst) {
- strcat(dst, "1234");
- clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
-}
-
-void strcat_symbolic_dst_length_taint(char *dst) {
- scanf("%s", dst); // Taint data.
- strcat(dst, "1234");
- clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
-}
-
-void strcat_unknown_src_length(char *src, int offset) {
- char dst[8] = "1234";
- strcat(dst, &src[offset]);
- clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
-}
-
-// There is no strcat_unknown_dst_length because if we can't get a symbolic
-// length for the "before" strlen, we won't be able to set one for "after".
-
-void strcat_too_big(char *dst, char *src) {
- // We assume this can never actually happen, so we don't get a warning.
- if (strlen(dst) != (((size_t)0) - 2))
- return;
- if (strlen(src) != 2)
- return;
- strcat(dst, src);
-}
-
-
-//===----------------------------------------------------------------------===
-// strncpy()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __strncpy_chk BUILTIN(__strncpy_chk)
-char *__strncpy_chk(char *restrict s1, const char *restrict s2, size_t n, size_t destlen);
-
-#define strncpy(a,b,n) __strncpy_chk(a,b,n,(size_t)-1)
-
-#else /* VARIANT */
-
-#define strncpy BUILTIN(strncpy)
-char *strncpy(char *restrict s1, const char *restrict s2, size_t n);
-
-#endif /* VARIANT */
-
-
-void strncpy_null_dst(char *x) {
- strncpy(NULL, x, 5); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strncpy_null_src(char *x) {
- strncpy(x, NULL, 5); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strncpy_fn(char *x) {
- strncpy(x, (char*)&strcpy_fn, 5); // expected-warning{{Argument to string copy function is the address of the function 'strcpy_fn', which is not a null-terminated string}}
-}
-
-void strncpy_effects(char *x, char *y) {
- char a = x[0];
-
- clang_analyzer_eval(strncpy(x, y, 5) == x); // expected-warning{{TRUE}}
- clang_analyzer_eval(strlen(x) == strlen(y)); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(a == x[0]); // expected-warning{{UNKNOWN}}
-}
-
-#ifndef SUPPRESS_OUT_OF_BOUND
-// Enabling the malloc checker enables some of the buffer-checking portions
-// of the C-string checker.
-void cstringchecker_bounds_nocrash() {
- char *p = malloc(2);
- strncpy(p, "AAA", sizeof("AAA")); // expected-warning {{Size argument is greater than the length of the destination buffer}}
- free(p);
-}
-
-void strncpy_overflow(char *y) {
- char x[4];
- if (strlen(y) == 4)
- strncpy(x, y, 5); // expected-warning{{Size argument is greater than the length of the destination buffer}}
-}
-
-void strncpy_no_overflow(char *y) {
- char x[4];
- if (strlen(y) == 3)
- strncpy(x, y, 5); // expected-warning{{Size argument is greater than the length of the destination buffer}}
-}
-
-void strncpy_no_overflow2(char *y, int n) {
- if (n <= 4)
- return;
-
- char x[4];
- if (strlen(y) == 3)
- strncpy(x, y, n); // expected-warning{{Size argument is greater than the length of the destination buffer}}
-}
-#endif
-
-void strncpy_truncate(char *y) {
- char x[4];
- if (strlen(y) == 4)
- strncpy(x, y, 3); // no-warning
-}
-
-void strncpy_no_truncate(char *y) {
- char x[4];
- if (strlen(y) == 3)
- strncpy(x, y, 3); // no-warning
-}
-
-void strncpy_exactly_matching_buffer(char *y) {
- char x[4];
- strncpy(x, y, 4); // no-warning
-
- // strncpy does not null-terminate, so we have no idea what the strlen is
- // after this.
- clang_analyzer_eval(strlen(x) > 4); // expected-warning{{UNKNOWN}}
-}
-
-void strncpy_zero(char *src) {
- char dst[] = "123";
- strncpy(dst, src, 0); // no-warning
-}
-
-void strncpy_empty() {
- char dst[] = "123";
- char src[] = "";
- strncpy(dst, src, 4); // no-warning
-}
-
-//===----------------------------------------------------------------------===
-// strncat()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __strncat_chk BUILTIN(__strncat_chk)
-char *__strncat_chk(char *restrict s1, const char *restrict s2, size_t n, size_t destlen);
-
-#define strncat(a,b,c) __strncat_chk(a,b,c, (size_t)-1)
-
-#else /* VARIANT */
-
-#define strncat BUILTIN(strncat)
-char *strncat(char *restrict s1, const char *restrict s2, size_t n);
-
-#endif /* VARIANT */
-
-
-void strncat_null_dst(char *x) {
- strncat(NULL, x, 4); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strncat_null_src(char *x) {
- strncat(x, NULL, 4); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strncat_fn(char *x) {
- strncat(x, (char*)&strncat_fn, 4); // expected-warning{{Argument to string copy function is the address of the function 'strncat_fn', which is not a null-terminated string}}
-}
-
-void strncat_effects(char *y) {
- char x[8] = "123";
- size_t orig_len = strlen(x);
- char a = x[0];
-
- if (strlen(y) != 4)
- return;
-
- clang_analyzer_eval(strncat(x, y, strlen(y)) == x); // expected-warning{{TRUE}}
- clang_analyzer_eval(strlen(x) == (orig_len + strlen(y))); // expected-warning{{TRUE}}
-}
-
-#ifndef SUPPRESS_OUT_OF_BOUND
-void strncat_overflow_0(char *y) {
- char x[4] = "12";
- if (strlen(y) == 4)
- strncat(x, y, strlen(y)); // expected-warning{{Size argument is greater than the free space in the destination buffer}}
-}
-
-void strncat_overflow_1(char *y) {
- char x[4] = "12";
- if (strlen(y) == 3)
- strncat(x, y, strlen(y)); // expected-warning{{Size argument is greater than the free space in the destination buffer}}
-}
-
-void strncat_overflow_2(char *y) {
- char x[4] = "12";
- if (strlen(y) == 2)
- strncat(x, y, strlen(y)); // expected-warning{{Size argument is greater than the free space in the destination buffer}}
-}
-
-void strncat_overflow_3(char *y) {
- char x[4] = "12";
- if (strlen(y) == 4)
- strncat(x, y, 2); // expected-warning{{Size argument is greater than the free space in the destination buffer}}
-}
-#endif
-
-void strncat_no_overflow_1(char *y) {
- char x[5] = "12";
- if (strlen(y) == 2)
- strncat(x, y, strlen(y)); // no-warning
-}
-
-void strncat_no_overflow_2(char *y) {
- char x[4] = "12";
- if (strlen(y) == 4)
- strncat(x, y, 1); // no-warning
-}
-
-void strncat_symbolic_dst_length(char *dst) {
- strncat(dst, "1234", 5);
- clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
-}
-
-#ifndef SUPPRESS_OUT_OF_BOUND
-void strncat_symbolic_src_length(char *src) {
- char dst[8] = "1234";
- strncat(dst, src, 3);
- clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
-
- char dst2[8] = "1234";
- strncat(dst2, src, 4); // expected-warning{{Size argument is greater than the free space in the destination buffer}}
-}
-
-void strncat_unknown_src_length(char *src, int offset) {
- char dst[8] = "1234";
- strncat(dst, &src[offset], 3);
- clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
-
- char dst2[8] = "1234";
- strncat(dst2, &src[offset], 4); // expected-warning{{Size argument is greater than the free space in the destination buffer}}
-}
-#endif
-
-// There is no strncat_unknown_dst_length because if we can't get a symbolic
-// length for the "before" strlen, we won't be able to set one for "after".
-
-void strncat_symbolic_limit(unsigned limit) {
- char dst[6] = "1234";
- char src[] = "567";
- strncat(dst, src, limit); // no-warning
-
- clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
- clang_analyzer_eval(strlen(dst) == 4); // expected-warning{{UNKNOWN}}
-}
-
-void strncat_unknown_limit(float limit) {
- char dst[6] = "1234";
- char src[] = "567";
- strncat(dst, src, (size_t)limit); // no-warning
-
- clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
- clang_analyzer_eval(strlen(dst) == 4); // expected-warning{{UNKNOWN}}
-}
-
-void strncat_too_big(char *dst, char *src) {
- // We assume this will never actually happen, so we don't get a warning.
- if (strlen(dst) != (((size_t)0) - 2))
- return;
- if (strlen(src) != 2)
- return;
- strncat(dst, src, 2);
-}
-
-void strncat_zero(char *src) {
- char dst[] = "123";
- strncat(dst, src, 0); // no-warning
-}
-
-void strncat_empty() {
- char dst[8] = "123";
- char src[] = "";
- strncat(dst, src, 4); // no-warning
-}
-
-//===----------------------------------------------------------------------===
-// strcmp()
-//===----------------------------------------------------------------------===
-
-#define strcmp BUILTIN(strcmp)
-int strcmp(const char * s1, const char * s2);
-
-void strcmp_check_modelling() {
- char *x = "aa";
- char *y = "a";
- clang_analyzer_eval(strcmp(x, y) > 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(strcmp(x, y) <= 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(strcmp(x, y) > 1); // expected-warning{{UNKNOWN}}
-
- clang_analyzer_eval(strcmp(y, x) < 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(strcmp(y, x) >= 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(strcmp(y, x) < -1); // expected-warning{{UNKNOWN}}
-}
-
-void strcmp_constant0() {
- clang_analyzer_eval(strcmp("123", "123") == 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_constant_and_var_0() {
- char *x = "123";
- clang_analyzer_eval(strcmp(x, "123") == 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_constant_and_var_1() {
- char *x = "123";
- clang_analyzer_eval(strcmp("123", x) == 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_0() {
- char *x = "123";
- char *y = "123";
- clang_analyzer_eval(strcmp(x, y) == 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_1() {
- char *x = "234";
- char *y = "123";
- clang_analyzer_eval(strcmp(x, y) > 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_2() {
- char *x = "123";
- char *y = "234";
- clang_analyzer_eval(strcmp(x, y) < 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_null_0() {
- char *x = NULL;
- char *y = "123";
- strcmp(x, y); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strcmp_null_1() {
- char *x = "123";
- char *y = NULL;
- strcmp(x, y); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strcmp_diff_length_0() {
- char *x = "12345";
- char *y = "234";
- clang_analyzer_eval(strcmp(x, y) < 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_diff_length_1() {
- char *x = "123";
- char *y = "23456";
- clang_analyzer_eval(strcmp(x, y) < 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_diff_length_2() {
- char *x = "12345";
- char *y = "123";
- clang_analyzer_eval(strcmp(x, y) > 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_diff_length_3() {
- char *x = "123";
- char *y = "12345";
- clang_analyzer_eval(strcmp(x, y) < 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_embedded_null () {
- clang_analyzer_eval(strcmp("\0z", "\0y") == 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_unknown_arg (char *unknown) {
- clang_analyzer_eval(strcmp(unknown, unknown) == 0); // expected-warning{{TRUE}}
-}
-
-union argument {
- char *f;
-};
-
-void function_pointer_cast_helper(char **a) {
- strcmp("Hi", *a); // PR24951 crash
-}
-
-void strcmp_union_function_pointer_cast(union argument a) {
- void (*fPtr)(union argument *) = (void (*)(union argument *))function_pointer_cast_helper;
-
- fPtr(&a);
-}
-
-//===----------------------------------------------------------------------===
-// strncmp()
-//===----------------------------------------------------------------------===
-
-#define strncmp BUILTIN(strncmp)
-int strncmp(const char *s1, const char *s2, size_t n);
-
-void strncmp_check_modelling() {
- char *x = "aa";
- char *y = "a";
- clang_analyzer_eval(strncmp(x, y, 2) > 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(strncmp(x, y, 2) <= 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(strncmp(x, y, 2) > 1); // expected-warning{{UNKNOWN}}
-
- clang_analyzer_eval(strncmp(y, x, 2) < 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(strncmp(y, x, 2) >= 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(strncmp(y, x, 2) < -1); // expected-warning{{UNKNOWN}}
-}
-
-void strncmp_constant0() {
- clang_analyzer_eval(strncmp("123", "123", 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_constant_and_var_0() {
- char *x = "123";
- clang_analyzer_eval(strncmp(x, "123", 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_constant_and_var_1() {
- char *x = "123";
- clang_analyzer_eval(strncmp("123", x, 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_0() {
- char *x = "123";
- char *y = "123";
- clang_analyzer_eval(strncmp(x, y, 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_1() {
- char *x = "234";
- char *y = "123";
- clang_analyzer_eval(strncmp(x, y, 3) > 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_2() {
- char *x = "123";
- char *y = "234";
- clang_analyzer_eval(strncmp(x, y, 3) < 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_null_0() {
- char *x = NULL;
- char *y = "123";
- strncmp(x, y, 3); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strncmp_null_1() {
- char *x = "123";
- char *y = NULL;
- strncmp(x, y, 3); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strncmp_diff_length_0() {
- char *x = "12345";
- char *y = "234";
- clang_analyzer_eval(strncmp(x, y, 5) < 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_diff_length_1() {
- char *x = "123";
- char *y = "23456";
- clang_analyzer_eval(strncmp(x, y, 5) < 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_diff_length_2() {
- char *x = "12345";
- char *y = "123";
- clang_analyzer_eval(strncmp(x, y, 5) > 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_diff_length_3() {
- char *x = "123";
- char *y = "12345";
- clang_analyzer_eval(strncmp(x, y, 5) < 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_diff_length_4() {
- char *x = "123";
- char *y = "12345";
- clang_analyzer_eval(strncmp(x, y, 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_diff_length_5() {
- char *x = "012";
- char *y = "12345";
- clang_analyzer_eval(strncmp(x, y, 3) < 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_diff_length_6() {
- char *x = "234";
- char *y = "12345";
- clang_analyzer_eval(strncmp(x, y, 3) > 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_embedded_null () {
- clang_analyzer_eval(strncmp("ab\0zz", "ab\0yy", 4) == 0); // expected-warning{{TRUE}}
-}
-
-//===----------------------------------------------------------------------===
-// strcasecmp()
-//===----------------------------------------------------------------------===
-
-#define strcasecmp BUILTIN(strcasecmp)
-int strcasecmp(const char *s1, const char *s2);
-
-void strcasecmp_check_modelling() {
- char *x = "aa";
- char *y = "a";
- clang_analyzer_eval(strcasecmp(x, y) > 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(strcasecmp(x, y) <= 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(strcasecmp(x, y) > 1); // expected-warning{{UNKNOWN}}
-
- clang_analyzer_eval(strcasecmp(y, x) < 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(strcasecmp(y, x) >= 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(strcasecmp(y, x) < -1); // expected-warning{{UNKNOWN}}
-}
-
-void strcasecmp_constant0() {
- clang_analyzer_eval(strcasecmp("abc", "Abc") == 0); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_constant_and_var_0() {
- char *x = "abc";
- clang_analyzer_eval(strcasecmp(x, "Abc") == 0); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_constant_and_var_1() {
- char *x = "abc";
- clang_analyzer_eval(strcasecmp("Abc", x) == 0); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_0() {
- char *x = "abc";
- char *y = "Abc";
- clang_analyzer_eval(strcasecmp(x, y) == 0); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_1() {
- char *x = "Bcd";
- char *y = "abc";
- clang_analyzer_eval(strcasecmp(x, y) > 0); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_2() {
- char *x = "abc";
- char *y = "Bcd";
- clang_analyzer_eval(strcasecmp(x, y) < 0); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_null_0() {
- char *x = NULL;
- char *y = "123";
- strcasecmp(x, y); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strcasecmp_null_1() {
- char *x = "123";
- char *y = NULL;
- strcasecmp(x, y); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strcasecmp_diff_length_0() {
- char *x = "abcde";
- char *y = "aBd";
- clang_analyzer_eval(strcasecmp(x, y) < 0); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_diff_length_1() {
- char *x = "abc";
- char *y = "aBdef";
- clang_analyzer_eval(strcasecmp(x, y) < 0); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_diff_length_2() {
- char *x = "aBcDe";
- char *y = "abc";
- clang_analyzer_eval(strcasecmp(x, y) > 0); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_diff_length_3() {
- char *x = "aBc";
- char *y = "abcde";
- clang_analyzer_eval(strcasecmp(x, y) < 0); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_embedded_null () {
- clang_analyzer_eval(strcasecmp("ab\0zz", "ab\0yy") == 0); // expected-warning{{TRUE}}
-}
-
-//===----------------------------------------------------------------------===
-// strncasecmp()
-//===----------------------------------------------------------------------===
-
-#define strncasecmp BUILTIN(strncasecmp)
-int strncasecmp(const char *s1, const char *s2, size_t n);
-
-void strncasecmp_check_modelling() {
- char *x = "aa";
- char *y = "a";
- clang_analyzer_eval(strncasecmp(x, y, 2) > 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(strncasecmp(x, y, 2) <= 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(strncasecmp(x, y, 2) > 1); // expected-warning{{UNKNOWN}}
-
- clang_analyzer_eval(strncasecmp(y, x, 2) < 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(strncasecmp(y, x, 2) >= 0); // expected-warning{{FALSE}}
- clang_analyzer_eval(strncasecmp(y, x, 2) < -1); // expected-warning{{UNKNOWN}}
-}
-
-void strncasecmp_constant0() {
- clang_analyzer_eval(strncasecmp("abc", "Abc", 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_constant_and_var_0() {
- char *x = "abc";
- clang_analyzer_eval(strncasecmp(x, "Abc", 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_constant_and_var_1() {
- char *x = "abc";
- clang_analyzer_eval(strncasecmp("Abc", x, 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_0() {
- char *x = "abc";
- char *y = "Abc";
- clang_analyzer_eval(strncasecmp(x, y, 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_1() {
- char *x = "Bcd";
- char *y = "abc";
- clang_analyzer_eval(strncasecmp(x, y, 3) > 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_2() {
- char *x = "abc";
- char *y = "Bcd";
- clang_analyzer_eval(strncasecmp(x, y, 3) < 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_null_0() {
- char *x = NULL;
- char *y = "123";
- strncasecmp(x, y, 3); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strncasecmp_null_1() {
- char *x = "123";
- char *y = NULL;
- strncasecmp(x, y, 3); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strncasecmp_diff_length_0() {
- char *x = "abcde";
- char *y = "aBd";
- clang_analyzer_eval(strncasecmp(x, y, 5) < 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_diff_length_1() {
- char *x = "abc";
- char *y = "aBdef";
- clang_analyzer_eval(strncasecmp(x, y, 5) < 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_diff_length_2() {
- char *x = "aBcDe";
- char *y = "abc";
- clang_analyzer_eval(strncasecmp(x, y, 5) > 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_diff_length_3() {
- char *x = "aBc";
- char *y = "abcde";
- clang_analyzer_eval(strncasecmp(x, y, 5) < 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_diff_length_4() {
- char *x = "abcde";
- char *y = "aBc";
- clang_analyzer_eval(strncasecmp(x, y, 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_diff_length_5() {
- char *x = "abcde";
- char *y = "aBd";
- clang_analyzer_eval(strncasecmp(x, y, 3) < 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_diff_length_6() {
- char *x = "aBDe";
- char *y = "abc";
- clang_analyzer_eval(strncasecmp(x, y, 3) > 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_embedded_null () {
- clang_analyzer_eval(strncasecmp("ab\0zz", "ab\0yy", 4) == 0); // expected-warning{{TRUE}}
-}
-
-//===----------------------------------------------------------------------===
-// strsep()
-//===----------------------------------------------------------------------===
-
-char *strsep(char **stringp, const char *delim);
-
-void strsep_null_delim(char *s) {
- strsep(&s, NULL); // expected-warning{{Null pointer argument in call to strsep()}}
-}
-
-void strsep_null_search() {
- strsep(NULL, ""); // expected-warning{{Null pointer argument in call to strsep()}}
-}
-
-void strsep_return_original_pointer(char *s) {
- char *original = s;
- char *result = strsep(&s, ""); // no-warning
- clang_analyzer_eval(original == result); // expected-warning{{TRUE}}
-}
-
-void strsep_null_string() {
- char *s = NULL;
- char *result = strsep(&s, ""); // no-warning
- clang_analyzer_eval(result == NULL); // expected-warning{{TRUE}}
-}
-
-void strsep_changes_input_pointer(char *s) {
- char *original = s;
- strsep(&s, ""); // no-warning
- clang_analyzer_eval(s == original); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(s == NULL); // expected-warning{{UNKNOWN}}
-
- // Check that the value is symbolic.
- if (s == NULL) {
- clang_analyzer_eval(s == NULL); // expected-warning{{TRUE}}
- }
-}
-
-void strsep_changes_input_string() {
- char str[] = "abc";
-
- clang_analyzer_eval(str[1] == 'b'); // expected-warning{{TRUE}}
-
- char *s = str;
- strsep(&s, "b"); // no-warning
-
- // The real strsep will change the first delimiter it finds into a NUL
- // character. For now, we just model the invalidation.
- clang_analyzer_eval(str[1] == 'b'); // expected-warning{{UNKNOWN}}
-}
-
-//===----------------------------------------------------------------------===
-// memset() / explicit_bzero() / bzero()
-//===----------------------------------------------------------------------===
-
-void *memset(void *dest, int ch, size_t count);
-
-void bzero(void *dst, size_t count);
-void explicit_bzero(void *dest, size_t count);
-
-void *malloc(size_t size);
-void free(void *);
-
-void memset1_char_array_null() {
- char str[] = "abcd";
- clang_analyzer_eval(strlen(str) == 4); // expected-warning{{TRUE}}
- memset(str, '\0', 2);
- clang_analyzer_eval(strlen(str) == 0); // expected-warning{{TRUE}}
-}
-
-void memset2_char_array_null() {
- char str[] = "abcd";
- clang_analyzer_eval(strlen(str) == 4); // expected-warning{{TRUE}}
- memset(str, '\0', strlen(str) + 1);
- clang_analyzer_eval(strlen(str) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(str[2] == 0); // expected-warning{{TRUE}}
-}
-
-void memset3_char_malloc_null() {
- char *str = (char *)malloc(10 * sizeof(char));
- memset(str + 1, '\0', 8);
- clang_analyzer_eval(str[1] == 0); // expected-warning{{UNKNOWN}}
- free(str);
-}
-
-void memset4_char_malloc_null() {
- char *str = (char *)malloc(10 * sizeof(char));
- //void *str = malloc(10 * sizeof(char));
- memset(str, '\0', 10);
- clang_analyzer_eval(str[1] == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(strlen(str) == 0); // expected-warning{{TRUE}}
- free(str);
-}
-
-#ifdef SUPPRESS_OUT_OF_BOUND
-void memset5_char_malloc_overflow_null() {
- char *str = (char *)malloc(10 * sizeof(char));
- memset(str, '\0', 12);
- clang_analyzer_eval(str[1] == 0); // expected-warning{{UNKNOWN}}
- free(str);
-}
-#endif
-
-void memset6_char_array_nonnull() {
- char str[] = "abcd";
- clang_analyzer_eval(strlen(str) == 4); // expected-warning{{TRUE}}
- memset(str, '0', 2);
- clang_analyzer_eval(str[0] == 'a'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(strlen(str) == 4); // expected-warning{{UNKNOWN}}
-}
-
-#ifdef SUPPRESS_OUT_OF_BOUND
-void memset8_char_array_nonnull() {
- char str[5] = "abcd";
- clang_analyzer_eval(strlen(str) == 4); // expected-warning{{TRUE}}
- memset(str, '0', 10);
- clang_analyzer_eval(str[0] != '0'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(strlen(str) >= 10); // expected-warning{{TRUE}}
- clang_analyzer_eval(strlen(str) < 10); // expected-warning{{FALSE}}
-}
-#endif
-
-struct POD_memset {
- int num;
- char c;
-};
-
-void memset10_struct() {
- struct POD_memset pod;
- char *str = (char *)&pod;
- pod.num = 1;
- pod.c = 1;
- clang_analyzer_eval(pod.num == 0); // expected-warning{{FALSE}}
- memset(str, 0, sizeof(struct POD_memset));
- clang_analyzer_eval(pod.num == 0); // expected-warning{{TRUE}}
-}
-
-#ifdef SUPPRESS_OUT_OF_BOUND
-void memset11_struct_field() {
- struct POD_memset pod;
- pod.num = 1;
- pod.c = '1';
- memset(&pod.num, 0, sizeof(struct POD_memset));
-
- clang_analyzer_eval(pod.num == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(pod.c == '\0'); // expected-warning{{TRUE}}
-}
-
-void memset12_struct_field() {
- struct POD_memset pod;
- pod.num = 1;
- pod.c = '1';
- memset(&pod.c, 0, sizeof(struct POD_memset));
- clang_analyzer_eval(pod.num == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(pod.c == 0); // expected-warning{{UNKNOWN}}
-}
-
-union U_memset {
- int i;
- double d;
- char c;
-};
-
-void memset13_union_field() {
- union U_memset u;
- u.i = 5;
- memset(&u.i, '\0', sizeof(union U_memset));
- // Note: This should be TRUE, analyzer can't handle union perfectly now.
- clang_analyzer_eval(u.d == 0); // expected-warning{{UNKNOWN}}
-}
-#endif
-
-void memset14_region_cast() {
- char *str = (char *)malloc(10 * sizeof(int));
- int *array = (int *)str;
- memset(array, 0, 10 * sizeof(int));
- clang_analyzer_eval(str[10] == '\0'); // expected-warning{{TRUE}}
- clang_analyzer_eval(strlen((char *)array) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(strlen(str) == 0); // expected-warning{{TRUE}}
- free(str);
-}
-
-void memset15_region_cast() {
- char *str = (char *)malloc(10 * sizeof(int));
- int *array = (int *)str;
- memset(array, 0, 5 * sizeof(int));
- clang_analyzer_eval(str[10] == '\0'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(strlen((char *)array) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(strlen(str) == 0); // expected-warning{{TRUE}}
- free(str);
-}
-
-int memset20_scalar() {
- int *x = malloc(sizeof(int));
- *x = 10;
- memset(x, 0, sizeof(int));
- int num = 1 / *x; // expected-warning{{Division by zero}}
- free(x);
- return num;
-}
-
-int memset21_scalar() {
- int *x = malloc(sizeof(int));
- memset(x, 0, 1);
- int num = 1 / *x;
- free(x);
- return num;
-}
-
-void memset22_array() {
- int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
- clang_analyzer_eval(array[1] == 2); // expected-warning{{TRUE}}
- memset(array, 0, sizeof(array));
- clang_analyzer_eval(array[1] == 0); // expected-warning{{TRUE}}
-}
-
-void memset23_array_pod_object() {
- struct POD_memset array[10];
- array[1].num = 10;
- array[1].c = 'c';
- clang_analyzer_eval(array[1].num == 10); // expected-warning{{TRUE}}
- memset(&array[1], 0, sizeof(struct POD_memset));
- clang_analyzer_eval(array[1].num == 0); // expected-warning{{UNKNOWN}}
-}
-
-void memset24_array_pod_object() {
- struct POD_memset array[10];
- array[1].num = 10;
- array[1].c = 'c';
- clang_analyzer_eval(array[1].num == 10); // expected-warning{{TRUE}}
- memset(array, 0, sizeof(array));
- clang_analyzer_eval(array[1].num == 0); // expected-warning{{TRUE}}
-}
-
-void memset25_symbol(char c) {
- char array[10] = {1};
- if (c != 0)
- return;
-
- memset(array, c, 10);
-
- clang_analyzer_eval(strlen(array) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(array[4] == 0); // expected-warning{{TRUE}}
-}
-
-void memset26_upper_UCHAR_MAX() {
- char array[10] = {1};
-
- memset(array, 1024, 10);
-
- clang_analyzer_eval(strlen(array) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(array[4] == 0); // expected-warning{{TRUE}}
-}
-
-void bzero1_null() {
- char *a = NULL;
-
- bzero(a, 10); // expected-warning{{Null pointer argument in call to memory clearance function}}
-}
-
-void bzero2_char_array_null() {
- char str[] = "abcd";
- clang_analyzer_eval(strlen(str) == 4); // expected-warning{{TRUE}}
- bzero(str, 2);
- clang_analyzer_eval(strlen(str) == 0); // expected-warning{{TRUE}}
-}
-
-void bzero3_char_ptr_null() {
- char *str = "abcd";
- clang_analyzer_eval(strlen(str) == 4); // expected-warning{{TRUE}}
- bzero(str + 2, 2);
- clang_analyzer_eval(strlen(str) == 0); // expected-warning{{FALSE}}
-}
-
-void explicit_bzero1_null() {
- char *a = NULL;
-
- explicit_bzero(a, 10); // expected-warning{{Null pointer argument in call to memory clearance function}}
-}
-
-void explicit_bzero2_clear_mypassword() {
- char passwd[7] = "passwd";
-
- explicit_bzero(passwd, sizeof(passwd)); // no-warning
-
- clang_analyzer_eval(strlen(passwd) == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(passwd[0] == '\0'); // expected-warning{{TRUE}}
-}
-
-void explicit_bzero3_out_ofbound() {
- char *privkey = (char *)malloc(7);
- const char newprivkey[10] = "mysafekey";
-
- strcpy(privkey, "random");
- explicit_bzero(privkey, sizeof(newprivkey));
-#ifndef SUPPRESS_OUT_OF_BOUND
- // expected-warning@-2 {{Memory clearance function accesses out-of-bound array element}}
-#endif
- clang_analyzer_eval(privkey[0] == '\0');
-#ifdef SUPPRESS_OUT_OF_BOUND
- // expected-warning@-2 {{UNKNOWN}}
-#endif
- free(privkey);
-}
-
-//===----------------------------------------------------------------------===
-// FIXMEs
-//===----------------------------------------------------------------------===
-
-// The analyzer_eval call below should evaluate to true. We are being too
-// aggressive in marking the (length of) src symbol dead. The length of dst
-// depends on src. This could be explicitly specified in the checker or the
-// logic for handling MetadataSymbol in SymbolManager needs to change.
-void strcat_symbolic_src_length(char *src) {
- char dst[8] = "1234";
- strcat(dst, src);
- clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{UNKNOWN}}
-}
-
-
-// The analyzer_eval call below should evaluate to true. Most likely the same
-// issue as the test above.
-void strncpy_exactly_matching_buffer2(char *y) {
- if (strlen(y) >= 4)
- return;
-
- char x[4];
- strncpy(x, y, 4); // no-warning
-
- // This time, we know that y fits in x anyway.
- clang_analyzer_eval(strlen(x) <= 3); // expected-warning{{UNKNOWN}}
-}
-
-void memset7_char_array_nonnull() {
- char str[5] = "abcd";
- clang_analyzer_eval(strlen(str) == 4); // expected-warning{{TRUE}}
- memset(str, '0', 5);
- // FIXME: This should be TRUE.
- clang_analyzer_eval(str[0] == '0'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(strlen(str) >= 5); // expected-warning{{TRUE}}
-}
-
-void memset16_region_cast() {
- char *str = (char *)malloc(10 * sizeof(int));
- int *array = (int *)str;
- memset(array, '0', 10 * sizeof(int));
- // FIXME: This should be TRUE.
- clang_analyzer_eval(str[10] == '0'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(strlen((char *)array) >= 10 * sizeof(int)); // expected-warning{{TRUE}}
- clang_analyzer_eval(strlen(str) >= 10 * sizeof(int)); // expected-warning{{TRUE}}
- free(str);
-}
-
-#ifdef SUPPRESS_OUT_OF_BOUND
-void memset17_region_cast() {
- char *str = (char *)malloc(10 * sizeof(int));
- int *array = (int *)str;
- memset(array, '0', 12 * sizeof(int));
- clang_analyzer_eval(str[10] == '0'); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(strlen((char *)array) >= 12 * sizeof(int)); // expected-warning{{TRUE}}
- clang_analyzer_eval(strlen(str) >= 12 * sizeof(int)); // expected-warning{{TRUE}}
- free(str);
-}
-
-void memset18_memset_multiple_times() {
- char *str = (char *)malloc(10 * sizeof(char));
- clang_analyzer_eval(strlen(str) == 0); // expected-warning{{UNKNOWN}}
-
- memset(str + 2, '\0', 10 * sizeof(char));
- clang_analyzer_eval(strlen(str) == 0); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(str[1] == '\0'); // expected-warning{{UNKNOWN}}
-
- memset(str, '0', 10 * sizeof(char));
- clang_analyzer_eval(strlen(str) >= 10); // expected-warning{{TRUE}}
- // FIXME: This should be TRUE.
- clang_analyzer_eval(str[1] == '0'); // expected-warning{{UNKNOWN}}
-
- free(str);
-}
-
-void memset19_memset_multiple_times() {
- char *str = (char *)malloc(10 * sizeof(char));
- clang_analyzer_eval(strlen(str) == 0); // expected-warning{{UNKNOWN}}
-
- memset(str, '0', 10 * sizeof(char));
- clang_analyzer_eval(strlen(str) >= 10); // expected-warning{{TRUE}}
- // FIXME: This should be TRUE.
- clang_analyzer_eval(str[1] == '0'); // expected-warning{{UNKNOWN}}
-
- memset(str + 2, '\0', 10 * sizeof(char));
- clang_analyzer_eval(strlen(str) >= 10); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(str[1] == '0'); // expected-warning{{UNKNOWN}}
-
- free(str);
-}
-#endif
-
-// The analyzer does not support binding a symbol with default binding.
-void memset27_symbol(char c) {
- char array[10] = {0};
- if (c < 10)
- return;
-
- memset(array, c, 10);
-
- clang_analyzer_eval(strlen(array) >= 10); // expected-warning{{TRUE}}
- // FIXME: This should be TRUE.
- clang_analyzer_eval(array[4] >= 10); // expected-warning{{UNKNOWN}}
-}
-
-void memset28() {
- short x;
- memset(&x, 1, sizeof(short));
- // This should be true.
- clang_analyzer_eval(x == 0x101); // expected-warning{{UNKNOWN}}
-}
diff --git a/test/Analysis/string.cpp b/test/Analysis/string.cpp
deleted file mode 100644
index f86416da6ee2..000000000000
--- a/test/Analysis/string.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix -verify %s
-
-// expected-no-diagnostics
-
-// Test functions that are called "memcpy" but aren't the memcpy
-// we're looking for. Unfortunately, this test cannot be put into
-// a namespace. The out-of-class weird memcpy needs to be recognized
-// as a normal C function for the test to make sense.
-typedef __typeof(sizeof(int)) size_t;
-void *memcpy(void *, const void *, size_t);
-
-struct S {
- static S s1, s2;
-
- // A weird overload within the class that accepts a structure reference
- // instead of a pointer.
- void memcpy(void *, const S &, size_t);
- void test_in_class_weird_memcpy() {
- memcpy(this, s2, 1); // no-crash
- }
-};
-
-// A similarly weird overload outside of the class.
-void *memcpy(void *, const S &, size_t);
-
-void test_out_of_class_weird_memcpy() {
- memcpy(&S::s1, S::s2, 1); // no-crash
-}
diff --git a/test/Analysis/structured_bindings.cc b/test/Analysis/structured_bindings.cc
deleted file mode 100644
index 1e23246f9a12..000000000000
--- a/test/Analysis/structured_bindings.cc
+++ /dev/null
@@ -1,10 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c++17 -analyzer-checker=core -verify %s
-
-// expected-no-diagnostics
-struct s { int a; };
-int foo() {
- auto[a] = s{1}; // FIXME: proper modelling
- if (a) {
- }
-}
-
diff --git a/test/Analysis/superclass.m b/test/Analysis/superclass.m
deleted file mode 100644
index 172935995389..000000000000
--- a/test/Analysis/superclass.m
+++ /dev/null
@@ -1,241 +0,0 @@
-// RUN: %clang_analyze_cc1 -fblocks -analyzer-checker=osx.cocoa.MissingSuperCall -verify -Wno-objc-root-class %s
-
-// Define used Classes
-@protocol NSObject
-- (id)retain;
-- (oneway void)release;
-@end
-@interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
-@end
-typedef char BOOL;
-typedef double NSTimeInterval;
-typedef enum UIViewAnimationOptions {
- UIViewAnimationOptionLayoutSubviews = 1 << 0
-} UIViewAnimationOptions;
-@interface NSCoder : NSObject {}
-@end
-
-// Define the Superclasses for our Checks
-@interface UIViewController : NSObject {}
-- (void)addChildViewController:(UIViewController *)childController;
-- (void)viewDidAppear:(BOOL)animated;
-- (void)viewDidDisappear:(BOOL)animated;
-- (void)viewDidUnload;
-- (void)viewDidLoad;
-- (void)viewWillUnload;
-- (void)viewWillAppear:(BOOL)animated;
-- (void)viewWillDisappear:(BOOL)animated;
-- (void)didReceiveMemoryWarning;
-- (void)removeFromParentViewController;
-- (void)transitionFromViewController:(UIViewController *)fromViewController
- toViewController:(UIViewController *)toViewController
- duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options
- animations:(void (^)(void))animations
- completion:(void (^)(BOOL finished))completion;
-@end
-@interface UIResponder : NSObject {}
-- (BOOL)resignFirstResponder;
-@end
-@interface NSResponder : NSObject {}
-- (void)restoreStateWithCoder:(NSCoder *)coder;
-- (void)encodeRestorableStateWithCoder:(NSCoder *)coder;
-@end
-@interface NSDocument : NSObject {}
-- (void)restoreStateWithCoder:(NSCoder *)coder;
-- (void)encodeRestorableStateWithCoder:(NSCoder *)coder;
-@end
-
-// Checks
-
-// Do not warn if UIViewController/*Responder/NSDocument is not our superclass
-@interface TestA
-@end
-@implementation TestA
-
-- (void)addChildViewController:(UIViewController *)childController {}
-- (void)viewDidAppear:(BOOL)animated {}
-- (void)viewDidDisappear:(BOOL)animated {}
-- (void)viewDidUnload {}
-- (void)viewDidLoad {}
-- (void)viewWillUnload {}
-- (void)viewWillAppear:(BOOL)animated {}
-- (void)viewWillDisappear:(BOOL)animated {}
-- (void)didReceiveMemoryWarning {}
-- (void)removeFromParentViewController {}
-- (BOOL)resignFirstResponder { return 0; }
-- (void)restoreStateWithCoder:(NSCoder *)coder {}
-- (void)encodeRestorableStateWithCoder:(NSCoder *)coder {}
-@end
-
-// Do not warn for the implementation in the superclass itself.
-@implementation UIViewController
-- (void)addChildViewController:(UIViewController *)childController {}
-- (void)viewDidAppear:(BOOL)animated {}
-- (void)viewDidDisappear:(BOOL)animated {}
-- (void)viewDidUnload {}
-- (void)viewDidLoad {}
-- (void)viewWillUnload {}
-- (void)viewWillAppear:(BOOL)animated {}
-- (void)viewWillDisappear:(BOOL)animated {}
-- (void)didReceiveMemoryWarning {}
-- (void)removeFromParentViewController {}
-- (void)transitionFromViewController:(UIViewController *)fromViewController
- toViewController:(UIViewController *)toViewController
- duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options
- animations:(void (^)(void))animations
- completion:(void (^)(BOOL finished))completion {}
-@end
-
-// Warn if UIViewController is our superclass and we do not call super
-@interface TestB : UIViewController {}
-@end
-@implementation TestB
-
-- (void)addChildViewController:(UIViewController *)childController {
- int addChildViewController = 5;
- for (int i = 0; i < addChildViewController; i++)
- [self viewDidAppear:i];
-} // expected-warning {{The 'addChildViewController:' instance method in UIViewController subclass 'TestB' is missing a [super addChildViewController:] call}}
-- (void)viewDidAppear:(BOOL)animated {} // expected-warning {{The 'viewDidAppear:' instance method in UIViewController subclass 'TestB' is missing a [super viewDidAppear:] call}}
-- (void)viewDidDisappear:(BOOL)animated {} // expected-warning {{The 'viewDidDisappear:' instance method in UIViewController subclass 'TestB' is missing a [super viewDidDisappear:] call}}
-- (void)viewDidUnload {} // expected-warning {{The 'viewDidUnload' instance method in UIViewController subclass 'TestB' is missing a [super viewDidUnload] call}}
-- (void)viewDidLoad {} // expected-warning {{The 'viewDidLoad' instance method in UIViewController subclass 'TestB' is missing a [super viewDidLoad] call}}
-- (void)viewWillUnload {} // expected-warning {{The 'viewWillUnload' instance method in UIViewController subclass 'TestB' is missing a [super viewWillUnload] call}}
-- (void)viewWillAppear:(BOOL)animated {} // expected-warning {{The 'viewWillAppear:' instance method in UIViewController subclass 'TestB' is missing a [super viewWillAppear:] call}}
-- (void)viewWillDisappear:(BOOL)animated {} // expected-warning {{The 'viewWillDisappear:' instance method in UIViewController subclass 'TestB' is missing a [super viewWillDisappear:] call}}
-- (void)didReceiveMemoryWarning {} // expected-warning {{The 'didReceiveMemoryWarning' instance method in UIViewController subclass 'TestB' is missing a [super didReceiveMemoryWarning] call}}
-- (void)removeFromParentViewController {} // expected-warning {{The 'removeFromParentViewController' instance method in UIViewController subclass 'TestB' is missing a [super removeFromParentViewController] call}}
-
-// Do not warn for methods were it shouldn't
-- (void)shouldAutorotate {}
-@end
-
-// Do not warn if UIViewController is our superclass but we did call super
-@interface TestC : UIViewController {}
-@end
-@implementation TestC
-
-- (BOOL)methodReturningStuff {
- return 1;
-}
-
-- (void)methodDoingStuff {
- [super removeFromParentViewController];
-}
-
-- (void)addChildViewController:(UIViewController *)childController {
- [super addChildViewController:childController];
-}
-
-- (void)viewDidAppear:(BOOL)animated {
- [super viewDidAppear:animated];
-}
-
-- (void)viewDidDisappear:(BOOL)animated {
- [super viewDidDisappear:animated];
-}
-
-- (void)viewDidUnload {
- [super viewDidUnload];
-}
-
-- (void)viewDidLoad {
- [super viewDidLoad];
-}
-
-- (void)viewWillUnload {
- [super viewWillUnload];
-}
-
-- (void)viewWillAppear:(BOOL)animated {
- int i = 0; // Also don't start warning just because we do additional stuff
- i++;
- [self viewDidDisappear:i];
- [super viewWillAppear:animated];
-}
-
-- (void)viewWillDisappear:(BOOL)animated {
- [super viewWillDisappear:[self methodReturningStuff]];
-}
-
-- (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
-}
-
-// We expect a warning here because at the moment the super-call can't be
-// done from another method.
-- (void)removeFromParentViewController {
- [self methodDoingStuff];
-} // expected-warning {{The 'removeFromParentViewController' instance method in UIViewController subclass 'TestC' is missing a [super removeFromParentViewController] call}}
-@end
-
-
-// Do warn for UIResponder subclasses that don't call super
-@interface TestD : UIResponder {}
-@end
-@implementation TestD
-
-- (BOOL)resignFirstResponder {
- return 0;
-} // expected-warning {{The 'resignFirstResponder' instance method in UIResponder subclass 'TestD' is missing a [super resignFirstResponder] call}}
-@end
-
-// Do not warn for UIResponder subclasses that do the right thing
-@interface TestE : UIResponder {}
-@end
-@implementation TestE
-
-- (BOOL)resignFirstResponder {
- return [super resignFirstResponder];
-}
-@end
-
-// Do warn for NSResponder subclasses that don't call super
-@interface TestF : NSResponder {}
-@end
-@implementation TestF
-
-- (void)restoreStateWithCoder:(NSCoder *)coder {
-} // expected-warning {{The 'restoreStateWithCoder:' instance method in NSResponder subclass 'TestF' is missing a [super restoreStateWithCoder:] call}}
-- (void)encodeRestorableStateWithCoder:(NSCoder *)coder {
-} // expected-warning {{The 'encodeRestorableStateWithCoder:' instance method in NSResponder subclass 'TestF' is missing a [super encodeRestorableStateWithCoder:] call}}
-@end
-
-// Do not warn for NSResponder subclasses that do the right thing
-@interface TestG : NSResponder {}
-@end
-@implementation TestG
-
-- (void)restoreStateWithCoder:(NSCoder *)coder {
- [super restoreStateWithCoder:coder];
-}
-- (void)encodeRestorableStateWithCoder:(NSCoder *)coder {
- [super encodeRestorableStateWithCoder:coder];
-}
-@end
-
-// Do warn for NSDocument subclasses that don't call super
-@interface TestH : NSDocument {}
-@end
-@implementation TestH
-
-- (void)restoreStateWithCoder:(NSCoder *)coder {
-} // expected-warning {{The 'restoreStateWithCoder:' instance method in NSDocument subclass 'TestH' is missing a [super restoreStateWithCoder:] call}}
-- (void)encodeRestorableStateWithCoder:(NSCoder *)coder {
-} // expected-warning {{The 'encodeRestorableStateWithCoder:' instance method in NSDocument subclass 'TestH' is missing a [super encodeRestorableStateWithCoder:] call}}
-@end
-
-// Do not warn for NSDocument subclasses that do the right thing
-@interface TestI : NSDocument {}
-@end
-@implementation TestI
-
-- (void)restoreStateWithCoder:(NSCoder *)coder {
- [super restoreStateWithCoder:coder];
-}
-- (void)encodeRestorableStateWithCoder:(NSCoder *)coder {
- [super encodeRestorableStateWithCoder:coder];
-}
-@end \ No newline at end of file
diff --git a/test/Analysis/sval-dump-int128.c b/test/Analysis/sval-dump-int128.c
deleted file mode 100644
index 3c28f1bd1bb6..000000000000
--- a/test/Analysis/sval-dump-int128.c
+++ /dev/null
@@ -1,7 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-linux-gnu -analyzer-checker=debug.ExprInspection %s -verify
-
-void clang_analyzer_dump(unsigned __int128 x);
-
-void testDumpInt128() {
- clang_analyzer_dump((unsigned __int128)5 << 64); // expected-warning{{92233720368547758080 U128b}}
-}
diff --git a/test/Analysis/svalbuilder-float-cast.c b/test/Analysis/svalbuilder-float-cast.c
deleted file mode 100644
index 0f5760cbfca0..000000000000
--- a/test/Analysis/svalbuilder-float-cast.c
+++ /dev/null
@@ -1,20 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker debug.ExprInspection -verify %s
-void clang_analyzer_denote(int, const char *);
-void clang_analyzer_express(int);
-
-void SymbolCast_of_float_type_aux(int *p) {
- *p += 0;
- // FIXME: Ideally, all unknown values should be symbolicated.
- clang_analyzer_denote(*p, "$x"); // expected-warning{{Not a symbol}}
-
- *p += 1;
- // This should NOT be (float)$x + 1. Symbol $x was never casted to float.
- // FIXME: Ideally, this should be $x + 1.
- clang_analyzer_express(*p); // expected-warning{{Not a symbol}}
-}
-
-void SymbolCast_of_float_type() {
- extern float x;
- void (*f)() = SymbolCast_of_float_type_aux;
- f(&x);
-}
diff --git a/test/Analysis/svalbuilder-logic.c b/test/Analysis/svalbuilder-logic.c
deleted file mode 100644
index 1595acb93569..000000000000
--- a/test/Analysis/svalbuilder-logic.c
+++ /dev/null
@@ -1,16 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix -verify %s
-// expected-no-diagnostics
-
-// Testing core functionality of the SValBuilder.
-
-int SValBuilderLogicNoCrash(int *x) {
- return 3 - (int)(x +3);
-}
-
-// http://llvm.org/bugs/show_bug.cgi?id=15863
-// Don't crash when mixing 'bool' and 'int' in implicit comparisons to 0.
-void pr15863() {
- extern int getBool();
- _Bool a = getBool();
- (void)!a; // no-warning
-}
diff --git a/test/Analysis/svalbuilder-rearrange-comparisons.c b/test/Analysis/svalbuilder-rearrange-comparisons.c
deleted file mode 100644
index 9e9bf0a9db9b..000000000000
--- a/test/Analysis/svalbuilder-rearrange-comparisons.c
+++ /dev/null
@@ -1,998 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection,core.builtin -analyzer-config aggressive-binary-operation-simplification=true -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(int x);
-void clang_analyzer_denote(int x, const char *literal);
-void clang_analyzer_express(int x);
-
-void exit(int);
-
-#define UINT_MAX (~0U)
-#define INT_MAX (UINT_MAX & (UINT_MAX >> 1))
-
-extern void __assert_fail (__const char *__assertion, __const char *__file,
- unsigned int __line, __const char *__function)
- __attribute__ ((__noreturn__));
-#define assert(expr) \
- ((expr) ? (void)(0) : __assert_fail (#expr, __FILE__, __LINE__, __func__))
-
-int g();
-int f() {
- int x = g();
- // Assert that no overflows occur in this test file.
- // Assuming that concrete integers are also within that range.
- assert(x <= ((int)INT_MAX / 4));
- assert(x >= -((int)INT_MAX / 4));
- return x;
-}
-
-void compare_different_symbol_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- clang_analyzer_express(x == y); // expected-warning {{$x - $y == 0}}
-}
-
-void compare_different_symbol_plus_left_int_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x += 1;
- clang_analyzer_express(x == y); // expected-warning {{$y - $x == 1}}
-}
-
-void compare_different_symbol_minus_left_int_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x -= 1;
- clang_analyzer_express(x == y); // expected-warning {{$x - $y == 1}}
-}
-
-void compare_different_symbol_plus_right_int_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- y += 2;
- clang_analyzer_express(y); // expected-warning {{$y + 2}}
- clang_analyzer_express(x == y); // expected-warning {{$x - $y == 2}}
-}
-
-void compare_different_symbol_minus_right_int_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- y -= 2;
- clang_analyzer_express(y); // expected-warning {{$y - 2}}
- clang_analyzer_express(x == y); // expected-warning {{$y - $x == 2}}
-}
-
-void compare_different_symbol_plus_left_plus_right_int_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x += 2;
- y += 1;
- clang_analyzer_express(x); // expected-warning {{$x + 2}}
- clang_analyzer_express(y); // expected-warning {{$y + 1}}
- clang_analyzer_express(x == y); // expected-warning {{$y - $x == 1}}
-}
-
-void compare_different_symbol_plus_left_minus_right_int_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x += 2;
- y -= 1;
- clang_analyzer_express(x); // expected-warning {{$x + 2}}
- clang_analyzer_express(y); // expected-warning {{$y - 1}}
- clang_analyzer_express(x == y); // expected-warning {{$y - $x == 3}}
-}
-
-void compare_different_symbol_minus_left_plus_right_int_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x -= 2;
- y += 1;
- clang_analyzer_express(x); // expected-warning {{$x - 2}}
- clang_analyzer_express(y); // expected-warning {{$y + 1}}
- clang_analyzer_express(x == y); // expected-warning {{$x - $y == 3}}
-}
-
-void compare_different_symbol_minus_left_minus_right_int_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x -= 2;
- y -= 1;
- clang_analyzer_express(x); // expected-warning {{$x - 2}}
- clang_analyzer_express(y); // expected-warning {{$y - 1}}
- clang_analyzer_express(x == y); // expected-warning {{$x - $y == 1}}
-}
-
-void compare_same_symbol_equal() {
- int x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_eval(x == y); // expected-warning {{TRUE}}
-}
-
-void compare_same_symbol_plus_left_int_equal() {
- int x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_eval(x == y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_minus_left_int_equal() {
- int x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_eval(x == y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_plus_right_int_equal() {
- int x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_eval(x == y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_minus_right_int_equal() {
- int x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_eval(x == y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_plus_left_plus_right_int_equal() {
- int x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_eval(x == y); // expected-warning {{TRUE}}
-}
-
-void compare_same_symbol_plus_left_minus_right_int_equal() {
- int x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_eval(x == y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_minus_left_plus_right_int_equal() {
- int x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_eval(x == y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_minus_left_minus_right_int_equal() {
- int x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_eval(x == y); // expected-warning {{TRUE}}
-}
-
-void compare_different_symbol_less_or_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- clang_analyzer_express(x <= y); // expected-warning {{$x - $y <= 0}}
-}
-
-void compare_different_symbol_plus_left_int_less_or_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x += 1;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(x <= y); // expected-warning {{$y - $x >= 1}}
-}
-
-void compare_different_symbol_minus_left_int_less_or_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x -= 1;
- clang_analyzer_express(x <= y); // expected-warning {{$x - $y <= 1}}
-}
-
-void compare_different_symbol_plus_right_int_less_or_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- y += 2;
- clang_analyzer_express(x <= y); // expected-warning {{$x - $y <= 2}}
-}
-
-void compare_different_symbol_minus_right_int_less_or_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- y -= 2;
- clang_analyzer_express(y); // expected-warning {{$y - 2}}
- clang_analyzer_express(x <= y); // expected-warning {{$y - $x >= 2}}
-}
-
-void compare_different_symbol_plus_left_plus_right_int_less_or_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x += 2;
- y += 1;
- clang_analyzer_express(x); // expected-warning {{$x + 2}}
- clang_analyzer_express(y); // expected-warning {{$y + 1}}
- clang_analyzer_express(x <= y); // expected-warning {{$y - $x >= 1}}
-}
-
-void compare_different_symbol_plus_left_minus_right_int_less_or_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x += 2;
- y -= 1;
- clang_analyzer_express(x); // expected-warning {{$x + 2}}
- clang_analyzer_express(y); // expected-warning {{$y - 1}}
- clang_analyzer_express(x <= y); // expected-warning {{$y - $x >= 3}}
-}
-
-void compare_different_symbol_minus_left_plus_right_int_less_or_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x -= 2;
- y += 1;
- clang_analyzer_express(x); // expected-warning {{$x - 2}}
- clang_analyzer_express(y); // expected-warning {{$y + 1}}
- clang_analyzer_express(x <= y); // expected-warning {{$x - $y <= 3}}
-}
-
-void compare_different_symbol_minus_left_minus_right_int_less_or_equal() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x -= 2;
- y -= 1;
- clang_analyzer_express(x); // expected-warning {{$x - 2}}
- clang_analyzer_express(y); // expected-warning {{$y - 1}}
- clang_analyzer_express(x <= y); // expected-warning {{$x - $y <= 1}}
-}
-
-void compare_same_symbol_less_or_equal() {
- int x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_eval(x <= y); // expected-warning {{TRUE}}
-}
-
-void compare_same_symbol_plus_left_int_less_or_equal() {
- int x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_eval(x <= y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_minus_left_int_less_or_equal() {
- int x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_eval(x <= y); // expected-warning {{TRUE}}
-}
-
-void compare_same_symbol_plus_right_int_less_or_equal() {
- int x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_eval(x <= y); // expected-warning {{TRUE}}
-}
-
-void compare_same_symbol_minus_right_int_less_or_equal() {
- int x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_eval(x <= y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_plus_left_plus_right_int_less_or_equal() {
- int x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_eval(x <= y); // expected-warning {{TRUE}}
-}
-
-void compare_same_symbol_plus_left_minus_right_int_less_or_equal() {
- int x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_eval(x <= y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_minus_left_plus_right_int_less_or_equal() {
- int x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_eval(x <= y); // expected-warning {{TRUE}}
-}
-
-void compare_same_symbol_minus_left_minus_right_int_less_or_equal() {
- int x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_eval(x <= y); // expected-warning {{TRUE}}
-}
-
-void compare_different_symbol_less() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- clang_analyzer_express(y); // expected-warning {{$y}}
- clang_analyzer_express(x < y); // expected-warning {{$x - $y < 0}}
-}
-
-void compare_different_symbol_plus_left_int_less() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x += 1;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$y}}
- clang_analyzer_express(x < y); // expected-warning {{$y - $x > 1}}
-}
-
-void compare_different_symbol_minus_left_int_less() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x -= 1;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$y}}
- clang_analyzer_express(x < y); // expected-warning {{$x - $y < 1}}
-}
-
-void compare_different_symbol_plus_right_int_less() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- y += 2;
- clang_analyzer_express(y); // expected-warning {{$y + 2}}
- clang_analyzer_express(x < y); // expected-warning {{$x - $y < 2}}
-}
-
-void compare_different_symbol_minus_right_int_less() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- y -= 2;
- clang_analyzer_express(y); // expected-warning {{$y - 2}}
- clang_analyzer_express(x < y); // expected-warning {{$y - $x > 2}}
-}
-
-void compare_different_symbol_plus_left_plus_right_int_less() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x += 2;
- y += 1;
- clang_analyzer_express(x); // expected-warning {{$x + 2}}
- clang_analyzer_express(y); // expected-warning {{$y + 1}}
- clang_analyzer_express(x < y); // expected-warning {{$y - $x > 1}}
-}
-
-void compare_different_symbol_plus_left_minus_right_int_less() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x += 2;
- y -= 1;
- clang_analyzer_express(x); // expected-warning {{$x + 2}}
- clang_analyzer_express(y); // expected-warning {{$y - 1}}
- clang_analyzer_express(x < y); // expected-warning {{$y - $x > 3}}
-}
-
-void compare_different_symbol_minus_left_plus_right_int_less() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x -= 2;
- y += 1;
- clang_analyzer_express(x); // expected-warning {{$x - 2}}
- clang_analyzer_express(y); // expected-warning {{$y + 1}}
- clang_analyzer_express(x < y); // expected-warning {{$x - $y < 3}}
-}
-
-void compare_different_symbol_minus_left_minus_right_int_less() {
- int x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- x -= 2;
- y -= 1;
- clang_analyzer_express(x); // expected-warning {{$x - 2}}
- clang_analyzer_express(y); // expected-warning {{$y - 1}}
- clang_analyzer_express(x < y); // expected-warning {{$x - $y < 1}}
-}
-
-void compare_same_symbol_less() {
- int x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_eval(x < y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_plus_left_int_less() {
- int x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_eval(x < y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_minus_left_int_less() {
- int x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_eval(x < y); // expected-warning {{TRUE}}
-}
-
-void compare_same_symbol_plus_right_int_less() {
- int x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_eval(x < y); // expected-warning {{TRUE}}
-}
-
-void compare_same_symbol_minus_right_int_less() {
- int x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_eval(x < y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_plus_left_plus_right_int_less() {
- int x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_eval(x < y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_plus_left_minus_right_int_less() {
- int x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_eval(x < y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_minus_left_plus_right_int_less() {
- int x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_eval(x < y); // expected-warning {{TRUE}}
-}
-
-void compare_same_symbol_minus_left_minus_right_int_less() {
- int x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_eval(x < y); // expected-warning {{FALSE}}
-}
-
-void compare_different_symbol_equal_unsigned() {
- unsigned x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- clang_analyzer_express(y); // expected-warning {{$y}}
- clang_analyzer_express(x == y); // expected-warning {{$x - $y == 0}}
-}
-
-void compare_different_symbol_plus_left_int_equal_unsigned() {
- unsigned x = f() + 1, y = f();
- clang_analyzer_denote(x - 1, "$x");
- clang_analyzer_denote(y, "$y");
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$y}}
- clang_analyzer_express(x == y); // expected-warning {{$y - $x == 1}}
-}
-
-void compare_different_symbol_minus_left_int_equal_unsigned() {
- unsigned x = f() - 1, y = f();
- clang_analyzer_denote(x + 1, "$x");
- clang_analyzer_denote(y, "$y");
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$y}}
- clang_analyzer_express(x == y); // expected-warning {{$x - $y == 1}}
-}
-
-void compare_different_symbol_plus_right_int_equal_unsigned() {
- unsigned x = f(), y = f() + 2;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y - 2, "$y");
- clang_analyzer_express(y); // expected-warning {{$y + 2}}
- clang_analyzer_express(x == y); // expected-warning {{$x - $y == 2}}
-}
-
-void compare_different_symbol_minus_right_int_equal_unsigned() {
- unsigned x = f(), y = f() - 2;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y + 2, "$y");
- clang_analyzer_express(y); // expected-warning {{$y - 2}}
- clang_analyzer_express(x == y); // expected-warning {{$y - $x == 2}}
-}
-
-void compare_different_symbol_plus_left_plus_right_int_equal_unsigned() {
- unsigned x = f() + 2, y = f() + 1;
- clang_analyzer_denote(x - 2, "$x");
- clang_analyzer_denote(y - 1, "$y");
- clang_analyzer_express(x); // expected-warning {{$x + 2}}
- clang_analyzer_express(y); // expected-warning {{$y + 1}}
- clang_analyzer_express(x == y); // expected-warning {{$y - $x == 1}}
-}
-
-void compare_different_symbol_plus_left_minus_right_int_equal_unsigned() {
- unsigned x = f() + 2, y = f() - 1;
- clang_analyzer_denote(x - 2, "$x");
- clang_analyzer_denote(y + 1, "$y");
- clang_analyzer_express(x); // expected-warning {{$x + 2}}
- clang_analyzer_express(y); // expected-warning {{$y - 1}}
- clang_analyzer_express(x == y); // expected-warning {{$y - $x == 3}}
-}
-
-void compare_different_symbol_minus_left_plus_right_int_equal_unsigned() {
- unsigned x = f() - 2, y = f() + 1;
- clang_analyzer_denote(x + 2, "$x");
- clang_analyzer_denote(y - 1, "$y");
- clang_analyzer_express(x); // expected-warning {{$x - 2}}
- clang_analyzer_express(y); // expected-warning {{$y + 1}}
- clang_analyzer_express(x == y); // expected-warning {{$x - $y == 3}}
-}
-
-void compare_different_symbol_minus_left_minus_right_int_equal_unsigned() {
- unsigned x = f() - 2, y = f() - 1;
- clang_analyzer_denote(x + 2, "$x");
- clang_analyzer_denote(y + 1, "$y");
- clang_analyzer_express(x); // expected-warning {{$x - 2}}
- clang_analyzer_express(y); // expected-warning {{$y - 1}}
- clang_analyzer_express(x == y); // expected-warning {{$x - $y == 1}}
-}
-
-void compare_same_symbol_equal_unsigned() {
- unsigned x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_eval(x == y); // expected-warning {{TRUE}}
-}
-
-void compare_same_symbol_plus_left_int_equal_unsigned() {
- unsigned x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_express(x == y); // expected-warning {{$x + 1U == $x}}
-}
-
-void compare_same_symbol_minus_left_int_equal_unsigned() {
- unsigned x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_express(x == y); // expected-warning {{$x - 1U == $x}}
-}
-
-void compare_same_symbol_plus_right_int_equal_unsigned() {
- unsigned x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_express(x == y); // expected-warning {{$x == $x + 1U}}
-}
-
-void compare_same_symbol_minus_right_int_equal_unsigned() {
- unsigned x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_express(x == y); // expected-warning {{$x == $x - 1U}}
-}
-
-void compare_same_symbol_plus_left_plus_right_int_equal_unsigned() {
- unsigned x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_eval(x == y); // expected-warning {{TRUE}}
-}
-
-void compare_same_symbol_plus_left_minus_right_int_equal_unsigned() {
- unsigned x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_express(x == y); // expected-warning {{$x + 1U == $x - 1U}}
-}
-
-void compare_same_symbol_minus_left_plus_right_int_equal_unsigned() {
- unsigned x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_express(x == y); // expected-warning {{$x - 1U == $x + 1U}}
-}
-
-void compare_same_symbol_minus_left_minus_right_int_equal_unsigned() {
- unsigned x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_eval(x == y); // expected-warning {{TRUE}}
-}
-
-void compare_different_symbol_less_or_equal_unsigned() {
- unsigned x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- clang_analyzer_express(y); // expected-warning {{$y}}
- clang_analyzer_express(x <= y); // expected-warning {{$x - $y <= 0}}
-}
-
-void compare_different_symbol_plus_left_int_less_or_equal_unsigned() {
- unsigned x = f() + 1, y = f();
- clang_analyzer_denote(x - 1, "$x");
- clang_analyzer_denote(y, "$y");
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$y}}
- clang_analyzer_express(x <= y); // expected-warning {{$y - $x >= 1}}
-}
-
-void compare_different_symbol_minus_left_int_less_or_equal_unsigned() {
- unsigned x = f() - 1, y = f();
- clang_analyzer_denote(x + 1, "$x");
- clang_analyzer_denote(y, "$y");
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$y}}
- clang_analyzer_express(x <= y); // expected-warning {{$x - $y <= 1}}
-}
-
-void compare_different_symbol_plus_right_int_less_or_equal_unsigned() {
- unsigned x = f(), y = f() + 2;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y - 2, "$y");
- clang_analyzer_express(y); // expected-warning {{$y + 2}}
- clang_analyzer_express(x <= y); // expected-warning {{$x - $y <= 2}}
-}
-
-void compare_different_symbol_minus_right_int_less_or_equal_unsigned() {
- unsigned x = f(), y = f() - 2;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y + 2, "$y");
- clang_analyzer_express(y); // expected-warning {{$y - 2}}
- clang_analyzer_express(x <= y); // expected-warning {{$y - $x >= 2}}
-}
-
-void compare_different_symbol_plus_left_plus_right_int_less_or_equal_unsigned() {
- unsigned x = f() + 2, y = f() + 1;
- clang_analyzer_denote(x - 2, "$x");
- clang_analyzer_denote(y - 1, "$y");
- clang_analyzer_express(x); // expected-warning {{$x + 2}}
- clang_analyzer_express(y); // expected-warning {{$y + 1}}
- clang_analyzer_express(x <= y); // expected-warning {{$y - $x >= 1}}
-}
-
-void compare_different_symbol_plus_left_minus_right_int_less_or_equal_unsigned() {
- unsigned x = f() + 2, y = f() - 1;
- clang_analyzer_denote(x - 2, "$x");
- clang_analyzer_denote(y + 1, "$y");
- clang_analyzer_express(x); // expected-warning {{$x + 2}}
- clang_analyzer_express(y); // expected-warning {{$y - 1}}
- clang_analyzer_express(x <= y); // expected-warning {{$y - $x >= 3}}
-}
-
-void compare_different_symbol_minus_left_plus_right_int_less_or_equal_unsigned() {
- unsigned x = f() - 2, y = f() + 1;
- clang_analyzer_denote(x + 2, "$x");
- clang_analyzer_denote(y - 1, "$y");
- clang_analyzer_express(x); // expected-warning {{$x - 2}}
- clang_analyzer_express(y); // expected-warning {{$y + 1}}
- clang_analyzer_express(x <= y); // expected-warning {{$x - $y <= 3}}
-}
-
-void compare_different_symbol_minus_left_minus_right_int_less_or_equal_unsigned() {
- unsigned x = f() - 2, y = f() - 1;
- clang_analyzer_denote(x + 2, "$x");
- clang_analyzer_denote(y + 1, "$y");
- clang_analyzer_express(x); // expected-warning {{$x - 2}}
- clang_analyzer_express(y); // expected-warning {{$y - 1}}
- clang_analyzer_express(x <= y); // expected-warning {{$x - $y <= 1}}
-}
-
-void compare_same_symbol_less_or_equal_unsigned() {
- unsigned x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_eval(x <= y); // expected-warning {{TRUE}}
-}
-
-void compare_same_symbol_plus_left_int_less_or_equal_unsigned() {
- unsigned x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_express(x <= y); // expected-warning {{$x + 1U <= $x}}
-}
-
-void compare_same_symbol_minus_left_int_less_or_equal_unsigned() {
- unsigned x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_express(x <= y); // expected-warning {{$x - 1U <= $x}}
-}
-
-void compare_same_symbol_plus_right_int_less_or_equal_unsigned() {
- unsigned x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_express(x <= y); // expected-warning {{$x <= $x + 1U}}
-}
-
-void compare_same_symbol_minus_right_int_less_or_equal_unsigned() {
- unsigned x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_express(x <= y); // expected-warning {{$x <= $x - 1U}}
-}
-
-void compare_same_symbol_plus_left_plus_right_int_less_or_equal_unsigned() {
- unsigned x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_eval(x <= y); // expected-warning {{TRUE}}
-}
-
-void compare_same_symbol_plus_left_minus_right_int_less_or_equal_unsigned() {
- unsigned x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_express(x <= y); // expected-warning {{$x + 1U <= $x - 1U}}
-}
-
-void compare_same_symbol_minus_left_plus_right_int_less_or_equal_unsigned() {
- unsigned x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_express(x <= y); // expected-warning {{$x - 1U <= $x + 1U}}
-}
-
-void compare_same_symbol_minus_left_minus_right_int_less_or_equal_unsigned() {
- unsigned x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_eval(x <= y); // expected-warning {{TRUE}}
-}
-
-void compare_different_symbol_less_unsigned() {
- unsigned x = f(), y = f();
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y, "$y");
- clang_analyzer_express(y); // expected-warning {{$y}}
- clang_analyzer_express(x < y); // expected-warning {{$x - $y < 0}}
-}
-
-void compare_different_symbol_plus_left_int_less_unsigned() {
- unsigned x = f() + 1, y = f();
- clang_analyzer_denote(x - 1, "$x");
- clang_analyzer_denote(y, "$y");
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$y}}
- clang_analyzer_express(x < y); // expected-warning {{$y - $x > 1}}
-}
-
-void compare_different_symbol_minus_left_int_less_unsigned() {
- unsigned x = f() - 1, y = f();
- clang_analyzer_denote(x + 1, "$x");
- clang_analyzer_denote(y, "$y");
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$y}}
- clang_analyzer_express(x < y); // expected-warning {{$x - $y < 1}}
-}
-
-void compare_different_symbol_plus_right_int_less_unsigned() {
- unsigned x = f(), y = f() + 2;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y - 2, "$y");
- clang_analyzer_express(y); // expected-warning {{$y + 2}}
- clang_analyzer_express(x < y); // expected-warning {{$x - $y < 2}}
-}
-
-void compare_different_symbol_minus_right_int_less_unsigned() {
- unsigned x = f(), y = f() - 2;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_denote(y + 2, "$y");
- clang_analyzer_express(y); // expected-warning {{$y - 2}}
- clang_analyzer_express(x < y); // expected-warning {{$y - $x > 2}}
-}
-
-void compare_different_symbol_plus_left_plus_right_int_less_unsigned() {
- unsigned x = f() + 2, y = f() + 1;
- clang_analyzer_denote(x - 2, "$x");
- clang_analyzer_denote(y - 1, "$y");
- clang_analyzer_express(x); // expected-warning {{$x + 2}}
- clang_analyzer_express(y); // expected-warning {{$y + 1}}
- clang_analyzer_express(x < y); // expected-warning {{$y - $x > 1}}
-}
-
-void compare_different_symbol_plus_left_minus_right_int_less_unsigned() {
- unsigned x = f() + 2, y = f() - 1;
- clang_analyzer_denote(x - 2, "$x");
- clang_analyzer_denote(y + 1, "$y");
- clang_analyzer_express(x); // expected-warning {{$x + 2}}
- clang_analyzer_express(y); // expected-warning {{$y - 1}}
- clang_analyzer_express(x < y); // expected-warning {{$y - $x > 3}}
-}
-
-void compare_different_symbol_minus_left_plus_right_int_less_unsigned() {
- unsigned x = f() - 2, y = f() + 1;
- clang_analyzer_denote(x + 2, "$x");
- clang_analyzer_denote(y - 1, "$y");
- clang_analyzer_express(x); // expected-warning {{$x - 2}}
- clang_analyzer_express(y); // expected-warning {{$y + 1}}
- clang_analyzer_express(x < y); // expected-warning {{$x - $y < 3}}
-}
-
-void compare_different_symbol_minus_left_minus_right_int_less_unsigned() {
- unsigned x = f() - 2, y = f() - 1;
- clang_analyzer_denote(x + 2, "$x");
- clang_analyzer_denote(y + 1, "$y");
- clang_analyzer_express(x); // expected-warning {{$x - 2}}
- clang_analyzer_express(y); // expected-warning {{$y - 1}}
- clang_analyzer_express(x < y); // expected-warning {{$x - $y < 1}}
-}
-
-void compare_same_symbol_less_unsigned() {
- unsigned x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_eval(x < y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_plus_left_int_less_unsigned() {
- unsigned x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_express(x < y); // expected-warning {{$x + 1U < $x}}
-}
-
-void compare_same_symbol_minus_left_int_less_unsigned() {
- unsigned x = f(), y = x;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x}}
- clang_analyzer_express(x < y); // expected-warning {{$x - 1U < $x}}
-}
-
-void compare_same_symbol_plus_right_int_less_unsigned() {
- unsigned x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_express(x < y); // expected-warning {{$x < $x + 1U}}
-}
-
-void compare_same_symbol_minus_right_int_less_unsigned() {
- unsigned x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_express(x < y); // expected-warning {{$x < $x - 1U}}
-}
-
-void compare_same_symbol_plus_left_plus_right_int_less_unsigned() {
- unsigned x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_eval(x < y); // expected-warning {{FALSE}}
-}
-
-void compare_same_symbol_plus_left_minus_right_int_less_unsigned() {
- unsigned x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- ++x;
- clang_analyzer_express(x); // expected-warning {{$x + 1}}
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_express(x < y); // expected-warning {{$x + 1U < $x - 1U}}
-}
-
-void compare_same_symbol_minus_left_plus_right_int_less_unsigned() {
- unsigned x = f(), y = x + 1;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x + 1}}
- clang_analyzer_express(x < y); // expected-warning {{$x - 1U < $x + 1U}}
-}
-
-void compare_same_symbol_minus_left_minus_right_int_less_unsigned() {
- unsigned x = f(), y = x - 1;
- clang_analyzer_denote(x, "$x");
- --x;
- clang_analyzer_express(x); // expected-warning {{$x - 1}}
- clang_analyzer_express(y); // expected-warning {{$x - 1}}
- clang_analyzer_eval(x < y); // expected-warning {{FALSE}}
-}
-
-void overflow(signed char n, signed char m) {
- if (n + 0 > m + 0) {
- clang_analyzer_eval(n - 126 == m + 3); // expected-warning {{UNKNOWN}}
- }
-}
-
-int mixed_integer_types(int x, int y) {
- short a = x - 1U;
- return a - y;
-}
-
-unsigned gu();
-unsigned fu() {
- unsigned x = gu();
- // Assert that no overflows occur in this test file.
- // Assuming that concrete integers are also within that range.
- assert(x <= ((unsigned)UINT_MAX / 4));
- return x;
-}
-
-void unsigned_concrete_int_no_crash() {
- unsigned x = fu() + 1U, y = fu() + 1U;
- clang_analyzer_denote(x - 1U, "$x");
- clang_analyzer_denote(y - 1U, "$y");
- clang_analyzer_express(y); // expected-warning {{$y}}
- clang_analyzer_express(x == y); // expected-warning {{$x + 1U == $y + 1U}}
-}
diff --git a/test/Analysis/switch-case.c b/test/Analysis/switch-case.c
deleted file mode 100644
index 1391f437f1f0..000000000000
--- a/test/Analysis/switch-case.c
+++ /dev/null
@@ -1,220 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(int);
-void clang_analyzer_warnIfReached();
-
-#define INT_MIN 0x80000000
-#define INT_MAX 0x7fffffff
-
-// PR16833: Analyzer consumes memory until killed by kernel OOM killer
-// while analyzing large case ranges.
-void PR16833(unsigned op) {
- switch (op) {
- case 0x02 << 26 ... 0x03 << 26: // Analyzer should not hang here.
- return;
- }
-}
-
-void testAdjustment(int t) {
- switch (t + 1) {
- case 2:
- clang_analyzer_eval(t == 1); // expected-warning{{TRUE}}
- break;
- case 3 ... 10:
- clang_analyzer_eval(t > 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(t + 2 <= 11); // expected-warning{{TRUE}}
- clang_analyzer_eval(t > 2); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(t + 1 == 3); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(t + 1 == 10); // expected-warning{{UNKNOWN}}
- break;
- default:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
-}
-
-void testUnknownVal(int value, int mask) {
- // Once ConstraintManager will process '&' and this test will require some changes.
- switch (value & mask) {
- case 1:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- break;
- case 3 ... 10:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- break;
- default:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
-}
-
-void testSwitchCond(int arg) {
- if (arg > 10) {
- switch (arg) {
- case INT_MIN ... 10:
- clang_analyzer_warnIfReached(); // no-warning
- break;
- case 11 ... 20:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- break;
- default:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
-
- switch (arg) {
- case INT_MIN ... 9:
- clang_analyzer_warnIfReached(); // no-warning
- break;
- case 10 ... 20:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- clang_analyzer_eval(arg > 10); // expected-warning{{TRUE}}
- break;
- default:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
- } // arg > 10
-}
-
-void testDefaultUnreachable(int arg) {
- if (arg > 10) {
- switch (arg) {
- case INT_MIN ... 9:
- clang_analyzer_warnIfReached(); // no-warning
- break;
- case 10 ... INT_MAX:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- clang_analyzer_eval(arg > 10); // expected-warning{{TRUE}}
- break;
- default:
- clang_analyzer_warnIfReached(); // no-warning
- }
- }
-}
-
-void testBranchReachability(int arg) {
- if (arg > 10 && arg < 20) {
- switch (arg) {
- case INT_MIN ... 4:
- clang_analyzer_warnIfReached(); // no-warning
- break;
- case 5 ... 9:
- clang_analyzer_warnIfReached(); // no-warning
- break;
- case 10 ... 15:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- clang_analyzer_eval(arg > 10 && arg <= 15); // expected-warning{{TRUE}}
- break;
- default:
- clang_analyzer_warnIfReached(); // no-warning
- break;
- case 17 ... 25:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- clang_analyzer_eval(arg >= 17 && arg < 20); // expected-warning{{TRUE}}
- break;
- case 26 ... INT_MAX:
- clang_analyzer_warnIfReached(); // no-warning
- break;
- case 16:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- clang_analyzer_eval(arg == 16); // expected-warning{{TRUE}}
- break;
- }
- }
-}
-
-void testDefaultBranchRange(int arg) {
- switch (arg) {
- case INT_MIN ... 9:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- break;
- case 20 ... INT_MAX:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- clang_analyzer_eval(arg >= 20); // expected-warning{{TRUE}}
- break;
- default:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- clang_analyzer_eval(arg == 16); // expected-warning{{FALSE}}
- clang_analyzer_eval(arg > 9); // expected-warning{{TRUE}}
- clang_analyzer_eval(arg <= 20); // expected-warning{{TRUE}}
-
- case 16:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
-}
-
-void testAllUnreachableButDefault(int arg) {
- if (arg < 0) {
- switch (arg) {
- case 0 ... 9:
- clang_analyzer_warnIfReached(); // no-warning
- break;
- case 20 ... INT_MAX:
- clang_analyzer_warnIfReached(); // no-warning
- break;
- default:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- break;
- case 16:
- clang_analyzer_warnIfReached(); // no-warning
- }
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
-}
-
-void testAllUnreachable(int arg) {
- if (arg < 0) {
- switch (arg) {
- case 0 ... 9:
- clang_analyzer_warnIfReached(); // no-warning
- break;
- case 20 ... INT_MAX:
- clang_analyzer_warnIfReached(); // no-warning
- break;
- case 16:
- clang_analyzer_warnIfReached(); // no-warning
- }
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
-}
-
-void testDifferentTypes(int arg) {
- switch (arg) {
- case -1U ... 400000000LL:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- break;
- default:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- break;
- }
-}
-
-void testDifferentTypes2(unsigned long arg) {
- switch (arg) {
- case 1UL ... 400000000UL:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- break;
- default:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- break;
- }
-}
-
-void testDifferentTypes3(int arg) {
- switch (arg) {
- case 1UL ... 400000000UL:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- break;
- default:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- break;
- }
-}
-
-void testConstant() {
- switch (3) {
- case 1 ... 5:
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- break;
- default:
- clang_analyzer_warnIfReached(); // no-warning
- break;
- }
-}
diff --git a/test/Analysis/symbol-reaper.c b/test/Analysis/symbol-reaper.c
deleted file mode 100644
index ef8ff18a2d83..000000000000
--- a/test/Analysis/symbol-reaper.c
+++ /dev/null
@@ -1,135 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-void clang_analyzer_warnOnDeadSymbol(int);
-void clang_analyzer_numTimesReached();
-void clang_analyzer_warnIfReached();
-
-void exit(int);
-
-int conjure_index();
-
-void test_that_expr_inspection_works() {
- do {
- int x = conjure_index();
- clang_analyzer_warnOnDeadSymbol(x);
- } while(0); // expected-warning{{SYMBOL DEAD}}
-
- // Make sure we don't accidentally split state in ExprInspection.
- clang_analyzer_numTimesReached(); // expected-warning{{1}}
-}
-
-// These tests verify the reaping of symbols that are only referenced as
-// index values in element regions. Most of the time, depending on where
-// the element region, as Loc value, is stored, it is possible to
-// recover the index symbol in checker code, which is also demonstrated
-// in the return_ptr_range.c test file.
-
-int arr[3];
-
-int *test_element_index_lifetime_in_environment_values() {
- int *ptr;
- do {
- int x = conjure_index();
- clang_analyzer_warnOnDeadSymbol(x);
- ptr = arr + x;
- } while (0);
- return ptr;
-}
-
-void test_element_index_lifetime_in_store_keys() {
- do {
- int x = conjure_index();
- clang_analyzer_warnOnDeadSymbol(x);
- arr[x] = 1;
- if (x) {}
- } while (0); // no-warning
-}
-
-int *ptr;
-void test_element_index_lifetime_in_store_values() {
- do {
- int x = conjure_index();
- clang_analyzer_warnOnDeadSymbol(x);
- ptr = arr + x;
- } while (0); // no-warning
-}
-
-struct S1 {
- int field;
-};
-struct S2 {
- struct S1 array[5];
-} s2;
-struct S3 {
- void *field;
-};
-
-struct S1 *conjure_S1();
-struct S3 *conjure_S3();
-
-void test_element_index_lifetime_with_complicated_hierarchy_of_regions() {
- do {
- int x = conjure_index();
- clang_analyzer_warnOnDeadSymbol(x);
- s2.array[x].field = 1;
- if (x) {}
- } while (0); // no-warning
-}
-
-void test_loc_as_integer_element_index_lifetime() {
- do {
- int x;
- struct S3 *s = conjure_S3();
- clang_analyzer_warnOnDeadSymbol((int)s);
- x = (int)&(s->field);
- ptr = &arr[x];
- if (s) {}
- } while (0);
-}
-
-// Test below checks lifetime of SymbolRegionValue in certain conditions.
-
-int **ptrptr;
-void test_region_lifetime_as_store_value(int *x) {
- clang_analyzer_warnOnDeadSymbol((int) x);
- *x = 1;
- ptrptr = &x;
- (void)0; // No-op; make sure the environment forgets things and the GC runs.
- clang_analyzer_eval(**ptrptr); // expected-warning{{TRUE}}
-} // no-warning
-
-int *produce_region_referenced_only_through_field_in_environment_value() {
- struct S1 *s = conjure_S1();
- clang_analyzer_warnOnDeadSymbol((int) s);
- int *x = &s->field;
- return x;
-}
-
-void test_region_referenced_only_through_field_in_environment_value() {
- produce_region_referenced_only_through_field_in_environment_value();
-} // expected-warning{{SYMBOL DEAD}}
-
-void test_region_referenced_only_through_field_in_store_value() {
- struct S1 *s = conjure_S1();
- clang_analyzer_warnOnDeadSymbol((int) s);
- ptr = &s->field; // Write the symbol into a global. It should live forever.
- if (!s) {
- exit(0); // no-warning (symbol should not die here)
- // exit() is noreturn.
- clang_analyzer_warnIfReached(); // no-warning
- }
- if (!ptr) { // no-warning (symbol should not die here)
- // We exit()ed under these constraints earlier.
- clang_analyzer_warnIfReached(); // no-warning
- }
- // The exit() call invalidates globals. The symbol will die here because
- // the exit() statement itself is already over and there's no better statement
- // to put the diagnostic on.
-} // expected-warning{{SYMBOL DEAD}}
-
-void test_zombie_referenced_only_through_field_in_store_value() {
- struct S1 *s = conjure_S1();
- clang_analyzer_warnOnDeadSymbol((int) s);
- int *x = &s->field;
-} // expected-warning{{SYMBOL DEAD}}
diff --git a/test/Analysis/taint-diagnostic-visitor.c b/test/Analysis/taint-diagnostic-visitor.c
deleted file mode 100644
index 6533cd7625ca..000000000000
--- a/test/Analysis/taint-diagnostic-visitor.c
+++ /dev/null
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.security.taint,core,alpha.security.ArrayBoundV2 -analyzer-output=text -verify %s
-
-// This file is for testing enhanced diagnostics produced by the GenericTaintChecker
-
-int scanf(const char *restrict format, ...);
-int system(const char *command);
-
-void taintDiagnostic()
-{
- char buf[128];
- scanf("%s", buf); // expected-note {{Taint originated here}}
- system(buf); // expected-warning {{Untrusted data is passed to a system call}} // expected-note {{Untrusted data is passed to a system call (CERT/STR02-C. Sanitize data passed to complex subsystems)}}
-}
-
-int taintDiagnosticOutOfBound() {
- int index;
- int Array[] = {1, 2, 3, 4, 5};
- scanf("%d", &index); // expected-note {{Taint originated here}}
- return Array[index]; // expected-warning {{Out of bound memory access (index is tainted)}}
- // expected-note@-1 {{Out of bound memory access (index is tainted)}}
-}
-
-int taintDiagnosticDivZero(int operand) {
- scanf("%d", &operand); // expected-note {{Value assigned to 'operand'}}
- // expected-note@-1 {{Taint originated here}}
- return 10 / operand; // expected-warning {{Division by a tainted value, possibly zero}}
- // expected-note@-1 {{Division by a tainted value, possibly zero}}
-}
-
-void taintDiagnosticVLA() {
- int x;
- scanf("%d", &x); // expected-note {{Value assigned to 'x'}}
- // expected-note@-1 {{Taint originated here}}
- int vla[x]; // expected-warning {{Declared variable-length array (VLA) has tainted size}}
- // expected-note@-1 {{Declared variable-length array (VLA) has tainted size}}
-}
diff --git a/test/Analysis/taint-generic.c b/test/Analysis/taint-generic.c
deleted file mode 100644
index 2717e91b4304..000000000000
--- a/test/Analysis/taint-generic.c
+++ /dev/null
@@ -1,289 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.security.taint,core,alpha.security.ArrayBoundV2 -Wno-format-security -verify %s
-// RUN: %clang_analyze_cc1 -DFILE_IS_STRUCT -analyzer-checker=alpha.security.taint,core,alpha.security.ArrayBoundV2 -Wno-format-security -verify %s
-
-int scanf(const char *restrict format, ...);
-int getchar(void);
-
-typedef struct _FILE FILE;
-#ifdef FILE_IS_STRUCT
-extern struct _FILE *stdin;
-#else
-extern FILE *stdin;
-#endif
-
-int fscanf(FILE *restrict stream, const char *restrict format, ...);
-int sprintf(char *str, const char *format, ...);
-void setproctitle(const char *fmt, ...);
-typedef __typeof(sizeof(int)) size_t;
-
-// Define string functions. Use builtin for some of them. They all default to
-// the processing in the taint checker.
-#define strcpy(dest, src) \
- ((__builtin_object_size(dest, 0) != -1ULL) \
- ? __builtin___strcpy_chk (dest, src, __builtin_object_size(dest, 1)) \
- : __inline_strcpy_chk(dest, src))
-
-static char *__inline_strcpy_chk (char *dest, const char *src) {
- return __builtin___strcpy_chk(dest, src, __builtin_object_size(dest, 1));
-}
-char *stpcpy(char *restrict s1, const char *restrict s2);
-char *strncpy( char * destination, const char * source, size_t num );
-char *strndup(const char *s, size_t n);
-char *strncat(char *restrict s1, const char *restrict s2, size_t n);
-
-void *malloc(size_t);
-void *calloc(size_t nmemb, size_t size);
-void bcopy(void *s1, void *s2, size_t n);
-
-#define BUFSIZE 10
-
-int Buffer[BUFSIZE];
-void bufferScanfDirect(void)
-{
- int n;
- scanf("%d", &n);
- Buffer[n] = 1; // expected-warning {{Out of bound memory access }}
-}
-
-void bufferScanfArithmetic1(int x) {
- int n;
- scanf("%d", &n);
- int m = (n - 3);
- Buffer[m] = 1; // expected-warning {{Out of bound memory access }}
-}
-
-void bufferScanfArithmetic2(int x) {
- int n;
- scanf("%d", &n);
- int m = 100 - (n + 3) * x;
- Buffer[m] = 1; // expected-warning {{Out of bound memory access }}
-}
-
-void bufferScanfAssignment(int x) {
- int n;
- scanf("%d", &n);
- int m;
- if (x > 0) {
- m = n;
- Buffer[m] = 1; // expected-warning {{Out of bound memory access }}
- }
-}
-
-void scanfArg() {
- int t = 0;
- scanf("%d", t); // expected-warning {{format specifies type 'int *' but the argument has type 'int'}}
-}
-
-void bufferGetchar(int x) {
- int m = getchar();
- Buffer[m] = 1; //expected-warning {{Out of bound memory access (index is tainted)}}
-}
-
-void testUncontrolledFormatString(char **p) {
- char s[80];
- fscanf(stdin, "%s", s);
- char buf[128];
- sprintf(buf,s); // expected-warning {{Uncontrolled Format String}}
- setproctitle(s, 3); // expected-warning {{Uncontrolled Format String}}
-
- // Test taint propagation through strcpy and family.
- char scpy[80];
- strcpy(scpy, s);
- sprintf(buf,scpy); // expected-warning {{Uncontrolled Format String}}
-
- stpcpy(*(++p), s); // this generates __inline.
- setproctitle(*(p), 3); // expected-warning {{Uncontrolled Format String}}
-
- char spcpy[80];
- stpcpy(spcpy, s);
- setproctitle(spcpy, 3); // expected-warning {{Uncontrolled Format String}}
-
- char *spcpyret;
- spcpyret = stpcpy(spcpy, s);
- setproctitle(spcpyret, 3); // expected-warning {{Uncontrolled Format String}}
-
- char sncpy[80];
- strncpy(sncpy, s, 20);
- setproctitle(sncpy, 3); // expected-warning {{Uncontrolled Format String}}
-
- char *dup;
- dup = strndup(s, 20);
- setproctitle(dup, 3); // expected-warning {{Uncontrolled Format String}}
-
-}
-
-int system(const char *command);
-void testTaintSystemCall() {
- char buffer[156];
- char addr[128];
- scanf("%s", addr);
- system(addr); // expected-warning {{Untrusted data is passed to a system call}}
-
- // Test that spintf transfers taint.
- sprintf(buffer, "/bin/mail %s < /tmp/email", addr);
- system(buffer); // expected-warning {{Untrusted data is passed to a system call}}
-}
-
-void testTaintSystemCall2() {
- // Test that snpintf transfers taint.
- char buffern[156];
- char addr[128];
- scanf("%s", addr);
- __builtin_snprintf(buffern, 10, "/bin/mail %s < /tmp/email", addr);
- system(buffern); // expected-warning {{Untrusted data is passed to a system call}}
-}
-
-void testTaintSystemCall3() {
- char buffern2[156];
- int numt;
- char addr[128];
- scanf("%s %d", addr, &numt);
- __builtin_snprintf(buffern2, numt, "/bin/mail %s < /tmp/email", "abcd");
- system(buffern2); // expected-warning {{Untrusted data is passed to a system call}}
-}
-
-void testTaintedBufferSize() {
- size_t ts;
- scanf("%zd", &ts);
-
- int *buf1 = (int*)malloc(ts*sizeof(int)); // expected-warning {{Untrusted data is used to specify the buffer size}}
- char *dst = (char*)calloc(ts, sizeof(char)); //expected-warning {{Untrusted data is used to specify the buffer size}}
- bcopy(buf1, dst, ts); // expected-warning {{Untrusted data is used to specify the buffer size}}
- __builtin_memcpy(dst, buf1, (ts + 4)*sizeof(char)); // expected-warning {{Untrusted data is used to specify the buffer size}}
-
- // If both buffers are trusted, do not issue a warning.
- char *dst2 = (char*)malloc(ts*sizeof(char)); // expected-warning {{Untrusted data is used to specify the buffer size}}
- strncat(dst2, dst, ts); // no-warning
-}
-
-#define AF_UNIX 1 /* local to host (pipes) */
-#define AF_INET 2 /* internetwork: UDP, TCP, etc. */
-#define AF_LOCAL AF_UNIX /* backward compatibility */
-#define SOCK_STREAM 1
-int socket(int, int, int);
-size_t read(int, void *, size_t);
-int execl(const char *, const char *, ...);
-
-void testSocket() {
- int sock;
- char buffer[100];
-
- sock = socket(AF_INET, SOCK_STREAM, 0);
- read(sock, buffer, 100);
- execl(buffer, "filename", 0); // expected-warning {{Untrusted data is passed to a system call}}
-
- sock = socket(AF_LOCAL, SOCK_STREAM, 0);
- read(sock, buffer, 100);
- execl(buffer, "filename", 0); // no-warning
-
- sock = socket(AF_INET, SOCK_STREAM, 0);
- // References to both buffer and &buffer as an argument should taint the argument
- read(sock, &buffer, 100);
- execl(buffer, "filename", 0); // expected-warning {{Untrusted data is passed to a system call}}
-}
-
-void testStruct() {
- struct {
- char buf[16];
- int length;
- } tainted;
-
- char buffer[16];
- int sock;
-
- sock = socket(AF_INET, SOCK_STREAM, 0);
- read(sock, &tainted, sizeof(tainted));
- __builtin_memcpy(buffer, tainted.buf, tainted.length); // expected-warning {{Untrusted data is used to specify the buffer size}}
-}
-
-void testStructArray() {
- struct {
- int length;
- } tainted[4];
-
- char dstbuf[16], srcbuf[16];
- int sock;
-
- sock = socket(AF_INET, SOCK_STREAM, 0);
- __builtin_memset(srcbuf, 0, sizeof(srcbuf));
-
- read(sock, &tainted[0], sizeof(tainted));
- __builtin_memcpy(dstbuf, srcbuf, tainted[0].length); // expected-warning {{Untrusted data is used to specify the buffer size}}
-
- __builtin_memset(&tainted, 0, sizeof(tainted));
- read(sock, &tainted, sizeof(tainted));
- __builtin_memcpy(dstbuf, srcbuf, tainted[0].length); // expected-warning {{Untrusted data is used to specify the buffer size}}
-
- __builtin_memset(&tainted, 0, sizeof(tainted));
- // If we taint element 1, we should not raise an alert on taint for element 0 or element 2
- read(sock, &tainted[1], sizeof(tainted));
- __builtin_memcpy(dstbuf, srcbuf, tainted[0].length); // no-warning
- __builtin_memcpy(dstbuf, srcbuf, tainted[2].length); // no-warning
-}
-
-void testUnion() {
- union {
- int x;
- char y[4];
- } tainted;
-
- char buffer[4];
-
- int sock = socket(AF_INET, SOCK_STREAM, 0);
- read(sock, &tainted.y, sizeof(tainted.y));
- // FIXME: overlapping regions aren't detected by isTainted yet
- __builtin_memcpy(buffer, tainted.y, tainted.x);
-}
-
-int testDivByZero() {
- int x;
- scanf("%d", &x);
- return 5/x; // expected-warning {{Division by a tainted value, possibly zero}}
-}
-
-// Zero-sized VLAs.
-void testTaintedVLASize() {
- int x;
- scanf("%d", &x);
- int vla[x]; // expected-warning{{Declared variable-length array (VLA) has tainted size}}
-}
-
-// This computation used to take a very long time.
-#define longcmp(a,b,c) { \
- a -= c; a ^= c; c += b; b -= a; b ^= (a<<6) | (a >> (32-b)); a += c; c -= b; c ^= b; b += a; \
- a -= c; a ^= c; c += b; b -= a; b ^= a; a += c; c -= b; c ^= b; b += a; }
-
-unsigned radar11369570_hanging(const unsigned char *arr, int l) {
- unsigned a, b, c;
- a = b = c = 0x9899e3 + l;
- while (l >= 6) {
- unsigned t;
- scanf("%d", &t);
- a += b;
- a ^= a;
- a += (arr[3] + ((unsigned) arr[2] << 8) + ((unsigned) arr[1] << 16) + ((unsigned) arr[0] << 24));
- longcmp(a, t, c);
- l -= 12;
- }
- return 5/a; // expected-warning {{Division by a tainted value, possibly zero}}
-}
-
-// Check that we do not assert of the following code.
-int SymSymExprWithDiffTypes(void* p) {
- int i;
- scanf("%d", &i);
- int j = (i % (int)(long)p);
- return 5/j; // expected-warning {{Division by a tainted value, possibly zero}}
-}
-
-
-void constraintManagerShouldTreatAsOpaque(int rhs) {
- int i;
- scanf("%d", &i);
- // This comparison used to hit an assertion in the constraint manager,
- // which didn't handle NonLoc sym-sym comparisons.
- if (i < rhs)
- return;
- if (i < rhs)
- *(volatile int *) 0; // no-warning
-}
diff --git a/test/Analysis/taint-tester.c b/test/Analysis/taint-tester.c
deleted file mode 100644
index 3a8cc1825a02..000000000000
--- a/test/Analysis/taint-tester.c
+++ /dev/null
@@ -1,198 +0,0 @@
-// RUN: %clang_analyze_cc1 -Wno-int-to-pointer-cast -analyzer-checker=alpha.security.taint,debug.TaintTest %s -verify
-
-#include "Inputs/system-header-simulator.h"
-
-#define BUFSIZE 10
-int Buffer[BUFSIZE];
-
-struct XYStruct {
- int x;
- int y;
- char z;
-};
-
-void taintTracking(int x) {
- int n;
- int *addr = &Buffer[0];
- scanf("%d", &n);
- addr += n;// expected-warning + {{tainted}}
- *addr = n; // expected-warning + {{tainted}}
-
- double tdiv = n / 30; // expected-warning+ {{tainted}}
- char *loc_cast = (char *) n; // expected-warning +{{tainted}}
- char tinc = tdiv++; // expected-warning + {{tainted}}
- int tincdec = (char)tinc--; // expected-warning+{{tainted}}
-
- // Tainted ptr arithmetic/array element address.
- int tprtarithmetic1 = *(addr+1); // expected-warning + {{tainted}}
-
- // Dereference.
- int *ptr;
- scanf("%p", &ptr);
- int ptrDeref = *ptr; // expected-warning + {{tainted}}
- int _ptrDeref = ptrDeref + 13; // expected-warning + {{tainted}}
-
- // Pointer arithmetic + dereferencing.
- // FIXME: We fail to propagate the taint here because RegionStore does not
- // handle ElementRegions with symbolic indexes.
- int addrDeref = *addr; // expected-warning + {{tainted}}
- int _addrDeref = addrDeref; // expected-warning + {{tainted}}
-
- // Tainted struct address, casts.
- struct XYStruct *xyPtr = 0;
- scanf("%p", &xyPtr);
- void *tXYStructPtr = xyPtr; // expected-warning + {{tainted}}
- struct XYStruct *xyPtrCopy = tXYStructPtr; // expected-warning + {{tainted}}
- int ptrtx = xyPtr->x;// expected-warning + {{tainted}}
- int ptrty = xyPtr->y;// expected-warning + {{tainted}}
-
- // Taint on fields of a struct.
- struct XYStruct xy = {2, 3, 11};
- scanf("%d", &xy.y);
- scanf("%d", &xy.x);
- int tx = xy.x; // expected-warning + {{tainted}}
- int ty = xy.y; // FIXME: This should be tainted as well.
- char ntz = xy.z;// no warning
- // Now, scanf scans both.
- scanf("%d %d", &xy.y, &xy.x);
- int ttx = xy.x; // expected-warning + {{tainted}}
- int tty = xy.y; // expected-warning + {{tainted}}
-}
-
-void BitwiseOp(int in, char inn) {
- // Taint on bitwise operations, integer to integer cast.
- int m;
- int x = 0;
- scanf("%d", &x);
- int y = (in << (x << in)) * 5;// expected-warning + {{tainted}}
- // The next line tests integer to integer cast.
- int z = y & inn; // expected-warning + {{tainted}}
- if (y == 5) // expected-warning + {{tainted}}
- m = z | z;// expected-warning + {{tainted}}
- else
- m = inn;
- int mm = m; // expected-warning + {{tainted}}
-}
-
-// Test getenv.
-char *getenv(const char *name);
-void getenvTest(char *home) {
- home = getenv("HOME"); // expected-warning + {{tainted}}
- if (home != 0) { // expected-warning + {{tainted}}
- char d = home[0]; // expected-warning + {{tainted}}
- }
-}
-
-int fscanfTest(void) {
- FILE *fp;
- char s[80];
- int t;
-
- // Check if stdin is treated as tainted.
- fscanf(stdin, "%s %d", s, &t);
- // Note, here, s is not tainted, but the data s points to is tainted.
- char *ts = s;
- char tss = s[0]; // expected-warning + {{tainted}}
- int tt = t; // expected-warning + {{tainted}}
- if((fp=fopen("test", "w")) == 0) // expected-warning + {{tainted}}
- return 1;
- fprintf(fp, "%s %d", s, t); // expected-warning + {{tainted}}
- fclose(fp); // expected-warning + {{tainted}}
-
- // Test fscanf and fopen.
- if((fp=fopen("test","r")) == 0) // expected-warning + {{tainted}}
- return 1;
- fscanf(fp, "%s%d", s, &t); // expected-warning + {{tainted}}
- fprintf(stdout, "%s %d", s, t); // expected-warning + {{tainted}}
- return 0;
-}
-
-// Check if we propagate taint from stdin when it's used in an assignment.
-void stdinTest1() {
- int i;
- fscanf(stdin, "%d", &i);
- int j = i; // expected-warning + {{tainted}}
-}
-void stdinTest2(FILE *pIn) {
- FILE *p = stdin;
- FILE *pp = p;
- int ii;
-
- fscanf(pp, "%d", &ii);
- int jj = ii;// expected-warning + {{tainted}}
-
- fscanf(p, "%d", &ii);
- int jj2 = ii;// expected-warning + {{tainted}}
-
- ii = 3;
- int jj3 = ii;// no warning
-
- p = pIn;
- fscanf(p, "%d", &ii);
- int jj4 = ii;// no warning
-}
-
-void stdinTest3() {
- FILE **ppp = &stdin;
- int iii;
- fscanf(*ppp, "%d", &iii);
- int jjj = iii;// expected-warning + {{tainted}}
-}
-
-// Test that stdin does not get invalidated by calls.
-void foo();
-void stdinTest4() {
- int i;
- fscanf(stdin, "%d", &i);
- foo();
- int j = i; // expected-warning + {{tainted}}
-}
-
-int getw(FILE *);
-void getwTest() {
- int i = getw(stdin); // expected-warning + {{tainted}}
-}
-
-typedef long ssize_t;
-ssize_t getline(char ** __restrict, size_t * __restrict, FILE * __restrict);
-int printf(const char * __restrict, ...);
-void free(void *ptr);
-void getlineTest(void) {
- FILE *fp;
- char *line = 0;
- size_t len = 0;
- ssize_t read;
- while ((read = getline(&line, &len, stdin)) != -1) {
- printf("%s", line); // expected-warning + {{tainted}}
- }
- free(line); // expected-warning + {{tainted}}
-}
-
-// Test propagation functions - the ones that propagate taint from arguments to
-// return value, ptr arguments.
-
-int atoi(const char *nptr);
-long atol(const char *nptr);
-long long atoll(const char *nptr);
-
-void atoiTest() {
- char s[80];
- scanf("%s", s);
- int d = atoi(s); // expected-warning + {{tainted}}
- int td = d; // expected-warning + {{tainted}}
-
- long l = atol(s); // expected-warning + {{tainted}}
- int tl = l; // expected-warning + {{tainted}}
-
- long long ll = atoll(s); // expected-warning + {{tainted}}
- int tll = ll; // expected-warning + {{tainted}}
-
-}
-
-char *pointer1;
-void *pointer2;
-void noCrashTest() {
- if (!*pointer1) {
- __builtin___memcpy_chk(pointer2, pointer1, 0, 0); // no-crash
- }
-}
diff --git a/test/Analysis/taint-tester.cpp b/test/Analysis/taint-tester.cpp
deleted file mode 100644
index 23a92cc56d24..000000000000
--- a/test/Analysis/taint-tester.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.security.taint,debug.TaintTest %s -verify
-// expected-no-diagnostics
-
-typedef struct _FILE FILE;
-typedef __typeof(sizeof(int)) size_t;
-extern FILE *stdin;
-typedef long ssize_t;
-ssize_t getline(char ** __restrict, size_t * __restrict, FILE * __restrict);
-int printf(const char * __restrict, ...);
-int snprintf(char *, size_t, const char *, ...);
-void free(void *ptr);
-
-struct GetLineTestStruct {
- ssize_t getline(char ** __restrict, size_t * __restrict, FILE * __restrict);
-};
-
-void getlineTest(void) {
- FILE *fp;
- char *line = 0;
- size_t len = 0;
- ssize_t read;
- struct GetLineTestStruct T;
-
- while ((read = T.getline(&line, &len, stdin)) != -1) {
- printf("%s", line); // no warning
- }
- free(line);
-}
-
-class opaque;
-void testOpaqueClass(opaque *obj) {
- char buf[20];
- snprintf(buf, 20, "%p", obj); // don't crash trying to load *obj
-}
-
diff --git a/test/Analysis/taint-tester.m b/test/Analysis/taint-tester.m
deleted file mode 100644
index 531c21b5faf8..000000000000
--- a/test/Analysis/taint-tester.m
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.security.taint,debug.TaintTest %s -verify
-// expected-no-diagnostics
-
-#import <stdarg.h>
-
-@interface NSString
-- (NSString *)stringByAppendingString:(NSString *)aString;
-@end
-extern void NSLog (NSString *format, ...);
-extern void NSLogv(NSString *format, va_list args);
-
-void TestLog (NSString *format, ...);
-void TestLog (NSString *format, ...) {
- va_list ap;
- va_start(ap, format);
- NSString *string = @"AAA: ";
-
- NSLogv([string stringByAppendingString:format], ap);
-
- va_end(ap);
-} \ No newline at end of file
diff --git a/test/Analysis/temp-obj-dtors-cfg-output.cpp b/test/Analysis/temp-obj-dtors-cfg-output.cpp
deleted file mode 100644
index d08b01cd3964..000000000000
--- a/test/Analysis/temp-obj-dtors-cfg-output.cpp
+++ /dev/null
@@ -1,1461 +0,0 @@
-// RUN: rm -f %t
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG -analyzer-config cfg-rich-constructors=false -std=c++98 %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX98,WARNINGS,CXX98-WARNINGS %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG -analyzer-config cfg-rich-constructors=false -std=c++11 %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX11,WARNINGS,CXX11-WARNINGS %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG -analyzer-config cfg-rich-constructors=true -std=c++98 %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX98,ANALYZER,CXX98-ANALYZER %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpCFG -analyzer-config cfg-rich-constructors=true -std=c++11 %s > %t 2>&1
-// RUN: FileCheck --input-file=%t -check-prefixes=CHECK,CXX11,ANALYZER,CXX11-ANALYZER %s
-
-// This file tests how we construct two different flavors of the Clang CFG -
-// the CFG used by the Sema analysis-based warnings and the CFG used by the
-// static analyzer. The difference in the behavior is checked via FileCheck
-// prefixes (WARNINGS and ANALYZER respectively). When introducing new analyzer
-// flags, no new run lines should be added - just these flags would go to the
-// respective line depending on where is it turned on and where is it turned
-// off. Feel free to add tests that test only one of the CFG flavors if you're
-// not sure how the other flavor is supposed to work in your case.
-
-// Additionally, different C++ standards are checked.
-
-class A {
-public:
- A() {}
- ~A() {}
-
- static A make() { return A(); }
-
- operator bool() { return false; }
- operator int() { return 0; }
-};
-
-class B {
-public:
- B() {}
- ~B() {}
-
- operator bool() { return true; }
- operator int() { return 1; }
- operator A() { return A(); }
-};
-
-void foo(int);
-void foo(bool);
-void foo(const A&);
-
-void test_binary() {
- int a = int(A()) + int(B());
- foo(int(A()) + int(B()));
- int b;
-}
-
-void test_and() {
- bool a = A() && B();
- foo(A() && B());
- int b;
-}
-
-void test_or() {
- bool a = A() || B();
- foo(A() || B());
- int b;
-}
-
-void test_cond() {
- A a = B() ? A() : A(B());
- if (B()) { foo(0); } else { foo(0); }
- int b;
-}
-
-struct C {
- C():b_(true) {}
- ~C() {}
-
- operator bool() { return b_; }
- bool b_;
-};
-
-struct D {
- D():b_(true) {}
-
- operator bool() { return b_; }
- bool b_;
-};
-
-int test_cond_unnamed_custom_destructor() {
- if (C()) { return 1; } else { return 0; }
-}
-
-int test_cond_named_custom_destructor() {
- if (C c = C()) { return 1; } else { return 0; }
-}
-
-int test_cond_unnamed_auto_destructor() {
- if (D()) { return 1; } else { return 0; }
-}
-
-int test_cond_named_auto_destructor() {
- if (D d = D()) { return 1; } else { return 0; }
-}
-
-void test_cond_cref() {
- const A& a = B() ? A() : A(B());
- foo(B() ? A() : A(B()));
- int b;
-}
-
-void test_cond_implicit() {
- A a = A() ?: A();
- int b;
-}
-
-void test_cond_implicit_cref() {
- const A& a = A() ?: A();
- foo(A() ?: A());
- int b;
-}
-
-void test_copy_init() {
- A a = A();
- int b;
-}
-
-void test_cref_init() {
- const A& a = A();
- foo(A());
- int b;
-}
-
-void test_call_copy_init() {
- A a = A::make();
- int b;
-}
-
-void test_call_cref_init() {
- const A& a = A::make();
- foo(A::make());
- int b;
-}
-
-void test_assign() {
- int a;
- a = A();
- int b;
-}
-
-class TestCtorInits {
- int a;
- int b;
-public:
- TestCtorInits();
-};
-
-TestCtorInits::TestCtorInits()
- : a(int(A()) + int(B()))
- , b() {}
-
-class NoReturn {
-public:
- ~NoReturn() __attribute__((noreturn));
- void f();
-};
-
-void test_noreturn1() {
- int a;
- NoReturn().f();
- int b;
-}
-
-void test_noreturn2() {
- int a;
- NoReturn(), 47;
- int b;
-}
-
-extern bool check(const NoReturn&);
-
-// PR16664 and PR18159
-int testConsistencyNestedSimple(bool value) {
- if (value) {
- if (!value || check(NoReturn())) {
- return 1;
- }
- }
- return 0;
-}
-
-// PR16664 and PR18159
-int testConsistencyNestedComplex(bool value) {
- if (value) {
- if (!value || !value || check(NoReturn())) {
- return 1;
- }
- }
- return 0;
-}
-
-// PR16664 and PR18159
-int testConsistencyNestedNormalReturn(bool value) {
- if (value) {
- if (!value || value || check(NoReturn())) {
- return 1;
- }
- }
- return 0;
-}
-
-namespace pass_references_through {
-class C {
-public:
- ~C() {}
-};
-
-const C &foo1();
-C &&foo2();
-
-// In these examples the foo() expression has record type, not reference type.
-// Don't try to figure out how to perform construction of the record here.
-const C &bar1() { return foo1(); } // no-crash
-C &&bar2() { return foo2(); } // no-crash
-const C &bar3(bool coin) {
- return coin ? foo1() : foo1(); // no-crash
-}
-} // end namespace pass_references_through
-
-// CHECK: [B1 (ENTRY)]
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B1 (ENTRY)]
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// WARNINGS: 1: A() (CXXConstructExpr, class A)
-// ANALYZER: 1: A() (CXXConstructExpr, [B1.2], [B1.4], [B1.5], class A)
-// CHECK: 2: [B1.1] (BindTemporary)
-// CHECK: 3: [B1.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 4: [B1.3]
-// WARNINGS: 5: [B1.4] (CXXConstructExpr, class A)
-// ANALYZER: 5: [B1.4] (CXXConstructExpr, [B1.7], class A)
-// CHECK: 6: ~A() (Temporary object destructor)
-// CHECK: 7: return [B1.5];
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: false
-// CHECK: 2: return [B1.1];
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: 0
-// CHECK: 2: return [B1.1];
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B1 (ENTRY)]
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B1 (ENTRY)]
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: true
-// CHECK: 2: return [B1.1];
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: 1
-// CHECK: 2: return [B1.1];
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// WARNINGS: 1: A() (CXXConstructExpr, class A)
-// ANALYZER: 1: A() (CXXConstructExpr, [B1.2], [B1.4], [B1.5], class A)
-// CHECK: 2: [B1.1] (BindTemporary)
-// CHECK: 3: [B1.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 4: [B1.3]
-// WARNINGS: 5: [B1.4] (CXXConstructExpr, class A)
-// ANALYZER: 5: [B1.4] (CXXConstructExpr, [B1.7], class A)
-// CHECK: 6: ~A() (Temporary object destructor)
-// CHECK: 7: return [B1.5];
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// WARNINGS: 1: A() (CXXConstructExpr, class A)
-// ANALYZER: 1: A() (CXXConstructExpr, [B1.2], [B1.3], class A)
-// CHECK: 2: [B1.1] (BindTemporary)
-// CHECK: 3: [B1.2]
-// CHECK: 4: [B1.3].operator int
-// CHECK: 5: [B1.3]
-// CHECK: 6: [B1.5] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK: 7: int([B1.6]) (CXXFunctionalCastExpr, NoOp, int)
-// WARNINGS: 8: B() (CXXConstructExpr, class B)
-// ANALYZER: 8: B() (CXXConstructExpr, [B1.9], [B1.10], class B)
-// CHECK: 9: [B1.8] (BindTemporary)
-// CHECK: 10: [B1.9]
-// CHECK: 11: [B1.10].operator int
-// CHECK: 12: [B1.10]
-// CHECK: 13: [B1.12] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK: 14: int([B1.13]) (CXXFunctionalCastExpr, NoOp, int)
-// CHECK: 15: [B1.7] + [B1.14]
-// CHECK: 16: int a = int(A()) + int(B());
-// CHECK: 17: ~B() (Temporary object destructor)
-// CHECK: 18: ~A() (Temporary object destructor)
-// CHECK: 19: foo
-// CHECK: 20: [B1.19] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(int))
-// WARNINGS: 21: A() (CXXConstructExpr, class A)
-// ANALYZER: 21: A() (CXXConstructExpr, [B1.22], [B1.23], class A)
-// CHECK: 22: [B1.21] (BindTemporary)
-// CHECK: 23: [B1.22]
-// CHECK: 24: [B1.23].operator int
-// CHECK: 25: [B1.23]
-// CHECK: 26: [B1.25] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK: 27: int([B1.26]) (CXXFunctionalCastExpr, NoOp, int)
-// WARNINGS: 28: B() (CXXConstructExpr, class B)
-// ANALYZER: 28: B() (CXXConstructExpr, [B1.29], [B1.30], class B)
-// CHECK: 29: [B1.28] (BindTemporary)
-// CHECK: 30: [B1.29]
-// CHECK: 31: [B1.30].operator int
-// CHECK: 32: [B1.30]
-// CHECK: 33: [B1.32] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK: 34: int([B1.33]) (CXXFunctionalCastExpr, NoOp, int)
-// CHECK: 35: [B1.27] + [B1.34]
-// CHECK: 36: [B1.20]([B1.35])
-// CHECK: 37: ~B() (Temporary object destructor)
-// CHECK: 38: ~A() (Temporary object destructor)
-// CHECK: 39: int b;
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B10 (ENTRY)]
-// CHECK: Succs (1): B9
-// CHECK: [B1]
-// CHECK: 1: ~A() (Temporary object destructor)
-// CHECK: 2: int b;
-// CHECK: Preds (2): B2 B3
-// CHECK: Succs (1): B0
-// CHECK: [B2]
-// CHECK: 1: ~B() (Temporary object destructor)
-// CHECK: Preds (1): B3
-// CHECK: Succs (1): B1
-// CHECK: [B3]
-// CHECK: 1: [B5.9] && [B4.6]
-// CHECK: 2: [B5.3]([B3.1])
-// CHECK: T: (Temp Dtor) [B4.2]
-// CHECK: Preds (2): B4 B5
-// CHECK: Succs (2): B2 B1
-// CHECK: [B4]
-// WARNINGS: 1: B() (CXXConstructExpr, class B)
-// ANALYZER: 1: B() (CXXConstructExpr, [B4.2], [B4.3], class B)
-// CHECK: 2: [B4.1] (BindTemporary)
-// CHECK: 3: [B4.2]
-// CHECK: 4: [B4.3].operator bool
-// CHECK: 5: [B4.3]
-// CHECK: 6: [B4.5] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: Preds (1): B5
-// CHECK: Succs (1): B3
-// CHECK: [B5]
-// CHECK: 1: ~A() (Temporary object destructor)
-// CHECK: 2: foo
-// CHECK: 3: [B5.2] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(_Bool))
-// WARNINGS: 4: A() (CXXConstructExpr, class A)
-// ANALYZER: 4: A() (CXXConstructExpr, [B5.5], [B5.6], class A)
-// CHECK: 5: [B5.4] (BindTemporary)
-// CHECK: 6: [B5.5]
-// CHECK: 7: [B5.6].operator bool
-// CHECK: 8: [B5.6]
-// CHECK: 9: [B5.8] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: T: [B5.9] && ...
-// CHECK: Preds (2): B6 B7
-// CHECK: Succs (2): B4 B3
-// CHECK: [B6]
-// CHECK: 1: ~B() (Temporary object destructor)
-// CHECK: Preds (1): B7
-// CHECK: Succs (1): B5
-// CHECK: [B7]
-// CHECK: 1: [B9.6] && [B8.6]
-// CHECK: 2: bool a = A() && B();
-// CHECK: T: (Temp Dtor) [B8.2]
-// CHECK: Preds (2): B8 B9
-// CHECK: Succs (2): B6 B5
-// CHECK: [B8]
-// WARNINGS: 1: B() (CXXConstructExpr, class B)
-// ANALYZER: 1: B() (CXXConstructExpr, [B8.2], [B8.3], class B)
-// CHECK: 2: [B8.1] (BindTemporary)
-// CHECK: 3: [B8.2]
-// CHECK: 4: [B8.3].operator bool
-// CHECK: 5: [B8.3]
-// CHECK: 6: [B8.5] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: Preds (1): B9
-// CHECK: Succs (1): B7
-// CHECK: [B9]
-// WARNINGS: 1: A() (CXXConstructExpr, class A)
-// ANALYZER: 1: A() (CXXConstructExpr, [B9.2], [B9.3], class A)
-// CHECK: 2: [B9.1] (BindTemporary)
-// CHECK: 3: [B9.2]
-// CHECK: 4: [B9.3].operator bool
-// CHECK: 5: [B9.3]
-// CHECK: 6: [B9.5] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: T: [B9.6] && ...
-// CHECK: Preds (1): B10
-// CHECK: Succs (2): B8 B7
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B10 (ENTRY)]
-// CHECK: Succs (1): B9
-// CHECK: [B1]
-// CHECK: 1: ~A() (Temporary object destructor)
-// CHECK: 2: int b;
-// CHECK: Preds (2): B2 B3
-// CHECK: Succs (1): B0
-// CHECK: [B2]
-// CHECK: 1: ~B() (Temporary object destructor)
-// CHECK: Preds (1): B3
-// CHECK: Succs (1): B1
-// CHECK: [B3]
-// CHECK: 1: [B5.9] || [B4.6]
-// CHECK: 2: [B5.3]([B3.1])
-// CHECK: T: (Temp Dtor) [B4.2]
-// CHECK: Preds (2): B4 B5
-// CHECK: Succs (2): B2 B1
-// CHECK: [B4]
-// WARNINGS: 1: B() (CXXConstructExpr, class B)
-// ANALYZER: 1: B() (CXXConstructExpr, [B4.2], [B4.3], class B)
-// CHECK: 2: [B4.1] (BindTemporary)
-// CHECK: 3: [B4.2]
-// CHECK: 4: [B4.3].operator bool
-// CHECK: 5: [B4.3]
-// CHECK: 6: [B4.5] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: Preds (1): B5
-// CHECK: Succs (1): B3
-// CHECK: [B5]
-// CHECK: 1: ~A() (Temporary object destructor)
-// CHECK: 2: foo
-// CHECK: 3: [B5.2] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(_Bool))
-// WARNINGS: 4: A() (CXXConstructExpr, class A)
-// ANALYZER: 4: A() (CXXConstructExpr, [B5.5], [B5.6], class A)
-// CHECK: 5: [B5.4] (BindTemporary)
-// CHECK: 6: [B5.5]
-// CHECK: 7: [B5.6].operator bool
-// CHECK: 8: [B5.6]
-// CHECK: 9: [B5.8] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: T: [B5.9] || ...
-// CHECK: Preds (2): B6 B7
-// CHECK: Succs (2): B3 B4
-// CHECK: [B6]
-// CHECK: 1: ~B() (Temporary object destructor)
-// CHECK: Preds (1): B7
-// CHECK: Succs (1): B5
-// CHECK: [B7]
-// CHECK: 1: [B9.6] || [B8.6]
-// CHECK: 2: bool a = A() || B();
-// CHECK: T: (Temp Dtor) [B8.2]
-// CHECK: Preds (2): B8 B9
-// CHECK: Succs (2): B6 B5
-// CHECK: [B8]
-// WARNINGS: 1: B() (CXXConstructExpr, class B)
-// ANALYZER: 1: B() (CXXConstructExpr, [B8.2], [B8.3], class B)
-// CHECK: 2: [B8.1] (BindTemporary)
-// CHECK: 3: [B8.2]
-// CHECK: 4: [B8.3].operator bool
-// CHECK: 5: [B8.3]
-// CHECK: 6: [B8.5] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: Preds (1): B9
-// CHECK: Succs (1): B7
-// CHECK: [B9]
-// WARNINGS: 1: A() (CXXConstructExpr, class A)
-// ANALYZER: 1: A() (CXXConstructExpr, [B9.2], [B9.3], class A)
-// CHECK: 2: [B9.1] (BindTemporary)
-// CHECK: 3: [B9.2]
-// CHECK: 4: [B9.3].operator bool
-// CHECK: 5: [B9.3]
-// CHECK: 6: [B9.5] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: T: [B9.6] || ...
-// CHECK: Preds (1): B10
-// CHECK: Succs (2): B7 B8
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B11 (ENTRY)]
-// CHECK: Succs (1): B10
-// CHECK: [B1]
-// CHECK: 1: int b;
-// CHECK: 2: [B7.5].~A() (Implicit destructor)
-// CHECK: Preds (2): B2 B3
-// CHECK: Succs (1): B0
-// CHECK: [B2]
-// CHECK: 1: foo
-// CHECK: 2: [B2.1] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(int))
-// CHECK: 3: 0
-// CHECK: 4: [B2.2]([B2.3])
-// CHECK: Preds (1): B4
-// CHECK: Succs (1): B1
-// CHECK: [B3]
-// CHECK: 1: foo
-// CHECK: 2: [B3.1] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(int))
-// CHECK: 3: 0
-// CHECK: 4: [B3.2]([B3.3])
-// CHECK: Preds (1): B4
-// CHECK: Succs (1): B1
-// CHECK: [B4]
-// CHECK: 1: ~B() (Temporary object destructor)
-// WARNINGS: 2: B() (CXXConstructExpr, class B)
-// ANALYZER: 2: B() (CXXConstructExpr, [B4.3], [B4.4], class B)
-// CHECK: 3: [B4.2] (BindTemporary)
-// CHECK: 4: [B4.3]
-// CHECK: 5: [B4.4].operator bool
-// CHECK: 6: [B4.4]
-// CHECK: 7: [B4.6] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: 8: ~B() (Temporary object destructor)
-// CHECK: T: if [B4.7]
-// CHECK: Preds (2): B5 B6
-// CHECK: Succs (2): B3 B2
-// CHECK: [B5]
-// CHECK: 1: ~A() (Temporary object destructor)
-// CHECK: 2: ~A() (Temporary object destructor)
-// CHECK: Preds (1): B7
-// CHECK: Succs (1): B4
-// CHECK: [B6]
-// CHECK: 1: ~A() (Temporary object destructor)
-// CHECK: 2: ~A() (Temporary object destructor)
-// CHECK: 3: ~A() (Temporary object destructor)
-// CHECK: 4: ~B() (Temporary object destructor)
-// CHECK: Preds (1): B7
-// CHECK: Succs (1): B4
-// CHECK: [B7]
-// CHECK: 1: [B10.6] ? [B8.6] : [B9.16]
-// CHECK: 2: [B7.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 3: [B7.2]
-// WARNINGS: 4: [B7.3] (CXXConstructExpr, class A)
-// ANALYZER: 4: [B7.3] (CXXConstructExpr, [B7.5], class A)
-// CHECK: 5: A a = B() ? A() : A(B());
-// CHECK: T: (Temp Dtor) [B9.2]
-// CHECK: Preds (2): B8 B9
-// CHECK: Succs (2): B6 B5
-// CHECK: [B8]
-// WARNINGS: 1: A() (CXXConstructExpr, class A)
-// ANALYZER: 1: A() (CXXConstructExpr, [B8.2], [B8.4], [B8.5], class A)
-// CHECK: 2: [B8.1] (BindTemporary)
-// CHECK: 3: [B8.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 4: [B8.3]
-// WARNINGS: 5: [B8.4] (CXXConstructExpr, class A)
-// ANALYZER: 5: [B8.4] (CXXConstructExpr, [B8.6], [B7.3], [B7.4], class A)
-// CHECK: 6: [B8.5] (BindTemporary)
-// CHECK: Preds (1): B10
-// CHECK: Succs (1): B7
-// CHECK: [B9]
-// WARNINGS: 1: B() (CXXConstructExpr, class B)
-// ANALYZER: 1: B() (CXXConstructExpr, [B9.2], [B9.3], class B)
-// CHECK: 2: [B9.1] (BindTemporary)
-// CHECK: 3: [B9.2]
-// CHECK: 4: [B9.3].operator A
-// CHECK: 5: [B9.3]
-// CHECK: 6: [B9.5] (ImplicitCastExpr, UserDefinedConversion, class A)
-// CHECK: 7: [B9.6] (BindTemporary)
-// CHECK: 8: [B9.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 9: [B9.8]
-// WARNINGS: 10: [B9.9] (CXXConstructExpr, class A)
-// ANALYZER: 10: [B9.9] (CXXConstructExpr, [B9.11], [B9.14], [B9.15], class A)
-// CHECK: 11: [B9.10] (BindTemporary)
-// CHECK: 12: A([B9.11]) (CXXFunctionalCastExpr, ConstructorConversion, class A)
-// CHECK: 13: [B9.12] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 14: [B9.13]
-// WARNINGS: 15: [B9.14] (CXXConstructExpr, class A)
-// ANALYZER: 15: [B9.14] (CXXConstructExpr, [B9.16], [B7.3], [B7.4], class A)
-// CHECK: 16: [B9.15] (BindTemporary)
-// CHECK: Preds (1): B10
-// CHECK: Succs (1): B7
-// CHECK: [B10]
-// WARNINGS: 1: B() (CXXConstructExpr, class B)
-// ANALYZER: 1: B() (CXXConstructExpr, [B10.2], [B10.3], class B)
-// CHECK: 2: [B10.1] (BindTemporary)
-// CHECK: 3: [B10.2]
-// CHECK: 4: [B10.3].operator bool
-// CHECK: 5: [B10.3]
-// CHECK: 6: [B10.5] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: T: [B10.6] ? ... : ...
-// CHECK: Preds (1): B11
-// CHECK: Succs (2): B8 B9
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: true
-// CHECK: 2: b_([B1.1]) (Member initializer)
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B1 (ENTRY)]
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: this
-// CHECK: 2: [B1.1]->b_
-// CHECK: 3: [B1.2] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK: 4: return [B1.3];
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: true
-// CHECK: 2: b_([B1.1]) (Member initializer)
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: this
-// CHECK: 2: [B1.1]->b_
-// CHECK: 3: [B1.2] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK: 4: return [B1.3];
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B4 (ENTRY)]
-// CHECK: Succs (1): B3
-// CHECK: [B1]
-// CHECK: 1: 0
-// CHECK: 2: return [B1.1];
-// CHECK: Preds (1): B3
-// CHECK: Succs (1): B0
-// CHECK: [B2]
-// CHECK: 1: 1
-// CHECK: 2: return [B2.1];
-// CHECK: Preds (1): B3
-// CHECK: Succs (1): B0
-// CHECK: [B3]
-// WARNINGS: 1: C() (CXXConstructExpr, struct C)
-// ANALYZER: 1: C() (CXXConstructExpr, [B3.2], [B3.3], struct C)
-// CHECK: 2: [B3.1] (BindTemporary)
-// CHECK: 3: [B3.2]
-// CHECK: 4: [B3.3].operator bool
-// CHECK: 5: [B3.3]
-// CHECK: 6: [B3.5] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: 7: ~C() (Temporary object destructor)
-// CHECK: T: if [B3.6]
-// CHECK: Preds (1): B4
-// CHECK: Succs (2): B2 B1
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (2): B1 B2
-// CHECK: [B5 (ENTRY)]
-// CHECK: Succs (1): B4
-// CHECK: [B1]
-// CHECK: 1: [B4.6].~C() (Implicit destructor)
-// CHECK: Succs (1): B0
-// CHECK: [B2]
-// CHECK: 1: 0
-// CHECK: 2: return [B2.1];
-// CHECK: 3: [B4.6].~C() (Implicit destructor)
-// CHECK: Preds (1): B4
-// CHECK: Succs (1): B0
-// CHECK: [B3]
-// CHECK: 1: 1
-// CHECK: 2: return [B3.1];
-// CHECK: 3: [B4.6].~C() (Implicit destructor)
-// CHECK: Preds (1): B4
-// CHECK: Succs (1): B0
-// CHECK: [B4]
-// WARNINGS: 1: C() (CXXConstructExpr, struct C)
-// ANALYZER: 1: C() (CXXConstructExpr, [B4.2], [B4.4], [B4.5], struct C)
-// CHECK: 2: [B4.1] (BindTemporary)
-// CHECK: 3: [B4.2] (ImplicitCastExpr, NoOp, const struct C)
-// CHECK: 4: [B4.3]
-// WARNINGS: 5: [B4.4] (CXXConstructExpr, struct C)
-// ANALYZER: 5: [B4.4] (CXXConstructExpr, [B4.6], struct C)
-// CHECK: 6: C c = C();
-// CHECK: 7: ~C() (Temporary object destructor)
-// CHECK: 8: c
-// CHECK: 9: [B4.8].operator bool
-// CHECK: 10: [B4.8]
-// CHECK: 11: [B4.10] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: T: if [B4.11]
-// CHECK: Preds (1): B5
-// CHECK: Succs (2): B3 B2
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (3): B1 B2 B3
-// CHECK: [B4 (ENTRY)]
-// CHECK: Succs (1): B3
-// CHECK: [B1]
-// CHECK: 1: 0
-// CHECK: 2: return [B1.1];
-// CHECK: Preds (1): B3
-// CHECK: Succs (1): B0
-// CHECK: [B2]
-// CHECK: 1: 1
-// CHECK: 2: return [B2.1];
-// CHECK: Preds (1): B3
-// CHECK: Succs (1): B0
-// CHECK: [B3]
-// WARNINGS: 1: D() (CXXConstructExpr, struct D)
-// ANALYZER: 1: D() (CXXConstructExpr, [B3.2], struct D)
-// CHECK: 2: [B3.1]
-// CHECK: 3: [B3.2].operator bool
-// CHECK: 4: [B3.2]
-// CHECK: 5: [B3.4] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: T: if [B3.5]
-// CHECK: Preds (1): B4
-// CHECK: Succs (2): B2 B1
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (2): B1 B2
-// CHECK: [B4 (ENTRY)]
-// CHECK: Succs (1): B3
-// CHECK: [B1]
-// CHECK: 1: 0
-// CHECK: 2: return [B1.1];
-// CHECK: Preds (1): B3
-// CHECK: Succs (1): B0
-// CHECK: [B2]
-// CHECK: 1: 1
-// CHECK: 2: return [B2.1];
-// CHECK: Preds (1): B3
-// CHECK: Succs (1): B0
-// CHECK: [B3]
-// CXX98-WARNINGS: 1: D() (CXXConstructExpr, struct D)
-// CXX98-ANALYZER: 1: D() (CXXConstructExpr, [B3.3], [B3.4], struct D)
-// CXX98: 2: [B3.1] (ImplicitCastExpr, NoOp, const struct D)
-// CXX98: 3: [B3.2]
-// CXX98-WARNINGS: 4: [B3.3] (CXXConstructExpr, struct D)
-// CXX98-ANALYZER: 4: [B3.3] (CXXConstructExpr, [B3.5], struct D)
-// CXX98: 5: D d = D();
-// CXX98: 6: d
-// CXX98: 7: [B3.6].operator bool
-// CXX98: 8: [B3.6]
-// CXX98: 9: [B3.8] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CXX98: T: if [B3.9]
-// CXX11-WARNINGS: 1: D() (CXXConstructExpr, struct D)
-// CXX11-ANALYZER: 1: D() (CXXConstructExpr, [B3.2], [B3.3], struct D)
-// CXX11: 2: [B3.1]
-// CXX11-WARNINGS: 3: [B3.2] (CXXConstructExpr, struct D)
-// CXX11-ANALYZER: 3: [B3.2] (CXXConstructExpr, [B3.4], struct D)
-// CXX11: 4: D d = D();
-// CXX11: 5: d
-// CXX11: 6: [B3.5].operator bool
-// CXX11: 7: [B3.5]
-// CXX11: 8: [B3.7] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CXX11: T: if [B3.8]
-// CHECK: Preds (1): B4
-// CHECK: Succs (2): B2 B1
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (2): B1 B2
-// CHECK: [B14 (ENTRY)]
-// CHECK: Succs (1): B13
-// CHECK: [B1]
-// CHECK: 1: ~B() (Temporary object destructor)
-// CHECK: 2: int b;
-// CHECK: 3: [B10.4].~A() (Implicit destructor)
-// CHECK: Preds (2): B2 B3
-// CHECK: Succs (1): B0
-// CHECK: [B2]
-// CHECK: 1: ~A() (Temporary object destructor)
-// CHECK: 2: ~A() (Temporary object destructor)
-// CHECK: Preds (1): B4
-// CHECK: Succs (1): B1
-// CHECK: [B3]
-// CHECK: 1: ~A() (Temporary object destructor)
-// CHECK: 2: ~A() (Temporary object destructor)
-// CHECK: 3: ~A() (Temporary object destructor)
-// CHECK: 4: ~B() (Temporary object destructor)
-// CHECK: Preds (1): B4
-// CHECK: Succs (1): B1
-// CHECK: [B4]
-// CHECK: 1: [B7.9] ? [B5.6] : [B6.16]
-// CHECK: 2: [B4.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 3: [B4.2]
-// CHECK: 4: [B7.3]([B4.3])
-// CHECK: T: (Temp Dtor) [B6.2]
-// CHECK: Preds (2): B5 B6
-// CHECK: Succs (2): B3 B2
-// CHECK: [B5]
-// WARNINGS: 1: A() (CXXConstructExpr, class A)
-// ANALYZER: 1: A() (CXXConstructExpr, [B5.2], [B5.4], [B5.5], class A)
-// CHECK: 2: [B5.1] (BindTemporary)
-// CHECK: 3: [B5.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 4: [B5.3]
-// WARNINGS: 5: [B5.4] (CXXConstructExpr, class A)
-// ANALYZER: 5: [B5.4] (CXXConstructExpr, [B5.6], [B4.3], class A)
-// CHECK: 6: [B5.5] (BindTemporary)
-// CHECK: Preds (1): B7
-// CHECK: Succs (1): B4
-// CHECK: [B6]
-// WARNINGS: 1: B() (CXXConstructExpr, class B)
-// ANALYZER: 1: B() (CXXConstructExpr, [B6.2], [B6.3], class B)
-// CHECK: 2: [B6.1] (BindTemporary)
-// CHECK: 3: [B6.2]
-// CHECK: 4: [B6.3].operator A
-// CHECK: 5: [B6.3]
-// CHECK: 6: [B6.5] (ImplicitCastExpr, UserDefinedConversion, class A)
-// CHECK: 7: [B6.6] (BindTemporary)
-// CHECK: 8: [B6.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 9: [B6.8]
-// WARNINGS: 10: [B6.9] (CXXConstructExpr, class A)
-// ANALYZER: 10: [B6.9] (CXXConstructExpr, [B6.11], [B6.14], [B6.15], class A)
-// CHECK: 11: [B6.10] (BindTemporary)
-// CHECK: 12: A([B6.11]) (CXXFunctionalCastExpr, ConstructorConversion, class A)
-// CHECK: 13: [B6.12] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 14: [B6.13]
-// WARNINGS: 15: [B6.14] (CXXConstructExpr, class A)
-// ANALYZER: 15: [B6.14] (CXXConstructExpr, [B6.16], [B4.3], class A)
-// CHECK: 16: [B6.15] (BindTemporary)
-// CHECK: Preds (1): B7
-// CHECK: Succs (1): B4
-// CHECK: [B7]
-// CHECK: 1: ~B() (Temporary object destructor)
-// CHECK: 2: foo
-// CHECK: 3: [B7.2] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(const class A &))
-// WARNINGS: 4: B() (CXXConstructExpr, class B)
-// ANALYZER: 4: B() (CXXConstructExpr, [B7.5], [B7.6], class B)
-// CHECK: 5: [B7.4] (BindTemporary)
-// CHECK: 6: [B7.5]
-// CHECK: 7: [B7.6].operator bool
-// CHECK: 8: [B7.6]
-// CHECK: 9: [B7.8] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: T: [B7.9] ? ... : ...
-// CHECK: Preds (2): B8 B9
-// CHECK: Succs (2): B5 B6
-// CHECK: [B8]
-// CHECK: 1: ~A() (Temporary object destructor)
-// CHECK: Preds (1): B10
-// CHECK: Succs (1): B7
-// CHECK: [B9]
-// CHECK: 1: ~A() (Temporary object destructor)
-// CHECK: 2: ~A() (Temporary object destructor)
-// CHECK: 3: ~B() (Temporary object destructor)
-// CHECK: Preds (1): B10
-// CHECK: Succs (1): B7
-// CHECK: [B10]
-// CHECK: 1: [B13.6] ? [B11.6] : [B12.16]
-// CHECK: 2: [B10.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 3: [B10.2]
-// CHECK: 4: const A &a = B() ? A() : A(B());
-// CHECK: T: (Temp Dtor) [B12.2]
-// CHECK: Preds (2): B11 B12
-// CHECK: Succs (2): B9 B8
-// CHECK: [B11]
-// WARNINGS: 1: A() (CXXConstructExpr, class A)
-// ANALYZER: 1: A() (CXXConstructExpr, [B11.2], [B11.4], [B11.5], class A)
-// CHECK: 2: [B11.1] (BindTemporary)
-// CHECK: 3: [B11.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 4: [B11.3]
-// WARNINGS: 5: [B11.4] (CXXConstructExpr, class A)
-// ANALYZER: 5: [B11.4] (CXXConstructExpr, [B10.3], class A)
-// CHECK: 6: [B11.5] (BindTemporary)
-// CHECK: Preds (1): B13
-// CHECK: Succs (1): B10
-// CHECK: [B12]
-// WARNINGS: 1: B() (CXXConstructExpr, class B)
-// ANALYZER: 1: B() (CXXConstructExpr, [B12.2], [B12.3], class B)
-// CHECK: 2: [B12.1] (BindTemporary)
-// CHECK: 3: [B12.2]
-// CHECK: 4: [B12.3].operator A
-// CHECK: 5: [B12.3]
-// CHECK: 6: [B12.5] (ImplicitCastExpr, UserDefinedConversion, class A)
-// CHECK: 7: [B12.6] (BindTemporary)
-// CHECK: 8: [B12.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 9: [B12.8]
-// WARNINGS: 10: [B12.9] (CXXConstructExpr, class A)
-// ANALYZER: 10: [B12.9] (CXXConstructExpr, [B12.11], [B12.14], [B12.15], class A)
-// CHECK: 11: [B12.10] (BindTemporary)
-// CHECK: 12: A([B12.11]) (CXXFunctionalCastExpr, ConstructorConversion, class A)
-// CHECK: 13: [B12.12] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 14: [B12.13]
-// WARNINGS: 15: [B12.14] (CXXConstructExpr, class A)
-// ANALYZER: 15: [B12.14] (CXXConstructExpr, [B10.3], class A)
-// CHECK: 16: [B12.15] (BindTemporary)
-// CHECK: Preds (1): B13
-// CHECK: Succs (1): B10
-// CHECK: [B13]
-// WARNINGS: 1: B() (CXXConstructExpr, class B)
-// ANALYZER: 1: B() (CXXConstructExpr, [B13.2], [B13.3], class B)
-// CHECK: 2: [B13.1] (BindTemporary)
-// CHECK: 3: [B13.2]
-// CHECK: 4: [B13.3].operator bool
-// CHECK: 5: [B13.3]
-// CHECK: 6: [B13.5] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: T: [B13.6] ? ... : ...
-// CHECK: Preds (1): B14
-// CHECK: Succs (2): B11 B12
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B8 (ENTRY)]
-// CHECK: Succs (1): B7
-// CHECK: [B1]
-// CHECK: 1: int b;
-// CHECK: 2: [B4.5].~A() (Implicit destructor)
-// CHECK: Preds (2): B2 B3
-// CHECK: Succs (1): B0
-// CHECK: [B2]
-// CHECK: 1: ~A() (Temporary object destructor)
-// CHECK: Preds (1): B4
-// CHECK: Succs (1): B1
-// CHECK: [B3]
-// CHECK: 1: ~A() (Temporary object destructor)
-// CHECK: 2: ~A() (Temporary object destructor)
-// CHECK: Preds (1): B4
-// CHECK: Succs (1): B1
-// CHECK: [B4]
-// CXX98: 1: [B7.2] ?: [B6.6]
-// CXX11: 1: [B7.3] ?: [B6.6]
-// CHECK: 2: [B4.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 3: [B4.2]
-// WARNINGS: 4: [B4.3] (CXXConstructExpr, class A)
-// ANALYZER: 4: [B4.3] (CXXConstructExpr, [B4.5], class A)
-// CHECK: 5: A a = A() ?: A();
-// CHECK: T: (Temp Dtor) [B6.2]
-// CHECK: Preds (2): B5 B6
-// CHECK: Succs (2): B3 B2
-// CHECK: [B5]
-// CXX98: 1: [B7.2] (ImplicitCastExpr, NoOp, const class A)
-// CXX98: 2: [B5.1]
-// WARNINGS-CXX98: 3: [B5.2] (CXXConstructExpr, class A)
-// ANALYZER-CXX98: 3: [B5.2] (CXXConstructExpr, [B5.4], class A)
-// CXX98: 4: [B5.3] (BindTemporary)
-// CXX11: 1: [B7.3] (ImplicitCastExpr, NoOp, const class A)
-// WARNINGS-CXX11: 2: [B5.1] (CXXConstructExpr, class A)
-// ANALYZER-CXX11: 2: [B5.1] (CXXConstructExpr, [B5.3], class A)
-// CXX11: 3: [B5.2] (BindTemporary)
-// CHECK: Preds (1): B7
-// CHECK: Succs (1): B4
-// CHECK: [B6]
-// WARNINGS: 1: A() (CXXConstructExpr, class A)
-// ANALYZER: 1: A() (CXXConstructExpr, [B6.2], [B6.4], [B6.5], class A)
-// CHECK: 2: [B6.1] (BindTemporary)
-// CHECK: 3: [B6.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 4: [B6.3]
-// WARNINGS: 5: [B6.4] (CXXConstructExpr, class A)
-// ANALYZER: 5: [B6.4] (CXXConstructExpr, [B6.6], class A)
-// CHECK: 6: [B6.5] (BindTemporary)
-// CHECK: Preds (1): B7
-// CHECK: Succs (1): B4
-// CHECK: [B7]
-// WARNINGS: 1: A() (CXXConstructExpr, class A)
-// ANALYZER-CXX98: 1: A() (CXXConstructExpr, [B7.2], [B7.3], class A)
-// ANALYZER-CXX11: 1: A() (CXXConstructExpr, [B7.2], class A)
-// CHECK: 2: [B7.1] (BindTemporary)
-// CHECK: 3: [B7.2]
-// CHECK: 4: [B7.3].operator bool
-// CHECK: 5: [B7.3]
-// CHECK: 6: [B7.5] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: T: [B7.6] ? ... : ...
-// CHECK: Preds (1): B8
-// CHECK: Succs (2): B5 B6
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B13 (ENTRY)]
-// CHECK: Succs (1): B12
-// CHECK: [B1]
-// CHECK: 1: int b;
-// CHECK: 2: [B9.4].~A() (Implicit destructor)
-// CHECK: Preds (2): B2 B3
-// CHECK: Succs (1): B0
-// CHECK: [B2]
-// CHECK: 1: ~A() (Temporary object destructor)
-// CHECK: Preds (1): B4
-// CHECK: Succs (1): B1
-// CHECK: [B3]
-// CHECK: 1: ~A() (Temporary object destructor)
-// CHECK: 2: ~A() (Temporary object destructor)
-// CHECK: Preds (1): B4
-// CHECK: Succs (1): B1
-// CHECK: [B4]
-// CXX98: 1: [B7.4] ?: [B6.6]
-// CXX11: 1: [B7.5] ?: [B6.6]
-// CHECK: 2: [B4.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 3: [B4.2]
-// CHECK: 4: [B7.2]([B4.3])
-// CHECK: T: (Temp Dtor) [B6.2]
-// CHECK: Preds (2): B5 B6
-// CHECK: Succs (2): B3 B2
-// CHECK: [B5]
-// CXX98: 1: [B7.4] (ImplicitCastExpr, NoOp, const class A)
-// CXX98: 2: [B5.1]
-// WARNINGS-CXX98: 3: [B5.2] (CXXConstructExpr, class A)
-// ANALYZER-CXX98: 3: [B5.2] (CXXConstructExpr, [B5.4], class A)
-// CXX98: 4: [B5.3] (BindTemporary)
-// CXX11: 1: [B7.5] (ImplicitCastExpr, NoOp, const class A)
-// WARNINGS-CXX11: 2: [B5.1] (CXXConstructExpr, class A)
-// ANALYZER-CXX11: 2: [B5.1] (CXXConstructExpr, [B5.3], class A)
-// CXX11: 3: [B5.2] (BindTemporary)
-// CHECK: Preds (1): B7
-// CHECK: Succs (1): B4
-// CHECK: [B6]
-// WARNINGS: 1: A() (CXXConstructExpr, class A)
-// ANALYZER: 1: A() (CXXConstructExpr, [B6.2], [B6.4], [B6.5], class A)
-// CHECK: 2: [B6.1] (BindTemporary)
-// CHECK: 3: [B6.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 4: [B6.3]
-// WARNINGS: 5: [B6.4] (CXXConstructExpr, class A)
-// ANALYZER: 5: [B6.4] (CXXConstructExpr, [B6.6], class A)
-// CHECK: 6: [B6.5] (BindTemporary)
-// CHECK: Preds (1): B7
-// CHECK: Succs (1): B4
-// CHECK: [B7]
-// CHECK: 1: foo
-// CHECK: 2: [B7.1] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(const class A &))
-// WARNINGS: 3: A() (CXXConstructExpr, class A)
-// ANALYZER-CXX98: 3: A() (CXXConstructExpr, [B7.4], class A)
-// ANALYZER-CXX11: 3: A() (CXXConstructExpr, class A)
-// CHECK: 4: [B7.3] (BindTemporary)
-// CHECK: 5: [B7.4]
-// CHECK: 6: [B7.5].operator bool
-// CHECK: 7: [B7.5]
-// CHECK: 8: [B7.7] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: T: [B7.8] ? ... : ...
-// CHECK: Preds (2): B8 B9
-// CHECK: Succs (2): B5 B6
-// CHECK: [B8]
-// CHECK: 1: ~A() (Temporary object destructor)
-// CHECK: Preds (1): B9
-// CHECK: Succs (1): B7
-// CHECK: [B9]
-// CXX98: 1: [B12.2] ?: [B11.6]
-// CXX11: 1: [B12.3] ?: [B11.6]
-// CHECK: 2: [B9.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 3: [B9.2]
-// CHECK: 4: const A &a = A() ?: A();
-// CHECK: T: (Temp Dtor) [B11.2]
-// CHECK: Preds (2): B10 B11
-// CHECK: Succs (2): B8 B7
-// CHECK: [B10]
-// CXX98: 1: [B12.2] (ImplicitCastExpr, NoOp, const class A)
-// CXX98: 2: [B10.1]
-// WARNINGS-CXX98: 3: [B10.2] (CXXConstructExpr, class A)
-// ANALYZER-CXX98: 3: [B10.2] (CXXConstructExpr, [B10.4], class A)
-// CXX98: 4: [B10.3] (BindTemporary)
-// CXX11: 1: [B12.3] (ImplicitCastExpr, NoOp, const class A)
-// WARNINGS-CXX11: 2: [B10.1] (CXXConstructExpr, class A)
-// ANALYZER-CXX11: 2: [B10.1] (CXXConstructExpr, [B10.3], class A)
-// CXX11: 3: [B10.2] (BindTemporary)
-// CHECK: Preds (1): B12
-// CHECK: Succs (1): B9
-// CHECK: [B11]
-// WARNINGS-CHECK: 1: A() (CXXConstructExpr, class A)
-// ANALYZER-CHECK: 1: A() (CXXConstructExpr, [B11.2], class A)
-// CHECK: 2: [B11.1] (BindTemporary)
-// CHECK: 3: [B11.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 4: [B11.3]
-// WARNINGS: 5: [B11.4] (CXXConstructExpr, class A)
-// ANALYZER: 5: [B11.4] (CXXConstructExpr, [B11.6], class A)
-// CHECK: 6: [B11.5] (BindTemporary)
-// CHECK: Preds (1): B12
-// CHECK: Succs (1): B9
-// CHECK: [B12]
-// WARNINGS: 1: A() (CXXConstructExpr, class A)
-// ANALYZER-CXX98: 1: A() (CXXConstructExpr, [B12.2], [B12.3], class A)
-// ANALYZER-CXX11: 1: A() (CXXConstructExpr, [B12.2], class A)
-// CHECK: 2: [B12.1] (BindTemporary)
-// CHECK: 3: [B12.2]
-// CHECK: 4: [B12.3].operator bool
-// CHECK: 5: [B12.3]
-// CHECK: 6: [B12.5] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK: T: [B12.6] ? ... : ...
-// CHECK: Preds (1): B13
-// CHECK: Succs (2): B10 B11
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// WARNINGS: 1: A() (CXXConstructExpr, class A)
-// ANALYZER: 1: A() (CXXConstructExpr, [B1.2], [B1.4], [B1.5], class A)
-// CHECK: 2: [B1.1] (BindTemporary)
-// CHECK: 3: [B1.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 4: [B1.3]
-// WARNINGS: 5: [B1.4] (CXXConstructExpr, class A)
-// ANALYZER: 5: [B1.4] (CXXConstructExpr, [B1.6], class A)
-// CHECK: 6: A a = A();
-// CHECK: 7: ~A() (Temporary object destructor)
-// CHECK: 8: int b;
-// CHECK: 9: [B1.6].~A() (Implicit destructor)
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// WARNINGS: 1: A() (CXXConstructExpr, class A)
-// ANALYZER: 1: A() (CXXConstructExpr, [B1.4], class A)
-// CHECK: 2: [B1.1] (BindTemporary)
-// CHECK: 3: [B1.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 4: [B1.3]
-// CHECK: 5: const A &a = A();
-// CHECK: 6: foo
-// CHECK: 7: [B1.6] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(const class A &))
-// WARNINGS: 8: A() (CXXConstructExpr, class A)
-// ANALYZER: 8: A() (CXXConstructExpr, [B1.9], [B1.11], class A)
-// CHECK: 9: [B1.8] (BindTemporary)
-// CHECK: 10: [B1.9] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 11: [B1.10]
-// CHECK: 12: [B1.7]([B1.11])
-// CHECK: 13: ~A() (Temporary object destructor)
-// CHECK: 14: int b;
-// CHECK: 15: [B1.5].~A() (Implicit destructor)
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: A::make
-// CHECK: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, class A (*)(void))
-// WARNINGS: 3: [B1.2]()
-// ANALYZER: 3: [B1.2]() (CXXRecordTypedCall, [B1.4], [B1.6], [B1.7])
-// CHECK: 4: [B1.3] (BindTemporary)
-// CHECK: 5: [B1.4] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 6: [B1.5]
-// WARNINGS: 7: [B1.6] (CXXConstructExpr, class A)
-// ANALYZER: 7: [B1.6] (CXXConstructExpr, [B1.8], class A)
-// CHECK: 8: A a = A::make();
-// CHECK: 9: ~A() (Temporary object destructor)
-// CHECK: 10: int b;
-// CHECK: 11: [B1.8].~A() (Implicit destructor)
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: A::make
-// CHECK: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, class A (*)(void))
-// WARNINGS: 3: [B1.2]()
-// ANALYZER: 3: [B1.2]() (CXXRecordTypedCall, [B1.6])
-// CHECK: 4: [B1.3] (BindTemporary)
-// CHECK: 5: [B1.4] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 6: [B1.5]
-// CHECK: 7: const A &a = A::make();
-// CHECK: 8: foo
-// CHECK: 9: [B1.8] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(const class A &))
-// CHECK: 10: A::make
-// CHECK: 11: [B1.10] (ImplicitCastExpr, FunctionToPointerDecay, class A (*)(void))
-// WARNINGS: 12: [B1.11]()
-// ANALYZER: 12: [B1.11]() (CXXRecordTypedCall, [B1.13], [B1.15])
-// CHECK: 13: [B1.12] (BindTemporary)
-// CHECK: 14: [B1.13] (ImplicitCastExpr, NoOp, const class A)
-// CHECK: 15: [B1.14]
-// CHECK: 16: [B1.9]([B1.15])
-// CHECK: 17: ~A() (Temporary object destructor)
-// CHECK: 18: int b;
-// CHECK: 19: [B1.7].~A() (Implicit destructor)
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: int a;
-// WARNINGS: 2: A() (CXXConstructExpr, class A)
-// ANALYZER: 2: A() (CXXConstructExpr, [B1.3], [B1.4], class A)
-// CHECK: 3: [B1.2] (BindTemporary)
-// CHECK: 4: [B1.3]
-// CHECK: 5: [B1.4].operator int
-// CHECK: 6: [B1.4]
-// CHECK: 7: [B1.6] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK: 8: a
-// CHECK: 9: [B1.8] = [B1.7]
-// CHECK: 10: ~A() (Temporary object destructor)
-// CHECK: 11: int b;
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// WARNINGS: 1: A() (CXXConstructExpr, class A)
-// ANALYZER: 1: A() (CXXConstructExpr, [B1.2], [B1.3], class A)
-// CHECK: 2: [B1.1] (BindTemporary)
-// CHECK: 3: [B1.2]
-// CHECK: 4: [B1.3].operator int
-// CHECK: 5: [B1.3]
-// CHECK: 6: [B1.5] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK: 7: int([B1.6]) (CXXFunctionalCastExpr, NoOp, int)
-// WARNINGS: 8: B() (CXXConstructExpr, class B)
-// ANALYZER: 8: B() (CXXConstructExpr, [B1.9], [B1.10], class B)
-// CHECK: 9: [B1.8] (BindTemporary)
-// CHECK: 10: [B1.9]
-// CHECK: 11: [B1.10].operator int
-// CHECK: 12: [B1.10]
-// CHECK: 13: [B1.12] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK: 14: int([B1.13]) (CXXFunctionalCastExpr, NoOp, int)
-// CHECK: 15: [B1.7] + [B1.14]
-// CHECK: 16: a([B1.15]) (Member initializer)
-// CHECK: 17: ~B() (Temporary object destructor)
-// CHECK: 18: ~A() (Temporary object destructor)
-// CHECK: 19: /*implicit*/(int)0
-// CHECK: 20: b([B1.19]) (Member initializer)
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B3 (ENTRY)]
-// CHECK: Succs (1): B2
-// CHECK: [B1]
-// CHECK: 1: int b;
-// CHECK: Preds (1): B2(Unreachable)
-// CHECK: Succs (1): B0
-// CHECK: [B2 (NORETURN)]
-// CHECK: 1: int a;
-// WARNINGS: 2: NoReturn() (CXXConstructExpr, class NoReturn)
-// ANALYZER-CXX98: 2: NoReturn() (CXXConstructExpr, [B2.3], [B2.4], class NoReturn)
-// ANALYZER-CXX11: 2: NoReturn() (CXXConstructExpr, [B2.3], class NoReturn)
-// CHECK: 3: [B2.2] (BindTemporary)
-// CHECK: [[MEMBER:[45]]]: [B2.{{[34]}}].f
-// CHECK: {{[56]}}: [B2.[[MEMBER]]]()
-// CHECK: {{[67]}}: ~NoReturn() (Temporary object destructor)
-// CHECK: Preds (1): B3
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (2): B1 B2
-// CHECK: [B3 (ENTRY)]
-// CHECK: Succs (1): B2
-// CHECK: [B1]
-// CHECK: 1: int b;
-// CHECK: Preds (1): B2(Unreachable)
-// CHECK: Succs (1): B0
-// CHECK: [B2 (NORETURN)]
-// CHECK: 1: int a;
-// WARNINGS: 2: NoReturn() (CXXConstructExpr, class NoReturn)
-// ANALYZER: 2: NoReturn() (CXXConstructExpr, [B2.3], class NoReturn)
-// CHECK: 3: [B2.2] (BindTemporary)
-// CHECK: 4: 47
-// CHECK: 5: ... , [B2.4]
-// CHECK: 6: ~NoReturn() (Temporary object destructor)
-// CHECK: Preds (1): B3
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (2): B1 B2
-// CHECK: [B9 (ENTRY)]
-// CHECK: Succs (1): B8
-// CHECK: [B1]
-// CHECK: 1: 0
-// CHECK: 2: return [B1.1];
-// CHECK: Preds (2): B3 B8
-// CHECK: Succs (1): B0
-// CHECK: [B2]
-// CHECK: 1: 1
-// CHECK: 2: return [B2.1];
-// CHECK: Preds (1): B3
-// CHECK: Succs (1): B0
-// CHECK: [B3]
-// CHECK: T: if [B5.1]
-// CHECK: Preds (2): B4(Unreachable) B5
-// CHECK: Succs (2): B2 B1
-// CHECK: [B4 (NORETURN)]
-// CHECK: 1: ~NoReturn() (Temporary object destructor)
-// CHECK: Preds (1): B5
-// CHECK: Succs (1): B0
-// CHECK: [B5]
-// CHECK: 1: [B7.3] || [B6.7]
-// CHECK: T: (Temp Dtor) [B6.4]
-// CHECK: Preds (2): B6 B7
-// CHECK: Succs (2): B4 B3
-// CHECK: [B6]
-// CHECK: 1: check
-// CHECK: 2: [B6.1] (ImplicitCastExpr, FunctionToPointerDecay, _Bool (*)(const class NoReturn &))
-// WARNINGS: 3: NoReturn() (CXXConstructExpr, class NoReturn)
-// ANALYZER: 3: NoReturn() (CXXConstructExpr, [B6.4], [B6.6], class NoReturn)
-// CHECK: 4: [B6.3] (BindTemporary)
-// CHECK: 5: [B6.4] (ImplicitCastExpr, NoOp, const class NoReturn)
-// CHECK: 6: [B6.5]
-// CHECK: 7: [B6.2]([B6.6])
-// CHECK: Preds (1): B7
-// CHECK: Succs (1): B5
-// CHECK: [B7]
-// CHECK: 1: value
-// CHECK: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK: 3: ![B7.2]
-// CHECK: T: [B7.3] || ...
-// CHECK: Preds (1): B8
-// CHECK: Succs (2): B5 B6
-// CHECK: [B8]
-// CHECK: 1: value
-// CHECK: 2: [B8.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK: T: if [B8.2]
-// CHECK: Preds (1): B9
-// CHECK: Succs (2): B7 B1
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (3): B1 B2 B4
-// CHECK: [B10 (ENTRY)]
-// CHECK: Succs (1): B9
-// CHECK: [B1]
-// CHECK: 1: 0
-// CHECK: 2: return [B1.1];
-// CHECK: Preds (2): B3 B9
-// CHECK: Succs (1): B0
-// CHECK: [B2]
-// CHECK: 1: 1
-// CHECK: 2: return [B2.1];
-// CHECK: Preds (1): B3
-// CHECK: Succs (1): B0
-// CHECK: [B3]
-// CHECK: T: if [B5.1]
-// CHECK: Preds (2): B4(Unreachable) B5
-// CHECK: Succs (2): B2 B1
-// CHECK: [B4 (NORETURN)]
-// CHECK: 1: ~NoReturn() (Temporary object destructor)
-// CHECK: Preds (1): B5
-// CHECK: Succs (1): B0
-// CHECK: [B5]
-// CHECK: 1: [B8.3] || [B7.3] || [B6.7]
-// CHECK: T: (Temp Dtor) [B6.4]
-// CHECK: Preds (3): B6 B7 B8
-// CHECK: Succs (2): B4 B3
-// CHECK: [B6]
-// CHECK: 1: check
-// CHECK: 2: [B6.1] (ImplicitCastExpr, FunctionToPointerDecay, _Bool (*)(const class NoReturn &))
-// WARNINGS: 3: NoReturn() (CXXConstructExpr, class NoReturn)
-// ANALYZER: 3: NoReturn() (CXXConstructExpr, [B6.4], [B6.6], class NoReturn)
-// CHECK: 4: [B6.3] (BindTemporary)
-// CHECK: 5: [B6.4] (ImplicitCastExpr, NoOp, const class NoReturn)
-// CHECK: 6: [B6.5]
-// CHECK: 7: [B6.2]([B6.6])
-// CHECK: Preds (1): B7
-// CHECK: Succs (1): B5
-// CHECK: [B7]
-// CHECK: 1: value
-// CHECK: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK: 3: ![B7.2]
-// CHECK: T: [B8.3] || [B7.3] || ...
-// CHECK: Preds (1): B8
-// CHECK: Succs (2): B5 B6
-// CHECK: [B8]
-// CHECK: 1: value
-// CHECK: 2: [B8.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK: 3: ![B8.2]
-// CHECK: T: [B8.3] || ...
-// CHECK: Preds (1): B9
-// CHECK: Succs (2): B5 B7
-// CHECK: [B9]
-// CHECK: 1: value
-// CHECK: 2: [B9.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK: T: if [B9.2]
-// CHECK: Preds (1): B10
-// CHECK: Succs (2): B8 B1
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (3): B1 B2 B4
-// CHECK: [B10 (ENTRY)]
-// CHECK: Succs (1): B9
-// CHECK: [B1]
-// CHECK: 1: 0
-// CHECK: 2: return [B1.1];
-// CHECK: Preds (2): B3 B9
-// CHECK: Succs (1): B0
-// CHECK: [B2]
-// CHECK: 1: 1
-// CHECK: 2: return [B2.1];
-// CHECK: Preds (1): B3
-// CHECK: Succs (1): B0
-// CHECK: [B3]
-// CHECK: T: if [B5.1]
-// CHECK: Preds (2): B4(Unreachable) B5
-// CHECK: Succs (2): B2 B1
-// CHECK: [B4 (NORETURN)]
-// CHECK: 1: ~NoReturn() (Temporary object destructor)
-// CHECK: Preds (1): B5
-// CHECK: Succs (1): B0
-// CHECK: [B5]
-// CHECK: 1: [B8.3] || [B7.2] || [B6.7]
-// CHECK: T: (Temp Dtor) [B6.4]
-// CHECK: Preds (3): B6 B7 B8
-// CHECK: Succs (2): B4 B3
-// CHECK: [B6]
-// CHECK: 1: check
-// CHECK: 2: [B6.1] (ImplicitCastExpr, FunctionToPointerDecay, _Bool (*)(const class NoReturn &))
-// WARNINGS: 3: NoReturn() (CXXConstructExpr, class NoReturn)
-// ANALYZER: 3: NoReturn() (CXXConstructExpr, [B6.4], [B6.6], class NoReturn)
-// CHECK: 4: [B6.3] (BindTemporary)
-// CHECK: 5: [B6.4] (ImplicitCastExpr, NoOp, const class NoReturn)
-// CHECK: 6: [B6.5]
-// CHECK: 7: [B6.2]([B6.6])
-// CHECK: Preds (1): B7
-// CHECK: Succs (1): B5
-// CHECK: [B7]
-// CHECK: 1: value
-// CHECK: 2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK: T: [B8.3] || [B7.2] || ...
-// CHECK: Preds (1): B8
-// CHECK: Succs (2): B5 B6
-// CHECK: [B8]
-// CHECK: 1: value
-// CHECK: 2: [B8.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK: 3: ![B8.2]
-// CHECK: T: [B8.3] || ...
-// CHECK: Preds (1): B9
-// CHECK: Succs (2): B5 B7
-// CHECK: [B9]
-// CHECK: 1: value
-// CHECK: 2: [B9.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK: T: if [B9.2]
-// CHECK: Preds (1): B10
-// CHECK: Succs (2): B8 B1
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (3): B1 B2 B4
-// CHECK: [B1 (ENTRY)]
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: foo1
-// CHECK: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, const class pass_references_through::C &(*)(void))
-// CHECK: 3: [B1.2]()
-// CHECK: 4: return [B1.3];
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
-// CHECK: [B2 (ENTRY)]
-// CHECK: Succs (1): B1
-// CHECK: [B1]
-// CHECK: 1: foo2
-// CHECK: 2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, class pass_references_through::C &&(*)(void))
-// CHECK: 3: [B1.2]()
-// CHECK: 4: return [B1.3];
-// CHECK: Preds (1): B2
-// CHECK: Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK: Preds (1): B1
diff --git a/test/Analysis/temp-obj-dtors-option.cpp b/test/Analysis/temp-obj-dtors-option.cpp
deleted file mode 100644
index a78dee2bd311..000000000000
--- a/test/Analysis/temp-obj-dtors-option.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config c++-temp-dtor-inlining=false -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config c++-temp-dtor-inlining=true -DINLINE -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(bool);
-
-struct S {
- int &x;
-
- S(int &x) : x(x) { ++x; }
- ~S() { --x; }
-};
-
-void foo() {
- int x = 0;
- S(x).x += 1;
- clang_analyzer_eval(x == 1);
-#ifdef INLINE
- // expected-warning@-2{{TRUE}}
-#else
- // expected-warning@-4{{UNKNOWN}}
-#endif
-}
diff --git a/test/Analysis/templates.cpp b/test/Analysis/templates.cpp
deleted file mode 100644
index e7c30a764f72..000000000000
--- a/test/Analysis/templates.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -fblocks -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -fblocks -analyzer-config c++-template-inlining=false -DNO_INLINE -verify -analyzer-config eagerly-assume=false %s
-
-void clang_analyzer_eval(bool);
-
-// Do not crash on this templated code which uses a block.
-typedef void (^my_block)(void);
-static void useBlock(my_block block){}
-template<class T> class MyClass;
-typedef MyClass<float> Mf;
-
-template<class T>
-class MyClass
-{
-public:
- MyClass() {}
- MyClass(T a);
- void I();
-private:
- static const T one;
-};
-
-template<class T> const T MyClass<T>::one = static_cast<T>(1);
-template<class T> inline MyClass<T>::MyClass(T a){}
-template<class T> void MyClass<T>::I() {
- static MyClass<T>* mPtr = 0;
- useBlock(^{ mPtr = new MyClass<T> (MyClass<T>::one); });
-};
-int main(){
- Mf m;
- m.I();
-}
-
-
-// <rdar://problem/11949235>
-template<class T, unsigned N>
-inline unsigned array_lengthof(T (&)[N]) {
- return N;
-}
-
-void testNonTypeTemplateInstantiation() {
- const char *S[] = { "a", "b" };
- clang_analyzer_eval(array_lengthof(S) == 2);
-#ifndef NO_INLINE
- // expected-warning@-2 {{TRUE}}
-#else
- // expected-warning@-4 {{UNKNOWN}}
-#endif
-}
-
-namespace rdar13954714 {
- template <bool VALUE>
- bool blockInTemplate() {
- return (^() {
- return VALUE;
- })();
- }
-
- // force instantiation
- template bool blockInTemplate<true>();
-
- template <bool VALUE>
- void blockWithStatic() {
- (void)^() {
- static int x;
- return ++x;
- };
- }
-
- // force instantiation
- template void blockWithStatic<true>();
-}
diff --git a/test/Analysis/temporaries-callback-order.cpp b/test/Analysis/temporaries-callback-order.cpp
deleted file mode 100644
index 120fabc10478..000000000000
--- a/test/Analysis/temporaries-callback-order.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=debug.AnalysisOrder -analyzer-config debug.AnalysisOrder:Bind=true -analyzer-config debug.AnalysisOrder:RegionChanges=true %s 2>&1 | FileCheck %s
-
-struct Super {
- virtual void m();
-};
-struct Sub : Super {
- virtual void m() {}
-};
-
-void testTemporaries() {
- // This triggers RegionChanges once for zero-initialization of the structure.
- Sub().m();
-}
-
-void seeIfCheckBindWorks() {
- // This should trigger checkBind. The rest of the code shouldn't.
- // This also triggers checkRegionChanges after that.
- // Note that this function is analyzed first, so the messages would be on top.
- int x = 1;
-}
-
-// seeIfCheckBindWorks():
-// CHECK: Bind
-// CHECK-NEXT: RegionChanges
-
-// testTemporaries():
-// CHECK-NEXT: RegionChanges
-
-// Make sure there's no further output.
-// CHECK-NOT: Bind
-// CHECK-NOT: RegionChanges
diff --git a/test/Analysis/temporaries.cpp b/test/Analysis/temporaries.cpp
deleted file mode 100644
index 6191abfb4d2e..000000000000
--- a/test/Analysis/temporaries.cpp
+++ /dev/null
@@ -1,1248 +0,0 @@
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core,cplusplus\
-// RUN: -analyzer-checker debug.ExprInspection -Wno-non-pod-varargs\
-// RUN: -analyzer-config eagerly-assume=false -verify %s\
-// RUN: -std=c++03 -analyzer-config cfg-temporary-dtors=false
-
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core,cplusplus\
-// RUN: -analyzer-checker debug.ExprInspection -Wno-non-pod-varargs\
-// RUN: -analyzer-config eagerly-assume=false -verify %s\
-// RUN: -std=c++11 -analyzer-config cfg-temporary-dtors=false
-
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core,cplusplus\
-// RUN: -analyzer-checker debug.ExprInspection -Wno-non-pod-varargs\
-// RUN: -analyzer-config eagerly-assume=false -verify %s\
-// RUN: -std=c++11 -analyzer-config cfg-temporary-dtors=true\
-// RUN: -DTEMPORARY_DTORS
-
-// RUN: %clang_analyze_cc1 -w -analyzer-checker=core,cplusplus\
-// RUN: -analyzer-checker debug.ExprInspection -Wno-non-pod-varargs\
-// RUN: -analyzer-config eagerly-assume=false -verify %s\
-// RUN: -std=c++17 -analyzer-config cfg-temporary-dtors=true\
-// RUN: -DTEMPORARY_DTORS
-
-
-extern bool clang_analyzer_eval(bool);
-extern bool clang_analyzer_warnIfReached();
-void clang_analyzer_checkInlined(bool);
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-struct Trivial {
- Trivial(int x) : value(x) {}
- int value;
-};
-
-struct NonTrivial : public Trivial {
- NonTrivial(int x) : Trivial(x) {}
- ~NonTrivial();
-};
-
-
-Trivial getTrivial() {
- return Trivial(42); // no-warning
-}
-
-const Trivial &getTrivialRef() {
- return Trivial(42); // expected-warning {{Address of stack memory associated with temporary object of type 'Trivial' returned to caller}}
-}
-
-
-NonTrivial getNonTrivial() {
- return NonTrivial(42); // no-warning
-}
-
-const NonTrivial &getNonTrivialRef() {
- return NonTrivial(42); // expected-warning {{Address of stack memory associated with temporary object of type 'NonTrivial' returned to caller}}
-}
-
-namespace rdar13265460 {
- struct TrivialSubclass : public Trivial {
- TrivialSubclass(int x) : Trivial(x), anotherValue(-x) {}
- int anotherValue;
- };
-
- TrivialSubclass getTrivialSub() {
- TrivialSubclass obj(1);
- obj.value = 42;
- obj.anotherValue = -42;
- return obj;
- }
-
- void testImmediate() {
- TrivialSubclass obj = getTrivialSub();
-
- clang_analyzer_eval(obj.value == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(obj.anotherValue == -42); // expected-warning{{TRUE}}
-
- clang_analyzer_eval(getTrivialSub().value == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(getTrivialSub().anotherValue == -42); // expected-warning{{TRUE}}
- }
-
- void testMaterializeTemporaryExpr() {
- const TrivialSubclass &ref = getTrivialSub();
- clang_analyzer_eval(ref.value == 42); // expected-warning{{TRUE}}
-
- const Trivial &baseRef = getTrivialSub();
- clang_analyzer_eval(baseRef.value == 42); // expected-warning{{TRUE}}
- }
-}
-
-namespace rdar13281951 {
- struct Derived : public Trivial {
- Derived(int value) : Trivial(value), value2(-value) {}
- int value2;
- };
-
- void test() {
- Derived obj(1);
- obj.value = 42;
- const Trivial * const &pointerRef = &obj;
- clang_analyzer_eval(pointerRef->value == 42); // expected-warning{{TRUE}}
- }
-}
-
-namespace compound_literals {
- struct POD {
- int x, y;
- };
- struct HasCtor {
- HasCtor(int x, int y) : x(x), y(y) {}
- int x, y;
- };
- struct HasDtor {
- int x, y;
- ~HasDtor();
- };
- struct HasCtorDtor {
- HasCtorDtor(int x, int y) : x(x), y(y) {}
- ~HasCtorDtor();
- int x, y;
- };
-
- void test() {
- clang_analyzer_eval(((POD){1, 42}).y == 42); // expected-warning{{TRUE}}
- clang_analyzer_eval(((HasDtor){1, 42}).y == 42); // expected-warning{{TRUE}}
-
-#if __cplusplus >= 201103L
- clang_analyzer_eval(((HasCtor){1, 42}).y == 42); // expected-warning{{TRUE}}
-
- // FIXME: should be TRUE, but we don't inline the constructors of
- // temporaries because we can't model their destructors yet.
- clang_analyzer_eval(((HasCtorDtor){1, 42}).y == 42); // expected-warning{{UNKNOWN}}
-#endif
- }
-}
-
-namespace destructors {
- struct Dtor {
- ~Dtor();
- };
- extern bool coin();
- extern bool check(const Dtor &);
-
- void testPR16664andPR18159Crash() {
- // Regression test: we used to assert here when tmp dtors are enabled.
- // PR16664 and PR18159
- if (coin() && (coin() || coin() || check(Dtor()))) {
- Dtor();
- }
- }
-
-#ifdef TEMPORARY_DTORS
- struct NoReturnDtor {
- ~NoReturnDtor() __attribute__((noreturn));
- };
-
- void noReturnTemp(int *x) {
- if (! x) NoReturnDtor();
- *x = 47; // no warning
- }
-
- void noReturnInline(int **x) {
- NoReturnDtor();
- }
-
- void callNoReturn() {
- int *x;
- noReturnInline(&x);
- *x = 47; // no warning
- }
-
- extern bool check(const NoReturnDtor &);
-
- void testConsistencyIf(int i) {
- if (i != 5)
- return;
- if (i == 5 && (i == 4 || check(NoReturnDtor()) || i == 5)) {
- clang_analyzer_eval(true); // no warning, unreachable code
- }
- }
-
- void testConsistencyTernary(int i) {
- (i == 5 && (i == 4 || check(NoReturnDtor()) || i == 5)) ? 1 : 0;
-
- clang_analyzer_eval(true); // expected-warning{{TRUE}}
-
- if (i != 5)
- return;
-
- (i == 5 && (i == 4 || check(NoReturnDtor()) || i == 5)) ? 1 : 0;
-
- clang_analyzer_eval(true); // no warning, unreachable code
- }
-
- // Regression test: we used to assert here.
- // PR16664 and PR18159
- void testConsistencyNested(int i) {
- extern bool compute(bool);
-
- if (i == 5 && (i == 4 || i == 5 || check(NoReturnDtor())))
- clang_analyzer_eval(true); // expected-warning{{TRUE}}
-
- if (i == 5 && (i == 4 || i == 5 || check(NoReturnDtor())))
- clang_analyzer_eval(true); // expected-warning{{TRUE}}
-
- if (i != 5)
- return;
-
- if (compute(i == 5 &&
- (i == 4 || compute(true) ||
- compute(i == 5 && (i == 4 || check(NoReturnDtor()))))) ||
- i != 4) {
- clang_analyzer_eval(true); // expected-warning{{TRUE}}
- }
-
- if (compute(i == 5 &&
- (i == 4 || i == 4 ||
- compute(i == 5 && (i == 4 || check(NoReturnDtor()))))) ||
- i != 4) {
- clang_analyzer_eval(true); // no warning, unreachable code
- }
- }
-
- // PR16664 and PR18159
- void testConsistencyNestedSimple(bool value) {
- if (value) {
- if (!value || check(NoReturnDtor())) {
- clang_analyzer_eval(true); // no warning, unreachable code
- }
- }
- }
-
- // PR16664 and PR18159
- void testConsistencyNestedComplex(bool value) {
- if (value) {
- if (!value || !value || check(NoReturnDtor())) {
- clang_analyzer_eval(true); // no warning, unreachable code
- }
- }
- }
-
- // PR16664 and PR18159
- void testConsistencyNestedWarning(bool value) {
- if (value) {
- if (!value || value || check(NoReturnDtor())) {
- clang_analyzer_eval(true); // expected-warning{{TRUE}}
- }
- }
- }
- // PR16664 and PR18159
- void testConsistencyNestedComplexMidBranch(bool value) {
- if (value) {
- if (!value || !value || check(NoReturnDtor()) || value) {
- clang_analyzer_eval(true); // no warning, unreachable code
- }
- }
- }
-
- // PR16664 and PR18159
- void testConsistencyNestedComplexNestedBranch(bool value) {
- if (value) {
- if (!value || (!value || check(NoReturnDtor()) || value)) {
- clang_analyzer_eval(true); // no warning, unreachable code
- }
- }
- }
-
- // PR16664 and PR18159
- void testConsistencyNestedVariableModification(bool value) {
- bool other = true;
- if (value) {
- if (!other || !value || (other = false) || check(NoReturnDtor()) ||
- !other) {
- clang_analyzer_eval(true); // no warning, unreachable code
- }
- }
- }
-
- void testTernaryNoReturnTrueBranch(bool value) {
- if (value) {
- bool b = value && (value ? check(NoReturnDtor()) : true);
- clang_analyzer_eval(true); // no warning, unreachable code
- }
- }
- void testTernaryNoReturnFalseBranch(bool value) {
- if (value) {
- bool b = !value && !value ? true : check(NoReturnDtor());
- clang_analyzer_eval(true); // no warning, unreachable code
- }
- }
- void testTernaryIgnoreNoreturnBranch(bool value) {
- if (value) {
- bool b = !value && !value ? check(NoReturnDtor()) : true;
- clang_analyzer_eval(true); // expected-warning{{TRUE}}
- }
- }
- void testTernaryTrueBranchReached(bool value) {
- value ? clang_analyzer_warnIfReached() : // expected-warning{{REACHABLE}}
- check(NoReturnDtor());
- }
- void testTernaryFalseBranchReached(bool value) {
- value ? check(NoReturnDtor()) :
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
-
- void testLoop() {
- for (int i = 0; i < 10; ++i) {
- if (i < 3 && (i >= 2 || check(NoReturnDtor()))) {
- clang_analyzer_eval(true); // no warning, unreachable code
- }
- }
- }
-
- bool testRecursiveFrames(bool isInner) {
- if (isInner ||
- (clang_analyzer_warnIfReached(), false) || // expected-warning{{REACHABLE}}
- check(NoReturnDtor()) ||
- testRecursiveFrames(true)) {
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
- }
- void testRecursiveFramesStart() { testRecursiveFrames(false); }
-
- void testLambdas() {
- []() { check(NoReturnDtor()); } != nullptr || check(Dtor());
- }
-
- void testGnuExpressionStatements(int v) {
- ({ ++v; v == 10 || check(NoReturnDtor()); v == 42; }) || v == 23;
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-
- ({ ++v; check(NoReturnDtor()); v == 42; }) || v == 23;
- clang_analyzer_warnIfReached(); // no warning, unreachable code
- }
-
- void testGnuExpressionStatementsDestructionPoint(int v) {
- // In normal context, the temporary destructor runs at the end of the full
- // statement, thus the last statement is reached.
- (++v, check(NoReturnDtor()), v == 42),
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-
- // GNU expression statements execute temporary destructors within the
- // blocks, thus the last statement is not reached.
- ({ ++v; check(NoReturnDtor()); v == 42; }),
- clang_analyzer_warnIfReached(); // no warning, unreachable code
- }
-
- void testMultipleTemporaries(bool value) {
- if (value) {
- // FIXME: Find a way to verify construction order.
- // ~Dtor should run before ~NoReturnDtor() because construction order is
- // guaranteed by comma operator.
- if (!value || check((NoReturnDtor(), Dtor())) || value) {
- clang_analyzer_eval(true); // no warning, unreachable code
- }
- }
- }
-
- void testBinaryOperatorShortcut(bool value) {
- if (value) {
- if (false && false && check(NoReturnDtor()) && true) {
- clang_analyzer_eval(true);
- }
- }
- }
-
- void testIfAtEndOfLoop() {
- int y = 0;
- while (true) {
- if (y > 0) {
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
- ++y;
- // Test that the CFG gets hooked up correctly when temporary destructors
- // are handled after a statically known branch condition.
- if (true) (void)0; else (void)check(NoReturnDtor());
- }
- }
-
- void testTernaryAtEndOfLoop() {
- int y = 0;
- while (true) {
- if (y > 0) {
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
- ++y;
- // Test that the CFG gets hooked up correctly when temporary destructors
- // are handled after a statically known branch condition.
- true ? (void)0 : (void)check(NoReturnDtor());
- }
- }
-
- void testNoReturnInComplexCondition() {
- check(Dtor()) &&
- (check(NoReturnDtor()) || check(NoReturnDtor())) && check(Dtor());
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
-
- void testSequencingOfConditionalTempDtors(bool b) {
- b || (check(Dtor()), check(NoReturnDtor()));
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
-
- void testSequencingOfConditionalTempDtors2(bool b) {
- (b || check(Dtor())), check(NoReturnDtor());
- clang_analyzer_warnIfReached(); // no warning, unreachable code
- }
-
- void testSequencingOfConditionalTempDtorsWithinBinaryOperators(bool b) {
- b || (check(Dtor()) + check(NoReturnDtor()));
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
-
- void f(Dtor d = Dtor());
- void testDefaultParameters() {
- f();
- }
-
- struct DefaultParam {
- DefaultParam(int, const Dtor& d = Dtor());
- ~DefaultParam();
- };
- void testDefaultParamConstructorsInLoops() {
- while (true) {
- // FIXME: This exact pattern triggers the temporary cleanup logic
- // to fail when adding a 'clean' state.
- DefaultParam(42);
- DefaultParam(42);
- }
- }
- void testDefaultParamConstructorsInTernariesInLoops(bool value) {
- while (true) {
- // FIXME: This exact pattern triggers the temporary cleanup logic
- // to visit the bind-temporary logic with a state that already has that
- // temporary marked as executed.
- value ? DefaultParam(42) : DefaultParam(42);
- }
- }
-#else // !TEMPORARY_DTORS
-
-// Test for fallback logic that conservatively stops exploration after
-// executing a temporary constructor for a class with a no-return destructor
-// when temporary destructors are not enabled in the CFG.
-
- struct CtorWithNoReturnDtor {
- CtorWithNoReturnDtor() = default;
-
- CtorWithNoReturnDtor(int x) {
- clang_analyzer_checkInlined(false); // no-warning
- }
-
- ~CtorWithNoReturnDtor() __attribute__((noreturn));
- };
-
- void testDefaultContructorWithNoReturnDtor() {
- CtorWithNoReturnDtor();
- clang_analyzer_warnIfReached(); // no-warning
- }
-
- void testLifeExtensionWithNoReturnDtor() {
- const CtorWithNoReturnDtor &c = CtorWithNoReturnDtor();
-
- // This represents an (expected) loss of coverage, since the destructor
- // of the lifetime-exended temporary is executed at the end of
- // scope.
- clang_analyzer_warnIfReached(); // no-warning
- }
-
-#if __cplusplus >= 201103L
- struct CtorWithNoReturnDtor2 {
- CtorWithNoReturnDtor2() = default;
-
- CtorWithNoReturnDtor2(int x) {
- clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
- }
-
- ~CtorWithNoReturnDtor2() __attribute__((noreturn));
- };
- CtorWithNoReturnDtor2 returnNoReturnDtor() {
- return {1}; // no-crash
- }
-#endif
-
-#endif // TEMPORARY_DTORS
-}
-
-namespace default_param_elided_destructors {
-struct a {
- ~a();
-};
-struct F {
- a d;
- F(char *, a = a());
-};
-void g() {
- char h[1];
- for (int i = 0;;)
- F j(i ? j : h);
-}
-} // namespace default_param_elided_destructors
-
-void testStaticMaterializeTemporaryExpr() {
- static const Trivial &ref = getTrivial();
- clang_analyzer_eval(ref.value == 42); // expected-warning{{TRUE}}
-
- static const Trivial &directRef = Trivial(42);
- clang_analyzer_eval(directRef.value == 42); // expected-warning{{TRUE}}
-
-#if __has_feature(cxx_thread_local)
- thread_local static const Trivial &threadRef = getTrivial();
- clang_analyzer_eval(threadRef.value == 42); // expected-warning{{TRUE}}
-
- thread_local static const Trivial &threadDirectRef = Trivial(42);
- clang_analyzer_eval(threadDirectRef.value == 42); // expected-warning{{TRUE}}
-#endif
-}
-
-namespace PR16629 {
- struct A {
- explicit A(int* p_) : p(p_) {}
- int* p;
- };
-
- extern void escape(const A*[]);
- extern void check(int);
-
- void callEscape(const A& a) {
- const A* args[] = { &a };
- escape(args);
- }
-
- void testNoWarning() {
- int x;
- callEscape(A(&x));
- check(x); // Analyzer used to give a "x is uninitialized warning" here
- }
-
- void set(const A*a[]) {
- *a[0]->p = 47;
- }
-
- void callSet(const A& a) {
- const A* args[] = { &a };
- set(args);
- }
-
- void testConsistency() {
- int x;
- callSet(A(&x));
- clang_analyzer_eval(x == 47); // expected-warning{{TRUE}}
- }
-}
-
-namespace PR32088 {
- void testReturnFromStmtExprInitializer() {
- // We shouldn't try to destroy the object pointed to by `obj' upon return.
- const NonTrivial &obj = ({
- return; // no-crash
- NonTrivial(42);
- });
- }
-}
-
-namespace CopyToTemporaryCorrectly {
-class Super {
-public:
- void m() {
- mImpl();
- }
- virtual void mImpl() = 0;
-};
-class Sub : public Super {
-public:
- Sub(const int &p) : j(p) {}
- virtual void mImpl() override {
- // Used to be undefined pointer dereference because we didn't copy
- // the subclass data (j) to the temporary object properly.
- (void)(j + 1); // no-warning
- if (j != 22) {
- clang_analyzer_warnIfReached(); // no-warning
- }
- }
- const int &j;
-};
-void run() {
- int i = 22;
- Sub(i).m();
-}
-}
-
-namespace test_return_temporary {
-class C {
- int x, y;
-
-public:
- C(int x, int y) : x(x), y(y) {}
- int getX() const { return x; }
- int getY() const { return y; }
- ~C() {}
-};
-
-class D: public C {
-public:
- D() : C(1, 2) {}
- D(const D &d): C(d.getX(), d.getY()) {}
-};
-
-C returnTemporaryWithVariable() { C c(1, 2); return c; }
-C returnTemporaryWithAnotherFunctionWithVariable() {
- return returnTemporaryWithVariable();
-}
-C returnTemporaryWithCopyConstructionWithVariable() {
- return C(returnTemporaryWithVariable());
-}
-
-C returnTemporaryWithConstruction() { return C(1, 2); }
-C returnTemporaryWithAnotherFunctionWithConstruction() {
- return returnTemporaryWithConstruction();
-}
-C returnTemporaryWithCopyConstructionWithConstruction() {
- return C(returnTemporaryWithConstruction());
-}
-
-D returnTemporaryWithVariableAndNonTrivialCopy() { D d; return d; }
-D returnTemporaryWithAnotherFunctionWithVariableAndNonTrivialCopy() {
- return returnTemporaryWithVariableAndNonTrivialCopy();
-}
-D returnTemporaryWithCopyConstructionWithVariableAndNonTrivialCopy() {
- return D(returnTemporaryWithVariableAndNonTrivialCopy());
-}
-
-#if __cplusplus >= 201103L
-C returnTemporaryWithBraces() { return {1, 2}; }
-C returnTemporaryWithAnotherFunctionWithBraces() {
- return returnTemporaryWithBraces();
-}
-C returnTemporaryWithCopyConstructionWithBraces() {
- return C(returnTemporaryWithBraces());
-}
-#endif // C++11
-
-void test() {
- C c1 = returnTemporaryWithVariable();
- clang_analyzer_eval(c1.getX() == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(c1.getY() == 2); // expected-warning{{TRUE}}
-
- C c2 = returnTemporaryWithAnotherFunctionWithVariable();
- clang_analyzer_eval(c2.getX() == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(c2.getY() == 2); // expected-warning{{TRUE}}
-
- C c3 = returnTemporaryWithCopyConstructionWithVariable();
- clang_analyzer_eval(c3.getX() == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(c3.getY() == 2); // expected-warning{{TRUE}}
-
- C c4 = returnTemporaryWithConstruction();
- clang_analyzer_eval(c4.getX() == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(c4.getY() == 2); // expected-warning{{TRUE}}
-
- C c5 = returnTemporaryWithAnotherFunctionWithConstruction();
- clang_analyzer_eval(c5.getX() == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(c5.getY() == 2); // expected-warning{{TRUE}}
-
- C c6 = returnTemporaryWithCopyConstructionWithConstruction();
- clang_analyzer_eval(c5.getX() == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(c5.getY() == 2); // expected-warning{{TRUE}}
-
-#if __cplusplus >= 201103L
-
- C c7 = returnTemporaryWithBraces();
- clang_analyzer_eval(c7.getX() == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(c7.getY() == 2); // expected-warning{{TRUE}}
-
- C c8 = returnTemporaryWithAnotherFunctionWithBraces();
- clang_analyzer_eval(c8.getX() == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(c8.getY() == 2); // expected-warning{{TRUE}}
-
- C c9 = returnTemporaryWithCopyConstructionWithBraces();
- clang_analyzer_eval(c9.getX() == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(c9.getY() == 2); // expected-warning{{TRUE}}
-
-#endif // C++11
-
- D d1 = returnTemporaryWithVariableAndNonTrivialCopy();
- clang_analyzer_eval(d1.getX() == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(d1.getY() == 2); // expected-warning{{TRUE}}
-
- D d2 = returnTemporaryWithAnotherFunctionWithVariableAndNonTrivialCopy();
- clang_analyzer_eval(d2.getX() == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(d2.getY() == 2); // expected-warning{{TRUE}}
-
- D d3 = returnTemporaryWithCopyConstructionWithVariableAndNonTrivialCopy();
- clang_analyzer_eval(d3.getX() == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(d3.getY() == 2); // expected-warning{{TRUE}}
-}
-} // namespace test_return_temporary
-
-
-namespace test_temporary_object_expr_without_dtor {
-class C {
- int x;
-public:
- C(int x) : x(x) {}
- int getX() const { return x; }
-};
-
-void test() {
- clang_analyzer_eval(C(3).getX() == 3); // expected-warning{{TRUE}}
-};
-}
-
-namespace test_temporary_object_expr_with_dtor {
-class C {
- int x;
-
-public:
- C(int x) : x(x) {}
- ~C() {}
- int getX() const { return x; }
-};
-
-void test(int coin) {
- clang_analyzer_eval(C(3).getX() == 3);
-#ifdef TEMPORARY_DTORS
- // expected-warning@-2{{TRUE}}
-#else
- // expected-warning@-4{{UNKNOWN}}
-#endif
-
- const C &c1 = coin ? C(1) : C(2);
- if (coin) {
- clang_analyzer_eval(c1.getX() == 1);
-#ifdef TEMPORARY_DTORS
- // expected-warning@-2{{TRUE}}
-#else
- // expected-warning@-4{{UNKNOWN}}
-#endif
- } else {
- clang_analyzer_eval(c1.getX() == 2);
-#ifdef TEMPORARY_DTORS
- // expected-warning@-2{{TRUE}}
-#else
- // expected-warning@-4{{UNKNOWN}}
-#endif
- }
-
- C c2 = coin ? C(1) : C(2);
- if (coin) {
- clang_analyzer_eval(c2.getX() == 1); // expected-warning{{TRUE}}
- } else {
- clang_analyzer_eval(c2.getX() == 2); // expected-warning{{TRUE}}
- }
-}
-
-} // namespace test_temporary_object_expr
-
-namespace test_match_constructors_and_destructors {
-class C {
-public:
- int &x, &y;
- C(int &_x, int &_y) : x(_x), y(_y) { ++x; }
- C(const C &c): x(c.x), y(c.y) { ++x; }
- ~C() { ++y; }
-};
-
-void test_simple_temporary() {
- int x = 0, y = 0;
- {
- const C &c = C(x, y);
- }
- // One constructor and one destructor.
- clang_analyzer_eval(x == 1);
- clang_analyzer_eval(y == 1);
-#ifdef TEMPORARY_DTORS
- // expected-warning@-3{{TRUE}}
- // expected-warning@-3{{TRUE}}
-#else
- // expected-warning@-6{{UNKNOWN}}
- // expected-warning@-6{{UNKNOWN}}
-#endif
-}
-
-void test_simple_temporary_with_copy() {
- int x = 0, y = 0;
- {
- C c = C(x, y);
- }
- // Only one constructor directly into the variable, and one destructor.
- clang_analyzer_eval(x == 1); // expected-warning{{TRUE}}
- clang_analyzer_eval(y == 1); // expected-warning{{TRUE}}
-}
-
-void test_ternary_temporary(int coin) {
- int x = 0, y = 0, z = 0, w = 0;
- {
- const C &c = coin ? C(x, y) : C(z, w);
- }
- // Only one constructor on every branch, and one automatic destructor.
- if (coin) {
- clang_analyzer_eval(x == 1);
- clang_analyzer_eval(y == 1);
-#ifdef TEMPORARY_DTORS
- // expected-warning@-3{{TRUE}}
- // expected-warning@-3{{TRUE}}
-#else
- // expected-warning@-6{{UNKNOWN}}
- // expected-warning@-6{{UNKNOWN}}
-#endif
- clang_analyzer_eval(z == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(w == 0); // expected-warning{{TRUE}}
-
- } else {
- clang_analyzer_eval(x == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(y == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(z == 1);
- clang_analyzer_eval(w == 1);
-#ifdef TEMPORARY_DTORS
- // expected-warning@-3{{TRUE}}
- // expected-warning@-3{{TRUE}}
-#else
- // expected-warning@-6{{UNKNOWN}}
- // expected-warning@-6{{UNKNOWN}}
-#endif
- }
-}
-
-void test_ternary_temporary_with_copy(int coin) {
- int x = 0, y = 0, z = 0, w = 0;
- {
- C c = coin ? C(x, y) : C(z, w);
- }
- // On each branch the variable is constructed directly.
- if (coin) {
- clang_analyzer_eval(x == 1); // expected-warning{{TRUE}}
-#if __cplusplus < 201703L
- clang_analyzer_eval(y == 1); // expected-warning{{TRUE}}
-#else
- // FIXME: Destructor called twice in C++17?
- clang_analyzer_eval(y == 2); // expected-warning{{TRUE}}
-#endif
- clang_analyzer_eval(z == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(w == 0); // expected-warning{{TRUE}}
-
- } else {
- clang_analyzer_eval(x == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(y == 0); // expected-warning{{TRUE}}
- clang_analyzer_eval(z == 1); // expected-warning{{TRUE}}
-#if __cplusplus < 201703L
- clang_analyzer_eval(w == 1); // expected-warning{{TRUE}}
-#else
- // FIXME: Destructor called twice in C++17?
- clang_analyzer_eval(w == 2); // expected-warning{{TRUE}}
-#endif
- }
-}
-} // namespace test_match_constructors_and_destructors
-
-namespace destructors_for_return_values {
-
-class C {
-public:
- ~C() {
- 1 / 0; // expected-warning{{Division by zero}}
- }
-};
-
-C make();
-
-void testFloatingCall() {
- make();
- // Should have divided by zero in the destructor.
- clang_analyzer_warnIfReached();
-#ifndef TEMPORARY_DTORS
- // expected-warning@-2{{REACHABLE}}
-#endif
-}
-
-void testLifetimeExtendedCall() {
- {
- const C &c = make();
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
- // Should have divided by zero in the destructor.
- clang_analyzer_warnIfReached(); // no-warning
-}
-
-void testCopiedCall() {
- {
- C c = make();
- // Should have elided the constructor/destructor for the temporary
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
- // Should have divided by zero in the destructor.
- clang_analyzer_warnIfReached(); // no-warning
-}
-} // namespace destructors_for_return_values
-
-namespace dont_forget_destructor_around_logical_op {
-int glob;
-
-class C {
-public:
- ~C() {
- glob = 1;
- // FIXME: Why is destructor not inlined in C++17
- clang_analyzer_checkInlined(true);
-#ifdef TEMPORARY_DTORS
-#if __cplusplus < 201703L
- // expected-warning@-3{{TRUE}}
-#endif
-#endif
- }
-};
-
-C get();
-
-bool is(C);
-
-
-void test(int coin) {
- // Here temporaries are being cleaned up after && is evaluated. There are two
- // temporaries: the return value of get() and the elidable copy constructor
- // of that return value into is(). According to the CFG, we need to cleanup
- // both of them depending on whether the temporary corresponding to the
- // return value of get() was initialized. However, we didn't track
- // temporaries returned from functions, so we took the wrong branch.
- coin && is(get()); // no-crash
- if (coin) {
- // FIXME: Why is destructor not inlined in C++17
- clang_analyzer_eval(glob);
-#ifdef TEMPORARY_DTORS
-#if __cplusplus < 201703L
- // expected-warning@-3{{TRUE}}
-#else
- // expected-warning@-5{{UNKNOWN}}
-#endif
-#else
- // expected-warning@-8{{UNKNOWN}}
-#endif
- } else {
- // The destructor is not called on this branch.
- clang_analyzer_eval(glob); // expected-warning{{UNKNOWN}}
- }
-}
-} // namespace dont_forget_destructor_around_logical_op
-
-#if __cplusplus >= 201103L
-namespace temporary_list_crash {
-class C {
-public:
- C() {}
- ~C() {}
-};
-
-void test() {
- std::initializer_list<C>{C(), C()}; // no-crash
-}
-} // namespace temporary_list_crash
-#endif // C++11
-
-namespace implicit_constructor_conversion {
-struct S {
- int x;
- S(int x) : x(x) {}
- ~S() {}
-};
-
-class C {
- int x;
-
-public:
- C(const S &s) : x(s.x) {}
- ~C() {}
- int getX() const { return x; }
-};
-
-void test() {
- const C &c1 = S(10);
- clang_analyzer_eval(c1.getX() == 10);
-#ifdef TEMPORARY_DTORS
- // expected-warning@-2{{TRUE}}
-#else
- // expected-warning@-4{{UNKNOWN}}
-#endif
-
- S s = 20;
- clang_analyzer_eval(s.x == 20); // expected-warning{{TRUE}}
-
- C c2 = s;
- clang_analyzer_eval(c2.getX() == 20); // expected-warning{{TRUE}}
-}
-} // end namespace implicit_constructor_conversion
-
-namespace pass_references_through {
-class C {
-public:
- ~C() {}
-};
-
-const C &foo1();
-C &&foo2();
-
-// In these examples the foo() expression has record type, not reference type.
-// Don't try to figure out how to perform construction of the record here.
-const C &bar1() { return foo1(); } // no-crash
-C &&bar2() { return foo2(); } // no-crash
-} // end namespace pass_references_through
-
-
-namespace arguments {
-int glob;
-
-struct S {
- int x;
- S(int x): x(x) {}
- S(const S &s) : x(s.x) {}
- ~S() {}
-
- S &operator+(S s) {
- glob = s.x;
- x += s.x;
- return *this;
- }
-};
-
-class C {
-public:
- virtual void bar3(S s) {}
-};
-
-class D: public C {
-public:
- D() {}
- virtual void bar3(S s) override { glob = s.x; }
-};
-
-void bar1(S s) {
- glob = s.x;
-}
-
-// Record-typed calls are a different CFGStmt, let's see if we handle that
-// as well.
-S bar2(S s) {
- glob = s.x;
- return S(3);
-}
-
-void bar5(int, ...);
-
-void foo(void (*bar4)(S)) {
- bar1(S(1));
- clang_analyzer_eval(glob == 1);
-#ifdef TEMPORARY_DTORS
- // expected-warning@-2{{TRUE}}
-#else
- // expected-warning@-4{{UNKNOWN}}
-#endif
-
- bar2(S(2));
- // FIXME: Why are we losing information in C++17?
- clang_analyzer_eval(glob == 2);
-#ifdef TEMPORARY_DTORS
-#if __cplusplus < 201703L
- // expected-warning@-3{{TRUE}}
-#else
- // expected-warning@-5{{UNKNOWN}}
-#endif
-#else
- // expected-warning@-8{{UNKNOWN}}
-#endif
-
- C *c = new D();
- c->bar3(S(3));
- // FIXME: Should be TRUE.
- clang_analyzer_eval(glob == 3); // expected-warning{{UNKNOWN}}
- delete c;
-
- // What if we've no idea what we're calling?
- bar4(S(4)); // no-crash
-
- S(5) + S(6);
- clang_analyzer_eval(glob == 6);
-#ifdef TEMPORARY_DTORS
- // expected-warning@-2{{TRUE}}
-#else
- // expected-warning@-4{{UNKNOWN}}
-#endif
-
- // Variadic functions. This will __builtin_trap() because you cannot pass
- // an object as a variadic argument.
- bar5(7, S(7)); // no-crash
- clang_analyzer_warnIfReached(); // no-warning
-}
-} // namespace arguments
-
-namespace ctor_argument {
-// Stripped down unique_ptr<int>
-struct IntPtr {
- IntPtr(): i(new int) {}
- IntPtr(IntPtr &&o): i(o.i) { o.i = 0; }
- ~IntPtr() { delete i; }
-
- int *i;
-};
-
-struct Foo {
- Foo(IntPtr);
- void bar();
-
- IntPtr i;
-};
-
-void bar() {
- IntPtr ptr;
- int *i = ptr.i;
- Foo f(static_cast<IntPtr &&>(ptr));
- *i = 99; // no-warning
-}
-} // namespace ctor_argument
-
-namespace operator_implicit_argument {
-struct S {
- bool x;
- S(bool x): x(x) {}
- operator bool() const { return x; }
-};
-
-void foo() {
- if (S(false)) {
- clang_analyzer_warnIfReached(); // no-warning
- }
- if (S(true)) {
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
-}
-} // namespace operator_implicit_argument
-
-
-#if __cplusplus >= 201103L
-namespace argument_lazy_bindings {
-int glob;
-
-struct S {
- int x, y, z;
-};
-
-struct T {
- S s;
- int w;
- T(int w): s{5, 6, 7}, w(w) {}
-};
-
-void foo(T t) {
- t.s = {1, 2, 3};
- glob = t.w;
-}
-
-void bar() {
- foo(T(4));
- clang_analyzer_eval(glob == 4); // expected-warning{{TRUE}}
-}
-} // namespace argument_lazy_bindings
-#endif
-
-namespace operator_argument_cleanup {
-struct S {
- S();
-};
-
-class C {
-public:
- void operator=(S);
-};
-
-void foo() {
- C c;
- c = S(); // no-crash
-}
-} // namespace operator_argument_cleanup
-
-namespace argument_decl_lookup {
-class C {};
-int foo(C);
-int bar(C c) { foo(c); }
-int foo(C c) {}
-} // namespace argument_decl_lookup
-
-namespace argument_virtual_decl_lookup {
-class C {};
-
-struct T {
- virtual void foo(C);
-};
-
-void run() {
- T *t;
- t->foo(C()); // no-crash // expected-warning{{Called C++ object pointer is uninitialized}}
-}
-
-// This is after run() because the test is about picking the correct decl
-// for the parameter region, which should belong to the correct function decl,
-// and the non-definition decl should be found by direct lookup.
-void T::foo(C) {}
-} // namespace argument_virtual_decl_lookup
-
-namespace union_indirect_field_crash {
-union U {
- struct {
- int x;
- };
-};
-
-template <typename T> class C {
-public:
- void foo() const {
- (void)(true ? U().x : 0);
- }
-};
-
-void test() {
- C<int> c;
- c.foo();
-}
-} // namespace union_indirect_field_crash
-
-namespace return_from_top_frame {
-struct S {
- int *p;
- S() { p = new int; }
- S(S &&s) : p(s.p) { s.p = 0; }
- ~S(); // Presumably releases 'p'.
-};
-
-S foo() {
- S s;
- return s;
-}
-
-S bar1() {
- return foo(); // no-warning
-}
-
-S bar2() {
- return S();
-}
-
-S bar3(int coin) {
- return coin ? S() : foo(); // no-warning
-}
-} // namespace return_from_top_frame
diff --git a/test/Analysis/temporaries.mm b/test/Analysis/temporaries.mm
deleted file mode 100644
index 43546ae3441d..000000000000
--- a/test/Analysis/temporaries.mm
+++ /dev/null
@@ -1,29 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker core,cplusplus -verify %s
-
-// expected-no-diagnostics
-
-#define nil ((id)0)
-
-// Stripped down unique_ptr<int>
-struct IntPtr {
- IntPtr(): i(new int) {}
- IntPtr(IntPtr &&o): i(o.i) { o.i = nullptr; }
- ~IntPtr() { delete i; }
-
- int *i;
-};
-
-@interface Foo {}
- -(void) foo: (IntPtr)arg;
-@end
-
-void testArgumentRegionInvalidation(Foo *f) {
- IntPtr ptr;
- int *i = ptr.i;
- [f foo: static_cast<IntPtr &&>(ptr)];
- *i = 99; // no-warning
-}
-
-void testNilReceiverCleanup() {
- [nil foo: IntPtr()];
-}
diff --git a/test/Analysis/test-after-div-zero.c b/test/Analysis/test-after-div-zero.c
deleted file mode 100644
index 451c9adfee23..000000000000
--- a/test/Analysis/test-after-div-zero.c
+++ /dev/null
@@ -1,204 +0,0 @@
-// RUN: %clang_analyze_cc1 -std=c99 -Dbool=_Bool -analyzer-checker=core,alpha.core.TestAfterDivZero -analyzer-output=text -verify -analyzer-config eagerly-assume=false %s
-// RUN: %clang_analyze_cc1 -x c++ -analyzer-checker=core,alpha.core.TestAfterDivZero -analyzer-output=text -verify -analyzer-config eagerly-assume=false %s
-
-int var;
-
-void err_eq(int x) {
- var = 77 / x; // expected-note {{Division with compared value made here}}
- if (x == 0) { } // expected-warning {{Value being compared against zero has already been used for division}}
-} // expected-note@-1 {{Value being compared against zero has already been used for division}}
-
-void err_eq2(int x) {
- var = 77 / x; // expected-note {{Division with compared value made here}}
- if (0 == x) { } // expected-warning {{Value being compared against zero has already been used for division}}
-} // expected-note@-1 {{Value being compared against zero has already been used for division}}
-
-void err_ne(int x) {
- var = 77 / x; // expected-note {{Division with compared value made here}}
- if (x != 0) { } // expected-warning {{Value being compared against zero has already been used for division}}
-} // expected-note@-1 {{Value being compared against zero has already been used for division}}
-
-void err_ge(int x) {
- var = 77 / x; // expected-note {{Division with compared value made here}}
- if (x >= 0) { } // expected-warning {{Value being compared against zero has already been used for division}}
-} // expected-note@-1 {{Value being compared against zero has already been used for division}}
-
-void err_le(int x) {
- var = 77 / x; // expected-note {{Division with compared value made here}}
- if (x <= 0) {} // expected-warning {{Value being compared against zero has already been used for division}}
-} // expected-note@-1 {{Value being compared against zero has already been used for division}}
-
-void err_yes(int x) {
- var = 77 / x; // expected-note {{Division with compared value made here}}
- if (x) {} // expected-warning {{Value being compared against zero has already been used for division}}
-} // expected-note@-1 {{Value being compared against zero has already been used for division}}
-void err_not(int x) {
- var = 77 / x; // expected-note {{Division with compared value made here}}
- if (!x) {} // expected-warning {{Value being compared against zero has already been used for division}}
-} // expected-note@-1 {{Value being compared against zero has already been used for division}}
-
-void err_pnot(int x) {
- int *y = &x;
- var = 77 / *y; // expected-note {{Division with compared value made here}}
- if (!x) {} // expected-warning {{Value being compared against zero has already been used for division}}
-} // expected-note@-1 {{Value being compared against zero has already been used for division}}
-
-void err_pnot2(int x) {
- int *y = &x;
- var = 77 / x; // expected-note {{Division with compared value made here}}
- if (!*y) {} // expected-warning {{Value being compared against zero has already been used for division}}
-} // expected-note@-1 {{Value being compared against zero has already been used for division}}
-
-void err_ppnot(int x) {
- int *y = &x;
- int **z = &y;
- var = 77 / **z; // expected-note {{Division with compared value made here}}
- if (!x) {} // expected-warning {{Value being compared against zero has already been used for division}}
-} // expected-note@-1 {{Value being compared against zero has already been used for division}}
-
-void err_orig_checker(int x) {
- if (x != 0) // expected-note {{Assuming 'x' is equal to 0}} expected-note {{Taking false branch}}
- return;
- var = 77 / x; // expected-warning {{Division by zero}} expected-note {{Division by zero}}
- if (!x) {} // no-warning
-}
-
-void ok_other(int x, int y) {
- var = 77 / y;
- if (x == 0) {
- }
-}
-
-void ok_assign(int x) {
- var = 77 / x;
- x = var / 77; // <- assignment => don't warn
- if (x == 0) {
- }
-}
-
-void ok_assign2(int x) {
- var = 77 / x;
- x = var / 77; // <- assignment => don't warn
- if (0 == x) {
- }
-}
-
-void ok_dec(int x) {
- var = 77 / x;
- x--; // <- assignment => don't warn
- if (x == 0) {
- }
-}
-
-void ok_inc(int x) {
- var = 77 / x;
- x++; // <- assignment => don't warn
- if (x == 0) {
- }
-}
-
-void do_something_ptr(int *x);
-void ok_callfunc_ptr(int x) {
- var = 77 / x;
- do_something_ptr(&x); // <- pass address of x to function => don't warn
- if (x == 0) {
- }
-}
-
-void do_something(int x);
-void nok_callfunc(int x) {
- var = 77 / x; // expected-note {{Division with compared value made here}}
- do_something(x);
- if (x == 0) {} // expected-warning {{Value being compared against zero has already been used for division}}
-} // expected-note@-1 {{Value being compared against zero has already been used for division}}
-
-void ok_if(int x) {
- if (x > 3)
- var = 77 / x;
- if (x == 0) {
- }
-}
-
-void ok_if2(int x) {
- if (x < 3)
- var = 77 / x;
- if (x == 0) {
- } // TODO warn here
-}
-
-void ok_pif(int x) {
- int *y = &x;
- if (x < 3)
- var = 77 / *y;
- if (x == 0) {
- } // TODO warn here
-}
-
-int getValue(bool *isPositive);
-void use(int a);
-void foo() {
- bool isPositive;
- int x = getValue(&isPositive);
- if (isPositive) {
- use(5 / x);
- }
-
- if (x == 0) {
- }
-}
-
-int getValue2();
-void foo2() {
- int x = getValue2();
- int y = x;
-
- use(5 / x); // expected-note {{Division with compared value made here}}
- if (y == 0) {} // expected-warning {{Value being compared against zero has already been used for division}}
-} // expected-note@-1 {{Value being compared against zero has already been used for division}}
-
-void ok_while(int x) {
- int n = 100 / x;
- while (x != 0) { // <- do not warn
- x--;
- }
-}
-
-void err_not2(int x, int y) {
- int v;
- var = 77 / x;
-
- if (y)
- v = 0;
-
- if (!x) {
- } // TODO warn here
-}
-
-inline void inline_func(int x) {
- var = 77 / x; // expected-note {{Division with compared value made here}}
- if (x == 0) {} // expected-warning {{Value being compared against zero has already been used for division}}
-} // expected-note@-1 {{Value being compared against zero has already been used for division}}
-
-void err_inline(int x) {
- var = 77 / x;
- inline_func(x); // expected-note {{Calling 'inline_func'}}
- if (x == 0) {
- }
-}
-
-inline void inline_func2(int x) {}
-
-void err_inline2(int x) {
- var = 77 / x; // expected-note {{Division with compared value made here}}
- inline_func2(x);
- if (x == 0) {} // expected-warning {{Value being compared against zero has already been used for division}}
-} // expected-note@-1 {{Value being compared against zero has already been used for division}}
-
-inline void inline_func3(int x) {
- var = 77 / x;
-}
-void ok_inline(int x) {
- var = 77 / x; // expected-note {{Division with compared value made here}}
- inline_func3(x);
- if (x == 0) {} // expected-warning {{Value being compared against zero has already been used for division}}
-} // expected-note@-1 {{Value being compared against zero has already been used for division}}
diff --git a/test/Analysis/test-include-cpp.cpp b/test/Analysis/test-include-cpp.cpp
deleted file mode 100644
index 6998e3ccd669..000000000000
--- a/test/Analysis/test-include-cpp.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-
-#include "test-include-cpp.h"
-
-int TestIncludeClass::test1(int *p) {
- p = 0;
- return *p; // expected-warning{{Dereference of null pointer}}
-}
-
-int TestIncludeClass::test2(int *p) {
- p = 0;
- return *p; // expected-warning{{Dereference of null pointer}}
-}
diff --git a/test/Analysis/test-include-cpp.h b/test/Analysis/test-include-cpp.h
deleted file mode 100644
index 90ec27acd5d3..000000000000
--- a/test/Analysis/test-include-cpp.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef TEST_INCLUDE_CPP_H
-#define TEST_INCLUDE_CPP_H
-
-class TestIncludeClass {
- int test1(int *);
- static int test2(int *);
-};
-
-#endif
diff --git a/test/Analysis/test-include.c b/test/Analysis/test-include.c
deleted file mode 100644
index 20aa2447850b..000000000000
--- a/test/Analysis/test-include.c
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-
-#include "test-include.h"
-#define DIVYX(X,Y) Y/X
-
-void test_01(int *data) {
- data = 0;
- *data = 1; // expected-warning{{Dereference of null pointer}}
-}
-
-int test_02() {
- int res = DIVXY(1,0); // expected-warning{{Division by zero}}
- // expected-warning@-1{{division by zero is undefined}}
- return res;
-}
-
-int test_03() {
- int res = DIVYX(0,1); // expected-warning{{Division by zero}}
- // expected-warning@-1{{division by zero is undefined}}
- return res;
-} \ No newline at end of file
diff --git a/test/Analysis/test-include.h b/test/Analysis/test-include.h
deleted file mode 100644
index 07cd1c9dca1b..000000000000
--- a/test/Analysis/test-include.h
+++ /dev/null
@@ -1,2 +0,0 @@
-void test_01(int * data);
-#define DIVXY(X,Y) X/Y
diff --git a/test/Analysis/test-objc-non-nil-return-value-checker.m b/test/Analysis/test-objc-non-nil-return-value-checker.m
deleted file mode 100644
index 2a9063624639..000000000000
--- a/test/Analysis/test-objc-non-nil-return-value-checker.m
+++ /dev/null
@@ -1,50 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=osx.cocoa.NonNilReturnValue,debug.ExprInspection -verify %s
-
-typedef unsigned int NSUInteger;
-typedef signed char BOOL;
-
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-
-@interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
-@end
-
-@interface NSArray : NSObject
-- (id)objectAtIndex:(unsigned long)index;
-@end
-
-@interface NSArray (NSExtendedArray)
-- (id)objectAtIndexedSubscript:(NSUInteger)idx;
-@end
-
-@interface NSMutableArray : NSArray
-- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
-@end
-
-@interface NSOrderedSet : NSObject
-@end
-@interface NSOrderedSet (NSOrderedSetCreation)
-- (id)objectAtIndexedSubscript:(NSUInteger)idx;
-@end
-
-void clang_analyzer_eval(id);
-
-void assumeThatNSArrayObjectAtIndexIsNeverNull(NSArray *A, NSUInteger i) {
- clang_analyzer_eval([A objectAtIndex: i]); // expected-warning {{TRUE}}
- id subscriptObj = A[1];
- clang_analyzer_eval(subscriptObj); // expected-warning {{TRUE}}
-}
-
-void assumeThatNSMutableArrayObjectAtIndexIsNeverNull(NSMutableArray *A, NSUInteger i) {
- clang_analyzer_eval([A objectAtIndex: i]); // expected-warning {{TRUE}}
-}
-
-void assumeThatNSArrayObjectAtIndexedSubscriptIsNeverNull(NSOrderedSet *A, NSUInteger i) {
- clang_analyzer_eval(A[i]); // expected-warning {{TRUE}}
-} \ No newline at end of file
diff --git a/test/Analysis/test-separate-retaincount.cpp b/test/Analysis/test-separate-retaincount.cpp
deleted file mode 100644
index be6534f544bd..000000000000
--- a/test/Analysis/test-separate-retaincount.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx -analyzer-disable-checker osx.cocoa.RetainCount -DNO_CF_OBJECT -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx -analyzer-disable-checker osx.OSObjectRetainCount -DNO_OS_OBJECT -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx -analyzer-config "osx.cocoa.RetainCount:CheckOSObject=false" -DNO_OS_OBJECT -verify %s
-
-typedef const void * CFTypeRef;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-extern void CFRelease(CFTypeRef cf);
-
-#define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))
-extern CFTypeRef CFCreate() CF_RETURNS_RETAINED;
-
-using size_t = decltype(sizeof(int));
-
-struct OSObject {
- virtual void retain();
- virtual void release();
-
- static void * operator new(size_t size);
- virtual ~OSObject(){}
-};
-
-void cf_overrelease() {
- CFTypeRef cf = CFCreate();
- CFRelease(cf);
- CFRelease(cf);
-#ifndef NO_CF_OBJECT
- // expected-warning@-2{{Reference-counted object is used after it is released}}
-#endif
-}
-
-void osobject_overrelease() {
- OSObject *o = new OSObject;
- o->release();
- o->release();
-#ifndef NO_OS_OBJECT
- // expected-warning@-2{{Reference-counted object is used after it is released}}
-#endif
-}
diff --git a/test/Analysis/test-variably-modified-types.c b/test/Analysis/test-variably-modified-types.c
deleted file mode 100644
index 1df57affad41..000000000000
--- a/test/Analysis/test-variably-modified-types.c
+++ /dev/null
@@ -1,13 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyze-function=testVariablyModifiedTypes -verify %s
-
-// Test that we process variably modified type correctly - the call graph construction should pick up function_with_bug while recursively visiting test_variably_modifiable_types.
-unsigned getArraySize(int *x) {
- if (!x)
- return *x; // expected-warning {{Dereference of null pointer}}
- return 1;
-}
-
-int testVariablyModifiedTypes(int *x) {
- int mytype[getArraySize(x)];
- return 0;
-}
diff --git a/test/Analysis/this-pointer.cpp b/test/Analysis/this-pointer.cpp
deleted file mode 100644
index d160a942ef28..000000000000
--- a/test/Analysis/this-pointer.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config widen-loops=true -analyzer-disable-retry-exhausted -verify %s
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_dump(int);
-
-// 'this' pointer is not an lvalue, we should not invalidate it.
-namespace this_pointer_after_loop_widen {
-class A {
-public:
- A() {
- int count = 10;
- do {
- } while (count--);
- }
-};
-
-void goo(A a);
-void test_temporary_object() {
- goo(A()); // no-crash
-}
-
-struct B {
- int mem;
- B() : mem(0) {
- for (int i = 0; i < 10; ++i) {
- }
- mem = 0;
- }
-};
-
-void test_ctor() {
- B b;
- clang_analyzer_eval(b.mem == 0); // expected-warning{{TRUE}}
-}
-
-struct C {
- int mem;
- C() : mem(0) {}
- void set() {
- for (int i = 0; i < 10; ++i) {
- }
- mem = 10;
- }
-};
-
-void test_method() {
- C c;
- clang_analyzer_eval(c.mem == 0); // expected-warning{{TRUE}}
- c.set();
- clang_analyzer_eval(c.mem == 10); // expected-warning{{TRUE}}
-}
-
-struct D {
- int mem;
- D() : mem(0) {}
- void set() {
- for (int i = 0; i < 10; ++i) {
- }
- mem = 10;
- }
-};
-
-void test_new() {
- D *d = new D;
- clang_analyzer_eval(d->mem == 0); // expected-warning{{TRUE}}
- d->set();
- clang_analyzer_eval(d->mem == 10); // expected-warning{{TRUE}}
-}
-
-struct E {
- int mem;
- E() : mem(0) {}
- void set() {
- for (int i = 0; i < 10; ++i) {
- }
- setAux();
- }
- void setAux() {
- this->mem = 10;
- }
-};
-
-void test_chained_method_call() {
- E e;
- e.set();
- clang_analyzer_eval(e.mem == 10); // expected-warning{{TRUE}}
-}
-} // namespace this_pointer_after_loop_widen
diff --git a/test/Analysis/traversal-algorithm.mm b/test/Analysis/traversal-algorithm.mm
deleted file mode 100644
index bdf576063d65..000000000000
--- a/test/Analysis/traversal-algorithm.mm
+++ /dev/null
@@ -1,213 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpTraversal -analyzer-max-loop 4 -std=c++11 %s | FileCheck -check-prefix=DFS %s
-
-int a();
-int b();
-int c();
-
-int work();
-
-void test(id input) {
- if (a()) {
- if (a())
- b();
- else
- c();
- } else {
- if (b())
- a();
- else
- c();
- }
-
- if (a())
- work();
-}
-
-void testLoops(id input) {
- while (a()) {
- work();
- work();
- work();
- }
-
- for (int i = 0; i != b(); ++i) {
- work();
- }
-
- for (id x in input) {
- work();
- work();
- work();
- }
-
- int z[] = {1,2,3};
- for (int y : z) {
- work();
- work();
- work();
- }
-}
-
-// This ordering assumes that false cases happen before the true cases.
-
-// DFS:27 WhileStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:27 WhileStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:27 WhileStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:27 WhileStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:10 IfStmt
-// DFS-next:16 IfStmt
-// DFS-next:22 IfStmt
-// DFS-next:--END PATH--
-// DFS-next:--END PATH--
-// DFS-next:22 IfStmt
-// DFS-next:--END PATH--
-// DFS-next:--END PATH--
-// DFS-next:11 IfStmt
-// DFS-next:22 IfStmt
-// DFS-next:--END PATH--
-// DFS-next:--END PATH--
-// DFS-next:22 IfStmt
-// DFS-next:--END PATH--
-// DFS-next:--END PATH--
-
diff --git a/test/Analysis/traversal-begin-end-function.c b/test/Analysis/traversal-begin-end-function.c
deleted file mode 100644
index 9d46f26ce8f9..000000000000
--- a/test/Analysis/traversal-begin-end-function.c
+++ /dev/null
@@ -1,22 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.DumpTraversal %s | FileCheck %s
-
-void inline_callee(int i);
-
-// CHECK: --BEGIN FUNCTION--
-void inline_caller() {
- // CHECK: --BEGIN FUNCTION--
- // CHECK: --BEGIN FUNCTION--
- // CHECK: --BEGIN FUNCTION--
- inline_callee(3);
- // CHECK: --END FUNCTION--
- // CHECK: --END FUNCTION--
- // CHECK: --END FUNCTION--
-}
-// CHECK: --END FUNCTION--
-
-void inline_callee(int i) {
- if (i <= 1)
- return;
-
- inline_callee(i - 1);
-}
diff --git a/test/Analysis/traversal-path-unification.c b/test/Analysis/traversal-path-unification.c
deleted file mode 100644
index 28a15110f903..000000000000
--- a/test/Analysis/traversal-path-unification.c
+++ /dev/null
@@ -1,29 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.DumpTraversal %s | FileCheck %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.DumpTraversal -DUSE_EXPR %s | FileCheck %s
-
-int a();
-int b();
-int c();
-
-#ifdef USE_EXPR
-#define CHECK(x) ((x) & 1)
-#else
-#define CHECK(x) (x)
-#endif
-
-// CHECK: --BEGIN FUNCTION--
-void testRemoveDeadBindings() {
- int i = a();
- if (CHECK(i))
- a();
- else
- b();
-
- // At this point the symbol bound to 'i' is dead.
- // The effects of a() and b() are identical (they both invalidate globals).
- // We should unify the two paths here and only get one end-of-path node.
- c();
-}
-
-// CHECK: --END FUNCTION--
-// CHECK-NOT: --END FUNCTION--
diff --git a/test/Analysis/trustnonnullchecker_test.m b/test/Analysis/trustnonnullchecker_test.m
deleted file mode 100644
index 81eac863d5eb..000000000000
--- a/test/Analysis/trustnonnullchecker_test.m
+++ /dev/null
@@ -1,197 +0,0 @@
-// Temporarily disabling the test, it failes the "system is over-constrained"
-// assertion in *non* optimized builds.
-// REQUIRES: rdar44992170
-// RUN: %clang_analyze_cc1 -fblocks -analyze -analyzer-checker=core,nullability,apiModeling,debug.ExprInspection -verify %s
-
-#include "Inputs/system-header-simulator-for-nullability.h"
-
-void clang_analyzer_warnIfReached();
-
-NSString* _Nonnull trust_nonnull_framework_annotation() {
- NSString* out = [NSString generateString];
- if (out) {}
- return out; // no-warning
-}
-
-NSString* _Nonnull trust_instancemsg_annotation(NSString* _Nonnull param) {
- NSString* out = [param stringByAppendingString:@"string"];
- if (out) {}
- return out; // no-warning
-}
-
-NSString* _Nonnull distrust_instancemsg_noannotation(NSString* param) {
- if (param) {}
- NSString* out = [param stringByAppendingString:@"string"];
- if (out) {}
- return out; // expected-warning{{}}
-}
-
-NSString* _Nonnull trust_analyzer_knowledge(NSString* param) {
- if (!param)
- return @"";
- NSString* out = [param stringByAppendingString:@"string"];
- if (out) {}
- return out; // no-warning
-}
-
-NSString* _Nonnull trust_assume_nonnull_macro() {
- NSString* out = [NSString generateImplicitlyNonnullString];
- if (out) {}
- return out; // no-warning
-}
-
-NSString* _Nonnull distrust_without_annotation() {
- NSString* out = [NSString generatePossiblyNullString];
- if (out) {}
- return out; // expected-warning{{}}
-}
-
-NSString* _Nonnull nonnull_please_trust_me();
-
-NSString* _Nonnull distrust_local_nonnull_annotation() {
- NSString* out = nonnull_please_trust_me();
- if (out) {}
- return out; // expected-warning{{}}
-}
-
-NSString* _Nonnull trust_c_function() {
- NSString* out = getString();
- if (out) {};
- return out; // no-warning
-}
-
-NSString* _Nonnull distrust_unannoted_function() {
- NSString* out = getPossiblyNullString();
- if (out) {};
- return out; // expected-warning{{}}
-}
-
-NSString * _Nonnull distrustProtocol(id<MyProtocol> o) {
- NSString* out = [o getString];
- if (out) {};
- return out; // expected-warning{{}}
-}
-
-// If the return value is non-nil, the index is non-nil.
-NSString *_Nonnull retImpliesIndex(NSString *s,
- NSDictionary *dic) {
- id obj = dic[s];
- if (s) {}
- if (obj)
- return s; // no-warning
- return @"foo";
-}
-
-NSString *_Nonnull retImpliesIndexOtherMethod(NSString *s,
- NSDictionary *dic) {
- id obj = [dic objectForKey:s];
- if (s) {}
- if (obj)
- return s; // no-warning
- return @"foo";
-}
-
-NSString *_Nonnull retImpliesIndexOnRHS(NSString *s,
- NSDictionary *dic) {
- id obj = dic[s];
- if (s) {}
- if (nil != obj)
- return s; // no-warning
- return @"foo";
-}
-
-NSString *_Nonnull retImpliesIndexReverseCheck(NSString *s,
- NSDictionary *dic) {
- id obj = dic[s];
- if (s) {}
- if (!obj)
- return @"foo";
- return s; // no-warning
-}
-
-NSString *_Nonnull retImpliesIndexReverseCheckOnRHS(NSString *s,
- NSDictionary *dic) {
- id obj = dic[s];
- if (s) {}
- if (nil == obj)
- return @"foo";
- return s; // no-warning
-}
-
-NSString *_Nonnull retImpliesIndexWrongBranch(NSString *s,
- NSDictionary *dic) {
- id obj = dic[s];
- if (s) {}
- if (!obj)
- return s; // expected-warning{{}}
- return @"foo";
-}
-
-NSString *_Nonnull retImpliesIndexWrongBranchOnRHS(NSString *s,
- NSDictionary *dic) {
- id obj = dic[s];
- if (s) {}
- if (nil == obj)
- return s; // expected-warning{{}}
- return @"foo";
-}
-
-// The return value could still be nil for a non-nil index.
-NSDictionary *_Nonnull indexDoesNotImplyRet(NSString *s,
- NSDictionary *dic) {
- id obj = dic[s];
- if (obj) {}
- if (s)
- return obj; // expected-warning{{}}
- return [[NSDictionary alloc] init];
-}
-
-// The return value could still be nil for a non-nil index.
-NSDictionary *_Nonnull notIndexImpliesNotRet(NSString *s,
- NSDictionary *dic) {
- id obj = dic[s];
- if (!s) {
- if (obj != nil) {
- clang_analyzer_warnIfReached(); // no-warning
- }
- }
- return [[NSDictionary alloc] init];
-}
-
-NSString *_Nonnull checkAssumeOnMutableDictionary(NSMutableDictionary *d,
- NSString *k,
- NSString *val) {
- d[k] = val;
- if (k) {}
- return k; // no-warning
-}
-
-NSString *_Nonnull checkAssumeOnMutableDictionaryOtherMethod(NSMutableDictionary *d,
- NSString *k,
- NSString *val) {
- [d setObject:val forKey:k];
- if (k) {}
- return k; // no-warning
-}
-
-// Check that we don't crash when the added assumption is enough
-// to make the state unfeasible.
-@class DummyClass;
-@interface DictionarySubclass : NSDictionary {
- DummyClass *g;
- DictionarySubclass *d;
-}
-@end
-@implementation DictionarySubclass
-- (id) objectForKey:(id)e {
- if (e) {}
- return d;
-}
-- (void) coder {
- for (id e in g) {
- id f = [self objectForKey:e];
- if (f)
- (void)e;
- }
-}
-@end
diff --git a/test/Analysis/trustnonnullchecker_test.mm b/test/Analysis/trustnonnullchecker_test.mm
deleted file mode 100644
index fa84673492be..000000000000
--- a/test/Analysis/trustnonnullchecker_test.mm
+++ /dev/null
@@ -1,9 +0,0 @@
-// RUN: %clang_analyze_cc1 -fblocks -analyze -analyzer-checker=core,nullability,apiModeling -verify %s
-
-#include "Inputs/system-header-simulator-for-nullability-cxx.h"
-
-// expected-no-diagnostics
-
-void blah() {
- foo(); // no-crash
-}
diff --git a/test/Analysis/undef-buffers.c b/test/Analysis/undef-buffers.c
deleted file mode 100644
index d5802fb8c640..000000000000
--- a/test/Analysis/undef-buffers.c
+++ /dev/null
@@ -1,43 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix,core.uninitialized -analyzer-store=region -verify -analyzer-config unix:Optimistic=true %s
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-char stackBased1 () {
- char buf[2];
- buf[0] = 'a';
- return buf[1]; // expected-warning{{Undefined}}
-}
-
-char stackBased2 () {
- char buf[2];
- buf[1] = 'a';
- return buf[0]; // expected-warning{{Undefined}}
-}
-
-// Exercise the conditional visitor. Radar://10105448
-char stackBased3 (int *x) {
- char buf[2];
- int *y;
- buf[0] = 'a';
- if (!(y = x)) {
- return buf[1]; // expected-warning{{Undefined}}
- }
- return buf[0];
-}
-
-char heapBased1 () {
- char *buf = malloc(2);
- buf[0] = 'a';
- char result = buf[1]; // expected-warning{{undefined}}
- free(buf);
- return result;
-}
-
-char heapBased2 () {
- char *buf = malloc(2);
- buf[1] = 'a';
- char result = buf[0]; // expected-warning{{undefined}}
- free(buf);
- return result;
-}
diff --git a/test/Analysis/undef-call.c b/test/Analysis/undef-call.c
deleted file mode 100644
index c7aa844d7982..000000000000
--- a/test/Analysis/undef-call.c
+++ /dev/null
@@ -1,16 +0,0 @@
-// RUN: rm -rf %T/ctudir
-// RUN: mkdir %T/ctudir
-// RUN: %clang_cc1 -fsyntax-only -analyze -analyzer-checker=debug.ExprInspection -analyzer-config experimental-enable-naive-ctu-analysis=true -analyzer-config ctu-dir=%T/ctudir -verify %s
-// expected-no-diagnostics
-
-struct S {
- void (*fp)();
-};
-
-int main() {
- struct S s;
- // This will cause the analyzer to look for a function definition that has
- // no FunctionDecl. It used to cause a crash in AnyFunctionCall::getRuntimeDefinition.
- // It would only occur when CTU analysis is enabled.
- s.fp();
-}
diff --git a/test/Analysis/unified-sources/UnifiedSource-1.cpp b/test/Analysis/unified-sources/UnifiedSource-1.cpp
deleted file mode 100644
index 02569f247ee0..000000000000
--- a/test/Analysis/unified-sources/UnifiedSource-1.cpp
+++ /dev/null
@@ -1,5 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-
-// There should still be diagnostics within included files.
-#include "source1.cpp"
-#include "source2.cpp"
diff --git a/test/Analysis/unified-sources/container.h b/test/Analysis/unified-sources/container.h
deleted file mode 100644
index d0bcd778899a..000000000000
--- a/test/Analysis/unified-sources/container.h
+++ /dev/null
@@ -1,10 +0,0 @@
-class ContainerInHeaderFile {
- class Iterator {
- };
-
-public:
- Iterator begin() const;
- Iterator end() const;
-
- int method() { return 0; }
-};
diff --git a/test/Analysis/unified-sources/source1.cpp b/test/Analysis/unified-sources/source1.cpp
deleted file mode 100644
index 886afed8d417..000000000000
--- a/test/Analysis/unified-sources/source1.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-
-// This test tests that the warning is here when it is included from
-// the unified sources file. The run-line in this file is there
-// only to suppress LIT warning for the complete lack of run-line.
-int foo(int x) {
- if (x) {}
- return 1 / x; // expected-warning{{}}
-}
-
-// Let's see if the container inlining heuristic still works.
-#include "container.h"
-int testContainerMethodInHeaderFile(ContainerInHeaderFile Cont) {
- return 1 / Cont.method(); // no-warning
-}
diff --git a/test/Analysis/unified-sources/source2.cpp b/test/Analysis/unified-sources/source2.cpp
deleted file mode 100644
index cd85e3522343..000000000000
--- a/test/Analysis/unified-sources/source2.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-
-// This test tests that the warning is here when it is included from
-// the unified sources file. The run-line in this file is there
-// only to suppress LIT warning for the complete lack of run-line.
-int testNullDereference() {
- int *x = 0;
- return *x; // expected-warning{{}}
-}
-
-// Let's see if the container inlining heuristic still works.
-class ContainerInCodeFile {
- class Iterator {
- };
-
-public:
- Iterator begin() const;
- Iterator end() const;
-
- int method() { return 0; }
-};
-
-int testContainerMethodInCodeFile(ContainerInCodeFile Cont) {
- return 1 / Cont.method(); // expected-warning{{}}
-}
diff --git a/test/Analysis/uninit-const.c b/test/Analysis/uninit-const.c
deleted file mode 100644
index 407c28a5e8ba..000000000000
--- a/test/Analysis/uninit-const.c
+++ /dev/null
@@ -1,244 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=unix.Malloc,core,alpha.core.CallAndMessageUnInitRefArg,debug.ExprInspection -analyzer-output=text -verify %s
-
-void clang_analyzer_warnIfReached();
-
-// Passing uninitialized const data to function
-#include "Inputs/system-header-simulator.h"
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void *valloc(size_t);
-void free(void *);
-
-
-void doStuff3(const int y){}
-void doStuff2(int g){}
-void doStuff_pointerToConstInt(const int *u){};
-void doStuff_arrayOfConstInt(const int a[]){};
-
-void doStuff_constPointerToConstInt (int const * const u){};
-void doStuff_constPointerToConstPointerToConstInt(int const * const * const u){};
-void doStuff_pointerToConstPointerToConstInt(int const * const * u){};
-void doStuff_pointerToPointerToConstInt (int const **u){};
-void doStuff_constStaticSizedArray(const int a[static 10]) {}
-void doStuff_variadic(const int *u, ...){};
-
-void f_1(void) {
- int t;
- int* tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_pointerToConstInt(tp); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note@-1 {{1st function call argument is a pointer to uninitialized value}}
-}
-
-void f_1_1(void) {
- int t;
- int* tp1 = &t;
- int* tp2 = tp1; // expected-note {{'tp2' initialized here}}
- doStuff_pointerToConstInt(tp2); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note@-1 {{1st function call argument is a pointer to uninitialized value}}
-}
-
-
-int *f_2_sub(int *p) {
- return p;
-}
-
-void f_2(void) {
- int t;
- int* p = f_2_sub(&t);
- int* tp = p; // expected-note {{'tp' initialized here}}
- doStuff_pointerToConstInt(tp); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note@-1 {{1st function call argument is a pointer to uninitialized value}}
-}
-
-int z;
-void f_3(void) {
- doStuff_pointerToConstInt(&z); // no warning
-}
-
-void f_4(void) {
- int x=5;
- doStuff_pointerToConstInt(&x); // no warning
-}
-
-void f_5(void) {
- int ta[5];
- int* tp = ta; // expected-note {{'tp' initialized here}}
- doStuff_pointerToConstInt(tp); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note@-1 {{1st function call argument is a pointer to uninitialized value}}
-}
-
-void f_5_1(void) {
- int ta[5]; // expected-note {{'ta' initialized here}}
- doStuff_pointerToConstInt(ta); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note@-1 {{1st function call argument is a pointer to uninitialized value}}
-}
-
-void f_6(void) {
- int ta[5] = {1,2,3,4,5};
- int* tp = ta;
- doStuff_pointerToConstInt(tp); // no-warning
-}
-
-void f_6_1(void) {
- int ta[5] = {1,2,3,4,5};
- doStuff_pointerToConstInt(ta); // no-warning
-}
-
-void f_7(void) {
- int z; // expected-note {{'z' declared without an initial value}}
- int y=z; // expected-warning {{Assigned value is garbage or undefined}}
- // expected-note@-1 {{Assigned value is garbage or undefined}}
- doStuff3(y);
-}
-
-void f_8(void) {
- int g; // expected-note {{'g' declared without an initial value}}
- doStuff2(g); // expected-warning {{1st function call argument is an uninitialized value}}
- // expected-note@-1 {{1st function call argument is an uninitialized value}}
-}
-
-void f_9(void) {
- int a[6];
- int const *ptau = a; // expected-note {{'ptau' initialized here}}
- doStuff_arrayOfConstInt(ptau); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note@-1 {{1st function call argument is a pointer to uninitialized value}}
-}
-
-void f_10(void) {
- int a[6]; // expected-note {{'a' initialized here}}
- doStuff_arrayOfConstInt(a); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note@-1 {{1st function call argument is a pointer to uninitialized value}}
-}
-
-void f_11(void) {
- int t[10]; //expected-note {{'t' initialized here}}
- doStuff_constStaticSizedArray(t); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note@-1 {{1st function call argument is a pointer to uninitialized value}}
-}
-
-void f_12(void) {
- int t[10] = {0,1,2,3,4,5,6,7,8,9};
- doStuff_constStaticSizedArray(t); // no-warning
-
-}
-
-// https://bugs.llvm.org/show_bug.cgi?id=35419
-void f11_0(void) {
- int x; // expected-note {{'x' declared without an initial value}}
- x++; // expected-warning {{The expression is an uninitialized value. The computed value will also be garbage}}
- // expected-note@-1 {{The expression is an uninitialized value. The computed value will also be garbage}}
- clang_analyzer_warnIfReached(); // no-warning
-}
-void f11_1(void) {
- int x; // expected-note {{'x' declared without an initial value}}
- ++x; // expected-warning {{The expression is an uninitialized value. The computed value will also be garbage}}
- // expected-note@-1 {{The expression is an uninitialized value. The computed value will also be garbage}}
- clang_analyzer_warnIfReached(); // no-warning
-}
-void f11_2(void) {
- int x; // expected-note {{'x' declared without an initial value}}
- x--; // expected-warning {{The expression is an uninitialized value. The computed value will also be garbage}}
- // expected-note@-1 {{The expression is an uninitialized value. The computed value will also be garbage}}
- clang_analyzer_warnIfReached(); // no-warning
-}
-void f11_3(void) {
- int x; // expected-note {{'x' declared without an initial value}}
- --x; // expected-warning {{The expression is an uninitialized value. The computed value will also be garbage}}
- // expected-note@-1 {{The expression is an uninitialized value. The computed value will also be garbage}}
- clang_analyzer_warnIfReached(); // no-warning
-}
-
-int f_malloc_1(void) {
- int *ptr;
-
- ptr = (int *)malloc(sizeof(int)); // expected-note {{Value assigned to 'ptr'}}
-
- doStuff_pointerToConstInt(ptr); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note@-1 {{1st function call argument is a pointer to uninitialized value}}
- free(ptr);
- return 0;
-}
-
-int f_malloc_2(void) {
- int *ptr;
-
- ptr = (int *)malloc(sizeof(int));
- *ptr = 25;
-
- doStuff_pointerToConstInt(ptr); // no warning
- free(ptr);
- return 0;
-}
-
-// uninit pointer, uninit val
-void f_variadic_unp_unv(void) {
- int t;
- int v;
- int* tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_variadic(tp,v); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note@-1 {{1st function call argument is a pointer to uninitialized value}}
-}
-// uninit pointer, init val
-void f_variadic_unp_inv(void) {
- int t;
- int v = 3;
- int* tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_variadic(tp,v); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note@-1 {{1st function call argument is a pointer to uninitialized value}}
-}
-
-// init pointer, uninit val
-void f_variadic_inp_unv(void) {
- int t=5;
- int v; // expected-note {{'v' declared without an initial value}}
- int* tp = &t;
- doStuff_variadic(tp,v);// expected-warning {{2nd function call argument is an uninitialized value}}
- // expected-note@-1 {{2nd function call argument is an uninitialized value}}
-}
-
-// init pointer, init val
-void f_variadic_inp_inv(void) {
- int t=5;
- int v = 3;
- int* tp = &t;
- doStuff_variadic(tp,v); // no-warning
-}
-
-// init pointer, init pointer
-void f_variadic_inp_inp(void) {
- int t=5;
- int u=3;
- int *vp = &u ;
- int *tp = &t;
- doStuff_variadic(tp,vp); // no-warning
-}
-
-//uninit pointer, init pointer
-void f_variadic_unp_inp(void) {
- int t;
- int u=3;
- int *vp = &u ;
- int *tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_variadic(tp,vp); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note@-1 {{1st function call argument is a pointer to uninitialized value}}
-}
-
-//init pointer, uninit pointer
-void f_variadic_inp_unp(void) {
- int t=5;
- int u;
- int *vp = &u ;
- int *tp = &t;
- doStuff_variadic(tp,vp); // no-warning
-}
-
-//uninit pointer, uninit pointer
-void f_variadic_unp_unp(void) {
- int t;
- int u;
- int *vp = &u ;
- int *tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_variadic(tp,vp); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note@-1 {{1st function call argument is a pointer to uninitialized value}}
-}
diff --git a/test/Analysis/uninit-const.cpp b/test/Analysis/uninit-const.cpp
deleted file mode 100644
index b6430307dc52..000000000000
--- a/test/Analysis/uninit-const.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=cplusplus.NewDelete,core,alpha.core.CallAndMessageUnInitRefArg -analyzer-output=text -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=cplusplus.NewDelete,core,alpha.core.CallAndMessageUnInitRefArg -analyzer-output=text -DTEST_INLINABLE_ALLOCATORS -verify %s
-// Passing uninitialized const data to unknown function
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-void doStuff6(const int& c);
-void doStuff4(const int y);
-void doStuff3(int& g);
-void doStuff_uninit(const int *u);
-
-
-int f10(void) {
- int *ptr;
-
- ptr = new int; //
- if(*ptr) {
- doStuff4(*ptr);
- }
- delete ptr;
- return 0;
-}
-
-int f9(void) {
- int *ptr;
-
- ptr = new int; //
-
- doStuff_uninit(ptr); // no warning
- delete ptr;
- return 0;
-}
-
-int f8(void) {
- int *ptr;
-
- ptr = new int;
- *ptr = 25;
-
- doStuff_uninit(ptr); // no warning?
- delete ptr;
- return 0;
-}
-
-void f7(void) {
- int m = 3;
- doStuff6(m); // no warning
-}
-
-
-int& f6_1_sub(int &p) {
- return p; // expected-note{{Returning without writing to 'p'}}
- // expected-note@-1{{Returning pointer (reference to 't')}}
-}
-
-void f6_1(void) {
- int t; // expected-note{{'t' declared without an initial value}}
- int p = f6_1_sub(t); //expected-warning {{Assigned value is garbage or undefined}}
- //expected-note@-1 {{Passing value via 1st parameter 'p'}}
- //expected-note@-2 {{Calling 'f6_1_sub'}}
- //expected-note@-3 {{Returning from 'f6_1_sub'}}
- //expected-note@-4 {{Assigned value is garbage or undefined}}
- int q = p;
- doStuff6(q);
-}
-
-void f6_2(void) {
- int t; //expected-note {{'t' declared without an initial value}}
- int &p = t;
- int &s = p;
- int &q = s; //expected-note {{'q' initialized here}}
- doStuff6(q); //expected-warning {{1st function call argument is an uninitialized value}}
- //expected-note@-1 {{1st function call argument is an uninitialized value}}
-}
-
-void doStuff6_3(int& q_, int *ptr_) {}
-
-void f6_3(void) {
- int *ptr; //expected-note {{'ptr' declared without an initial value}}
- int t;
- int &p = t;
- int &s = p;
- int &q = s;
- doStuff6_3(q,ptr); //expected-warning {{2nd function call argument is an uninitialized value}}
- //expected-note@-1 {{2nd function call argument is an uninitialized value}}
-
-}
-
-void f6(void) {
- int k; // expected-note {{'k' declared without an initial value}}
- doStuff6(k); // expected-warning {{1st function call argument is an uninitialized value}}
- // expected-note@-1 {{1st function call argument is an uninitialized value}}
-
-}
-
-
-
-void f5(void) {
- int t;
- int* tp = &t; // expected-note {{'tp' initialized here}}
- doStuff_uninit(tp); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note@-1 {{1st function call argument is a pointer to uninitialized value}}
-}
-
-
-void f4(void) {
- int y; // expected-note {{'y' declared without an initial value}}
- doStuff4(y); // expected-warning {{1st function call argument is an uninitialized value}}
- // expected-note@-1 {{1st function call argument is an uninitialized value}}
-}
-
-void f3(void) {
- int g;
- doStuff3(g); // no warning
-}
-
-int z;
-void f2(void) {
- doStuff_uninit(&z); // no warning
-}
-
-void f1(void) {
- int x_=5;
- doStuff_uninit(&x_); // no warning
-}
-
-void f_uninit(void) {
- int x; // expected-note {{'x' declared without an initial value}}
- doStuff_uninit(&x); // expected-warning {{1st function call argument is a pointer to uninitialized value}}
- // expected-note@-1 {{1st function call argument is a pointer to uninitialized value}}
-}
diff --git a/test/Analysis/uninit-msg-expr.m b/test/Analysis/uninit-msg-expr.m
deleted file mode 100644
index 8454137967f6..000000000000
--- a/test/Analysis/uninit-msg-expr.m
+++ /dev/null
@@ -1,56 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-store=region -verify %s
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from
-// Foundation.h (Mac OS X).
-//
-// It includes the basic definitions for the test cases below.
-// Not directly including Foundation.h directly makes this test case
-// both svelte and portable to non-Mac platforms.
-//===----------------------------------------------------------------------===//
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@protocol NSCopying - (id)copyWithZone:(NSZone *)zone; @end
-@protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone; @end
-@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; @end
-@interface NSObject <NSObject> {} @end
-@class NSString, NSData;
-@class NSString, NSData, NSMutableData, NSMutableDictionary, NSMutableArray;
-typedef struct {} NSFastEnumerationState;
-@protocol NSFastEnumeration
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
-@end
-@class NSData, NSIndexSet, NSString, NSURL;
-@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
-@end
-@interface NSArray (NSArrayCreation)
-+ (id)array;
-- (NSUInteger)length;
-- (void)addObject:(id)object;
-@end
-extern NSString * const NSUndoManagerCheckpointNotification;
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-unsigned f1() {
- NSString *aString;
- return [aString length]; // expected-warning {{Receiver in message expression is an uninitialized value}}
-}
-
-unsigned f2() {
- NSString *aString = 0;
- return [aString length]; // no-warning
-}
-
-void f3() {
- NSMutableArray *aArray = [NSArray array];
- NSString *aString;
- [aArray addObject:aString]; // expected-warning {{1st argument in message expression is an uninitialized value}}
-}
diff --git a/test/Analysis/uninit-ps-rdar6145427.m b/test/Analysis/uninit-ps-rdar6145427.m
deleted file mode 100644
index d735f17317cf..000000000000
--- a/test/Analysis/uninit-ps-rdar6145427.m
+++ /dev/null
@@ -1,39 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify -analyzer-store=region %s
-
-// Delta-Debugging reduced preamble.
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-@class NSString, Protocol;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-typedef struct _NSZone NSZone;
-@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-@protocol NSObject - (BOOL)isEqual:(id)object; @end
-@protocol NSCopying - (id)copyWithZone:(NSZone *)zone; @end
-@protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; @end
-@interface NSObject <NSObject> {}
-+ (id)alloc;
-- (id)init;
-@end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-@interface NSValue : NSObject <NSCopying, NSCoding> - (void)getValue:(void *)value; @end
-@class NSString, NSData;
-typedef struct _NSPoint {} NSRange;
-@interface NSValue (NSValueRangeExtensions)
-+ (NSValue *)valueWithRange:(NSRange)range;
-- (id)objectAtIndex:(NSUInteger)index;
-@end
-@interface NSAutoreleasePool : NSObject {} - (void)drain; @end
-extern NSString * const NSBundleDidLoadNotification;
-typedef struct {} NSDecimal;
-@interface NSNetService : NSObject {} - (id)init; @end
-extern NSString * const NSUndoManagerCheckpointNotification;
-
-// Test case: <rdar://problem/6145427>
-
-int main (int argc, const char * argv[]) {
- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
- id someUnintializedPointer = [someUnintializedPointer objectAtIndex:0]; // expected-warning{{Receiver in message expression is an uninitialized value}}
- NSLog(@"%@", someUnintializedPointer);
- [pool drain];
- return 0;
-}
diff --git a/test/Analysis/uninit-sometimes.cpp b/test/Analysis/uninit-sometimes.cpp
deleted file mode 100644
index 425d3048c4e0..000000000000
--- a/test/Analysis/uninit-sometimes.cpp
+++ /dev/null
@@ -1,429 +0,0 @@
-// RUN: %clang_cc1 -std=gnu++11 -Wsometimes-uninitialized -verify %s
-// RUN: %clang_cc1 -std=gnu++11 -Wsometimes-uninitialized -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-
-bool maybe();
-
-int test_if_false(bool b) {
- int x; // expected-note {{variable}}
- if (b) // expected-warning {{whenever 'if' condition is false}} \
- // expected-note {{remove the 'if' if its condition is always true}}
- x = 1;
- return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{8:3-10:5}:""
-// CHECK: fix-it:"{{.*}}":{7:8-7:8}:" = 0"
-
-
-int test_if_true(bool b) {
- int x; // expected-note {{variable}}
- if (b) {} // expected-warning {{whenever 'if' condition is true}} \
- // expected-note {{remove the 'if' if its condition is always false}}
- else x = 1;
- return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{20:3-22:8}:""
-// CHECK: fix-it:"{{.*}}":{19:8-19:8}:" = 0"
-
-
-int test_while_false(bool b) {
- int x; // expected-note {{variable}}
- while (b) { // expected-warning {{whenever 'while' loop exits because its condition is false}} \
- // expected-note {{remove the condition if it is always true}}
- if (maybe()) {
- x = 1;
- break;
- }
- };
- return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{32:10-32:11}:"true"
-// CHECK: fix-it:"{{.*}}":{31:8-31:8}:" = 0"
-
-
-int test_while_true(bool b) {
- int x; // expected-note {{variable}}
- while (b) { // expected-warning {{whenever 'while' loop is entered}} \
- // expected-note {{remove the condition if it is always false}}
-label:
- return x; // expected-note {{uninitialized use}}
- }
- x = 0;
- goto label;
-}
-
-// CHECK: fix-it:"{{.*}}":{48:10-48:11}:"false"
-// CHECK: fix-it:"{{.*}}":{47:8-47:8}:" = 0"
-
-
-int test_do_while_false(bool b) {
- int x; // expected-note {{variable}}
- do {
- if (maybe()) {
- x = 1;
- break;
- }
- } while (b); // expected-warning {{whenever 'do' loop exits because its condition is false}} \
- // expected-note {{remove the condition if it is always true}}
- return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{68:12-68:13}:"true"
-// CHECK: fix-it:"{{.*}}":{62:8-62:8}:" = 0"
-
-
-int test_do_while_true(bool b) {
- int x; // expected-note {{variable}}
-goto label2;
- do {
-label1:
- return x; // expected-note {{uninitialized use}}
-label2: ;
- } while (b); // expected-warning {{whenever 'do' loop condition is true}} \
- // expected-note {{remove the condition if it is always false}}
- x = 0;
- goto label1;
-}
-
-// CHECK: fix-it:"{{.*}}":{84:12-84:13}:"false"
-// CHECK: fix-it:"{{.*}}":{78:8-78:8}:" = 0"
-
-
-int test_for_false(int k) {
- int x; // expected-note {{variable}}
- for (int n = 0;
- n < k; // expected-warning {{whenever 'for' loop exits because its condition is false}} \
- // expected-note {{remove the condition if it is always true}}
- ++n) {
- if (maybe()) {
- x = n;
- break;
- }
- }
- return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{97:8-97:13}:""
-// CHECK: fix-it:"{{.*}}":{95:8-95:8}:" = 0"
-
-
-int test_for_true(int k) {
- int x; // expected-note {{variable}}
- int n = 0;
- for (;
- n < k; // expected-warning {{whenever 'for' loop is entered}} \
- // expected-note {{remove the condition if it is always false}}
- ++n) {
-label:
- return x; // expected-note {{uninitialized use}}
- }
- x = 1;
- goto label;
-}
-
-// CHECK: fix-it:"{{.*}}":{116:8-116:13}:"false"
-// CHECK: fix-it:"{{.*}}":{113:8-113:8}:" = 0"
-
-
-int test_for_range_false(int k) {
- int arr[3] = { 1, 2, 3 };
- int x;
- for (int &a : arr) { // no-warning, condition was not explicitly specified
- if (a == k) {
- x = &a - arr;
- break;
- }
- }
- return x;
-}
-
-
-
-
-
-int test_for_range_true(int k) {
- int arr[3] = { 1, 2, 3 };
- int x; // expected-note {{variable}}
- for (int &a : arr) { // expected-warning {{variable 'x' is used uninitialized whenever 'for' loop is entered}}
- goto label;
- }
- x = 0;
-label:
- return x; // expected-note {{uninitialized use}}
-}
-
-
-
-
-
-int test_conditional_false(int k) {
- int x; // expected-note {{variable}}
- (void)(
- maybe() // expected-warning {{whenever '?:' condition is false}} \
- // expected-note {{remove the '?:' if its condition is always true}}
- ? x = 1 : 0);
- return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{164:7-166:9}:""
-// CHECK: fix-it:"{{.*}}":{166:14-166:18}:""
-// CHECK: fix-it:"{{.*}}":{162:8-162:8}:" = 0"
-
-int test_conditional_true(int k) {
- int x; // expected-note {{variable}}
- (void)(
- maybe() // expected-warning {{whenever '?:' condition is true}} \
- // expected-note {{remove the '?:' if its condition is always false}}
- ? 0 : x = 1);
- return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{177:7-179:13}:""
-// CHECK: fix-it:"{{.*}}":{175:8-175:8}:" = 0"
-
-
-int test_logical_and_false(int k) {
- int x; // expected-note {{variable}}
- maybe() // expected-warning {{whenever '&&' condition is false}} \
- // expected-note {{remove the '&&' if its condition is always true}}
- && (x = 1);
- return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{189:3-191:10}:""
-// CHECK: fix-it:"{{.*}}":{188:8-188:8}:" = 0"
-
-
-int test_logical_and_true(int k) {
- int x; // expected-note {{variable}}
- maybe() // expected-warning {{whenever '&&' condition is true}} \
- // expected-note {{remove the '&&' if its condition is always false}}
- && ({ goto skip_init; 0; });
- x = 1;
-skip_init:
- return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{201:3-203:34}:"false"
-// CHECK: fix-it:"{{.*}}":{200:8-200:8}:" = 0"
-
-
-int test_logical_or_false(int k) {
- int x; // expected-note {{variable}}
- maybe() // expected-warning {{whenever '||' condition is false}} \
- // expected-note {{remove the '||' if its condition is always true}}
- || ({ goto skip_init; 0; });
- x = 1;
-skip_init:
- return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{215:3-217:34}:"true"
-// CHECK: fix-it:"{{.*}}":{214:8-214:8}:" = 0"
-
-
-int test_logical_or_true(int k) {
- int x; // expected-note {{variable}}
- maybe() // expected-warning {{whenever '||' condition is true}} \
- // expected-note {{remove the '||' if its condition is always false}}
- || (x = 1);
- return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{229:3-231:10}:""
-// CHECK: fix-it:"{{.*}}":{228:8-228:8}:" = 0"
-
-
-int test_switch_case(int k) {
- int x; // expected-note {{variable}}
- switch (k) {
- case 0:
- x = 0;
- break;
- case 1: // expected-warning {{whenever switch case is taken}}
- break;
- }
- return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{240:8-240:8}:" = 0"
-
-
-
-int test_switch_default(int k) {
- int x; // expected-note {{variable}}
- switch (k) {
- case 0:
- x = 0;
- break;
- case 1:
- x = 1;
- break;
- default: // expected-warning {{whenever switch default is taken}}
- break;
- }
- return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{256:8-256:8}:" = 0"
-
-
-
-int test_switch_suppress_1(int k) {
- int x;
- switch (k) {
- case 0:
- x = 0;
- break;
- case 1:
- x = 1;
- break;
- }
- return x; // no-warning
-}
-
-
-
-
-
-int test_switch_suppress_2(int k) {
- int x;
- switch (k) {
- case 0:
- case 1:
- switch (k) {
- case 0:
- return 0;
- case 1:
- return 1;
- }
- case 2:
- case 3:
- x = 1;
- }
- return x; // no-warning
-}
-
-
-
-
-
-int test_multiple_notes(int k) {
- int x; // expected-note {{variable}}
- if (k > 0) {
- if (k == 5)
- x = 1;
- else if (k == 2) // expected-warning {{whenever 'if' condition is false}} \
- // expected-note {{remove the 'if' if its condition is always true}}
- x = 2;
- } else {
- if (k == -5)
- x = 3;
- else if (k == -2) // expected-warning {{whenever 'if' condition is false}} \
- // expected-note {{remove the 'if' if its condition is always true}}
- x = 4;
- }
- return x; // expected-note 2{{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{324:10-326:7}:""
-// CHECK: fix-it:"{{.*}}":{318:10-320:7}:""
-// CHECK: fix-it:"{{.*}}":{314:8-314:8}:" = 0"
-
-int test_no_false_positive_1(int k) {
- int x;
- if (k)
- x = 5;
- while (!k)
- maybe();
- return x;
-}
-
-
-
-
-
-int test_no_false_positive_2() {
- int x;
- bool b = false;
- if (maybe()) {
- x = 5;
- b = true;
- }
- return b ? x : 0;
-}
-
-
-
-
-
-void test_null_pred_succ() {
- int x; // expected-note {{variable}} expected-warning {{used uninitialized whenever function 'test_null_pred_succ' is called}}
- if (0)
- foo: x = 0;
- if (x) // expected-note {{use}}
- goto foo;
-}
-
-
-
-
-void foo();
-int PR13360(bool b) {
- int x; // expected-note {{variable}}
- if (b) { // expected-warning {{variable 'x' is used uninitialized whenever 'if' condition is true}} expected-note {{remove}}
- do {
- foo();
- } while (0);
- } else {
- x = 1;
- }
- return x; // expected-note {{uninitialized use occurs here}}
-}
-
-// CHECK: fix-it:"{{.*}}":{376:3-380:10}:""
-// CHECK: fix-it:"{{.*}}":{375:8-375:8}:" = 0"
-
-void test_jump_init() {
-goto later;
- int x; // expected-note {{variable}} expected-warning {{used uninitialized whenever function 'test_jump_init'}}
-later:
- while (x) x = 0; // expected-note {{use}}
-}
-
-void PR16054() {
- int x; // expected-note {{variable}} expected-warning {{used uninitialized whenever function 'PR16054}}
- while (x != 0) { // expected-note {{use}}
- (void)&x;
- }
-}
-
-void test_loop_uninit() {
- for (int n = 0; n < 10; ++n) {
- int k; // expected-warning {{variable 'k' is used uninitialized whenever its declaration is reached}} expected-note {{variable}}
- do {
- k = k + 1; // expected-note {{use}}
- } while (k != 5);
- }
-}
-
-// FIXME: We should warn here, because the variable is used uninitialized
-// the first time we encounter the use.
-void test_loop_with_assignment() {
- double d;
- for (int n = 0; n < 10; ++n) {
- d = d + n;
- }
-}
-
-// FIXME: We should warn here, because the variable is used uninitialized
-// the first time we encounter the use.
-void test_loop_with_ref_bind() {
- double d;
- for (int n = 0; n < 10; ++n) {
- d += n;
- const double &r = d;
- }
-}
diff --git a/test/Analysis/uninit-vals-union.c b/test/Analysis/uninit-vals-union.c
deleted file mode 100644
index b433e7b0ef62..000000000000
--- a/test/Analysis/uninit-vals-union.c
+++ /dev/null
@@ -1,13 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core.builtin -analyzer-store=region -verify -Wno-unused %s
-
-typedef union {
- int y;
-} U;
-
-typedef struct { int x; } A;
-
-void foo() {
- U u = {};
- A *a = &u; // expected-warning{{incompatible pointer types}}
- a->x; // no-crash
-}
diff --git a/test/Analysis/uninit-vals.c b/test/Analysis/uninit-vals.c
deleted file mode 100644
index d24b45874738..000000000000
--- a/test/Analysis/uninit-vals.c
+++ /dev/null
@@ -1,199 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -fblocks -verify -analyzer-output=text %s
-
-struct FPRec {
- void (*my_func)(int * x);
-};
-
-int bar(int x);
-
-int f1_a(struct FPRec* foo) {
- int x;
- (*foo->my_func)(&x);
- return bar(x)+1; // no-warning
-}
-
-int f1_b() {
- int x; // expected-note{{'x' declared without an initial value}}
- return bar(x)+1; // expected-warning{{1st function call argument is an uninitialized value}}
- // expected-note@-1{{1st function call argument is an uninitialized value}}
-}
-
-int f2() {
-
- int x; // expected-note{{'x' declared without an initial value}}
-
- if (x+1) // expected-warning{{The left operand of '+' is a garbage value}}
- // expected-note@-1{{The left operand of '+' is a garbage value}}
- return 1;
-
- return 2;
-}
-
-int f2_b() {
- int x; // expected-note{{'x' declared without an initial value}}
-
- return ((1+x)+2+((x))) + 1 ? 1 : 2; // expected-warning{{The right operand of '+' is a garbage value}}
- // expected-note@-1{{The right operand of '+' is a garbage value}}
-}
-
-int f3(void) {
- int i; // expected-note{{'i' declared without an initial value}}
- int *p = &i;
- if (*p > 0) // expected-warning{{The left operand of '>' is a garbage value}}
- // expected-note@-1{{The left operand of '>' is a garbage value}}
- return 0;
- else
- return 1;
-}
-
-void f4_aux(float* x);
-float f4(void) {
- float x;
- f4_aux(&x);
- return x; // no-warning
-}
-
-struct f5_struct { int x; };
-void f5_aux(struct f5_struct* s);
-int f5(void) {
- struct f5_struct s;
- f5_aux(&s);
- return s.x; // no-warning
-}
-
-void f6(int x) {
- int a[20];
- if (x == 25) {} // expected-note{{Assuming 'x' is equal to 25}}
- // expected-note@-1{{Taking true branch}}
- if (a[x] == 123) {} // expected-warning{{The left operand of '==' is a garbage value due to array index out of bounds}}
- // expected-note@-1{{The left operand of '==' is a garbage value due to array index out of bounds}}
-}
-
-int ret_uninit() {
- int i; // expected-note{{'i' declared without an initial value}}
- int *p = &i;
- return *p; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-// <rdar://problem/6451816>
-typedef unsigned char Boolean;
-typedef const struct __CFNumber * CFNumberRef;
-typedef signed long CFIndex;
-typedef CFIndex CFNumberType;
-typedef unsigned long UInt32;
-typedef UInt32 CFStringEncoding;
-typedef const struct __CFString * CFStringRef;
-extern Boolean CFNumberGetValue(CFNumberRef number, CFNumberType theType, void *valuePtr);
-extern CFStringRef CFStringConvertEncodingToIANACharSetName(CFStringEncoding encoding);
-
-CFStringRef rdar_6451816(CFNumberRef nr) {
- CFStringEncoding encoding;
- // &encoding is casted to void*. This test case tests whether or not
- // we properly invalidate the value of 'encoding'.
- CFNumberGetValue(nr, 9, &encoding);
- return CFStringConvertEncodingToIANACharSetName(encoding); // no-warning
-}
-
-// PR 4630 - false warning with nonnull attribute
-// This false positive (due to a regression) caused the analyzer to falsely
-// flag a "return of uninitialized value" warning in the first branch due to
-// the nonnull attribute.
-void pr_4630_aux(char *x, int *y) __attribute__ ((nonnull (1)));
-void pr_4630_aux_2(char *x, int *y);
-int pr_4630(char *a, int y) {
- int x;
- if (y) {
- pr_4630_aux(a, &x);
- return x; // no-warning
- }
- else {
- pr_4630_aux_2(a, &x);
- return x; // no-warning
- }
-}
-
-// PR 4631 - False positive with union initializer
-// Previously the analyzer didn't examine the compound initializers of unions,
-// resulting in some false positives for initializers with side-effects.
-union u_4631 { int a; };
-struct s_4631 { int a; };
-int pr4631_f2(int *p);
-int pr4631_f3(void *q);
-int pr4631_f1(void)
-{
- int x;
- union u_4631 m = { pr4631_f2(&x) };
- pr4631_f3(&m); // tell analyzer that we use m
- return x; // no-warning
-}
-int pr4631_f1_b(void)
-{
- int x;
- struct s_4631 m = { pr4631_f2(&x) };
- pr4631_f3(&m); // tell analyzer that we use m
- return x; // no-warning
-}
-
-// <rdar://problem/12278788> - FP when returning a void-valued expression from
-// a void function...or block.
-void foo_radar12278788() { return; }
-void test_radar12278788() {
- return foo_radar12278788(); // no-warning
-}
-
-void foo_radar12278788_fp() { return; }
-typedef int (*RetIntFuncType)();
-typedef void (*RetVoidFuncType)();
-int test_radar12278788_FP() {
- RetVoidFuncType f = foo_radar12278788_fp;
- return ((RetIntFuncType)f)(); //expected-warning {{Undefined or garbage value returned to caller}}
- //expected-note@-1 {{Undefined or garbage value returned to caller}}
- //expected-note@-2 {{Calling 'foo_radar12278788_fp'}}
- //expected-note@-3 {{Returning from 'foo_radar12278788_fp'}}
-}
-
-void rdar13665798() {
- ^() {
- return foo_radar12278788(); // no-warning
- }();
- ^void() {
- return foo_radar12278788(); // no-warning
- }();
- ^int() { // expected-note{{Calling anonymous block}}
- RetVoidFuncType f = foo_radar12278788_fp;
- return ((RetIntFuncType)f)(); //expected-warning {{Undefined or garbage value returned to caller}}
- //expected-note@-1 {{Undefined or garbage value returned to caller}}
- //expected-note@-2 {{Calling 'foo_radar12278788_fp'}}
- //expected-note@-3 {{Returning from 'foo_radar12278788_fp'}}
- }();
-}
-
-struct Point {
- int x, y;
-};
-
-struct Point getHalfPoint() {
- struct Point p;
- p.x = 0;
- return p;
-}
-
-void use(struct Point p);
-
-void testUseHalfPoint() {
- struct Point p = getHalfPoint(); // expected-note{{Calling 'getHalfPoint'}}
- // expected-note@-1{{Returning from 'getHalfPoint'}}
- // expected-note@-2{{'p' initialized here}}
- use(p); // expected-warning{{uninitialized}}
- // expected-note@-1{{uninitialized}}
-}
-
-void testUseHalfPoint2() {
- struct Point p;
- p = getHalfPoint(); // expected-note{{Calling 'getHalfPoint'}}
- // expected-note@-1{{Returning from 'getHalfPoint'}}
- // expected-note@-2{{Value assigned to 'p'}}
- use(p); // expected-warning{{uninitialized}}
- // expected-note@-1{{uninitialized}}
-}
diff --git a/test/Analysis/uninit-vals.cpp b/test/Analysis/uninit-vals.cpp
deleted file mode 100644
index 6ba56f0c4e78..000000000000
--- a/test/Analysis/uninit-vals.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core.builtin -verify -DCHECK_FOR_CRASH %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify -analyzer-output=text %s
-
-#ifdef CHECK_FOR_CRASH
-// expected-no-diagnostics
-#endif
-
-namespace PerformTrivialCopyForUndefs {
-struct A {
- int x;
-};
-
-struct B {
- A a;
-};
-
-struct C {
- B b;
-};
-
-void foo() {
- C c1;
- C *c2;
-#ifdef CHECK_FOR_CRASH
- // If the value of variable is not defined and checkers that check undefined
- // values are not enabled, performTrivialCopy should be able to handle the
- // case with undefined values, too.
- c1.b.a = c2->b.a;
-#else
- c1.b.a = c2->b.a; // expected-warning{{1st function call argument is an uninitialized value}}
- // expected-note@-1{{1st function call argument is an uninitialized value}}
-#endif
-}
-}
-
diff --git a/test/Analysis/uninit-vals.m b/test/Analysis/uninit-vals.m
deleted file mode 100644
index f97af1a6633c..000000000000
--- a/test/Analysis/uninit-vals.m
+++ /dev/null
@@ -1,425 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-store=region -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-output=text -verify %s
-
-typedef unsigned int NSUInteger;
-typedef __typeof__(sizeof(int)) size_t;
-
-void *malloc(size_t);
-void *calloc(size_t nmemb, size_t size);
-void free(void *);
-
-void clang_analyzer_eval(int);
-
-struct s {
- int data;
-};
-
-struct s global;
-
-void g(int);
-
-void f4() {
- int a;
- if (global.data == 0)
- a = 3;
- if (global.data == 0) // When the true branch is feasible 'a = 3'.
- g(a); // no-warning
-}
-
-
-// Test uninitialized value due to part of the structure being uninitialized.
-struct TestUninit { int x; int y; };
-struct TestUninit test_uninit_aux();
-void test_unit_aux2(int);
-void test_uninit_pos() {
- struct TestUninit v1 = { 0, 0 };
- struct TestUninit v2 = test_uninit_aux();
- int z; // expected-note{{'z' declared without an initial value}}
- v1.y = z; // expected-warning{{Assigned value is garbage or undefined}}
- // expected-note@-1{{Assigned value is garbage or undefined}}
- test_unit_aux2(v2.x + v1.y);
-}
-void test_uninit_pos_2() {
- struct TestUninit v1 = { 0, 0 };
- struct TestUninit v2;
- test_unit_aux2(v2.x + v1.y); // expected-warning{{The left operand of '+' is a garbage value}}
- // expected-note@-1{{The left operand of '+' is a garbage value}}
-}
-void test_uninit_pos_3() {
- struct TestUninit v1 = { 0, 0 };
- struct TestUninit v2;
- test_unit_aux2(v1.y + v2.x); // expected-warning{{The right operand of '+' is a garbage value}}
- // expected-note@-1{{The right operand of '+' is a garbage value}}
-}
-
-void test_uninit_neg() {
- struct TestUninit v1 = { 0, 0 };
- struct TestUninit v2 = test_uninit_aux();
- test_unit_aux2(v2.x + v1.y);
-}
-
-extern void test_uninit_struct_arg_aux(struct TestUninit arg);
-void test_uninit_struct_arg() {
- struct TestUninit x; // expected-note{{'x' initialized here}}
- test_uninit_struct_arg_aux(x); // expected-warning{{Passed-by-value struct argument contains uninitialized data (e.g., field: 'x')}}
- // expected-note@-1{{Passed-by-value struct argument contains uninitialized data (e.g., field: 'x')}}
-}
-
-@interface Foo
-- (void) passVal:(struct TestUninit)arg;
-@end
-void testFoo(Foo *o) {
- struct TestUninit x; // expected-note{{'x' initialized here}}
- [o passVal:x]; // expected-warning{{Passed-by-value struct argument contains uninitialized data (e.g., field: 'x')}}
- // expected-note@-1{{Passed-by-value struct argument contains uninitialized data (e.g., field: 'x')}}
-}
-
-// Test case from <rdar://problem/7780304>. That shows an uninitialized value
-// being used in the LHS of a compound assignment.
-void rdar_7780304() {
- typedef struct s_r7780304 { int x; } s_r7780304;
- s_r7780304 b;
- b.x |= 1; // expected-warning{{The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage}}
- // expected-note@-1{{The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage}}
-}
-
-
-// The flip side of PR10163 -- float arrays that are actually uninitialized
-void test_PR10163(float);
-void PR10163 (void) {
- float x[2];
- test_PR10163(x[1]); // expected-warning{{uninitialized value}}
- // expected-note@-1{{1st function call argument is an uninitialized value}}
-}
-
-// PR10163 -- don't warn for default-initialized float arrays.
-void PR10163_default_initialized_arrays(void) {
- float x[2] = {0};
- test_PR10163(x[1]); // no-warning
-}
-
-struct MyStr {
- int x;
- int y;
-};
-void swap(struct MyStr *To, struct MyStr *From) {
- // This is not really a swap but close enough for our test.
- To->x = From->x;
- To->y = From->y; // expected-note{{Uninitialized value stored to field 'y'}}
-}
-int test_undefined_member_assignment_in_swap(struct MyStr *s2) {
- struct MyStr s1;
- s1.x = 5;
- swap(s2, &s1); // expected-note{{Calling 'swap'}}
- // expected-note@-1{{Returning from 'swap'}}
- return s2->y; // expected-warning{{Undefined or garbage value returned to caller}}
- // expected-note@-1{{Undefined or garbage value returned to caller}}
-}
-
-@interface A
-- (NSUInteger)foo;
-@end
-
-NSUInteger f8(A* x){
- const NSUInteger n = [x foo];
- int* bogus;
-
- if (n > 0) { // tests const cast transfer function logic
- NSUInteger i;
-
- for (i = 0; i < n; ++i)
- bogus = 0;
-
- if (bogus) // no-warning
- return n+1;
- }
-
- return n;
-}
-
-
-
-
-typedef struct {
- float x;
- float y;
- float z;
-} Point;
-typedef struct {
- Point origin;
- int size;
-} Circle;
-
-Point makePoint(float x, float y) {
- Point result;
- result.x = x;
- result.y = y;
- result.z = 0.0;
- return result;
-}
-
-void PR14765_test() {
- Circle *testObj = calloc(sizeof(Circle), 1);
-
- clang_analyzer_eval(testObj->size == 0); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
-
- testObj->origin = makePoint(0.0, 0.0);
- if (testObj->size > 0) { ; } // expected-note{{Taking false branch}}
-
- // FIXME: Assigning to 'testObj->origin' kills the default binding for the
- // whole region, meaning that we've forgotten that testObj->size should also
- // default to 0. Tracked by <rdar://problem/12701038>.
- // This should be TRUE.
- clang_analyzer_eval(testObj->size == 0); // expected-warning{{UNKNOWN}}
- // expected-note@-1{{UNKNOWN}}
-
- free(testObj);
-}
-
-void PR14765_argument(Circle *testObj) {
- int oldSize = testObj->size;
- clang_analyzer_eval(testObj->size == oldSize); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
-
- testObj->origin = makePoint(0.0, 0.0);
- clang_analyzer_eval(testObj->size == oldSize); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
-}
-
-
-typedef struct {
- int x;
- int y;
- int z;
-} IntPoint;
-typedef struct {
- IntPoint origin;
- int size;
-} IntCircle;
-
-IntPoint makeIntPoint(int x, int y) {
- IntPoint result;
- result.x = x;
- result.y = y;
- result.z = 0;
- return result;
-}
-
-void PR14765_test_int() {
- IntCircle *testObj = calloc(sizeof(IntCircle), 1);
-
- clang_analyzer_eval(testObj->size == 0); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(testObj->origin.x == 0); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(testObj->origin.y == 0); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(testObj->origin.z == 0); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
-
- testObj->origin = makeIntPoint(1, 2);
- if (testObj->size > 0) { ; } // expected-note{{Taking false branch}}
- // expected-note@-1{{Taking false branch}}
- // expected-note@-2{{Taking false branch}}
- // expected-note@-3{{Taking false branch}}
-
- // FIXME: Assigning to 'testObj->origin' kills the default binding for the
- // whole region, meaning that we've forgotten that testObj->size should also
- // default to 0. Tracked by <rdar://problem/12701038>.
- // This should be TRUE.
- clang_analyzer_eval(testObj->size == 0); // expected-warning{{UNKNOWN}}
- // expected-note@-1{{UNKNOWN}}
- clang_analyzer_eval(testObj->origin.x == 1); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(testObj->origin.y == 2); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(testObj->origin.z == 0); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
-
- free(testObj);
-}
-
-void PR14765_argument_int(IntCircle *testObj) {
- int oldSize = testObj->size;
- clang_analyzer_eval(testObj->size == oldSize); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
-
- testObj->origin = makeIntPoint(1, 2);
- clang_analyzer_eval(testObj->size == oldSize); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(testObj->origin.x == 1); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(testObj->origin.y == 2); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(testObj->origin.z == 0); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
-}
-
-
-void rdar13292559(Circle input) {
- extern void useCircle(Circle);
-
- Circle obj = input;
- useCircle(obj); // no-warning
-
- // This generated an "uninitialized 'size' field" warning for a (short) while.
- obj.origin = makePoint(0.0, 0.0);
- useCircle(obj); // no-warning
-}
-
-
-typedef struct {
- int x;
- int y;
-} IntPoint2D;
-typedef struct {
- IntPoint2D origin;
- int size;
-} IntCircle2D;
-
-IntPoint2D makeIntPoint2D(int x, int y) {
- IntPoint2D result;
- result.x = x;
- result.y = y;
- return result;
-}
-
-void testSmallStructsCopiedPerField() {
- IntPoint2D a;
- a.x = 0;
-
- IntPoint2D b = a;
- extern void useInt(int);
- useInt(b.x); // no-warning
- useInt(b.y); // expected-warning{{uninitialized}}
- // expected-note@-1{{uninitialized}}
-}
-
-void testLargeStructsNotCopiedPerField() {
- IntPoint a;
- a.x = 0;
-
- IntPoint b = a;
- extern void useInt(int);
- useInt(b.x); // no-warning
- useInt(b.y); // no-warning
-}
-
-void testSmallStructInLargerStruct() {
- IntCircle2D *testObj = calloc(sizeof(IntCircle2D), 1);
-
- clang_analyzer_eval(testObj->size == 0); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(testObj->origin.x == 0); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(testObj->origin.y == 0); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
-
- testObj->origin = makeIntPoint2D(1, 2);
- if (testObj->size > 0) { ; } // expected-note{{Taking false branch}}
- // expected-note@-1{{Taking false branch}}
- // expected-note@-2{{Taking false branch}}
-
- clang_analyzer_eval(testObj->size == 0); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(testObj->origin.x == 1); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(testObj->origin.y == 2); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
-
- free(testObj);
-}
-
-void testCopySmallStructIntoArgument(IntCircle2D *testObj) {
- int oldSize = testObj->size;
- clang_analyzer_eval(testObj->size == oldSize); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
-
- testObj->origin = makeIntPoint2D(1, 2);
- clang_analyzer_eval(testObj->size == oldSize); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(testObj->origin.x == 1); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(testObj->origin.y == 2); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
-}
-
-void testSmallStructBitfields() {
- struct {
- int x : 4;
- int y : 4;
- } a, b;
-
- a.x = 1;
- a.y = 2;
-
- b = a;
- clang_analyzer_eval(b.x == 1); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(b.y == 2); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
-}
-
-void testSmallStructBitfieldsFirstUndef() {
- struct {
- int x : 4;
- int y : 4;
- } a, b;
-
- a.y = 2;
-
- b = a;
- clang_analyzer_eval(b.y == 2); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(b.x == 1); // expected-warning{{garbage}}
- // expected-note@-1{{garbage}}
-}
-
-void testSmallStructBitfieldsSecondUndef() {
- struct {
- int x : 4;
- int y : 4;
- } a, b;
-
- a.x = 1;
-
- b = a;
- clang_analyzer_eval(b.x == 1); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
- clang_analyzer_eval(b.y == 2); // expected-warning{{garbage}}
- // expected-note@-1{{garbage}}
-}
-
-void testSmallStructBitfieldsFirstUnnamed() {
- struct {
- int : 4;
- int y : 4;
- } a, b, c;
-
- a.y = 2;
-
- b = a; // expected-note{{Value assigned to 'c'}}
- clang_analyzer_eval(b.y == 2); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
-
- b = c; // expected-note{{Uninitialized value stored to 'b.y'}}
- clang_analyzer_eval(b.y == 2); // expected-warning{{garbage}}
- // expected-note@-1{{garbage}}
-}
-
-void testSmallStructBitfieldsSecondUnnamed() {
- struct {
- int x : 4;
- int : 4;
- } a, b, c;
-
- a.x = 1;
-
- b = a; // expected-note{{Value assigned to 'c'}}
- clang_analyzer_eval(b.x == 1); // expected-warning{{TRUE}}
- // expected-note@-1{{TRUE}}
-
- b = c; // expected-note{{Uninitialized value stored to 'b.x'}}
- clang_analyzer_eval(b.x == 1); // expected-warning{{garbage}}
- // expected-note@-1{{garbage}}
-}
diff --git a/test/Analysis/unions-region.m b/test/Analysis/unions-region.m
deleted file mode 100644
index bad159fe8123..000000000000
--- a/test/Analysis/unions-region.m
+++ /dev/null
@@ -1,42 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-store=region %s -verify
-// expected-no-diagnostics
-
-//===-- unions-region.m ---------------------------------------------------===//
-//
-// This file tests the analyzer's reasoning about unions.
-//
-//===----------------------------------------------------------------------===//
-
-// [testA] When using RegionStore, this test case previously had a
-// false positive of a 'pass-by-value argument is uninitialized'
-// warning at the call to 'testA_aux' and 'testA_aux_2'.
-union u_testA {
- unsigned i;
- float f;
-};
-
-float testA(float f) {
- int testA_aux(unsigned x);
- int testA_aux_2(union u_testA z);
-
- union u_testA swap;
- swap.f = f;
-
- if (testA_aux(swap.i)) // no-warning
- swap.i = ((swap.i & 0xffff0000) >> 16) | ((swap.i & 0x0000fffff) << 16);
-
- testA_aux_2(swap); // no-warning
-
- return swap.f;
-}
-
-// [testB] When using RegionStore, this test case previously had a
-// false positive of a 'pass-by-value argument is uninitialized'
-// warning at the call to 'testB_aux'.
-void testB(int i) {
- void testB_aux(short z);
- union { short x[2]; unsigned y; } val;
- val.y = 10;
- testB_aux(val.x[1]); // no-warning
-}
-
diff --git a/test/Analysis/unions.cpp b/test/Analysis/unions.cpp
deleted file mode 100644
index 618d4c314aa3..000000000000
--- a/test/Analysis/unions.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,debug.ExprInspection %s -analyzer-config eagerly-assume=false -verify
-
-extern void clang_analyzer_eval(bool);
-extern "C" char *strdup(const char *s);
-
-namespace PR14054_reduced {
- struct Definition;
- struct ParseNode {
- union {
- Definition *lexdef;
- ParseNode *data;
- } pn_u;
- };
- struct Definition : public ParseNode { };
-
- void CloneParseTree(ParseNode *opn, ParseNode *pn, ParseNode *x) {
- // This used to cause an assertion failure because:
- // 1. The implicit operator= for unions assigns all members of the union,
- // not just the active one (b/c there's no way to know which is active).
- // 2. RegionStore dutifully stored all the variants at the same offset;
- // the last one won.
- // 3. We asked for the value of the first variant but got back a conjured
- // symbol for the second variant.
- // 4. We ended up trying to add a base cast to a region of the wrong type.
- //
- // Now (at the time this test was added), we instead treat all variants of
- // a union as different offsets, but only allow one to be active at a time.
- *pn = *opn;
- x = pn->pn_u.lexdef->pn_u.lexdef;
- }
-}
-
-namespace PR14054_original {
- struct Definition;
- struct ParseNode {
- union {
- struct {
- union {};
- Definition *lexdef;
- } name;
- class {
- int *target;
- ParseNode *data;
- } xmlpi;
- } pn_u;
- };
- struct Definition : public ParseNode { };
-
- void CloneParseTree(ParseNode *opn, ParseNode *pn, ParseNode *x) {
- pn->pn_u = opn->pn_u;
- x = pn->pn_u.name.lexdef->pn_u.name.lexdef;
- }
-}
-
-namespace PR17596 {
- union IntOrString {
- int i;
- char *s;
- };
-
- extern void process(IntOrString);
-
- void test() {
- IntOrString uu;
- uu.s = strdup("");
- process(uu);
- }
-
- void testPositive() {
- IntOrString uu;
- uu.s = strdup("");
- } // expected-warning{{leak}}
-
- void testCopy() {
- IntOrString uu;
- uu.i = 4;
- clang_analyzer_eval(uu.i == 4); // expected-warning{{TRUE}}
-
- IntOrString vv;
- vv.i = 5;
- uu = vv;
- clang_analyzer_eval(uu.i == 5); // expected-warning{{TRUE}}
- }
-
- void testInvalidation() {
- IntOrString uu;
- uu.s = strdup("");
-
- IntOrString vv;
- char str[] = "abc";
- vv.s = str;
-
- uu = vv;
- } // expected-warning{{leak}}
-
- void testIndirectInvalidation() {
- IntOrString uu;
- char str[] = "abc";
- uu.s = str;
-
- clang_analyzer_eval(uu.s[0] == 'a'); // expected-warning{{TRUE}}
-
- process(uu);
- clang_analyzer_eval(uu.s[0] == 'a'); // expected-warning{{UNKNOWN}}
- }
-}
-
-namespace assume_union_contents {
-union U {
- int x;
-};
-
-U get();
-
-void test() {
- U u = get();
- int y = 0;
- if (u.x)
- y = 1;
- if (u.x)
- y = 1 / y; // no-warning
-}
-} // end namespace assume_union_contents
diff --git a/test/Analysis/unix-api.c b/test/Analysis/unix-api.c
deleted file mode 100644
index 64ff3c0fccf4..000000000000
--- a/test/Analysis/unix-api.c
+++ /dev/null
@@ -1,92 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.API -verify %s
-
-#ifndef O_RDONLY
-#define O_RDONLY 0
-#endif
-
-#ifndef NULL
-#define NULL ((void*) 0)
-#endif
-
-int open(const char *, int, ...);
-int openat(int, const char *, int, ...);
-int close(int fildes);
-
-void open_1(const char *path) {
- int fd;
- fd = open(path, O_RDONLY); // no-warning
- if (fd > -1)
- close(fd);
-}
-
-void open_2(const char *path) {
- int fd;
- int mode = 0x0;
- fd = open(path, O_RDONLY, mode, NULL); // expected-warning{{Call to 'open' with more than 3 arguments}}
- if (fd > -1)
- close(fd);
-}
-
-void openat_2(int base_fd, const char *path) {
- int fd;
- int mode = 0x0;
- fd = openat(base_fd, path, O_RDONLY, mode, NULL); // expected-warning{{Call to 'openat' with more than 4 arguments}}
- if (fd > -1)
- close(fd);
-}
-
-void open_3(const char *path) {
- int fd;
- fd = open(path, O_RDONLY, NULL); // expected-warning{{The 3rd argument to 'open' is not an integer}}
- if (fd > -1)
- close(fd);
-}
-
-void openat_3(int base_fd, const char *path) {
- int fd;
- fd = openat(base_fd, path, O_RDONLY, NULL); // expected-warning{{The 4th argument to 'openat' is not an integer}}
- if (fd > -1)
- close(fd);
-}
-
-
-void open_4(const char *path) {
- int fd;
- fd = open(path, O_RDONLY, ""); // expected-warning{{The 3rd argument to 'open' is not an integer}}
- if (fd > -1)
- close(fd);
-}
-
-void open_5(const char *path) {
- int fd;
- struct {
- int val;
- } st = {0};
- fd = open(path, O_RDONLY, st); // expected-warning{{The 3rd argument to 'open' is not an integer}}
- if (fd > -1)
- close(fd);
-}
-
-void open_6(const char *path) {
- int fd;
- struct {
- int val;
- } st = {0};
- fd = open(path, O_RDONLY, st.val); // no-warning
- if (fd > -1)
- close(fd);
-}
-
-void open_7(const char *path) {
- int fd;
- fd = open(path, O_RDONLY, &open); // expected-warning{{The 3rd argument to 'open' is not an integer}}
- if (fd > -1)
- close(fd);
-}
-
-void open_8(const char *path) {
- int fd;
- fd = open(path, O_RDONLY, 0.0f); // expected-warning{{The 3rd argument to 'open' is not an integer}}
- if (fd > -1)
- close(fd);
-}
diff --git a/test/Analysis/unix-api.cpp b/test/Analysis/unix-api.cpp
deleted file mode 100644
index 2b07d8807c1f..000000000000
--- a/test/Analysis/unix-api.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.API -verify %s
-extern "C" {
-#ifndef O_RDONLY
-#define O_RDONLY 0
-#endif
-
-#ifndef NULL
-#define NULL ((void*) 0)
-#endif
-
-int open(const char *, int, ...);
-int close(int fildes);
-
-} // extern "C"
-
-namespace MyNameSpace {
-int open(const char *a, int b, int c, int d);
-}
-
-void unix_open(const char *path) {
- int fd;
- fd = open(path, O_RDONLY); // no-warning
- if (fd > -1)
- close(fd);
-}
-
-void unix_open_misuse(const char *path) {
- int fd;
- int mode = 0x0;
- fd = open(path, O_RDONLY, mode, NULL); // expected-warning{{Call to 'open' with more than 3 arguments}}
- if (fd > -1)
- close(fd);
-}
-
-// Don't treat open() in namespaces as the POSIX open()
-void namespaced_open(const char *path) {
- MyNameSpace::open("Hi", 2, 3, 4); // no-warning
-
- using namespace MyNameSpace;
-
- open("Hi", 2, 3, 4); // no-warning
-
- int fd;
- int mode = 0x0;
- fd = ::open(path, O_RDONLY, mode, NULL); // expected-warning{{Call to 'open' with more than 3 arguments}}
- if (fd > -1)
- close(fd);
-}
-
-class MyClass {
-public:
- static int open(const char *a, int b, int c, int d);
-
- int open(int a, int, int c, int d);
-};
-
-void class_qualified_open() {
- MyClass::open("Hi", 2, 3, 4); // no-warning
-
- MyClass mc;
- mc.open(1, 2, 3, 4); // no-warning
-}
diff --git a/test/Analysis/unix-fns.c b/test/Analysis/unix-fns.c
deleted file mode 100644
index 96e5d1d44537..000000000000
--- a/test/Analysis/unix-fns.c
+++ /dev/null
@@ -1,248 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,unix.API,osx.API,optin.portability %s -analyzer-store=region -analyzer-output=plist -analyzer-config faux-bodies=true -fblocks -verify -o %t.plist
-// RUN: cat %t.plist | %diff_plist %S/Inputs/expected-plists/unix-fns.c.plist -
-// RUN: mkdir -p %t.dir
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.API,osx.API,optin.portability -analyzer-output=html -analyzer-config faux-bodies=true -fblocks -o %t.dir %s
-// RUN: rm -fR %t.dir
-
-
-struct _opaque_pthread_once_t {
- long __sig;
- char __opaque[8];
-};
-typedef struct _opaque_pthread_once_t __darwin_pthread_once_t;
-typedef __darwin_pthread_once_t pthread_once_t;
-int pthread_once(pthread_once_t *, void (*)(void));
-typedef long unsigned int __darwin_size_t;
-typedef __darwin_size_t size_t;
-void *calloc(size_t, size_t);
-void *malloc(size_t);
-void *realloc(void *, size_t);
-void *reallocf(void *, size_t);
-void *alloca(size_t);
-void *valloc(size_t);
-typedef union {
- struct _os_object_s *_os_obj;
- struct dispatch_object_s *_do;
- struct dispatch_continuation_s *_dc;
- struct dispatch_queue_s *_dq;
- struct dispatch_queue_attr_s *_dqa;
- struct dispatch_group_s *_dg;
- struct dispatch_source_s *_ds;
- struct dispatch_source_attr_s *_dsa;
- struct dispatch_semaphore_s *_dsema;
- struct dispatch_data_s *_ddata;
- struct dispatch_io_s *_dchannel;
- struct dispatch_operation_s *_doperation;
- struct dispatch_disk_s *_ddisk;
-} dispatch_object_t __attribute__((__transparent_union__));
-typedef void (^dispatch_block_t)(void);
-typedef struct dispatch_queue_s *dispatch_queue_t;
-void dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);
-
-typedef long dispatch_once_t;
-
-extern
-__attribute__((__nonnull__))
-__attribute__((__nothrow__))
-void dispatch_once(dispatch_once_t *predicate,
- __attribute__((__noescape__)) dispatch_block_t block);
-
-// Inlined fast-path dispatch_once defers to the real dispatch_once
-// on the slow path.
-static
-__inline__
-__attribute__((__always_inline__))
-__attribute__((__nonnull__))
-__attribute__((__nothrow__))
-void _dispatch_once(dispatch_once_t *predicate,
- __attribute__((__noescape__)) dispatch_block_t block)
-{
- if (__builtin_expect((*predicate), (~0l)) != ~0l) {
- dispatch_once(predicate, block);
- } else {
- __asm__ __volatile__("" ::: "memory");
- }
- __builtin_assume(*predicate == ~0l);
-}
-
-// Macro so that user calls to dispatch_once() call the inlined fast-path
-// variant.
-#undef dispatch_once
-#define dispatch_once _dispatch_once
-
-#ifndef O_CREAT
-#define O_CREAT 0x0200
-#define O_RDONLY 0x0000
-#endif
-int open(const char *, int, ...);
-int openat(int, const char *, int, ...);
-int close(int fildes);
-
-void test_open(const char *path) {
- int fd;
- fd = open(path, O_RDONLY); // no-warning
- if (!fd)
- close(fd);
-
- fd = open(path, O_CREAT); // expected-warning{{Call to 'open' requires a 3rd argument when the 'O_CREAT' flag is set}}
- if (!fd)
- close(fd);
-}
-
-void test_open_at(int directory_fd, const char *relative_path) {
- int fd;
- fd = openat(directory_fd, relative_path, O_RDONLY); // no-warning
- if (!fd)
- close(fd);
-
- fd = openat(directory_fd, relative_path, O_CREAT); // expected-warning{{Call to 'openat' requires a 4th argument when the 'O_CREAT' flag is set}}
- if (!fd)
- close(fd);
-}
-
-void test_dispatch_once() {
- dispatch_once_t pred = 0;
- do { if (__builtin_expect(*(&pred), ~0l) != ~0l) dispatch_once((&pred), (^() {})); } while (0); // expected-warning{{Call to 'dispatch_once' uses the local variable 'pred' for the predicate value}}
-}
-void test_dispatch_once_neg() {
- static dispatch_once_t pred = 0;
- do { if (__builtin_expect(*(&pred), ~0l) != ~0l) dispatch_once((&pred), (^() {})); } while (0); // no-warning
-}
-
-void test_pthread_once_aux();
-
-void test_pthread_once() {
- pthread_once_t pred = {0x30B1BCBA, {0}};
- pthread_once(&pred, test_pthread_once_aux); // expected-warning{{Call to 'pthread_once' uses the local variable 'pred' for the "control" value}}
-}
-void test_pthread_once_neg() {
- static pthread_once_t pred = {0x30B1BCBA, {0}};
- pthread_once(&pred, test_pthread_once_aux); // no-warning
-}
-
-// PR 2899 - warn of zero-sized allocations to malloc().
-void pr2899() {
- char* foo = malloc(0); // expected-warning{{Call to 'malloc' has an allocation size of 0 bytes}}
- for (unsigned i = 0; i < 100; i++) {
- foo[i] = 0;
- }
-}
-void pr2899_nowarn(size_t size) {
- char* foo = malloc(size); // no-warning
- for (unsigned i = 0; i < 100; i++) {
- foo[i] = 0;
- }
-}
-void test_calloc(void) {
- char *foo = calloc(0, 42); // expected-warning{{Call to 'calloc' has an allocation size of 0 bytes}}
- for (unsigned i = 0; i < 100; i++) {
- foo[i] = 0;
- }
-}
-void test_calloc2(void) {
- char *foo = calloc(42, 0); // expected-warning{{Call to 'calloc' has an allocation size of 0 bytes}}
- for (unsigned i = 0; i < 100; i++) {
- foo[i] = 0;
- }
-}
-void test_calloc_nowarn(size_t nmemb, size_t size) {
- char *foo = calloc(nmemb, size); // no-warning
- for (unsigned i = 0; i < 100; i++) {
- foo[i] = 0;
- }
-}
-void test_realloc(char *ptr) {
- char *foo = realloc(ptr, 0); // expected-warning{{Call to 'realloc' has an allocation size of 0 bytes}}
- for (unsigned i = 0; i < 100; i++) {
- foo[i] = 0;
- }
-}
-void test_reallocf(char *ptr) {
- char *foo = reallocf(ptr, 0); // expected-warning{{Call to 'reallocf' has an allocation size of 0 bytes}}
- for (unsigned i = 0; i < 100; i++) {
- foo[i] = 0;
- }
-}
-void test_realloc_nowarn(char *ptr, size_t size) {
- char *foo = realloc(ptr, size); // no-warning
- for (unsigned i = 0; i < 100; i++) {
- foo[i] = 0;
- }
-}
-void test_reallocf_nowarn(char *ptr, size_t size) {
- char *foo = reallocf(ptr, size); // no-warning
- for (unsigned i = 0; i < 100; i++) {
- foo[i] = 0;
- }
-}
-void test_alloca() {
- char *foo = alloca(0); // expected-warning{{Call to 'alloca' has an allocation size of 0 bytes}}
- for(unsigned i = 0; i < 100; i++) {
- foo[i] = 0;
- }
-}
-void test_alloca_nowarn(size_t sz) {
- char *foo = alloca(sz); // no-warning
- for(unsigned i = 0; i < 100; i++) {
- foo[i] = 0;
- }
-}
-void test_builtin_alloca() {
- char *foo2 = __builtin_alloca(0); // expected-warning{{Call to 'alloca' has an allocation size of 0 bytes}}
- for(unsigned i = 0; i < 100; i++) {
- foo2[i] = 0;
- }
-}
-void test_builtin_alloca_nowarn(size_t sz) {
- char *foo2 = __builtin_alloca(sz); // no-warning
- for(unsigned i = 0; i < 100; i++) {
- foo2[i] = 0;
- }
-}
-void test_valloc() {
- char *foo = valloc(0); // expected-warning{{Call to 'valloc' has an allocation size of 0 bytes}}
- for(unsigned i = 0; i < 100; i++) {
- foo[i] = 0;
- }
-}
-void test_valloc_nowarn(size_t sz) {
- char *foo = valloc(sz); // no-warning
- for(unsigned i = 0; i < 100; i++) {
- foo[i] = 0;
- }
-}
-
-void test_dispatch_once_in_macro() {
- dispatch_once_t pred = 0;
- dispatch_once(&pred, ^(){}); // expected-warning {{Call to 'dispatch_once' uses the local variable 'pred' for the predicate value}}
-}
-
-// Test inlining of dispatch_sync.
-void test_dispatch_sync(dispatch_queue_t queue, int *q) {
- int *p = 0;
- dispatch_sync(queue, ^(void){
- if (q) {
- *p = 1; // expected-warning {{null pointer}}
- }
- });
-}
-
-// Test inlining of dispatch_once.
-void test_inline_dispatch_once() {
- static dispatch_once_t pred;
- int *p = 0;
- dispatch_once(&pred, ^(void) {
- *p = 1; // expected-warning {{null}}
- });
-}
-
-// Make sure code after call to dispatch once is reached.
-void test_inline_dispatch_once_reachable() {
- static dispatch_once_t pred;
- __block int *p;
- dispatch_once(&pred, ^(void) {
- p = 0;
- });
-
- *p = 7; // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}
-}
diff --git a/test/Analysis/unreachable-code-path.c b/test/Analysis/unreachable-code-path.c
deleted file mode 100644
index 95cc4eab50db..000000000000
--- a/test/Analysis/unreachable-code-path.c
+++ /dev/null
@@ -1,226 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,deadcode.DeadStores,alpha.deadcode.UnreachableCode -verify -analyzer-opt-analyze-nested-blocks -Wno-unused-value %s
-
-extern void foo(int a);
-
-// The first few tests are non-path specific - we should be able to find them
-
-void test(unsigned a) {
- switch (a) {
- a += 5; // expected-warning{{never executed}}
- case 2:
- a *= 10;
- case 3:
- a %= 2;
- }
- foo(a);
-}
-
-void test2(unsigned a) {
- help:
- if (a > 0)
- return;
- if (a == 0)
- return;
- foo(a); // expected-warning{{never executed}}
- goto help;
-}
-
-void test3(unsigned a) {
- while(1);
- if (a > 5) { // expected-warning{{never executed}}
- return;
- }
-}
-
-// These next tests are path-sensitive
-
-void test4() {
- int a = 5;
-
- while (a > 1)
- a -= 2;
-
- if (a > 1) {
- a = a + 56; // expected-warning{{never executed}}
- }
-
- foo(a);
-}
-
-extern void bar(char c);
-
-void test5(const char *c) {
- foo(c[0]);
-
- if (!c) {
- bar(1); // expected-warning{{never executed}}
- }
-}
-
-// These next tests are false positives and should not generate warnings
-
-void test6(const char *c) {
- if (c) return;
- if (!c) return;
- __builtin_unreachable(); // no-warning
- __builtin_assume(0); // no-warning
-}
-
-// Compile-time constant false positives
-#define CONSTANT 0
-enum test_enum { Off, On };
-void test7() {
- if (CONSTANT)
- return; // no-warning
-
- if (sizeof(int))
- return; // no-warning
-
- if (Off)
- return; // no-warning
-}
-
-void test8() {
- static unsigned a = 0;
-
- if (a)
- a = 123; // no-warning
-
- a = 5;
-}
-
-// Check for bugs where multiple statements are reported
-void test9(unsigned a) {
- switch (a) {
- if (a) // expected-warning{{never executed}}
- foo(a + 5); // no-warning
- else // no-warning
- foo(a); // no-warning
- case 1:
- case 2:
- break;
- default:
- break;
- }
-}
-
-// Tests from flow-sensitive version
-void test10() {
- goto c;
- d:
- goto e; // expected-warning {{never executed}}
- c: ;
- int i;
- return;
- goto b; // expected-warning {{never executed}}
- goto a; // expected-warning {{never executed}}
- b:
- i = 1; // no-warning
- a:
- i = 2; // no-warning
- goto f;
- e:
- goto d;
- f: ;
-}
-
-// test11: we can actually end up in the default case, even if it is not
-// obvious: there might be something wrong with the given argument.
-enum foobar { FOO, BAR };
-extern void error();
-void test11(enum foobar fb) {
- switch (fb) {
- case FOO:
- break;
- case BAR:
- break;
- default:
- error(); // no-warning
- return;
- error(); // expected-warning {{never executed}}
- }
-}
-
-void inlined(int condition) {
- if (condition) {
- foo(5); // no-warning
- } else {
- foo(6);
- }
-}
-
-void testInlined() {
- extern int coin();
- int cond = coin();
- if (!cond) {
- inlined(0);
- if (cond) {
- foo(5); // expected-warning {{never executed}}
- }
- }
-}
-
-// Don't warn about unreachable VarDecl.
-void dostuff(int*A);
-void varDecl1(int X) {
- switch (X) {
- int A; // No warning here.
- case 1:
- dostuff(&A);
- break;
- case 2:
- dostuff(&A);
- break;
- }
-}
-void varDecl2(int X) {
- switch (X) {
- int A=1; // expected-warning {{never executed}}
- case 1:
- dostuff(&A);
- break;
- case 2:
- dostuff(&A);
- break;
- }
-}
-
-// Ensure that ExplodedGraph and unoptimized CFG match.
-void test12(int x) {
- switch (x) {
- case 1:
- break; // not unreachable
- case 2:
- do { } while (0);
- break;
- }
-}
-
-// Don't merge return nodes in ExplodedGraph unless they are same.
-extern int table[];
-static int inlineFunction(const int i) {
- if (table[i] != 0)
- return 1;
- return 0;
-}
-void test13(int i) {
- int x = inlineFunction(i);
- x && x < 10; // no-warning
-}
-
-// Don't warn in a macro
-#define RETURN(X) do { return; } while (0)
-void macro(void) {
- RETURN(1); // no-warning
-}
-
-// Avoid FP when macro argument is known
-void writeSomething(int *x);
-#define MACRO(C) \
- if (!C) { \
- static int x; \
- writeSomething(&x); \
- }
-void macro2(void) {
- MACRO(1);
-}
diff --git a/test/Analysis/unsupported-types.c b/test/Analysis/unsupported-types.c
deleted file mode 100644
index 9233095e4211..000000000000
--- a/test/Analysis/unsupported-types.c
+++ /dev/null
@@ -1,31 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -triple x86_64-unknown-linux -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -triple powerpc64-linux-gnu -verify %s
-
-#define _Complex_I (__extension__ 1.0iF)
-
-void clang_analyzer_eval(int);
-
-void complex_float(double _Complex x, double _Complex y) {
- clang_analyzer_eval(x == y); // expected-warning{{UNKNOWN}}
- if (x != 1.0 + 3.0 * _Complex_I && y != 1.0 - 4.0 * _Complex_I)
- return
- clang_analyzer_eval(x == y); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(x + y == 2.0 - 1.0 * _Complex_I); // expected-warning{{UNKNOWN}}
-}
-
-void complex_int(int _Complex x, int _Complex y) {
- clang_analyzer_eval(x == y); // expected-warning{{UNKNOWN}}
- if (x != 1.0 + 3.0 * _Complex_I && y != 1.0 - 4.0 * _Complex_I)
- return
- clang_analyzer_eval(x == y); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(x + y == 2.0 - 1.0 * _Complex_I); // expected-warning{{UNKNOWN}}
-}
-
-void longdouble_float(long double x, long double y) {
- clang_analyzer_eval(x == y); // expected-warning{{UNKNOWN}}
- if (x != 0.0L && y != 1.0L)
- return
- clang_analyzer_eval(x == y); // expected-warning{{UNKNOWN}}
- clang_analyzer_eval(x + y == 1.0L); // expected-warning{{UNKNOWN}}
-}
diff --git a/test/Analysis/unused-ivars.m b/test/Analysis/unused-ivars.m
deleted file mode 100644
index 8f12d9b18a7d..000000000000
--- a/test/Analysis/unused-ivars.m
+++ /dev/null
@@ -1,131 +0,0 @@
-// RUN: %clang_analyze_cc1 -fblocks -analyzer-checker=osx.cocoa.UnusedIvars -verify -Wno-objc-root-class %s
-
-//===--- BEGIN: Delta-debugging reduced headers. --------------------------===//
-
-@protocol NSObject
-- (id)retain;
-- (oneway void)release;
-@end
-@interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
-@end
-
-//===--- END: Delta-debugging reduced headers. ----------------------------===//
-
-// This test case tests the basic functionality of the unused ivar test.
-@interface TestA {
-@private
- int x; // expected-warning {{Instance variable 'x' in class 'TestA' is never used}}
-}
-@end
-@implementation TestA @end
-
-// This test case tests whether the unused ivar check handles blocks that
-// reference an instance variable. (<rdar://problem/7075531>)
-@interface TestB : NSObject {
-@private
- id _ivar; // no-warning
-}
-@property (readwrite,retain) id ivar;
-@end
-
-@implementation TestB
-- (id)ivar {
- __attribute__((__blocks__(byref))) id value = ((void*)0);
- void (^b)() = ^{ value = _ivar; };
- b();
- return value;
-}
-
-- (void)setIvar:(id)newValue {
- void (^b)() = ^{ [_ivar release]; _ivar = [newValue retain]; };
- b();
-}
-@end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6260004> Detect that ivar is in use, if used in category
-// in the same file as the implementation
-//===----------------------------------------------------------------------===//
-
-@protocol Protocol6260004
-- (id) getId;
-@end
-
-@interface RDar6260004 {
-@private
- id x; // no-warning
-}
-@end
-@implementation RDar6260004 @end
-@implementation RDar6260004 (Protocol6260004)
-- (id) getId {
- return x;
-}
-@end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7254495> - ivars referenced by lexically nested functions
-// should not be flagged as unused
-//===----------------------------------------------------------------------===//
-
-@interface RDar7254495 {
-@private
- int x; // no-warning
-}
-@end
-
-@implementation RDar7254495
-int radar_7254495(RDar7254495 *a) {
- return a->x;
-}
-@end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7353683> - consult attribute((unused)) to silence warnings
-// about unused instance variables
-//===----------------------------------------------------------------------===//
-
-@interface RDar7353683 {
-@private
- id x __attribute__((unused));
-}
-@end
-
-@implementation RDar7353683
-@end
-//===----------------------------------------------------------------------===//
-// <rdar://problem/8481311> Unused bitfield ivars trigger cause weird
-// diagnostic: "Instance variable '' in class..."
-//===----------------------------------------------------------------------===//
-
-@interface RDar8481311 {
-@private
- unsigned bitfield:1; // expected-warning {{Instance variable 'bitfield' in class 'RDar8481311' is never used}}
-}
-@end
-
-@implementation RDar8481311
-@end
-
-@class NSString;
-@interface Radar11059352_1 {
-@private
- NSString *_pathString;
-}
-@property (readonly, strong) NSString *pathString;
-@end
-
-@interface Radar11059352 {
-@private
-Radar11059352_1 *_workspacePath;
-}
-@end
-
-@implementation Radar11059352
-
-- (void)useWorkspace {
- NSString *workspacePathString = _workspacePath.pathString;
-}
-@end \ No newline at end of file
diff --git a/test/Analysis/use-after-move.cpp b/test/Analysis/use-after-move.cpp
deleted file mode 100644
index 280724512f8a..000000000000
--- a/test/Analysis/use-after-move.cpp
+++ /dev/null
@@ -1,1139 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=cplusplus.Move -verify %s\
-// RUN: -std=c++11 -analyzer-output=text -analyzer-config eagerly-assume=false\
-// RUN: -analyzer-config exploration_strategy=unexplored_first_queue\
-// RUN: -analyzer-checker debug.ExprInspection
-// RUN: %clang_analyze_cc1 -analyzer-checker=cplusplus.Move -verify %s\
-// RUN: -std=c++11 -analyzer-output=text -analyzer-config eagerly-assume=false\
-// RUN: -analyzer-config exploration_strategy=dfs -DDFS=1\
-// RUN: -analyzer-checker debug.ExprInspection
-// RUN: %clang_analyze_cc1 -analyzer-checker=cplusplus.Move -verify %s\
-// RUN: -std=c++11 -analyzer-output=text -analyzer-config eagerly-assume=false\
-// RUN: -analyzer-config exploration_strategy=unexplored_first_queue\
-// RUN: -analyzer-config cplusplus.Move:WarnOn=KnownsOnly -DPEACEFUL\
-// RUN: -analyzer-checker debug.ExprInspection
-// RUN: %clang_analyze_cc1 -analyzer-checker=cplusplus.Move -verify %s\
-// RUN: -std=c++11 -analyzer-output=text -analyzer-config eagerly-assume=false\
-// RUN: -analyzer-config exploration_strategy=dfs -DDFS=1\
-// RUN: -analyzer-config cplusplus.Move:WarnOn=KnownsOnly -DPEACEFUL\
-// RUN: -analyzer-checker debug.ExprInspection
-// RUN: %clang_analyze_cc1 -analyzer-checker=cplusplus.Move -verify %s\
-// RUN: -std=c++11 -analyzer-output=text -analyzer-config eagerly-assume=false\
-// RUN: -analyzer-config exploration_strategy=unexplored_first_queue\
-// RUN: -analyzer-config cplusplus.Move:WarnOn=All -DAGGRESSIVE\
-// RUN: -analyzer-checker debug.ExprInspection
-// RUN: %clang_analyze_cc1 -analyzer-checker=cplusplus.Move -verify %s\
-// RUN: -std=c++11 -analyzer-output=text -analyzer-config eagerly-assume=false\
-// RUN: -analyzer-config exploration_strategy=dfs -DDFS=1\
-// RUN: -analyzer-config cplusplus.Move:WarnOn=All -DAGGRESSIVE\
-// RUN: -analyzer-checker debug.ExprInspection
-
-#include "Inputs/system-header-simulator-cxx.h"
-
-void clang_analyzer_warnIfReached();
-
-class B {
-public:
- B() = default;
- B(const B &) = default;
- B(B &&) = default;
- B& operator=(const B &q) = default;
- void operator=(B &&b) {
- return;
- }
- void foo() { return; }
-};
-
-class A {
- int i;
- double d;
-
-public:
- B b;
- A(int ii = 42, double dd = 1.0) : d(dd), i(ii), b(B()) {}
- void moveconstruct(A &&other) {
- std::swap(b, other.b);
- std::swap(d, other.d);
- std::swap(i, other.i);
- return;
- }
- static A get() {
- A v(12, 13);
- return v;
- }
- A(A *a) {
- moveconstruct(std::move(*a));
- }
- A(const A &other) : i(other.i), d(other.d), b(other.b) {}
- A(A &&other) : i(other.i), d(other.d), b(std::move(other.b)) {
-#ifdef AGGRESSIVE
- // expected-note@-2{{Object 'b' is moved}}
-#endif
- }
- A(A &&other, char *k) {
- moveconstruct(std::move(other));
- }
- void operator=(const A &other) {
- i = other.i;
- d = other.d;
- b = other.b;
- return;
- }
- void operator=(A &&other) {
- moveconstruct(std::move(other));
- return;
- }
- int getI() { return i; }
- int foo() const;
- void bar() const;
- void reset();
- void destroy();
- void clear();
- void resize(std::size_t);
- bool empty() const;
- bool isEmpty() const;
- operator bool() const;
-
- void testUpdateField() {
- A a;
- A b = std::move(a);
- a.i = 1;
- a.foo(); // no-warning
- }
- void testUpdateFieldDouble() {
- A a;
- A b = std::move(a);
- a.d = 1.0;
- a.foo(); // no-warning
- }
-};
-
-int bignum();
-
-void moveInsideFunctionCall(A a) {
- A b = std::move(a);
-}
-void leftRefCall(A &a) {
- a.foo();
-}
-void rightRefCall(A &&a) {
- a.foo();
-}
-void constCopyOrMoveCall(const A a) {
- a.foo();
-}
-
-void copyOrMoveCall(A a) {
- a.foo();
-}
-
-void simpleMoveCtorTest() {
- {
- A a;
- A b = std::move(a);
- a.foo();
-#ifndef PEACEFUL
- // expected-note@-3 {{Object 'a' is moved}}
- // expected-warning@-3 {{Method called on moved-from object 'a'}}
- // expected-note@-4 {{Method called on moved-from object 'a'}}
-#endif
- }
- {
- A a;
- A b = std::move(a);
- b = a;
-#ifndef PEACEFUL
- // expected-note@-3 {{Object 'a' is moved}}
- // expected-warning@-3 {{Moved-from object 'a' is copied}}
- // expected-note@-4 {{Moved-from object 'a' is copied}}
-#endif
- }
- {
- A a;
- A b = std::move(a);
- b = std::move(a);
-#ifndef PEACEFUL
- // expected-note@-3 {{Object 'a' is moved}}
- // expected-warning@-3 {{Moved-from object 'a' is moved}}
- // expected-note@-4 {{Moved-from object 'a' is moved}}
-#endif
- }
-}
-
-void simpleMoveAssignementTest() {
- {
- A a;
- A b;
- b = std::move(a);
- a.foo();
-#ifndef PEACEFUL
- // expected-note@-3 {{Object 'a' is moved}}
- // expected-warning@-3 {{Method called on moved-from object 'a'}}
- // expected-note@-4 {{Method called on moved-from object 'a'}}
-#endif
- }
- {
- A a;
- A b;
- b = std::move(a);
- A c(a);
-#ifndef PEACEFUL
- // expected-note@-3 {{Object 'a' is moved}}
- // expected-warning@-3 {{Moved-from object 'a' is copied}}
- // expected-note@-4 {{Moved-from object 'a' is copied}}
-#endif
- }
- {
- A a;
- A b;
- b = std::move(a);
- A c(std::move(a));
-#ifndef PEACEFUL
- // expected-note@-3 {{Object 'a' is moved}}
- // expected-warning@-3 {{Moved-from object 'a' is moved}}
- // expected-note@-4 {{Moved-from object 'a' is moved}}
-#endif
- }
-}
-
-void moveInInitListTest() {
- struct S {
- A a;
- };
- A a;
- S s{std::move(a)};
- a.foo();
-#ifndef PEACEFUL
- // expected-note@-3 {{Object 'a' is moved}}
- // expected-warning@-3 {{Method called on moved-from object 'a'}}
- // expected-note@-4 {{Method called on moved-from object 'a'}}
-#endif
-}
-
-// Don't report a bug if the variable was assigned to in the meantime.
-void reinitializationTest(int i) {
- {
- A a;
- A b;
- b = std::move(a);
- a = A();
- a.foo();
- }
- {
- A a;
- if (i == 1) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Assuming 'i' is not equal to 1}}
- // expected-note@-3 {{Taking false branch}}
- // And the other report:
- // expected-note@-5 {{Assuming 'i' is not equal to 1}}
- // expected-note@-6 {{Taking false branch}}
-#endif
- A b;
- b = std::move(a);
- a = A();
- }
- if (i == 2) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Assuming 'i' is not equal to 2}}
- // expected-note@-3 {{Taking false branch}}
- // And the other report:
- // expected-note@-5 {{Assuming 'i' is not equal to 2}}
- // expected-note@-6 {{Taking false branch}}
-#endif
- a.foo(); // no-warning
- }
- }
- {
- A a;
- if (i == 1) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Taking false branch}}
- // expected-note@-3 {{Taking false branch}}
-#endif
- std::move(a);
- }
- if (i == 2) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Taking false branch}}
- // expected-note@-3 {{Taking false branch}}
-#endif
- a = A();
- a.foo();
- }
- }
- // The built-in assignment operator should also be recognized as a
- // reinitialization. (std::move() may be called on built-in types in template
- // code.)
- {
- int a1 = 1, a2 = 2;
- std::swap(a1, a2);
- }
- // A std::move() after the assignment makes the variable invalid again.
- {
- A a;
- A b;
- b = std::move(a);
- a = A();
- b = std::move(a);
- a.foo();
-#ifndef PEACEFUL
- // expected-note@-3 {{Object 'a' is moved}}
- // expected-warning@-3 {{Method called on moved-from object 'a'}}
- // expected-note@-4 {{Method called on moved-from object 'a'}}
-#endif
- }
- // If a path exist where we not reinitialize the variable we report a bug.
- {
- A a;
- A b;
- b = std::move(a);
-#ifndef PEACEFUL
- // expected-note@-2 {{Object 'a' is moved}}
-#endif
- if (i < 10) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Assuming 'i' is >= 10}}
- // expected-note@-3 {{Taking false branch}}
-#endif
- a = A();
- }
- if (i > 5) {
- a.foo();
-#ifndef PEACEFUL
- // expected-note@-3 {{Taking true branch}}
- // expected-warning@-3 {{Method called on moved-from object 'a'}}
- // expected-note@-4 {{Method called on moved-from object 'a'}}
-#endif
- }
- }
-}
-
-// Using decltype on an expression is not a use.
-void decltypeIsNotUseTest() {
- A a;
- // A b(std::move(a));
- decltype(a) other_a; // no-warning
-}
-
-void loopTest() {
- {
- A a;
- for (int i = 0; i < bignum(); i++) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Loop condition is false. Execution jumps to the end of the function}}
-#endif
- rightRefCall(std::move(a)); // no-warning
- }
- }
- {
- A a;
- for (int i = 0; i < 2; i++) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Loop condition is true. Entering loop body}}
- // expected-note@-3 {{Loop condition is true. Entering loop body}}
- // expected-note@-4 {{Loop condition is false. Execution jumps to the end of the function}}
-#endif
- rightRefCall(std::move(a)); // no-warning
- }
- }
- {
- A a;
- for (int i = 0; i < bignum(); i++) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Loop condition is false. Execution jumps to the end of the function}}
-#endif
- leftRefCall(a); // no-warning
- }
- }
- {
- A a;
- for (int i = 0; i < 2; i++) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Loop condition is true. Entering loop body}}
- // expected-note@-3 {{Loop condition is true. Entering loop body}}
- // expected-note@-4 {{Loop condition is false. Execution jumps to the end of the function}}
-#endif
- leftRefCall(a); // no-warning
- }
- }
- {
- A a;
- for (int i = 0; i < bignum(); i++) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Loop condition is false. Execution jumps to the end of the function}}
-#endif
- constCopyOrMoveCall(a); // no-warning
- }
- }
- {
- A a;
- for (int i = 0; i < 2; i++) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Loop condition is true. Entering loop body}}
- // expected-note@-3 {{Loop condition is true. Entering loop body}}
- // expected-note@-4 {{Loop condition is false. Execution jumps to the end of the function}}
-#endif
- constCopyOrMoveCall(a); // no-warning
- }
- }
- {
- A a;
- for (int i = 0; i < bignum(); i++) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Loop condition is false. Execution jumps to the end of the function}}
-#endif
- moveInsideFunctionCall(a); // no-warning
- }
- }
- {
- A a;
- for (int i = 0; i < 2; i++) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Loop condition is true. Entering loop body}}
- // expected-note@-3 {{Loop condition is true. Entering loop body}}
- // expected-note@-4 {{Loop condition is false. Execution jumps to the end of the function}}
-#endif
- moveInsideFunctionCall(a); // no-warning
- }
- }
- {
- A a;
- for (int i = 0; i < bignum(); i++) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Loop condition is false. Execution jumps to the end of the function}}
-#endif
- copyOrMoveCall(a); // no-warning
- }
- }
- {
- A a;
- for (int i = 0; i < 2; i++) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Loop condition is true. Entering loop body}}
- // expected-note@-3 {{Loop condition is true. Entering loop body}}
- // expected-note@-4 {{Loop condition is false. Execution jumps to the end of the function}}
-#endif
- copyOrMoveCall(a); // no-warning
- }
- }
- {
- A a;
- for (int i = 0; i < bignum(); i++) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Loop condition is true. Entering loop body}}
- // expected-note@-3 {{Loop condition is true. Entering loop body}}
-#endif
- constCopyOrMoveCall(std::move(a));
-#ifndef PEACEFUL
- // expected-note@-2 {{Object 'a' is moved}}
- // expected-warning@-3 {{Moved-from object 'a' is moved}}
- // expected-note@-4 {{Moved-from object 'a' is moved}}
-#endif
- }
- }
-
- // Don't warn if we return after the move.
- {
- A a;
- for (int i = 0; i < 3; ++i) {
- a.bar();
- if (a.foo() > 0) {
- A b;
- b = std::move(a); // no-warning
- return;
- }
- }
- }
-}
-
-// Report a usage of a moved-from object only at the first use.
-void uniqueTest(bool cond) {
- A a(42, 42.0);
- A b;
- b = std::move(a);
-
- if (cond) {
- a.foo();
-#ifndef PEACEFUL
- // expected-note@-5 {{Object 'a' is moved}}
- // expected-note@-4 {{Assuming 'cond' is not equal to 0}}
- // expected-note@-5 {{Taking true branch}}
- // expected-warning@-5 {{Method called on moved-from object 'a'}}
- // expected-note@-6 {{Method called on moved-from object 'a'}}
-#endif
- }
- if (cond) {
- a.bar(); // no-warning
- }
-
- a.bar(); // no-warning
-}
-
-void uniqueTest2() {
- A a;
- A a1 = std::move(a);
- a.foo();
-#ifndef PEACEFUL
- // expected-note@-3 {{Object 'a' is moved}}
- // expected-warning@-3 {{Method called on moved-from object 'a'}}
- // expected-note@-4 {{Method called on moved-from object 'a'}}
-#endif
-
- A a2 = std::move(a); // no-warning
- a.foo(); // no-warning
-}
-
-// There are exceptions where we assume in general that the method works fine
-//even on moved-from objects.
-void moveSafeFunctionsTest() {
- A a;
- A b = std::move(a);
-#ifndef PEACEFUL
- // expected-note@-2 {{Object 'a' is moved}}
-#endif
- a.empty(); // no-warning
- a.isEmpty(); // no-warning
- (void)a; // no-warning
- (bool)a; // expected-warning {{expression result unused}}
- a.foo();
-#ifndef PEACEFUL
- // expected-warning@-2 {{Method called on moved-from object 'a'}}
- // expected-note@-3 {{Method called on moved-from object 'a'}}
-#endif
-}
-
-void moveStateResetFunctionsTest() {
- {
- A a;
- A b = std::move(a);
- a.reset(); // no-warning
- a.foo(); // no-warning
- // Test if resets the state of subregions as well.
- a.b.foo(); // no-warning
- }
- {
- A a;
- A b = std::move(a);
- a.destroy(); // no-warning
- a.foo(); // no-warning
- }
- {
- A a;
- A b = std::move(a);
- a.clear(); // no-warning
- a.foo(); // no-warning
- a.b.foo(); // no-warning
- }
- {
- A a;
- A b = std::move(a);
- a.resize(0); // no-warning
- a.foo(); // no-warning
- a.b.foo(); // no-warning
- }
-}
-
-// Moves or uses that occur as part of template arguments.
-template <int>
-class ClassTemplate {
-public:
- void foo(A a);
-};
-
-template <int>
-void functionTemplate(A a);
-
-void templateArgIsNotUseTest() {
- {
- // A pattern like this occurs in the EXPECT_EQ and ASSERT_EQ macros in
- // Google Test.
- A a;
- ClassTemplate<sizeof(A(std::move(a)))>().foo(std::move(a)); // no-warning
- }
- {
- A a;
- functionTemplate<sizeof(A(std::move(a)))>(std::move(a)); // no-warning
- }
-}
-
-// Moves of global variables are not reported.
-A global_a;
-void globalVariablesTest() {
- std::move(global_a);
- global_a.foo(); // no-warning
-}
-
-// Moves of member variables.
-class memberVariablesTest {
- A a;
- static A static_a;
-
- void f() {
- A b;
- b = std::move(a);
- a.foo();
-#ifdef AGGRESSIVE
- // expected-note@-3{{Object 'a' is moved}}
- // expected-warning@-3 {{Method called on moved-from object 'a'}}
- // expected-note@-4{{Method called on moved-from object 'a'}}
-#endif
-
- b = std::move(static_a);
- static_a.foo();
-#ifdef AGGRESSIVE
- // expected-note@-3{{Object 'static_a' is moved}}
- // expected-warning@-3{{Method called on moved-from object 'static_a'}}
- // expected-note@-4{{Method called on moved-from object 'static_a'}}
-#endif
- }
-};
-
-void PtrAndArrayTest() {
- A *Ptr = new A(1, 1.5);
- A Arr[10];
- Arr[2] = std::move(*Ptr);
- (*Ptr).foo();
-#ifdef AGGRESSIVE
- // expected-note@-3{{Object is moved}}
- // expected-warning@-3{{Method called on moved-from object}}
- // expected-note@-4{{Method called on moved-from object}}
-#endif
-
- Ptr = &Arr[1];
- Arr[3] = std::move(Arr[1]);
- Ptr->foo();
-#ifdef AGGRESSIVE
- // expected-note@-3{{Object is moved}}
- // expected-warning@-3{{Method called on moved-from object}}
- // expected-note@-4{{Method called on moved-from object}}
-#endif
-
- Arr[3] = std::move(Arr[2]);
- Arr[2].foo();
-#ifdef AGGRESSIVE
- // expected-note@-3{{Object is moved}}
- // expected-warning@-3{{Method called on moved-from object}}
- // expected-note@-4{{Method called on moved-from object}}
-#endif
-
- Arr[2] = std::move(Arr[3]); // reinitialization
- Arr[2].foo(); // no-warning
-}
-
-void exclusiveConditionsTest(bool cond) {
- A a;
- if (cond) {
- A b;
- b = std::move(a);
- }
- if (!cond) {
- a.bar(); // no-warning
- }
-}
-
-void differentBranchesTest(int i) {
- // Don't warn if the use is in a different branch from the move.
- {
- A a;
- if (i > 0) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Assuming 'i' is > 0}}
- // expected-note@-3 {{Taking true branch}}
-#endif
- A b;
- b = std::move(a);
- } else {
- a.foo(); // no-warning
- }
- }
- // Same thing, but with a ternary operator.
- {
- A a, b;
- i > 0 ? (void)(b = std::move(a)) : a.bar(); // no-warning
-#ifndef PEACEFUL
- // expected-note@-2 {{'?' condition is true}}
-#endif
- }
- // A variation on the theme above.
- {
- A a;
- a.foo() > 0 ? a.foo() : A(std::move(a)).foo();
-#ifdef DFS
- #ifndef PEACEFUL
- // expected-note@-3 {{Assuming the condition is false}}
- // expected-note@-4 {{'?' condition is false}}
- #endif
-#else
- #ifndef PEACEFUL
- // expected-note@-8 {{Assuming the condition is true}}
- // expected-note@-9 {{'?' condition is true}}
- #endif
-#endif
- }
- // Same thing, but with a switch statement.
- {
- A a, b;
- switch (i) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Control jumps to 'case 1:'}}
-#endif
- case 1:
- b = std::move(a); // no-warning
- break;
-#ifndef PEACEFUL
- // expected-note@-2 {{Execution jumps to the end of the function}}
-#endif
- case 2:
- a.foo(); // no-warning
- break;
- }
- }
- // However, if there's a fallthrough, we do warn.
- {
- A a, b;
- switch (i) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Control jumps to 'case 1:'}}
-#endif
- case 1:
- b = std::move(a);
-#ifndef PEACEFUL
- // expected-note@-2 {{Object 'a' is moved}}
-#endif
- case 2:
- a.foo();
-#ifndef PEACEFUL
- // expected-warning@-2 {{Method called on moved-from object}}
- // expected-note@-3 {{Method called on moved-from object 'a'}}
-#endif
- break;
- }
- }
-}
-
-void tempTest() {
- A a = A::get();
- A::get().foo(); // no-warning
- for (int i = 0; i < bignum(); i++) {
- A::get().foo(); // no-warning
- }
-}
-
-void interFunTest1(A &a) {
- a.bar();
-#ifndef PEACEFUL
- // expected-warning@-2 {{Method called on moved-from object 'a'}}
- // expected-note@-3 {{Method called on moved-from object 'a'}}
-#endif
-}
-
-void interFunTest2() {
- A a;
- A b;
- b = std::move(a);
- interFunTest1(a);
-#ifndef PEACEFUL
- // expected-note@-3 {{Object 'a' is moved}}
- // expected-note@-3 {{Calling 'interFunTest1'}}
-#endif
-}
-
-void foobar(A a, int i);
-void foobar(int i, A a);
-
-void paramEvaluateOrderTest() {
- A a;
- foobar(std::move(a), a.getI());
-#ifndef PEACEFUL
- // expected-note@-2 {{Object 'a' is moved}}
- // expected-warning@-3 {{Method called on moved-from object 'a'}}
- // expected-note@-4 {{Method called on moved-from object 'a'}}
-#endif
-
- //FALSE NEGATIVE since parameters evaluate order is undefined
- foobar(a.getI(), std::move(a)); //no-warning
-}
-
-void not_known_pass_by_ref(A &a);
-void not_known_pass_by_const_ref(const A &a);
-void not_known_pass_by_rvalue_ref(A &&a);
-void not_known_pass_by_ptr(A *a);
-void not_known_pass_by_const_ptr(const A *a);
-
-void regionAndPointerEscapeTest() {
- {
- A a;
- A b;
- b = std::move(a);
- not_known_pass_by_ref(a);
- a.foo(); // no-warning
- }
- {
- A a;
- A b;
- b = std::move(a);
- not_known_pass_by_const_ref(a);
- a.foo();
-#ifndef PEACEFUL
- // expected-note@-4{{Object 'a' is moved}}
- // expected-warning@-3{{Method called on moved-from object 'a'}}
- // expected-note@-4 {{Method called on moved-from object 'a'}}
-#endif
- }
- {
- A a;
- A b;
- b = std::move(a);
- not_known_pass_by_rvalue_ref(std::move(a));
- a.foo(); // no-warning
- }
- {
- A a;
- A b;
- b = std::move(a);
- not_known_pass_by_ptr(&a);
- a.foo(); // no-warning
- }
- {
- A a;
- A b;
- b = std::move(a);
- not_known_pass_by_const_ptr(&a);
- a.foo();
-#ifndef PEACEFUL
- // expected-note@-4{{Object 'a' is moved}}
- // expected-warning@-3{{Method called on moved-from object 'a'}}
- // expected-note@-4 {{Method called on moved-from object 'a'}}
-#endif
- }
-}
-
-// A declaration statement containing multiple declarations sequences the
-// initializer expressions.
-void declarationSequenceTest() {
- {
- A a;
- A a1 = a, a2 = std::move(a); // no-warning
- }
- {
- A a;
- A a1 = std::move(a), a2 = a;
-#ifndef PEACEFUL
- // expected-note@-2 {{Object 'a' is moved}}
- // expected-warning@-3 {{Moved-from object 'a' is copied}}
- // expected-note@-4 {{Moved-from object 'a' is copied}}
-#endif
- }
-}
-
-// The logical operators && and || sequence their operands.
-void logicalOperatorsSequenceTest() {
- {
- A a;
- if (a.foo() > 0 && A(std::move(a)).foo() > 0) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Assuming the condition is false}}
- // expected-note@-3 {{Left side of '&&' is false}}
- // expected-note@-4 {{Taking false branch}}
- // And the other report:
- // expected-note@-6 {{Assuming the condition is false}}
- // expected-note@-7 {{Left side of '&&' is false}}
- // expected-note@-8 {{Taking false branch}}
- A().bar();
-#endif
- }
- }
- // A variation: Negate the result of the && (which pushes the && further down
- // into the AST).
- {
- A a;
- if (!(a.foo() > 0 && A(std::move(a)).foo() > 0)) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Assuming the condition is false}}
- // expected-note@-3 {{Left side of '&&' is false}}
- // expected-note@-4 {{Taking true branch}}
- // And the other report:
- // expected-note@-6 {{Assuming the condition is false}}
- // expected-note@-7 {{Left side of '&&' is false}}
- // expected-note@-8 {{Taking true branch}}
-#endif
- A().bar();
- }
- }
- {
- A a;
- if (A(std::move(a)).foo() > 0 && a.foo() > 0) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Object 'a' is moved}}
- // expected-note@-3 {{Assuming the condition is true}}
- // expected-note@-4 {{Left side of '&&' is true}}
- // expected-warning@-5 {{Method called on moved-from object 'a'}}
- // expected-note@-6 {{Method called on moved-from object 'a'}}
- // And the other report:
- // expected-note@-8 {{Assuming the condition is false}}
- // expected-note@-9 {{Left side of '&&' is false}}
- // expected-note@-10{{Taking false branch}}
-#endif
- A().bar();
- }
- }
- {
- A a;
- if (a.foo() > 0 || A(std::move(a)).foo() > 0) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Assuming the condition is true}}
- // expected-note@-3 {{Left side of '||' is true}}
- // expected-note@-4 {{Taking true branch}}
-#endif
- A().bar();
- }
- }
- {
- A a;
- if (A(std::move(a)).foo() > 0 || a.foo() > 0) {
-#ifndef PEACEFUL
- // expected-note@-2 {{Object 'a' is moved}}
- // expected-note@-3 {{Assuming the condition is false}}
- // expected-note@-4 {{Left side of '||' is false}}
- // expected-warning@-5 {{Method called on moved-from object 'a'}}
- // expected-note@-6 {{Method called on moved-from object 'a'}}
-#endif
- A().bar();
- }
- }
-}
-
-// A range-based for sequences the loop variable declaration before the body.
-void forRangeSequencesTest() {
- A v[2] = {A(), A()};
- for (A &a : v) {
- A b;
- b = std::move(a); // no-warning
- }
-}
-
-// If a variable is declared in an if statement, the declaration of the variable
-// (which is treated like a reinitialization by the check) is sequenced before
-// the evaluation of the condition (which constitutes a use).
-void ifStmtSequencesDeclAndConditionTest() {
- for (int i = 0; i < 3; ++i) {
- if (A a = A()) {
- A b;
- b = std::move(a); // no-warning
- }
- }
-}
-
-struct C : public A {
- [[clang::reinitializes]] void reinit();
-};
-
-void subRegionMoveTest() {
- {
- A a;
- B b = std::move(a.b);
- a.b.foo();
-#ifdef AGGRESSIVE
- // expected-note@-3{{Object 'b' is moved}}
- // expected-warning@-3{{Method called on moved-from object 'b'}}
- // expected-note@-4 {{Method called on moved-from object 'b'}}
-#endif
- }
- {
- A a;
- A a1 = std::move(a);
- a.b.foo();
-#ifdef AGGRESSIVE
- // expected-note@-3{{Calling move constructor for 'A'}}
- // expected-note@-4{{Returning from move constructor for 'A'}}
- // expected-warning@-4{{Method called on moved-from object 'b'}}
- // expected-note@-5{{Method called on moved-from object 'b'}}
-#endif
- }
- // Don't report a misuse if any SuperRegion is already reported.
- {
- A a;
- A a1 = std::move(a);
- a.foo();
-#ifndef PEACEFUL
- // expected-note@-3 {{Object 'a' is moved}}
- // expected-warning@-3 {{Method called on moved-from object 'a'}}
- // expected-note@-4 {{Method called on moved-from object 'a'}}
-#endif
- a.b.foo(); // no-warning
- }
- {
- C c;
- C c1 = std::move(c);
- c.foo();
-#ifndef PEACEFUL
- // expected-note@-3 {{Object 'c' is moved}}
- // expected-warning@-3 {{Method called on moved-from object 'c'}}
- // expected-note@-4 {{Method called on moved-from object 'c'}}
-#endif
- c.b.foo(); // no-warning
- }
-}
-
-void resetSuperClass() {
- C c;
- C c1 = std::move(c);
- c.clear();
- C c2 = c; // no-warning
-}
-
-void resetSuperClass2() {
- C c;
- C c1 = std::move(c);
- c.reinit();
- C c2 = c; // no-warning
-}
-
-void reportSuperClass() {
- C c;
- C c1 = std::move(c);
- c.foo();
-#ifndef PEACEFUL
- // expected-note@-3 {{Object 'c' is moved}}
- // expected-warning@-3 {{Method called on moved-from object 'c'}}
- // expected-note@-4 {{Method called on moved-from object 'c'}}
-#endif
- C c2 = c; // no-warning
-}
-
-struct Empty {};
-
-Empty inlinedCall() {
- // Used to warn because region 'e' failed to be cleaned up because no symbols
- // have ever died during the analysis and the checkDeadSymbols callback
- // was skipped entirely.
- Empty e{};
- return e; // no-warning
-}
-
-void checkInlinedCallZombies() {
- while (true)
- inlinedCall();
-}
-
-void checkLoopZombies() {
- while (true) {
- Empty e{};
- Empty f = std::move(e); // no-warning
- }
-}
-
-void checkMoreLoopZombies1(bool flag) {
- while (flag) {
- Empty e{};
- if (true)
- e; // expected-warning {{expression result unused}}
- Empty f = std::move(e); // no-warning
- }
-}
-
-bool coin();
-
-void checkMoreLoopZombies2(bool flag) {
- while (flag) {
- Empty e{};
- while (coin())
- e; // expected-warning {{expression result unused}}
- Empty f = std::move(e); // no-warning
- }
-}
-
-void checkMoreLoopZombies3(bool flag) {
- while (flag) {
- Empty e{};
- do
- e; // expected-warning {{expression result unused}}
- while (coin());
- Empty f = std::move(e); // no-warning
- }
-}
-
-void checkMoreLoopZombies4(bool flag) {
- while (flag) {
- Empty e{};
- for (; coin();)
- e; // expected-warning {{expression result unused}}
- Empty f = std::move(e); // no-warning
- }
-}
-
-struct MoveOnlyWithDestructor {
- MoveOnlyWithDestructor();
- ~MoveOnlyWithDestructor();
- MoveOnlyWithDestructor(const MoveOnlyWithDestructor &m) = delete;
- MoveOnlyWithDestructor(MoveOnlyWithDestructor &&m);
-};
-
-MoveOnlyWithDestructor foo() {
- MoveOnlyWithDestructor m;
- return m;
-}
-
-class HasSTLField {
- std::vector<int> V;
- void testVector() {
- // Warn even in non-aggressive mode when it comes to STL, because
- // in STL the object is left in "valid but unspecified state" after move.
- std::vector<int> W = std::move(V); // expected-note{{Object 'V' of type 'std::vector' is left in a valid but unspecified state after move}}
- V.push_back(123); // expected-warning{{Method called on moved-from object 'V'}}
- // expected-note@-1{{Method called on moved-from object 'V'}}
- }
-
- std::unique_ptr<int> P;
- void testUniquePtr() {
- // unique_ptr remains in a well-defined state after move.
- std::unique_ptr<int> Q = std::move(P);
- P.get();
-#ifdef AGGRESSIVE
- // expected-warning@-2{{Method called on moved-from object 'P'}}
- // expected-note@-4{{Object 'P' is moved}}
- // expected-note@-4{{Method called on moved-from object 'P'}}
-#endif
-
- // Because that well-defined state is null, dereference is still UB.
- // Note that in aggressive mode we already warned about 'P',
- // so no extra warning is generated.
- *P += 1;
-#ifndef AGGRESSIVE
- // expected-warning@-2{{Dereference of null smart pointer 'P' of type 'std::unique_ptr'}}
- // expected-note@-14{{Smart pointer 'P' of type 'std::unique_ptr' is reset to null when moved from}}
- // expected-note@-4{{Dereference of null smart pointer 'P' of type 'std::unique_ptr'}}
-#endif
-
- // The program should have crashed by now.
- clang_analyzer_warnIfReached(); // no-warning
- }
-};
-
-void localRValueMove(A &&a) {
- A b = std::move(a);
- a.foo();
-#ifndef PEACEFUL
- // expected-note@-3 {{Object 'a' is moved}}
- // expected-warning@-3 {{Method called on moved-from object 'a'}}
- // expected-note@-4 {{Method called on moved-from object 'a'}}
-#endif
-}
-
-void localUniquePtr(std::unique_ptr<int> P) {
- // Even though unique_ptr is safe to use after move,
- // reusing a local variable this way usually indicates a bug.
- std::unique_ptr<int> Q = std::move(P);
- P.get();
-#ifndef PEACEFUL
- // expected-note@-3 {{Object 'P' is moved}}
- // expected-warning@-3 {{Method called on moved-from object 'P'}}
- // expected-note@-4 {{Method called on moved-from object 'P'}}
-#endif
-}
-
-void localUniquePtrWithArrow(std::unique_ptr<A> P) {
- std::unique_ptr<A> Q = std::move(P); // expected-note{{Smart pointer 'P' of type 'std::unique_ptr' is reset to null when moved from}}
- P->foo(); // expected-warning{{Dereference of null smart pointer 'P' of type 'std::unique_ptr'}}
- // expected-note@-1{{Dereference of null smart pointer 'P' of type 'std::unique_ptr'}}
-}
diff --git a/test/Analysis/valist-as-lazycompound.c b/test/Analysis/valist-as-lazycompound.c
deleted file mode 100644
index 2fbd4cb76f48..000000000000
--- a/test/Analysis/valist-as-lazycompound.c
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple gcc-linaro-arm-linux-gnueabihf -analyzer-checker=core,valist.Uninitialized,valist.CopyToSelf -analyzer-output=text -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-typedef unsigned int size_t;
-typedef __builtin_va_list __gnuc_va_list;
-typedef __gnuc_va_list va_list;
-
-extern int vsprintf(char *__restrict __s,
- const char *__restrict __format, __gnuc_va_list
- __arg);
-
-void _dprintf(const char *function, int flen, int line, int level,
- const char *prefix, const char *fmt, ...) {
- char raw[10];
- int err;
- va_list ap;
-
- __builtin_va_start(ap, fmt);
- err = vsprintf(raw, fmt, ap);
- __builtin_va_end(ap);
-}
diff --git a/test/Analysis/valist-uninitialized-no-undef.c b/test/Analysis/valist-uninitialized-no-undef.c
deleted file mode 100644
index 528ac86c1421..000000000000
--- a/test/Analysis/valist-uninitialized-no-undef.c
+++ /dev/null
@@ -1,40 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-pc-linux-gnu -analyzer-checker=core,valist.Uninitialized,valist.CopyToSelf -analyzer-output=text -analyzer-store=region -verify %s
-
-#include "Inputs/system-header-simulator-for-valist.h"
-
-// This is called in call_inlined_uses_arg(),
-// and the warning is generated during the analysis of call_inlined_uses_arg().
-void inlined_uses_arg(va_list arg) {
- (void)va_arg(arg, int); // expected-warning{{va_arg() is called on an uninitialized va_list}}
- // expected-note@-1{{va_arg() is called on an uninitialized va_list}}
-}
-
-void call_inlined_uses_arg(int fst, ...) {
- va_list va;
- inlined_uses_arg(va); // expected-note{{Calling 'inlined_uses_arg'}}
-}
-
-void f6(va_list *fst, ...) {
- va_start(*fst, fst);
- // FIXME: There should be no warning for this.
- (void)va_arg(*fst, int); // expected-warning{{va_arg() is called on an uninitialized va_list}}
- // expected-note@-1{{va_arg() is called on an uninitialized va_list}}
- va_end(*fst);
-}
-
-void call_vprintf_bad(int isstring, ...) {
- va_list va;
- vprintf(isstring ? "%s" : "%d", va); // expected-warning{{Function 'vprintf' is called with an uninitialized va_list argument}}
- // expected-note@-1{{Function 'vprintf' is called with an uninitialized va_list argument}}
- // expected-note@-2{{Assuming 'isstring' is 0}}
- // expected-note@-3{{'?' condition is false}}
-}
-
-void call_vsprintf_bad(char *buffer, ...) {
- va_list va;
- va_start(va, buffer); // expected-note{{Initialized va_list}}
- va_end(va); // expected-note{{Ended va_list}}
- vsprintf(buffer, "%s %d %d %lf %03d", va); // expected-warning{{Function 'vsprintf' is called with an uninitialized va_list argument}}
- // expected-note@-1{{Function 'vsprintf' is called with an uninitialized va_list argument}}
-}
-
diff --git a/test/Analysis/valist-uninitialized.c b/test/Analysis/valist-uninitialized.c
deleted file mode 100644
index 19308537e02c..000000000000
--- a/test/Analysis/valist-uninitialized.c
+++ /dev/null
@@ -1,178 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple hexagon-unknown-linux -analyzer-checker=core,valist.Uninitialized,valist.CopyToSelf -analyzer-disable-checker=core.CallAndMessage -analyzer-output=text -analyzer-store=region -verify %s
-// RUN: %clang_analyze_cc1 -triple x86_64-pc-linux-gnu -analyzer-checker=core,valist.Uninitialized,valist.CopyToSelf -analyzer-disable-checker=core.CallAndMessage -analyzer-output=text -analyzer-store=region -verify %s
-
-#include "Inputs/system-header-simulator-for-valist.h"
-
-void f1(int fst, ...) {
- va_list va;
- (void)va_arg(va, int); // expected-warning{{va_arg() is called on an uninitialized va_list}}
- // expected-note@-1{{va_arg() is called on an uninitialized va_list}}
-}
-
-int f2(int fst, ...) {
- va_list va;
- va_start(va, fst); // expected-note{{Initialized va_list}}
- va_end(va); // expected-note{{Ended va_list}}
- return va_arg(va, int); // expected-warning{{va_arg() is called on an uninitialized va_list}}
- // expected-note@-1{{va_arg() is called on an uninitialized va_list}}
-}
-
-void f3(int fst, ...) {
- va_list va, va2;
- va_start(va, fst);
- va_copy(va2, va);
- va_end(va);
- (void)va_arg(va2, int);
- va_end(va2);
-} //no-warning
-
-void f4(int cond, ...) {
- va_list va;
- if (cond) { // expected-note{{Assuming 'cond' is 0}}
- // expected-note@-1{{Taking false branch}}
- va_start(va, cond);
- (void)va_arg(va,int);
- }
- va_end(va); //expected-warning{{va_end() is called on an uninitialized va_list}}
- // expected-note@-1{{va_end() is called on an uninitialized va_list}}
-}
-
-void f5(va_list fst, ...) {
- va_start(fst, fst);
- (void)va_arg(fst, int);
- va_end(fst);
-} // no-warning
-
-void f7(int *fst, ...) {
- va_list x;
- va_list *y = &x;
- va_start(*y,fst);
- (void)va_arg(x, int);
- va_end(x);
-} // no-warning
-
-void f8(int *fst, ...) {
- va_list x;
- va_list *y = &x;
- va_start(*y,fst); // expected-note{{Initialized va_list}}
- va_end(x); // expected-note{{Ended va_list}}
- (void)va_arg(*y, int); //expected-warning{{va_arg() is called on an uninitialized va_list}}
- // expected-note@-1{{va_arg() is called on an uninitialized va_list}}
-}
-
-// This only contains problems which are handled by varargs.Unterminated.
-void reinit(int *fst, ...) {
- va_list va;
- va_start(va, fst);
- va_start(va, fst);
- (void)va_arg(va, int);
-} // no-warning
-
-void reinitOk(int *fst, ...) {
- va_list va;
- va_start(va, fst);
- (void)va_arg(va, int);
- va_end(va);
- va_start(va, fst);
- (void)va_arg(va, int);
- va_end(va);
-} // no-warning
-
-void reinit3(int *fst, ...) {
- va_list va;
- va_start(va, fst); // expected-note{{Initialized va_list}}
- (void)va_arg(va, int);
- va_end(va); // expected-note{{Ended va_list}}
- va_start(va, fst); // expected-note{{Initialized va_list}}
- (void)va_arg(va, int);
- va_end(va); // expected-note{{Ended va_list}}
- (void)va_arg(va, int); //expected-warning{{va_arg() is called on an uninitialized va_list}}
- // expected-note@-1{{va_arg() is called on an uninitialized va_list}}
-}
-
-void copyself(int fst, ...) {
- va_list va;
- va_start(va, fst); // expected-note{{Initialized va_list}}
- va_copy(va, va); // expected-warning{{va_list 'va' is copied onto itself}}
- // expected-note@-1{{va_list 'va' is copied onto itself}}
- va_end(va);
-}
-
-void copyselfUninit(int fst, ...) {
- va_list va;
- va_copy(va, va); // expected-warning{{va_list 'va' is copied onto itself}}
- // expected-note@-1{{va_list 'va' is copied onto itself}}
-}
-
-void copyOverwrite(int fst, ...) {
- va_list va, va2;
- va_start(va, fst); // expected-note{{Initialized va_list}}
- va_copy(va, va2); // expected-warning{{Initialized va_list 'va' is overwritten by an uninitialized one}}
- // expected-note@-1{{Initialized va_list 'va' is overwritten by an uninitialized one}}
-}
-
-void copyUnint(int fst, ...) {
- va_list va, va2;
- va_copy(va, va2); // expected-warning{{Uninitialized va_list is copied}}
- // expected-note@-1{{Uninitialized va_list is copied}}
-}
-
-void g1(int fst, ...) {
- va_list va;
- va_end(va); // expected-warning{{va_end() is called on an uninitialized va_list}}
- // expected-note@-1{{va_end() is called on an uninitialized va_list}}
-}
-
-void g2(int fst, ...) {
- va_list va;
- va_start(va, fst); // expected-note{{Initialized va_list}}
- va_end(va); // expected-note{{Ended va_list}}
- va_end(va); // expected-warning{{va_end() is called on an uninitialized va_list}}
- // expected-note@-1{{va_end() is called on an uninitialized va_list}}
-}
-
-void is_sink(int fst, ...) {
- va_list va;
- va_end(va); // expected-warning{{va_end() is called on an uninitialized va_list}}
- // expected-note@-1{{va_end() is called on an uninitialized va_list}}
- *((volatile int *)0) = 1;
-}
-
-// NOTE: this is invalid, as the man page of va_end requires that "Each invocation of va_start()
-// must be matched by a corresponding invocation of va_end() in the same function."
-void ends_arg(va_list arg) {
- va_end(arg);
-} //no-warning
-
-void uses_arg(va_list arg) {
- (void)va_arg(arg, int);
-} //no-warning
-
-void call_vprintf_ok(int isstring, ...) {
- va_list va;
- va_start(va, isstring);
- vprintf(isstring ? "%s" : "%d", va);
- va_end(va);
-} //no-warning
-
-void call_some_other_func(int n, ...) {
- va_list va;
- some_library_function(n, va);
-} //no-warning
-
-void inlined_uses_arg_good(va_list arg) {
- (void)va_arg(arg, int);
-}
-
-void call_inlined_uses_arg_good(int fst, ...) {
- va_list va;
- va_start(va, fst);
- inlined_uses_arg_good(va);
- va_end(va);
-}
-
-void va_copy_test(va_list arg) {
- va_list dst;
- va_copy(dst, arg);
- va_end(dst);
-}
diff --git a/test/Analysis/valist-unterminated.c b/test/Analysis/valist-unterminated.c
deleted file mode 100644
index e19c6761784c..000000000000
--- a/test/Analysis/valist-unterminated.c
+++ /dev/null
@@ -1,155 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple hexagon-unknown-linux -analyzer-checker=core,valist.Unterminated,valist.CopyToSelf -analyzer-output=text -analyzer-store=region -verify %s
-// RUN: %clang_analyze_cc1 -triple x86_64-pc-linux-gnu -analyzer-checker=core,valist.Unterminated,valist.CopyToSelf -analyzer-output=text -analyzer-store=region -verify %s
-
-#include "Inputs/system-header-simulator-for-valist.h"
-
-void f1(int fst, ...) {
- va_list va;
- va_start(va, fst); // expected-note{{Initialized va_list}}
- return; // expected-warning{{Initialized va_list 'va' is leaked}}
- // expected-note@-1{{Initialized va_list 'va' is leaked}}
-}
-
-void f2(int fst, ...) {
- va_list va;
- va_start(va, fst); // expected-note{{Initialized va_list}}
- va_end(va); // expected-note{{Ended va_list}}
- va_start(va, fst); // expected-note{{Initialized va_list}}
-} // expected-warning{{Initialized va_list 'va' is leaked}}
- // expected-note@-1{{Initialized va_list 'va' is leaked}}
-
-void f3(int fst, ...) {
- va_list va, va2;
- va_start(va, fst);
- va_copy(va2, va); // expected-note{{Initialized va_list}}
- va_end(va); // expected-warning{{Initialized va_list 'va2' is leaked}}
- // expected-note@-1{{Initialized va_list 'va2' is leaked}}
-}
-
-void f4(va_list *fst, ...) {
- va_start(*fst, fst); // expected-note{{Initialized va_list}}
- return; // expected-warning{{Initialized va_list is leaked}}
- // expected-note@-1{{Initialized va_list is leaked}}
-}
-
-void f5(va_list fst, ...) {
- va_start(fst, fst); // expected-note{{Initialized va_list}}
-} // expected-warning{{Initialized va_list}}
- // expected-note@-1{{Initialized va_list}}
-
-void f6(va_list *fst, ...) {
- va_start(*fst, fst); // expected-note{{Initialized va_list}}
- (void)va_arg(*fst, int);
- //FIXME: this should NOT cause a warning
- va_end(*fst); // expected-warning{{Initialized va_list is leaked}}
- // expected-note@-1{{Initialized va_list is leaked}}
-}
-
-void f7(int *fst, ...) {
- va_list x;
- va_list *y = &x;
- va_start(*y,fst); // expected-note{{Initialized va_list}}
-} // expected-warning{{Initialized va_list 'x' is leaked}}
- // expected-note@-1{{Initialized va_list 'x' is leaked}}
-
-void f8(int *fst, ...) {
- va_list x;
- va_list *y = &x;
- va_start(*y,fst);
- va_end(x);
-} // no-warning
-
-void reinit(int *fst, ...) {
- va_list va;
- va_start(va, fst); // expected-note{{Initialized va_list}}
- // expected-note@-1{{Initialized va_list}}
- va_start(va, fst); // expected-warning{{Initialized va_list 'va' is initialized again}}
- // expected-note@-1{{Initialized va_list 'va' is initialized again}}
-} // expected-warning{{Initialized va_list 'va' is leaked}}
- // expected-note@-1{{Initialized va_list 'va' is leaked}}
-
-void reinitOk(int *fst, ...) {
- va_list va;
- va_start(va, fst);
- va_end(va);
- va_start(va, fst);
- va_end(va);
-} // no-warning
-
-void copyself(int fst, ...) {
- va_list va;
- va_start(va, fst); // expected-note{{Initialized va_list}}
- va_copy(va, va); // expected-warning{{va_list 'va' is copied onto itself}}
- // expected-note@-1{{va_list 'va' is copied onto itself}}
- va_end(va);
-}
-
-void copyselfUninit(int fst, ...) {
- va_list va;
- va_copy(va, va); // expected-warning{{va_list 'va' is copied onto itself}}
- // expected-note@-1{{va_list 'va' is copied onto itself}}
-}
-
-void copyOverwrite(int fst, ...) {
- va_list va, va2;
- va_start(va, fst); // expected-note{{Initialized va_list}}
- va_copy(va, va2); // expected-warning{{Initialized va_list 'va' is overwritten by an uninitialized one}}
- // expected-note@-1{{Initialized va_list 'va' is overwritten by an uninitialized one}}
-}
-
-//This only generates a warning for the valist.Uninitialized checker
-void copyUnint(int fst, ...) {
- va_list va, va2;
- va_copy(va, va2);
-} // no-warning
-
-void recopy(int fst, ...) {
- va_list va, va2;
- va_start(va, fst);
- va_copy(va2, va); // expected-note{{Initialized va_list}}
- va_copy(va2, va); // expected-warning{{Initialized va_list 'va2' is initialized again}}
- // expected-note@-1{{Initialized va_list 'va2' is initialized again}}
- va_end(va);
- va_end(va2);
-}
-
-void doublemsg(int fst, ...) {
- va_list va, va2;
- va_start(va, fst), va_start(va2, fst); // expected-warning{{Initialized va_list 'va' is leaked}}
- // expected-warning@-1{{Initialized va_list 'va2' is leaked}}
- // expected-note@-2{{Initialized va_list}}
- // expected-note@-3{{Initialized va_list}}
- // expected-note@-4{{Initialized va_list}}
- // expected-note@-5{{Initialized va_list 'va' is leaked}}
-}
-
-void in_array(int fst, ...) {
- va_list va_array[8];
- va_start(va_array[3], fst); // expected-note{{Initialized va_list}}
-} // expected-warning{{Initialized va_list 'va_array[3]' is leaked}}
- // expected-note@-1{{Initialized va_list 'va_array[3]' is leaked}}
-
-struct containing_a_valist {
- va_list vafield;
- int foobar;
-};
-
-void in_struct(int fst, ...) {
- struct containing_a_valist s;
- va_start(s.vafield, fst); // expected-note{{Initialized va_list}}
-} // expected-warning{{Initialized va_list 's.vafield' is leaked}}
- // expected-note@-1{{Initialized va_list 's.vafield' is leaked}}
-
-void casting(int fst, ...) {
- char mem[sizeof(va_list)];
- va_start(*(va_list *) mem, fst); // expected-note{{Initialized va_list}}
-} // expected-warning{{Initialized va_list 'mem[0]' is leaked}}
- // expected-note@-1{{Initialized va_list 'mem[0]' is leaked}}
-
-
-void castingOk(int fst, ...) {
- char mem[sizeof(va_list)];
- va_start(*(va_list *) mem, fst);
- va_end(*(va_list *) mem);
-} // no-warning
-
diff --git a/test/Analysis/variadic-method-types.m b/test/Analysis/variadic-method-types.m
deleted file mode 100644
index 6db93ac032e6..000000000000
--- a/test/Analysis/variadic-method-types.m
+++ /dev/null
@@ -1,100 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,osx.cocoa.VariadicMethodTypes -analyzer-store=region -fblocks -verify %s
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from
-// Foundation.h (Mac OS X).
-//
-// It includes the basic definitions for the test cases below.
-// Not directly including Foundation.h directly makes this test case
-// both svelte and portable to non-Mac platforms.
-//===----------------------------------------------------------------------===//
-
-#define nil (void*)0
-typedef const struct __CFString * CFStringRef;
-extern const CFStringRef kCGImageSourceShouldCache __attribute__((visibility("default")));
-typedef signed char BOOL;
-typedef struct _NSZone NSZone;
-typedef unsigned int NSUInteger;
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (oneway void)release;
-- (id)retain;
-- (id)autorelease;
-@end
-@protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
-@end
-@protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
-@end
-@class NSCoder;
-@protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
-@end
-@interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
-@end
-typedef struct {} NSFastEnumerationState;
-@protocol NSFastEnumeration
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
-@end
-@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-@end
-@interface NSArray (NSArrayCreation)
-+ (id)arrayWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-- (id)initWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-@end
-@interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-@end
-@interface NSDictionary (NSDictionaryCreation)
-+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ... __attribute__((sentinel(0,1)));
-- (id)initWithObjectsAndKeys:(id)firstObject, ... __attribute__((sentinel(0,1)));
-@end
-@interface NSSet : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-@end
-@interface NSSet (NSSetCreation)
-+ (id)setWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-- (id)initWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-@end
-@interface NSOrderedSet : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-@end
-@interface NSOrderedSet (NSOrderedSetCreation)
-+ (id)orderedSetWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-- (id)initWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-@end
-@protocol P;
-@class C;
-
-typedef struct FooType * __attribute__ ((NSObject)) FooType;
-typedef struct BarType * BarType;
-
-
-void f(id a, id<P> b, C* c, C<P> *d, FooType fooType, BarType barType) {
- [NSArray arrayWithObjects:@"Hello", a, b, c, d, nil];
- [NSArray arrayWithObjects:@"Foo", ^{}, nil];
-
- [NSArray arrayWithObjects:@"Foo", "Bar", "Baz", nil]; // expected-warning {{Argument to 'NSArray' method 'arrayWithObjects:' should be an Objective-C pointer type, not 'char *'}}
- [NSDictionary dictionaryWithObjectsAndKeys:@"Foo", "Bar", nil]; // expected-warning {{Argument to 'NSDictionary' method 'dictionaryWithObjectsAndKeys:' should be an Objective-C pointer type, not 'char *'}}
- [NSSet setWithObjects:@"Foo", "Bar", nil]; // expected-warning {{Argument to 'NSSet' method 'setWithObjects:' should be an Objective-C pointer type, not 'char *'}}
- [NSOrderedSet orderedSetWithObjects:@"Foo", "Bar", nil]; // expected-warning {{Argument to 'NSOrderedSet' method 'orderedSetWithObjects:' should be an Objective-C pointer type, not 'char *'}}
-
- [[[NSArray alloc] initWithObjects:@"Foo", "Bar", nil] autorelease]; // expected-warning {{Argument to 'NSArray' method 'initWithObjects:' should be an Objective-C pointer type, not 'char *'}}
- [[[NSDictionary alloc] initWithObjectsAndKeys:@"Foo", "Bar", nil] autorelease]; // expected-warning {{Argument to 'NSDictionary' method 'initWithObjectsAndKeys:' should be an Objective-C pointer type, not 'char *'}}
- [[[NSDictionary alloc] initWithObjectsAndKeys:@"Foo", (void*) 0, nil] autorelease]; // no-warning
- [[[NSDictionary alloc] initWithObjectsAndKeys:@"Foo", kCGImageSourceShouldCache, nil] autorelease]; // no-warning
- [[[NSDictionary alloc] initWithObjectsAndKeys:@"Foo", fooType, nil] autorelease]; // no-warning
- [[[NSDictionary alloc] initWithObjectsAndKeys:@"Foo", barType, nil] autorelease]; // expected-warning {{Argument to 'NSDictionary' method 'initWithObjectsAndKeys:' should be an Objective-C pointer type, not 'BarType'}}
- [[[NSSet alloc] initWithObjects:@"Foo", "Bar", nil] autorelease]; // expected-warning {{Argument to 'NSSet' method 'initWithObjects:' should be an Objective-C pointer type, not 'char *'}}
- [[[NSOrderedSet alloc] initWithObjects:@"Foo", "Bar", nil] autorelease]; // expected-warning {{Argument to 'NSOrderedSet' method 'initWithObjects:' should be an Objective-C pointer type, not 'char *'}}
-}
-
-// This previously crashed the variadic argument checker.
-@protocol RDar9273215
-- (void)rdar9273215:(id)x, ...;
-@end
-
-void test_rdar9273215(id<RDar9273215> y) {
- return [y rdar9273215:y, y];
-}
-
diff --git a/test/Analysis/vector.m b/test/Analysis/vector.m
deleted file mode 100644
index e74c487d3a60..000000000000
--- a/test/Analysis/vector.m
+++ /dev/null
@@ -1,61 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify %s
-
-typedef int __attribute__((ext_vector_type(2))) V;
-
-void clang_analyzer_warnIfReached();
-void clang_analyzer_numTimesReached();
-void clang_analyzer_eval(int);
-
-int flag;
-
-V pass_through_and_set_flag(V v) {
- flag = 1;
- return v;
-}
-
-V dont_crash_and_dont_split_state(V x, V y) {
- flag = 0;
- V z = x && pass_through_and_set_flag(y);
- clang_analyzer_eval(flag); // expected-warning{{TRUE}}
- // FIXME: For now we treat vector operator && as short-circuit,
- // but in fact it is not. It should always evaluate
- // pass_through_and_set_flag(). It should not split state.
- // Now we also get FALSE on the other path.
- // expected-warning@-5{{FALSE}}
-
- // FIXME: Should be 1 since we should not split state.
- clang_analyzer_numTimesReached(); // expected-warning{{2}}
- return z;
-}
-
-void test_read() {
- V x;
- x[0] = 0;
- x[1] = 1;
-
- clang_analyzer_eval(x[0] == 0); // expected-warning{{TRUE}}
-}
-
-V return_vector() {
- V z;
- z[0] = 0;
- z[1] = 0;
- return z;
-}
-
-int test_vector_access() {
- return return_vector()[0]; // no-crash no-warning
-}
-
-@interface I
-@property V v;
-@end
-
-// Do not crash on subscript operations into ObjC properties.
-int myfunc(I *i2) {
- int out = i2.v[0]; // no-crash no-warning
-
- // Check that the analysis continues.
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- return out;
-}
diff --git a/test/Analysis/vfork.c b/test/Analysis/vfork.c
deleted file mode 100644
index da1b5da40665..000000000000
--- a/test/Analysis/vfork.c
+++ /dev/null
@@ -1,114 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,security.insecureAPI.vfork,unix.Vfork -verify %s
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,security.insecureAPI.vfork,unix.Vfork -verify -x c++ %s
-
-#include "Inputs/system-header-simulator.h"
-
-void foo();
-
-// Ensure that child process is properly checked.
-int f1(int x) {
- pid_t pid = vfork(); // expected-warning{{Call to function 'vfork' is insecure}}
- if (pid != 0)
- return 0;
-
- switch (x) {
- case 0:
- // Ensure that modifying pid is ok.
- pid = 1; // no-warning
- // Ensure that calling whitelisted routines is ok.
- execl("", "", 0); // no-warning
- _exit(1); // no-warning
- break;
- case 1:
- // Ensure that writing variables is prohibited.
- x = 0; // expected-warning{{This assignment is prohibited after a successful vfork}}
- break;
- case 2:
- // Ensure that calling functions is prohibited.
- foo(); // expected-warning{{This function call is prohibited after a successful vfork}}
- break;
- default:
- // Ensure that returning from function is prohibited.
- return 0; // expected-warning{{Return is prohibited after a successful vfork; call _exit() instead}}
- }
-
- while(1);
-}
-
-// Same as previous but without explicit pid variable.
-int f2(int x) {
- pid_t pid = vfork(); // expected-warning{{Call to function 'vfork' is insecure}}
-
- switch (x) {
- case 0:
- // Ensure that writing pid is ok.
- pid = 1; // no-warning
- // Ensure that calling whitelisted routines is ok.
- execl("", "", 0); // no-warning
- _exit(1); // no-warning
- break;
- case 1:
- // Ensure that writing variables is prohibited.
- x = 0; // expected-warning{{This assignment is prohibited after a successful vfork}}
- break;
- case 2:
- // Ensure that calling functions is prohibited.
- foo(); // expected-warning{{This function call is prohibited after a successful vfork}}
- break;
- default:
- // Ensure that returning from function is prohibited.
- return 0; // expected-warning{{Return is prohibited after a successful vfork; call _exit() instead}}
- }
-
- while(1);
-}
-
-// Ensure that parent process isn't restricted.
-int f3(int x) {
- if (vfork() == 0) // expected-warning{{Call to function 'vfork' is insecure}}
- _exit(1);
- x = 0; // no-warning
- foo(); // no-warning
- return 0;
-} // no-warning
-
-// Unbound pids are special so test them separately.
-void f4(int x) {
- switch (x) {
- case 0:
- vfork(); // expected-warning{{Call to function 'vfork' is insecure}}
- x = 0; // expected-warning{{This assignment is prohibited after a successful vfork}}
- break;
-
- case 1:
- {
- char args[2];
- switch (vfork()) { // expected-warning{{Call to function 'vfork' is insecure}}
- case 0:
- args[0] = 0; // expected-warning{{This assignment is prohibited after a successful vfork}}
- exit(1);
- }
- break;
- }
-
- case 2:
- {
- pid_t pid;
- if ((pid = vfork()) == 0) // expected-warning{{Call to function 'vfork' is insecure}}
- while(1); // no-warning
- break;
- }
- }
- while(1);
-} //no-warning
-
-
-void f5() {
- // See "libxtables: move some code to avoid cautions in vfork man page"
- // (http://lists.netfilter.org/pipermail/netfilter-buglog/2014-October/003280.html).
- if (vfork() == 0) { // expected-warning{{Call to function 'vfork' is insecure}}
- execl("prog", "arg1", 0); // no-warning
- exit(1); // expected-warning{{This function call is prohibited after a successful vfork}}
- }
-}
-
diff --git a/test/Analysis/virtualcall.cpp b/test/Analysis/virtualcall.cpp
deleted file mode 100644
index 1929abf6f0aa..000000000000
--- a/test/Analysis/virtualcall.cpp
+++ /dev/null
@@ -1,297 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=optin.cplusplus.VirtualCall -analyzer-store region -analyzer-output=text -verify -std=c++11 %s
-
-// RUN: %clang_analyze_cc1 -analyzer-checker=optin.cplusplus.VirtualCall -analyzer-store region -analyzer-config optin.cplusplus.VirtualCall:PureOnly=true -DPUREONLY=1 -analyzer-output=text -verify -std=c++11 %s
-
-#include "virtualcall.h"
-
-class A {
-public:
- A();
-
- ~A(){};
-
- virtual int foo() = 0;
- virtual void bar() = 0;
- void f() {
- foo();
- // expected-warning-re@-1 {{{{^}}Call to pure virtual function during construction}}
- // expected-note-re@-2 {{{{^}}Call to pure virtual function during construction}}
- }
-};
-
-class B : public A {
-public:
- B() { // expected-note {{Calling default constructor for 'A'}}
- foo();
-#if !PUREONLY
- // expected-warning-re@-2 {{{{^}}Call to virtual function during construction}}
- // expected-note-re@-3 {{{{^}}This constructor of an object of type 'B' has not returned when the virtual method was called}}
- // expected-note-re@-4 {{{{^}}Call to virtual function during construction}}
-#endif
- }
- ~B();
-
- virtual int foo();
- virtual void bar() {
- foo();
-#if !PUREONLY
- // expected-warning-re@-2 {{{{^}}Call to virtual function during destruction}}
- // expected-note-re@-3 {{{{^}}Call to virtual function during destruction}}
-#endif
- }
-};
-
-A::A() {
- f();
-// expected-note-re@-1 {{{{^}}This constructor of an object of type 'A' has not returned when the virtual method was called}}
-// expected-note-re@-2 {{{{^}}Calling 'A::f'}}
-}
-
-B::~B() {
- this->B::foo(); // no-warning
- this->B::bar();
-#if !PUREONLY
- // expected-note-re@-2 {{{{^}}This destructor of an object of type '~B' has not returned when the virtual method was called}}
- // expected-note-re@-3 {{{{^}}Calling 'B::bar'}}
-#endif
- this->foo();
-#if !PUREONLY
- // expected-warning-re@-2 {{{{^}}Call to virtual function during destruction}}
- // expected-note-re@-3 {{{{^}}This destructor of an object of type '~B' has not returned when the virtual method was called}}
- // expected-note-re@-4 {{{{^}}Call to virtual function during destruction}}
-#endif
-
-}
-
-class C : public B {
-public:
- C();
- ~C();
-
- virtual int foo();
- void f(int i);
-};
-
-C::C() {
- f(foo());
-#if !PUREONLY
- // expected-warning-re@-2 {{{{^}}Call to virtual function during construction}}
- // expected-note-re@-3 {{{{^}}This constructor of an object of type 'C' has not returned when the virtual method was called}}
- // expected-note-re@-4 {{{{^}}Call to virtual function during construction}}
-#endif
-}
-
-class D : public B {
-public:
- D() {
- foo(); // no-warning
- }
- ~D() { bar(); }
- int foo() final;
- void bar() final { foo(); } // no-warning
-};
-
-class E final : public B {
-public:
- E() {
- foo(); // no-warning
- }
- ~E() { bar(); }
-#if !PUREONLY
- // expected-note-re@-2 2{{{{^}}Calling '~B'}}
-#endif
- int foo() override;
-};
-
-class F {
-public:
- F() {
- void (F::*ptr)() = &F::foo;
- (this->*ptr)();
- }
- void foo();
-};
-
-class G {
-public:
- G() {}
- virtual void bar();
- void foo() {
- bar(); // no warning
- }
-};
-
-class H {
-public:
- H() : initState(0) { init(); }
- int initState;
- virtual void f() const;
- void init() {
- if (initState)
- f(); // no warning
- }
-
- H(int i) {
- G g;
- g.foo();
- g.bar(); // no warning
- f();
-#if !PUREONLY
- // expected-warning-re@-2 {{{{^}}Call to virtual function during construction}}
- // expected-note-re@-3 {{{{^}}This constructor of an object of type 'H' has not returned when the virtual method was called}}
- // expected-note-re@-4 {{{{^}}Call to virtual function during construction}}
-#endif
- H &h = *this;
- h.f();
-#if !PUREONLY
- // expected-warning-re@-2 {{{{^}}Call to virtual function during construction}}
- // expected-note-re@-3 {{{{^}}This constructor of an object of type 'H' has not returned when the virtual method was called}}
- // expected-note-re@-4 {{{{^}}Call to virtual function during construction}}
-#endif
- }
-};
-
-class X {
-public:
- X() {
- g();
-#if !PUREONLY
- // expected-warning-re@-2 {{{{^}}Call to virtual function during construction}}
- // expected-note-re@-3 {{{{^}}This constructor of an object of type 'X' has not returned when the virtual method was called}}
- // expected-note-re@-4 {{{{^}}Call to virtual function during construction}}
-#endif
- }
- X(int i) {
- if (i > 0) {
-#if !PUREONLY
- // expected-note-re@-2 {{{{^}}Taking true branch}}
- // expected-note-re@-3 {{{{^}}Taking false branch}}
-#endif
- X x(i - 1);
-#if !PUREONLY
- // expected-note-re@-2 {{{{^}}Calling constructor for 'X'}}
-#endif
- x.g(); // no warning
- }
- g();
-#if !PUREONLY
- // expected-warning-re@-2 {{{{^}}Call to virtual function during construction}}
- // expected-note-re@-3 {{{{^}}This constructor of an object of type 'X' has not returned when the virtual method was called}}
- // expected-note-re@-4 {{{{^}}Call to virtual function during construction}}
-#endif
- }
- virtual void g();
-};
-
-class M;
-class N {
-public:
- virtual void virtualMethod();
- void callFooOfM(M *);
-};
-class M {
-public:
- M() {
- N n;
- n.virtualMethod(); // no warning
- n.callFooOfM(this);
-#if !PUREONLY
- // expected-note-re@-2 {{{{^}}This constructor of an object of type 'M' has not returned when the virtual method was called}}
- // expected-note-re@-3 {{{{^}}Calling 'N::callFooOfM'}}
-#endif
- }
- virtual void foo();
-};
-void N::callFooOfM(M *m) {
- m->foo();
-#if !PUREONLY
- // expected-warning-re@-2 {{{{^}}Call to virtual function during construction}}
- // expected-note-re@-3 {{{{^}}Call to virtual function during construction}}
-#endif
-}
-
-class Y {
-public:
- virtual void foobar();
- void fooY() {
- F f1;
- foobar();
-#if !PUREONLY
- // expected-warning-re@-2 {{{{^}}Call to virtual function during construction}}
- // expected-note-re@-3 {{{{^}}Call to virtual function during construction}}
-#endif
- }
- Y() { fooY(); }
-#if !PUREONLY
- // expected-note-re@-2 {{{{^}}This constructor of an object of type 'Y' has not returned when the virtual method was called}}
- // expected-note-re@-3 {{{{^}}Calling 'Y::fooY'}}
-#endif
-};
-
-int main() {
- B b;
-#if PUREONLY
- //expected-note-re@-2 {{{{^}}Calling default constructor for 'B'}}
-#else
- //expected-note-re@-4 2{{{{^}}Calling default constructor for 'B'}}
-#endif
- C c;
-#if !PUREONLY
- //expected-note-re@-2 {{{{^}}Calling default constructor for 'C'}}
-#endif
- D d;
- E e;
- F f;
- G g;
- H h;
- H h1(1);
-#if !PUREONLY
- //expected-note-re@-2 {{{{^}}Calling constructor for 'H'}}
- //expected-note-re@-3 {{{{^}}Calling constructor for 'H'}}
-#endif
- X x;
-#if !PUREONLY
- //expected-note-re@-2 {{{{^}}Calling default constructor for 'X'}}
-#endif
- X x1(1);
-#if !PUREONLY
- //expected-note-re@-2 {{{{^}}Calling constructor for 'X'}}
-#endif
- M m;
-#if !PUREONLY
- //expected-note-re@-2 {{{{^}}Calling default constructor for 'M'}}
-#endif
- Y *y = new Y;
-#if !PUREONLY
- //expected-note-re@-2 {{{{^}}Calling default constructor for 'Y'}}
-#endif
- delete y;
- header::Z z;
-#if !PUREONLY
- // expected-note-re@-2 {{{{^}}Calling default constructor for 'Z'}}
-#endif
-}
-#if !PUREONLY
- //expected-note-re@-2 2{{{{^}}Calling '~E'}}
-#endif
-
-namespace PR34451 {
-struct a {
- void b() {
- a c[1];
- c->b();
- }
-};
-
-class e {
- public:
- void b() const;
-};
-
-class c {
- void m_fn2() const;
- e d[];
-};
-
-void c::m_fn2() const { d->b(); }
-}
diff --git a/test/Analysis/virtualcall.h b/test/Analysis/virtualcall.h
deleted file mode 100644
index e2fde2415ec1..000000000000
--- a/test/Analysis/virtualcall.h
+++ /dev/null
@@ -1,14 +0,0 @@
-namespace header {
- class Z {
- public:
- Z() {
- foo();
-#if !PUREONLY
- // expected-warning-re@-2 {{{{^}}Call to virtual function during construction}}
- // expected-note-re@-3 {{{{^}}This constructor of an object of type 'Z' has not returned when the virtual method was called}}
- // expected-note-re@-4 {{{{^}}Call to virtual function during construction}}
-#endif
- }
- virtual int foo();
- };
-}
diff --git a/test/Analysis/vla.c b/test/Analysis/vla.c
deleted file mode 100644
index eb06c24246a7..000000000000
--- a/test/Analysis/vla.c
+++ /dev/null
@@ -1,86 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-
-// Zero-sized VLAs.
-void check_zero_sized_VLA(int x) {
- if (x)
- return;
-
- int vla[x]; // expected-warning{{Declared variable-length array (VLA) has zero size}}
-}
-
-void check_uninit_sized_VLA() {
- int x;
- int vla[x]; // expected-warning{{Declared variable-length array (VLA) uses a garbage value as its size}}
-}
-
-// Negative VLAs.
-static void vla_allocate_signed(int x) {
- int vla[x]; // expected-warning{{Declared variable-length array (VLA) has negative size}}
-}
-
-static void vla_allocate_unsigned(unsigned int x) {
- int vla[x]; // no-warning
-}
-
-void check_negative_sized_VLA_1() {
- vla_allocate_signed(-1);
-}
-
-void check_negative_sized_VLA_2() {
- vla_allocate_unsigned(-1);
-}
-
-void check_negative_sized_VLA_3() {
- int x = -1;
- int vla[x]; // expected-warning{{Declared variable-length array (VLA) has negative size}}
-}
-
-void check_negative_sized_VLA_4() {
- unsigned int x = -1;
- int vla[x]; // no-warning
-}
-
-void check_negative_sized_VLA_5() {
- signed char x = -1;
- int vla[x]; // expected-warning{{Declared variable-length array (VLA) has negative size}}
-}
-
-void check_negative_sized_VLA_6() {
- unsigned char x = -1;
- int vla[x]; // no-warning
-}
-
-void check_negative_sized_VLA_7() {
- signed char x = -1;
- int vla[x + 2]; // no-warning
-}
-
-void check_negative_sized_VLA_8() {
- signed char x = 1;
- int vla[x - 2]; // expected-warning{{Declared variable-length array (VLA) has negative size}}
-}
-
-void check_negative_sized_VLA_9() {
- int x = 1;
- int vla[x]; // no-warning
-}
-
-static void check_negative_sized_VLA_10_sub(int x)
-{
- int vla[x]; // expected-warning{{Declared variable-length array (VLA) has negative size}}
-}
-
-void check_negative_sized_VLA_10(int x) {
- if (x < 0)
- check_negative_sized_VLA_10_sub(x);
-}
-
-static void check_negative_sized_VLA_11_sub(int x)
-{
- int vla[x]; // no-warning
-}
-
-void check_negative_sized_VLA_11(int x) {
- if (x > 0)
- check_negative_sized_VLA_11_sub(x);
-}
diff --git a/test/Analysis/weak-functions.c b/test/Analysis/weak-functions.c
deleted file mode 100644
index b3d8b043f8df..000000000000
--- a/test/Analysis/weak-functions.c
+++ /dev/null
@@ -1,117 +0,0 @@
-// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core,debug.ExprInspection,unix.Malloc,unix.cstring,alpha.unix.cstring,unix.API,osx.API,osx.cocoa.RetainCount -Wno-null-dereference -Wno-tautological-compare -analyzer-store=region -fblocks -verify -analyzer-config eagerly-assume=false %s
-#define NULL 0
-void clang_analyzer_eval(int);
-void myFunc();
-void myWeakFunc() __attribute__((weak_import));
-
-void testWeakFuncIsNull()
-{
- clang_analyzer_eval(myFunc == NULL); // expected-warning{{FALSE}}
- clang_analyzer_eval(myWeakFunc == NULL); // expected-warning{{UNKNOWN}}
- if (myWeakFunc == NULL) {
- clang_analyzer_eval(myWeakFunc == NULL); // expected-warning{{TRUE}}
- } else {
- clang_analyzer_eval(myWeakFunc == NULL); // expected-warning{{FALSE}}
- }
-}
-
-void testWeakFuncIsNot()
-{
- clang_analyzer_eval(myWeakFunc == NULL); // expected-warning{{UNKNOWN}}
- if (!myWeakFunc) {
- clang_analyzer_eval(myWeakFunc == NULL); // expected-warning{{TRUE}}
- } else {
- clang_analyzer_eval(myWeakFunc == NULL); // expected-warning{{FALSE}}
- }
-}
-
-void testWeakFuncIsTrue()
-{
- clang_analyzer_eval(myWeakFunc == NULL); // expected-warning{{UNKNOWN}}
- if (myWeakFunc) {
- clang_analyzer_eval(myWeakFunc == NULL); // expected-warning{{FALSE}}
- } else {
- clang_analyzer_eval(myWeakFunc == NULL); // expected-warning{{TRUE}}
- }
-}
-
-//===----------------------------------------------------------------------===
-// func.c
-//===----------------------------------------------------------------------===
-void f(void) __attribute__((weak_import));
-void g(void (*fp)(void)) __attribute__((weak_import));
-
-void f(void) {
- void (*p)(void);
- p = f;
- p = &f;
- p();
- (*p)();
-}
-
-void g(void (*fp)(void));
-
-void f2() {
- g(f);
-}
-
-void f3(void (*f)(void), void (*g)(void)) {
- clang_analyzer_eval(!f); // expected-warning{{UNKNOWN}}
- f();
- clang_analyzer_eval(!f); // expected-warning{{FALSE}}
-
- clang_analyzer_eval(!g); // expected-warning{{UNKNOWN}}
- (*g)();
- clang_analyzer_eval(!g); // expected-warning{{FALSE}}
-}
-
-//===----------------------------------------------------------------------===
-// free.c
-//===----------------------------------------------------------------------===
-void free(void *) __attribute__((weak_import));
-
-void t10 () {
- free((void*)&t10); // expected-warning {{Argument to free() is the address of the function 't10', which is not memory allocated by malloc()}}
-}
-
-//===----------------------------------------------------------------------===
-// string.c : strnlen()
-//===----------------------------------------------------------------------===
-typedef typeof(sizeof(int)) size_t;
-size_t strlen(const char *s) __attribute__((weak_import));
-
-size_t strlen_fn() {
- return strlen((char*)&strlen_fn); // expected-warning{{Argument to string length function is the address of the function 'strlen_fn', which is not a null-terminated string}}
-}
-
-//===----------------------------------------------------------------------===
-// unix-fns.c : dispatch_once
-//===----------------------------------------------------------------------===
-typedef void (^dispatch_block_t)(void);
-typedef long dispatch_once_t;
-void dispatch_once(dispatch_once_t *predicate, dispatch_block_t block) __attribute__((weak_import));
-
-void test_dispatch_once() {
- dispatch_once_t pred = 0;
- do { if (__builtin_expect(*(&pred), ~0l) != ~0l) dispatch_once((&pred), (^() {})); } while (0); // expected-warning{{Call to 'dispatch_once' uses the local variable 'pred' for the predicate value}}
-}
-void test_dispatch_once_neg() {
- static dispatch_once_t pred = 0;
- do { if (__builtin_expect(*(&pred), ~0l) != ~0l) dispatch_once((&pred), (^() {})); } while (0); // no-warning
-}
-
-//===----------------------------------------------------------------------===
-// retain-release-path-notes.m
-//===----------------------------------------------------------------------===
-typedef struct CFType *CFTypeRef;
-CFTypeRef CFCreateSomething() __attribute__((weak_import));
-CFTypeRef CFGetSomething() __attribute__((weak_import));
-
-CFTypeRef CFCopyRuleViolation () {
- CFTypeRef object = CFGetSomething();
- return object; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-
-CFTypeRef CFGetRuleViolation () {
- CFTypeRef object = CFCreateSomething(); // expected-warning{{Potential leak of an object stored into 'object'}}
- return object; }
diff --git a/test/Analysis/yaccignore.c b/test/Analysis/yaccignore.c
deleted file mode 100644
index c9edfadaf2f8..000000000000
--- a/test/Analysis/yaccignore.c
+++ /dev/null
@@ -1,13 +0,0 @@
-/* A Bison parser, made by GNU Bison 1.875. */
-
-// RUN: rm -rf %t.plist
-// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=plist -o %t.plist -verify %s
-// RUN: FileCheck --input-file=%t.plist %s
-
-// expected-no-diagnostics
-int foo() {
- int *x = 0;
- return *x; // no-warning
-}
-
-// CHECK: <key>diagnostics</key>
diff --git a/test/Analysis/z3-crosscheck.c b/test/Analysis/z3-crosscheck.c
deleted file mode 100644
index 67d410434fbb..000000000000
--- a/test/Analysis/z3-crosscheck.c
+++ /dev/null
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -DNO_CROSSCHECK -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config crosscheck-with-z3=true -verify %s
-// REQUIRES: z3
-
-int foo(int x)
-{
- int *z = 0;
- if ((x & 1) && ((x & 1) ^ 1))
-#ifdef NO_CROSSCHECK
- return *z; // expected-warning {{Dereference of null pointer (loaded from variable 'z')}}
-#else
- return *z; // no-warning
-#endif
- return 0;
-}
-
-void g(int d);
-
-void f(int *a, int *b) {
- int c = 5;
- if ((a - b) == 0)
- c = 0;
- if (a != b)
- g(3 / c); // no-warning
-}
-
-_Bool nondet_bool();
-
-void h(int d) {
- int x, y, k, z = 1;
- while (z < k) { // expected-warning {{The right operand of '<' is a garbage value}}
- z = 2 * z;
- }
-}
-
-void i() {
- _Bool c = nondet_bool();
- if (c) {
- h(1);
- } else {
- h(2);
- }
-}
diff --git a/test/Analysis/z3/apsint.c b/test/Analysis/z3/apsint.c
deleted file mode 100644
index 670ef2be1c59..000000000000
--- a/test/Analysis/z3/apsint.c
+++ /dev/null
@@ -1,16 +0,0 @@
-// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux-gnu -analyzer-checker=core -verify %s
-// expected-no-diagnostics
-
-// https://bugs.llvm.org/show_bug.cgi?id=37622
-_Bool a() {
- return !({ a(); });
-}
-
-// https://bugs.llvm.org/show_bug.cgi?id=37646
-_Bool b;
-void c() {
- _Bool a = b | 0;
- for (;;)
- if (a)
- ;
-}
diff --git a/test/Analysis/z3/enabled.c b/test/Analysis/z3/enabled.c
deleted file mode 100644
index 9f44233b266c..000000000000
--- a/test/Analysis/z3/enabled.c
+++ /dev/null
@@ -1,3 +0,0 @@
-// REQUIRES: z3
-// RUN: echo %clang_analyze_cc1 | FileCheck %s
-// CHECK: -analyzer-constraints=z3