diff options
author | George Karpenkov <ekarpenkov@apple.com> | 2019-01-10 18:15:57 +0000 |
---|---|---|
committer | George Karpenkov <ekarpenkov@apple.com> | 2019-01-10 18:15:57 +0000 |
commit | c45c23b1ed38314cf8f4eb73036fa0a7dbcb5441 (patch) | |
tree | 3be5b3de1f3342e0ce1f3cf5ff1fddcdd845d7e7 | |
parent | 386cde02aee5b29319c3f0e6d0447ad6df5ce29d (diff) |
[analyzer] Quote the type of the leaked/problematic object in diagnostics for readability
Differential Revision: https://reviews.llvm.org/D56344
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@350867 91177308-0d34-0410-b5e6-96231b3b80d8
11 files changed, 1263 insertions, 2500 deletions
diff --git a/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountDiagnostics.cpp b/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountDiagnostics.cpp index 0f01d9a995..1f370fc301 100644 --- a/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountDiagnostics.cpp +++ b/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountDiagnostics.cpp @@ -157,14 +157,14 @@ static void generateDiagnosticsForCallLike(ProgramStateRef CurrSt, } if (CurrV.getObjKind() == ObjKind::CF) { - os << " returns a Core Foundation object of type " - << Sym->getType().getAsString() << " with a "; + os << " a Core Foundation object of type '" + << Sym->getType().getAsString() << "' with a "; } else if (CurrV.getObjKind() == ObjKind::OS) { - os << " returns an OSObject of type " << getPrettyTypeName(Sym->getType()) - << " with a "; + os << " an OSObject of type '" << getPrettyTypeName(Sym->getType()) + << "' with a "; } else if (CurrV.getObjKind() == ObjKind::Generalized) { - os << " returns an object of type " << Sym->getType().getAsString() - << " with a "; + os << " an object of type '" << Sym->getType().getAsString() + << "' with a "; } else { assert(CurrV.getObjKind() == ObjKind::ObjC); QualType T = Sym->getType(); @@ -587,7 +587,8 @@ CFRefLeakReportVisitor::getEndPath(BugReporterContext &BRC, if (RegionDescription) { os << "object allocated and stored into '" << *RegionDescription << '\''; } else { - os << "allocated object of type " << getPrettyTypeName(Sym->getType()); + os << "allocated object of type '" << getPrettyTypeName(Sym->getType()) + << "'"; } // Get the retain count. @@ -724,7 +725,7 @@ void CFRefLeakReport::createDescription(CheckerContext &Ctx) { } else { // If we can't figure out the name, just supply the type information. - os << " of type " << getPrettyTypeName(Sym->getType()); + os << " of type '" << getPrettyTypeName(Sym->getType()) << "'"; } } diff --git a/test/Analysis/Inputs/expected-plists/edges-new.mm.plist b/test/Analysis/Inputs/expected-plists/edges-new.mm.plist index b5f5d6e604..449050d595 100644 --- a/test/Analysis/Inputs/expected-plists/edges-new.mm.plist +++ b/test/Analysis/Inputs/expected-plists/edges-new.mm.plist @@ -1933,9 +1933,9 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Call to function 'CFNumberCreate' returns a Core Foundation object of type CFNumberRef with a +1 retain count</string> + <string>Call to function 'CFNumberCreate' returns a Core Foundation object of type 'CFNumberRef' with a +1 retain count</string> <key>message</key> - <string>Call to function 'CFNumberCreate' returns a Core Foundation object of type CFNumberRef with a +1 retain count</string> + <string>Call to function 'CFNumberCreate' returns a Core Foundation object of type 'CFNumberRef' with a +1 retain count</string> </dict> <dict> <key>kind</key><string>control</string> diff --git a/test/Analysis/Inputs/expected-plists/objc-arc.m.plist b/test/Analysis/Inputs/expected-plists/objc-arc.m.plist index 3f9d63e7a6..966ea9ac09 100644 --- a/test/Analysis/Inputs/expected-plists/objc-arc.m.plist +++ b/test/Analysis/Inputs/expected-plists/objc-arc.m.plist @@ -223,9 +223,9 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Call to function 'CFDateCreate' returns a Core Foundation object of type CFDateRef with a +1 retain count</string> + <string>Call to function 'CFDateCreate' returns a Core Foundation object of type 'CFDateRef' with a +1 retain count</string> <key>message</key> - <string>Call to function 'CFDateCreate' returns a Core Foundation object of type CFDateRef with a +1 retain count</string> + <string>Call to function 'CFDateCreate' returns a Core Foundation object of type 'CFDateRef' with a +1 retain count</string> </dict> <dict> <key>kind</key><string>control</string> @@ -739,9 +739,9 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string> + <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type 'CFTypeRef' with a +1 retain count</string> <key>message</key> - <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string> + <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type 'CFTypeRef' with a +1 retain count</string> </dict> <dict> <key>kind</key><string>control</string> @@ -934,9 +934,9 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Call to function 'CFCreateString' returns a Core Foundation object of type CFStringRef with a +1 retain count</string> + <string>Call to function 'CFCreateString' returns a Core Foundation object of type 'CFStringRef' with a +1 retain count</string> <key>message</key> - <string>Call to function 'CFCreateString' returns a Core Foundation object of type CFStringRef with a +1 retain count</string> + <string>Call to function 'CFCreateString' returns a Core Foundation object of type 'CFStringRef' with a +1 retain count</string> </dict> <dict> <key>kind</key><string>control</string> @@ -1353,9 +1353,9 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Call to function 'CFDateCreate' returns a Core Foundation object of type CFDateRef with a +1 retain count</string> + <string>Call to function 'CFDateCreate' returns a Core Foundation object of type 'CFDateRef' with a +1 retain count</string> <key>message</key> - <string>Call to function 'CFDateCreate' returns a Core Foundation object of type CFDateRef with a +1 retain count</string> + <string>Call to function 'CFDateCreate' returns a Core Foundation object of type 'CFDateRef' with a +1 retain count</string> </dict> <dict> <key>kind</key><string>control</string> @@ -1679,9 +1679,9 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Call to function 'CFCreateString' returns a Core Foundation object of type CFStringRef with a +1 retain count</string> + <string>Call to function 'CFCreateString' returns a Core Foundation object of type 'CFStringRef' with a +1 retain count</string> <key>message</key> - <string>Call to function 'CFCreateString' returns a Core Foundation object of type CFStringRef with a +1 retain count</string> + <string>Call to function 'CFCreateString' returns a Core Foundation object of type 'CFStringRef' with a +1 retain count</string> </dict> <dict> <key>kind</key><string>control</string> @@ -1727,12 +1727,12 @@ </dict> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Object leaked: allocated object of type CFStringRef is not referenced later in this execution path and has a retain count of +1</string> + <string>Object leaked: allocated object of type 'CFStringRef' 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 CFStringRef is not referenced later in this execution path and has a retain count of +1</string> + <string>Object leaked: allocated object of type 'CFStringRef' 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 CFStringRef</string> + <key>description</key><string>Potential leak of an object of type 'CFStringRef'</string> <key>category</key><string>Memory (Core Foundation/Objective-C)</string> <key>type</key><string>Leak</string> <key>check_name</key><string>osx.cocoa.RetainCount</string> diff --git a/test/Analysis/Inputs/expected-plists/objc-radar17039661.m.plist b/test/Analysis/Inputs/expected-plists/objc-radar17039661.m.plist index 1cfbbbd5ad..b5b26d050e 100644 --- a/test/Analysis/Inputs/expected-plists/objc-radar17039661.m.plist +++ b/test/Analysis/Inputs/expected-plists/objc-radar17039661.m.plist @@ -1,1275 +1,1309 @@ -<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>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>15</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>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>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>6</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - <key>end</key> - <array> - <dict> - <key>line</key><integer>49</integer> - <key>col</key><integer>26</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>49</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> +<?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>line</key><integer>49</integer> - <key>col</key><integer>26</integer> - <key>file</key><integer>0</integer> - </dict> - <key>ranges</key> - <array> + <key>kind</key><string>control</string> + <key>edges</key> <array> <dict> - <key>line</key><integer>49</integer> - <key>col</key><integer>26</integer> - <key>file</key><integer>0</integer> + <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>line</key><integer>53</integer> - <key>col</key><integer>4</integer> - <key>file</key><integer>0</integer> + <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> - </array> - <key>depth</key><integer>0</integer> - <key>extended_message</key> - <string>Calling 'performAction'</string> - <key>message</key> - <string>Calling 'performAction'</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>1</integer> - <key>extended_message</key> - <string>Entered call from 'runTest'</string> - <key>message</key> - <string>Entered call from 'runTest'</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>6</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>15</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - </dict> - </array> - </dict> - <dict> - <key>kind</key><string>control</string> - <key>edges</key> + <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> - <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>15</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>21</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - </dict> + <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> - </dict> - <dict> - <key>kind</key><string>event</string> - <key>location</key> + <key>depth</key><integer>0</integer> + <key>extended_message</key> + <string>Calling 'performAction'</string> + <key>message</key> + <string>Calling 'performAction'</string> + </dict> <dict> - <key>line</key><integer>29</integer> - <key>col</key><integer>3</integer> - <key>file</key><integer>0</integer> + <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 'runTest'</string> + <key>message</key> + <string>Entered call from 'runTest'</string> </dict> - <key>ranges</key> - <array> + <dict> + <key>kind</key><string>control</string> + <key>edges</key> <array> <dict> - <key>line</key><integer>29</integer> - <key>col</key><integer>3</integer> - <key>file</key><integer>0</integer> + <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>line</key><integer>43</integer> - <key>col</key><integer>4</integer> - <key>file</key><integer>0</integer> + <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> - </array> - <key>depth</key><integer>1</integer> - <key>extended_message</key> - <string>Calling 'reallyPerformAction'</string> - <key>message</key> - <string>Calling 'reallyPerformAction'</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>2</integer> - <key>extended_message</key> - <string>Entered call from 'performAction'</string> - <key>message</key> - <string>Entered call from 'performAction'</string> - </dict> - <dict> - <key>kind</key><string>control</string> - <key>edges</key> + <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> - <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>6</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>16</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - </dict> + <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> - </dict> - <dict> - <key>kind</key><string>event</string> - <key>location</key> + <key>depth</key><integer>1</integer> + <key>extended_message</key> + <string>Calling 'reallyPerformAction'</string> + <key>message</key> + <string>Calling 'reallyPerformAction'</string> + </dict> <dict> - <key>line</key><integer>23</integer> - <key>col</key><integer>3</integer> - <key>file</key><integer>0</integer> + <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 'performAction'</string> + <key>message</key> + <string>Entered call from 'performAction'</string> </dict> - <key>ranges</key> - <array> + <dict> + <key>kind</key><string>control</string> + <key>edges</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>58</integer> - <key>file</key><integer>0</integer> + <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> - </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>29</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 'reallyPerformAction'</string> - <key>message</key> - <string>Entered call from 'reallyPerformAction'</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>23</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>29</integer> - <key>col</key><integer>23</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> + <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> - <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>12</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - </dict> + <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> - </dict> - <dict> - <key>kind</key><string>event</string> - <key>location</key> + <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>line</key><integer>31</integer> - <key>col</key><integer>9</integer> - <key>file</key><integer>0</integer> + <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 'reallyPerformAction'</string> + <key>message</key> + <string>Entered call from 'reallyPerformAction'</string> </dict> - <key>ranges</key> - <array> + <dict> + <key>kind</key><string>control</string> + <key>edges</key> <array> <dict> - <key>line</key><integer>31</integer> - <key>col</key><integer>9</integer> - <key>file</key><integer>0</integer> + <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>line</key><integer>31</integer> - <key>col</key><integer>12</integer> - <key>file</key><integer>0</integer> + <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> - </array> - <key>depth</key><integer>3</integer> - <key>extended_message</key> - <string>Assuming 'cond' is not equal to 0</string> - <key>message</key> - <string>Assuming 'cond' is not equal to 0</string> - </dict> - <dict> - <key>kind</key><string>control</string> - <key>edges</key> + </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> - <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>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>7</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> + <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> - </dict> - <dict> - <key>kind</key><string>event</string> - <key>location</key> - <dict> - <key>line</key><integer>33</integer> - <key>col</key><integer>30</integer> - <key>file</key><integer>0</integer> + <key>depth</key><integer>3</integer> + <key>extended_message</key> + <string>Assuming 'cond' is not equal to 0</string> + <key>message</key> + <string>Assuming 'cond' is not equal to 0</string> </dict> - <key>ranges</key> - <array> + <dict> + <key>kind</key><string>control</string> + <key>edges</key> <array> <dict> - <key>line</key><integer>33</integer> - <key>col</key><integer>30</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>33</integer> - <key>col</key><integer>50</integer> - <key>file</key><integer>0</integer> + <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> - </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>33</integer> - <key>col</key><integer>7</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> - <key>end</key> - <array> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>7</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>35</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> + </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> - <dict> - <key>start</key> - <array> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>7</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>14</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - <key>end</key> - <array> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>33</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>38</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - </dict> + <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> - </dict> - <dict> - <key>kind</key><string>event</string> - <key>location</key> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>33</integer> - <key>file</key><integer>0</integer> + <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> - <key>ranges</key> - <array> + <dict> + <key>kind</key><string>control</string> + <key>edges</key> <array> <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>33</integer> - <key>file</key><integer>0</integer> + <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>line</key><integer>35</integer> - <key>col</key><integer>50</integer> - <key>file</key><integer>0</integer> + <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> - </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>49</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> + <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> - <dict> - <key>start</key> - <array> - <dict> - <key>line</key><integer>49</integer> - <key>col</key><integer>40</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>49</integer> - <key>col</key><integer>40</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - <key>end</key> - <array> - <dict> - <key>line</key><integer>50</integer> - <key>col</key><integer>5</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>50</integer> - <key>col</key><integer>17</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - </dict> + <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> - </dict> - <dict> - <key>kind</key><string>event</string> - <key>location</key> + <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>line</key><integer>50</integer> - <key>col</key><integer>21</integer> - <key>file</key><integer>0</integer> + <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> - <key>ranges</key> - <array> + <dict> + <key>kind</key><string>control</string> + <key>edges</key> <array> <dict> - <key>line</key><integer>50</integer> - <key>col</key><integer>21</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>50</integer> - <key>col</key><integer>39</integer> - <key>file</key><integer>0</integer> + <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>line</key><integer>50</integer> - <key>col</key><integer>22</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>50</integer> - <key>col</key><integer>31</integer> - <key>file</key><integer>0</integer> + <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> - </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> + </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> - <dict> - <key>start</key> - <array> - <dict> - <key>line</key><integer>50</integer> - <key>col</key><integer>5</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>50</integer> - <key>col</key><integer>17</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>10</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - </dict> + <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> - </dict> - <dict> - <key>kind</key><string>event</string> - <key>location</key> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>33</integer> - <key>file</key><integer>0</integer> + <key>depth</key><integer>3</integer> + <key>extended_message</key> + <string>Returning to caller</string> + <key>message</key> + <string>Returning to caller</string> </dict> - <key>ranges</key> - <array> + <dict> + <key>kind</key><string>control</string> + <key>edges</key> <array> <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>33</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>50</integer> - <key>file</key><integer>0</integer> + <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> - </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>35</integer> - <key>col</key><integer>33</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>38</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - <key>end</key> - <array> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>7</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>35</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>35</integer> - <key>col</key><integer>7</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>14</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - <key>end</key> - <array> - <dict> - <key>line</key><integer>37</integer> - <key>col</key><integer>7</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> - </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>7</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> - <key>end</key> - <array> - <dict> - <key>line</key><integer>40</integer> - <key>col</key><integer>7</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>40</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>23</integer> - <key>col</key><integer>3</integer> - <key>file</key><integer>0</integer> </dict> - <key>ranges</key> - <array> + <dict> + <key>kind</key><string>control</string> + <key>edges</key> <array> <dict> - <key>line</key><integer>23</integer> - <key>col</key><integer>3</integer> - <key>file</key><integer>0</integer> + <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>line</key><integer>23</integer> - <key>col</key><integer>58</integer> - <key>file</key><integer>0</integer> + <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> - </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> + </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> - <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>16</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> + <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> - </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> + <key>depth</key><integer>2</integer> + <key>extended_message</key> + <string>Returning to caller</string> + <key>message</key> + <string>Returning to caller</string> </dict> - <key>ranges</key> - <array> + <dict> + <key>kind</key><string>control</string> + <key>edges</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>58</integer> - <key>file</key><integer>0</integer> + <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> - </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>29</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 'reallyPerformAction'</string> - <key>message</key> - <string>Entered call from 'reallyPerformAction'</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>23</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>29</integer> - <key>col</key><integer>23</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> + <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> - <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>12</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - </dict> + <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> - </dict> - <dict> - <key>kind</key><string>event</string> - <key>location</key> + <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>line</key><integer>31</integer> - <key>col</key><integer>9</integer> - <key>file</key><integer>0</integer> + <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 'reallyPerformAction'</string> + <key>message</key> + <string>Entered call from 'reallyPerformAction'</string> </dict> - <key>ranges</key> - <array> + <dict> + <key>kind</key><string>control</string> + <key>edges</key> <array> <dict> - <key>line</key><integer>31</integer> - <key>col</key><integer>9</integer> - <key>file</key><integer>0</integer> + <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>line</key><integer>31</integer> - <key>col</key><integer>12</integer> - <key>file</key><integer>0</integer> + <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> - </array> - <key>depth</key><integer>3</integer> - <key>extended_message</key> - <string>Assuming 'cond' is not equal to 0</string> - <key>message</key> - <string>Assuming 'cond' 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>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>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>7</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>control</string> - <key>edges</key> - <array> - <dict> - <key>start</key> - <array> - <dict> - <key>line</key><integer>33</integer> - <key>col</key><integer>7</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> - <key>end</key> - <array> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>7</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>35</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> + </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> - <dict> - <key>start</key> - <array> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>7</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>14</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - <key>end</key> - <array> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>33</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>38</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - </dict> + <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> - </dict> - <dict> - <key>kind</key><string>event</string> - <key>location</key> - <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>33</integer> - <key>file</key><integer>0</integer> + <key>depth</key><integer>3</integer> + <key>extended_message</key> + <string>Assuming 'cond' is not equal to 0</string> + <key>message</key> + <string>Assuming 'cond' is not equal to 0</string> </dict> - <key>ranges</key> - <array> + <dict> + <key>kind</key><string>control</string> + <key>edges</key> <array> <dict> - <key>line</key><integer>35</integer> - <key>col</key><integer>33</integer> - <key>file</key><integer>0</integer> + <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>line</key><integer>35</integer> - <key>col</key><integer>50</integer> - <key>file</key><integer>0</integer> + <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> - </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> <dict> - <key>line</key><integer>49</integer> - <key>col</key><integer>40</integer> - <key>file</key><integer>0</integer> + <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> - <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>49</integer> - <key>col</key><integer>40</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>49</integer> - <key>col</key><integer>40</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - <key>end</key> - <array> - <dict> - <key>line</key><integer>50</integer> - <key>col</key><integer>5</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>50</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> + <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> - <dict> - <key>start</key> - <array> - <dict> - <key>line</key><integer>50</integer> - <key>col</key><integer>5</integer> - <key>file</key><integer>0</integer> - </dict> - <dict> - <key>line</key><integer>50</integer> - <key>col</key><integer>17</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>10</integer> - <key>file</key><integer>0</integer> - </dict> - </array> - </dict> + <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> - </dict> - <dict> - <key>kind</key><string>event</string> - <key>location</key> + <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>line</key><integer>52</integer> - <key>col</key><integer>5</integer> - <key>file</key><integer>0</integer> + <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> - <key>ranges</key> - <array> + <dict> + <key>kind</key><string>control</string> + <key>edges</key> <array> <dict> - <key>line</key><integer>52</integer> - <key>col</key><integer>5</integer> - <key>file</key><integer>0</integer> + <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>line</key><integer>52</integer> - <key>col</key><integer>21</integer> - <key>file</key><integer>0</integer> + <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> - </array> - <key>depth</key><integer>4</integer> - <key>extended_message</key> - <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string> - <key>message</key> - <string>Object leaked: allocated object 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</string> - <key>category</key><string>Memory (Core Foundation/Objective-C)</string> - <key>type</key><string>Leak</string> - <key>location</key> - <dict> - <key>line</key><integer>52</integer> - <key>col</key><integer>5</integer> - <key>file</key><integer>0</integer> - </dict> - </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 'NSNumber *' 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 'NSNumber *' 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 'NSNumber *'</string> + <key>category</key><string>Memory (Core Foundation/Objective-C)</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> +</plist>
\ No newline at end of file diff --git a/test/Analysis/Inputs/expected-plists/plist-output-alternate.m.plist b/test/Analysis/Inputs/expected-plists/plist-output-alternate.m.plist index b3383375dc..966d5a7bce 100644 --- a/test/Analysis/Inputs/expected-plists/plist-output-alternate.m.plist +++ b/test/Analysis/Inputs/expected-plists/plist-output-alternate.m.plist @@ -1299,9 +1299,9 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Call to function 'CFNumberCreate' returns a Core Foundation object of type CFNumberRef with a +1 retain count</string> + <string>Call to function 'CFNumberCreate' returns a Core Foundation object of type 'CFNumberRef' with a +1 retain count</string> <key>message</key> - <string>Call to function 'CFNumberCreate' returns a Core Foundation object of type CFNumberRef with a +1 retain count</string> + <string>Call to function 'CFNumberCreate' returns a Core Foundation object of type 'CFNumberRef' with a +1 retain count</string> </dict> <dict> <key>kind</key><string>control</string> 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 index f7ff277b54..13b654a19c 100644 --- a/test/Analysis/Inputs/expected-plists/retain-release-path-notes.m.plist +++ b/test/Analysis/Inputs/expected-plists/retain-release-path-notes.m.plist @@ -155,9 +155,9 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string> + <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type 'CFTypeRef' with a +1 retain count</string> <key>message</key> - <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string> + <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type 'CFTypeRef' with a +1 retain count</string> </dict> <dict> <key>kind</key><string>control</string> @@ -822,9 +822,9 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string> + <string>Call to function 'CFGetSomething' returns a Core Foundation object of type 'CFTypeRef' with a +0 retain count</string> <key>message</key> - <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string> + <string>Call to function 'CFGetSomething' returns a Core Foundation object of type 'CFTypeRef' with a +0 retain count</string> </dict> <dict> <key>kind</key><string>control</string> @@ -1883,9 +1883,9 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string> + <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type 'CFTypeRef' with a +1 retain count</string> <key>message</key> - <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string> + <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type 'CFTypeRef' with a +1 retain count</string> </dict> <dict> <key>kind</key><string>control</string> @@ -2006,9 +2006,9 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string> + <string>Call to function 'CFGetSomething' returns a Core Foundation object of type 'CFTypeRef' with a +0 retain count</string> <key>message</key> - <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string> + <string>Call to function 'CFGetSomething' returns a Core Foundation object of type 'CFTypeRef' with a +0 retain count</string> </dict> <dict> <key>kind</key><string>control</string> @@ -2127,9 +2127,9 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string> + <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type 'CFTypeRef' with a +1 retain count</string> <key>message</key> - <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string> + <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type 'CFTypeRef' with a +1 retain count</string> </dict> <dict> <key>kind</key><string>control</string> @@ -3834,12 +3834,12 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Object leaked: allocated object of type MyObj * is not referenced later in this execution path and has a retain count of +1</string> + <string>Object leaked: allocated object of type 'MyObj *' 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 MyObj * is not referenced later in this execution path and has a retain count of +1</string> + <string>Object leaked: allocated object of type 'MyObj *' 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 MyObj *</string> + <key>description</key><string>Potential leak of an object of type 'MyObj *'</string> <key>category</key><string>Memory (Core Foundation/Objective-C)</string> <key>type</key><string>Leak</string> <key>check_name</key><string>osx.cocoa.RetainCount</string> @@ -4298,9 +4298,9 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string> + <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type 'CFTypeRef' with a +1 retain count</string> <key>message</key> - <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count</string> + <string>Call to function 'CFCreateSomething' returns a Core Foundation object of type 'CFTypeRef' with a +1 retain count</string> </dict> <dict> <key>kind</key><string>control</string> @@ -4571,9 +4571,9 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string> + <string>Call to function 'CFGetSomething' returns a Core Foundation object of type 'CFTypeRef' with a +0 retain count</string> <key>message</key> - <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string> + <string>Call to function 'CFGetSomething' returns a Core Foundation object of type 'CFTypeRef' with a +0 retain count</string> </dict> <dict> <key>kind</key><string>control</string> @@ -4768,9 +4768,9 @@ </array> <key>depth</key><integer>0</integer> <key>extended_message</key> - <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string> + <string>Call to function 'CFGetSomething' returns a Core Foundation object of type 'CFTypeRef' with a +0 retain count</string> <key>message</key> - <string>Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count</string> + <string>Call to function 'CFGetSomething' returns a Core Foundation object of type 'CFTypeRef' with a +0 retain count</string> </dict> <dict> <key>kind</key><string>control</string> diff --git a/test/Analysis/objc-radar17039661.m b/test/Analysis/objc-radar17039661.m index 5f7c531eae..484e43c5dd 100644 --- a/test/Analysis/objc-radar17039661.m +++ b/test/Analysis/objc-radar17039661.m @@ -1,6 +1,7 @@ // 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: FileCheck --input-file=%t %s +// RUN: cat %t | %diff_plist %S/Inputs/expected-plists/objc-radar17039661.m.plist - + @class NSString; typedef long NSInteger; typedef unsigned char BOOL; @@ -58,1276 +59,3 @@ void runTest() { return; } } - -// CHECK: <key>diagnostics</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>path</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>48</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>48</integer> -// CHECK: <key>col</key><integer>15</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>49</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>49</integer> -// CHECK: <key>col</key><integer>6</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>49</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>49</integer> -// CHECK: <key>col</key><integer>6</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>49</integer> -// CHECK: <key>col</key><integer>26</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>49</integer> -// CHECK: <key>col</key><integer>38</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>49</integer> -// CHECK: <key>col</key><integer>26</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>ranges</key> -// CHECK: <array> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>49</integer> -// CHECK: <key>col</key><integer>26</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>53</integer> -// CHECK: <key>col</key><integer>4</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </array> -// CHECK: <key>depth</key><integer>0</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Calling 'performAction'</string> -// CHECK: <key>message</key> -// CHECK: <string>Calling 'performAction'</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>27</integer> -// CHECK: <key>col</key><integer>1</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>depth</key><integer>1</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Entered call from 'runTest'</string> -// CHECK: <key>message</key> -// CHECK: <string>Entered call from 'runTest'</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>27</integer> -// CHECK: <key>col</key><integer>1</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>27</integer> -// CHECK: <key>col</key><integer>6</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>28</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>28</integer> -// CHECK: <key>col</key><integer>15</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>28</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>28</integer> -// CHECK: <key>col</key><integer>15</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>29</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>29</integer> -// CHECK: <key>col</key><integer>21</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>29</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>ranges</key> -// CHECK: <array> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>29</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>43</integer> -// CHECK: <key>col</key><integer>4</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </array> -// CHECK: <key>depth</key><integer>1</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Calling 'reallyPerformAction'</string> -// CHECK: <key>message</key> -// CHECK: <string>Calling 'reallyPerformAction'</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>22</integer> -// CHECK: <key>col</key><integer>1</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>depth</key><integer>2</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Entered call from 'performAction'</string> -// CHECK: <key>message</key> -// CHECK: <string>Entered call from 'performAction'</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>22</integer> -// CHECK: <key>col</key><integer>1</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>22</integer> -// CHECK: <key>col</key><integer>6</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>23</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>23</integer> -// CHECK: <key>col</key><integer>16</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>23</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>ranges</key> -// CHECK: <array> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>23</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>23</integer> -// CHECK: <key>col</key><integer>58</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </array> -// CHECK: <key>depth</key><integer>2</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Calling anonymous block</string> -// CHECK: <key>message</key> -// CHECK: <string>Calling anonymous block</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>29</integer> -// CHECK: <key>col</key><integer>23</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>depth</key><integer>3</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Entered call from 'reallyPerformAction'</string> -// CHECK: <key>message</key> -// CHECK: <string>Entered call from 'reallyPerformAction'</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>29</integer> -// CHECK: <key>col</key><integer>23</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>29</integer> -// CHECK: <key>col</key><integer>23</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>5</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>6</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>5</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>6</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>9</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>12</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>9</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>ranges</key> -// CHECK: <array> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>9</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>12</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </array> -// CHECK: <key>depth</key><integer>3</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Assuming 'cond' is not equal to 0</string> -// CHECK: <key>message</key> -// CHECK: <string>Assuming 'cond' is not equal to 0</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>9</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>12</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>33</integer> -// CHECK: <key>col</key><integer>7</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>33</integer> -// CHECK: <key>col</key><integer>14</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>33</integer> -// CHECK: <key>col</key><integer>30</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>ranges</key> -// CHECK: <array> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>33</integer> -// CHECK: <key>col</key><integer>30</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>33</integer> -// CHECK: <key>col</key><integer>50</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </array> -// CHECK: <key>depth</key><integer>3</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>NSNumber boxed expression produces an object with a +0 retain count</string> -// CHECK: <key>message</key> -// CHECK: <string>NSNumber boxed expression produces an object with a +0 retain count</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>33</integer> -// CHECK: <key>col</key><integer>7</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>33</integer> -// CHECK: <key>col</key><integer>14</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>7</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>14</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>7</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>14</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>33</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>38</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>33</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>ranges</key> -// CHECK: <array> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>33</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>50</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </array> -// CHECK: <key>depth</key><integer>3</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Calling anonymous block</string> -// CHECK: <key>message</key> -// CHECK: <string>Calling anonymous block</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>49</integer> -// CHECK: <key>col</key><integer>40</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>depth</key><integer>4</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Entered call</string> -// CHECK: <key>message</key> -// CHECK: <string>Entered call</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>49</integer> -// CHECK: <key>col</key><integer>40</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>49</integer> -// CHECK: <key>col</key><integer>40</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>50</integer> -// CHECK: <key>col</key><integer>5</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>50</integer> -// CHECK: <key>col</key><integer>17</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>50</integer> -// CHECK: <key>col</key><integer>21</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>ranges</key> -// CHECK: <array> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>50</integer> -// CHECK: <key>col</key><integer>21</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>50</integer> -// CHECK: <key>col</key><integer>39</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>50</integer> -// CHECK: <key>col</key><integer>22</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>50</integer> -// CHECK: <key>col</key><integer>31</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </array> -// CHECK: <key>depth</key><integer>4</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Reference count incremented. The object now has a +1 retain count</string> -// CHECK: <key>message</key> -// CHECK: <string>Reference count incremented. The object now has a +1 retain count</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>50</integer> -// CHECK: <key>col</key><integer>5</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>50</integer> -// CHECK: <key>col</key><integer>17</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>52</integer> -// CHECK: <key>col</key><integer>5</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>52</integer> -// CHECK: <key>col</key><integer>10</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>33</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>ranges</key> -// CHECK: <array> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>33</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>50</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </array> -// CHECK: <key>depth</key><integer>3</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Returning to caller</string> -// CHECK: <key>message</key> -// CHECK: <string>Returning to caller</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>33</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>38</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>7</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>14</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>7</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>14</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>37</integer> -// CHECK: <key>col</key><integer>7</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>37</integer> -// CHECK: <key>col</key><integer>8</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>37</integer> -// CHECK: <key>col</key><integer>7</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>37</integer> -// CHECK: <key>col</key><integer>8</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>40</integer> -// CHECK: <key>col</key><integer>7</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>40</integer> -// CHECK: <key>col</key><integer>18</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>23</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>ranges</key> -// CHECK: <array> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>23</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>23</integer> -// CHECK: <key>col</key><integer>58</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </array> -// CHECK: <key>depth</key><integer>2</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Returning to caller</string> -// CHECK: <key>message</key> -// CHECK: <string>Returning to caller</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>23</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>23</integer> -// CHECK: <key>col</key><integer>16</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>24</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>24</integer> -// CHECK: <key>col</key><integer>16</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>24</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>ranges</key> -// CHECK: <array> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>24</integer> -// CHECK: <key>col</key><integer>3</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>24</integer> -// CHECK: <key>col</key><integer>58</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </array> -// CHECK: <key>depth</key><integer>2</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Calling anonymous block</string> -// CHECK: <key>message</key> -// CHECK: <string>Calling anonymous block</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>29</integer> -// CHECK: <key>col</key><integer>23</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>depth</key><integer>3</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Entered call from 'reallyPerformAction'</string> -// CHECK: <key>message</key> -// CHECK: <string>Entered call from 'reallyPerformAction'</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>29</integer> -// CHECK: <key>col</key><integer>23</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>29</integer> -// CHECK: <key>col</key><integer>23</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>5</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>6</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>5</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>6</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>9</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>12</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>9</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>ranges</key> -// CHECK: <array> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>9</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>12</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </array> -// CHECK: <key>depth</key><integer>3</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Assuming 'cond' is not equal to 0</string> -// CHECK: <key>message</key> -// CHECK: <string>Assuming 'cond' is not equal to 0</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>9</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>31</integer> -// CHECK: <key>col</key><integer>12</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>33</integer> -// CHECK: <key>col</key><integer>7</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>33</integer> -// CHECK: <key>col</key><integer>14</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>33</integer> -// CHECK: <key>col</key><integer>7</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>33</integer> -// CHECK: <key>col</key><integer>14</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>7</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>14</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>7</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>14</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>33</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>38</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>33</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>ranges</key> -// CHECK: <array> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>33</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>35</integer> -// CHECK: <key>col</key><integer>50</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </array> -// CHECK: <key>depth</key><integer>3</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Calling anonymous block</string> -// CHECK: <key>message</key> -// CHECK: <string>Calling anonymous block</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>49</integer> -// CHECK: <key>col</key><integer>40</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>depth</key><integer>4</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Entered call</string> -// CHECK: <key>message</key> -// CHECK: <string>Entered call</string> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>49</integer> -// CHECK: <key>col</key><integer>40</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>49</integer> -// CHECK: <key>col</key><integer>40</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>50</integer> -// CHECK: <key>col</key><integer>5</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>50</integer> -// CHECK: <key>col</key><integer>17</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>control</string> -// CHECK: <key>edges</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>start</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>50</integer> -// CHECK: <key>col</key><integer>5</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>50</integer> -// CHECK: <key>col</key><integer>17</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>end</key> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>52</integer> -// CHECK: <key>col</key><integer>5</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>52</integer> -// CHECK: <key>col</key><integer>10</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>kind</key><string>event</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>52</integer> -// CHECK: <key>col</key><integer>5</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <key>ranges</key> -// CHECK: <array> -// CHECK: <array> -// CHECK: <dict> -// CHECK: <key>line</key><integer>52</integer> -// CHECK: <key>col</key><integer>5</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: <dict> -// CHECK: <key>line</key><integer>52</integer> -// CHECK: <key>col</key><integer>21</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </array> -// CHECK: </array> -// CHECK: <key>depth</key><integer>4</integer> -// CHECK: <key>extended_message</key> -// CHECK: <string>Object leaked: allocated object of type NSNumber * is not referenced later in this execution path and has a retain count of +1</string> -// CHECK: <key>message</key> -// CHECK: <string>Object leaked: allocated object of type NSNumber * is not referenced later in this execution path and has a retain count of +1</string> -// CHECK: </dict> -// CHECK: </array> -// CHECK: <key>description</key><string>Potential leak of an object of type NSNumber *</string> -// CHECK: <key>category</key><string>Memory (Core Foundation/Objective-C)</string> -// CHECK: <key>type</key><string>Leak</string> -// CHECK: <key>location</key> -// CHECK: <dict> -// CHECK: <key>line</key><integer>52</integer> -// CHECK: <key>col</key><integer>5</integer> -// CHECK: <key>file</key><integer>0</integer> -// CHECK: </dict> -// CHECK: </dict> -// CHECK: </array> diff --git a/test/Analysis/osobject-retain-release.cpp b/test/Analysis/osobject-retain-release.cpp index 1fc5e31aa5..ca8a45c37f 100644 --- a/test/Analysis/osobject-retain-release.cpp +++ b/test/Analysis/osobject-retain-release.cpp @@ -117,14 +117,14 @@ void os_consume_ok(OS_CONSUME OSObject *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}} + 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}} + 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}} @@ -195,7 +195,7 @@ void check_free_no_error() { } 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}} + 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}} @@ -203,13 +203,13 @@ void check_free_use_after_free() { } 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}} + 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}} + 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'}} } @@ -228,18 +228,18 @@ void check_custom_iterator_rule(OSArray *arr) { } 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}} + 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}} + 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}} + 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}} } @@ -266,8 +266,8 @@ struct ArrayOwner : public OSObject { }; 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}} + 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() { @@ -285,7 +285,7 @@ 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}} + // 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() { @@ -354,14 +354,14 @@ void check_dynamic_cast_null_check() { } 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}} + 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}} + 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(); @@ -412,7 +412,7 @@ unsigned int no_warn_ok_release(ArrayOwner *owner) { } 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}} + 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(); diff --git a/test/Analysis/retain-release-arc.m b/test/Analysis/retain-release-arc.m index 702f8a4116..31081e964a 100644 --- a/test/Analysis/retain-release-arc.m +++ b/test/Analysis/retain-release-arc.m @@ -90,7 +90,7 @@ void _dispatch_object_validate(dispatch_object_t object); 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}} + // 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 diff --git a/test/Analysis/retain-release-path-notes.m b/test/Analysis/retain-release-path-notes.m index bd24b6aa80..23171eda1c 100644 --- a/test/Analysis/retain-release-path-notes.m +++ b/test/Analysis/retain-release-path-notes.m @@ -49,7 +49,7 @@ void creationViaAlloc () { } void creationViaCFCreate () { - CFTypeRef leaked = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count}} + 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}} } @@ -68,7 +68,7 @@ void acquisitionViaProperty (Foo *foo) { } void acquisitionViaCFFunction () { - CFTypeRef leaked = CFGetSomething(); // expected-note{{Call to function 'CFGetSomething' returns a Core Foundation object of type CFTypeRef with a +0 retain count}} + 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}} } @@ -99,19 +99,19 @@ void autoreleaseUnowned (Foo *foo) { } void makeCollectableIgnored() { - CFTypeRef leaked = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count}} + 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}} + 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}} + 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}} } @@ -227,7 +227,7 @@ static int Cond; // 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}} + // 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'}} @@ -244,20 +244,20 @@ static int Cond; void CFOverAutorelease() { - CFTypeRef object = CFCreateSomething(); // expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object of type CFTypeRef with a +1 retain count}} + 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}} + 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}} + 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}} diff --git a/test/Analysis/retaincountchecker-compoundregion.m b/test/Analysis/retaincountchecker-compoundregion.m index ce1f7a9aa1..83857e268d 100644 --- a/test/Analysis/retaincountchecker-compoundregion.m +++ b/test/Analysis/retaincountchecker-compoundregion.m @@ -19,7 +19,7 @@ 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}} + 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'}} }; } |