r350867 - [analyzer] Quote the type of the leaked/problematic object in diagnostics for readability
George Karpenkov via cfe-commits
cfe-commits at lists.llvm.org
Thu Jan 10 10:15:58 PST 2019
Author: george.karpenkov
Date: Thu Jan 10 10:15:57 2019
New Revision: 350867
URL: http://llvm.org/viewvc/llvm-project?rev=350867&view=rev
Log:
[analyzer] Quote the type of the leaked/problematic object in diagnostics for readability
Differential Revision: https://reviews.llvm.org/D56344
Modified:
cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountDiagnostics.cpp
cfe/trunk/test/Analysis/Inputs/expected-plists/edges-new.mm.plist
cfe/trunk/test/Analysis/Inputs/expected-plists/objc-arc.m.plist
cfe/trunk/test/Analysis/Inputs/expected-plists/objc-radar17039661.m.plist
cfe/trunk/test/Analysis/Inputs/expected-plists/plist-output-alternate.m.plist
cfe/trunk/test/Analysis/Inputs/expected-plists/retain-release-path-notes.m.plist
cfe/trunk/test/Analysis/objc-radar17039661.m
cfe/trunk/test/Analysis/osobject-retain-release.cpp
cfe/trunk/test/Analysis/retain-release-arc.m
cfe/trunk/test/Analysis/retain-release-path-notes.m
cfe/trunk/test/Analysis/retaincountchecker-compoundregion.m
Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountDiagnostics.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountDiagnostics.cpp?rev=350867&r1=350866&r2=350867&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountDiagnostics.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountDiagnostics.cpp Thu Jan 10 10:15:57 2019
@@ -157,14 +157,14 @@ static void generateDiagnosticsForCallLi
}
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(BugRe
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(
} 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()) << "'";
}
}
Modified: cfe/trunk/test/Analysis/Inputs/expected-plists/edges-new.mm.plist
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/Inputs/expected-plists/edges-new.mm.plist?rev=350867&r1=350866&r2=350867&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/Inputs/expected-plists/edges-new.mm.plist (original)
+++ cfe/trunk/test/Analysis/Inputs/expected-plists/edges-new.mm.plist Thu Jan 10 10:15:57 2019
@@ -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>
Modified: cfe/trunk/test/Analysis/Inputs/expected-plists/objc-arc.m.plist
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/Inputs/expected-plists/objc-arc.m.plist?rev=350867&r1=350866&r2=350867&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/Inputs/expected-plists/objc-arc.m.plist (original)
+++ cfe/trunk/test/Analysis/Inputs/expected-plists/objc-arc.m.plist Thu Jan 10 10:15:57 2019
@@ -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>
Modified: cfe/trunk/test/Analysis/Inputs/expected-plists/objc-radar17039661.m.plist
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/Inputs/expected-plists/objc-radar17039661.m.plist?rev=350867&r1=350866&r2=350867&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/Inputs/expected-plists/objc-radar17039661.m.plist (original)
+++ cfe/trunk/test/Analysis/Inputs/expected-plists/objc-radar17039661.m.plist Thu Jan 10 10:15:57 2019
@@ -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>
- <dict>
- <key>line</key><integer>49</integer>
- <key>col</key><integer>26</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <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>53</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>0</integer>
- <key>extended_message</key>
- <string>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>
- <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>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>29</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>43</integer>
- <key>col</key><integer>4</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>1</integer>
- <key>extended_message</key>
- <string>Calling '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>
- <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>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>23</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>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>
- <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>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </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>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>33</integer>
- <key>col</key><integer>30</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <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>
- </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>
- <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>
- <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>
- </dict>
- <key>ranges</key>
- <array>
- <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>
- </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>
- <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>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>50</integer>
- <key>col</key><integer>21</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>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>
- <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>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>50</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>50</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>50</integer>
+ <key>col</key><integer>26</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>50</integer>
+ <key>col</key><integer>38</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
</dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>50</integer>
+ <key>col</key><integer>26</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>50</integer>
+ <key>col</key><integer>26</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>54</integer>
+ <key>col</key><integer>4</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>depth</key><integer>0</integer>
+ <key>extended_message</key>
+ <string>Calling '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>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>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
<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>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>50</integer>
- <key>col</key><integer>22</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>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>30</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>30</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>44</integer>
+ <key>col</key><integer>4</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>depth</key><integer>1</integer>
+ <key>extended_message</key>
+ <string>Calling '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>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>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
<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>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>4</integer>
- <key>extended_message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- <key>message</key>
- <string>Reference count incremented. The object now has a +1 retain count</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>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>
- <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>
- </dict>
- <key>ranges</key>
- <array>
- <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>
- </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>
- <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>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Returning to caller</string>
- <key>message</key>
- <string>Returning to caller</string>
- </dict>
- <dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>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>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>3</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>24</integer>
- <key>col</key><integer>58</integer>
- <key>file</key><integer>0</integer>
- </dict>
- </array>
- </array>
- <key>depth</key><integer>2</integer>
- <key>extended_message</key>
- <string>Calling anonymous block</string>
- <key>message</key>
- <string>Calling anonymous block</string>
- </dict>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>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>
- <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>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>9</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>31</integer>
- <key>col</key><integer>12</integer>
- <key>file</key><integer>0</integer>
- </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>
- <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>
- <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>
- </dict>
- <key>ranges</key>
- <array>
- <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>
- </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>
- <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>
- <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>
- <dict>
- <key>kind</key><string>event</string>
- <key>location</key>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <key>ranges</key>
- <array>
- <array>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>5</integer>
- <key>file</key><integer>0</integer>
- </dict>
- <dict>
- <key>line</key><integer>52</integer>
- <key>col</key><integer>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 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>24</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>24</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>24</integer>
+ <key>col</key><integer>58</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>depth</key><integer>2</integer>
+ <key>extended_message</key>
+ <string>Calling anonymous block</string>
+ <key>message</key>
+ <string>Calling anonymous block</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>30</integer>
+ <key>col</key><integer>23</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>depth</key><integer>3</integer>
+ <key>extended_message</key>
+ <string>Entered call from '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>30</integer>
+ <key>col</key><integer>23</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>30</integer>
+ <key>col</key><integer>23</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>5</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>5</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>12</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>12</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>depth</key><integer>3</integer>
+ <key>extended_message</key>
+ <string>Assuming '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>32</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>12</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>34</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>34</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>34</integer>
+ <key>col</key><integer>30</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>34</integer>
+ <key>col</key><integer>30</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>34</integer>
+ <key>col</key><integer>50</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>depth</key><integer>3</integer>
+ <key>extended_message</key>
+ <string>NSNumber boxed expression produces an object with a +0 retain count</string>
+ <key>message</key>
+ <string>NSNumber boxed expression produces an object with a +0 retain count</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>34</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>34</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>33</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>38</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>33</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>33</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>50</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>depth</key><integer>3</integer>
+ <key>extended_message</key>
+ <string>Calling anonymous block</string>
+ <key>message</key>
+ <string>Calling anonymous block</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>50</integer>
+ <key>col</key><integer>40</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>depth</key><integer>4</integer>
+ <key>extended_message</key>
+ <string>Entered call</string>
+ <key>message</key>
+ <string>Entered call</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>50</integer>
+ <key>col</key><integer>40</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>50</integer>
+ <key>col</key><integer>40</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>51</integer>
+ <key>col</key><integer>5</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>51</integer>
+ <key>col</key><integer>17</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>51</integer>
+ <key>col</key><integer>21</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>51</integer>
+ <key>col</key><integer>21</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>51</integer>
+ <key>col</key><integer>39</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <array>
+ <dict>
+ <key>line</key><integer>51</integer>
+ <key>col</key><integer>22</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>51</integer>
+ <key>col</key><integer>31</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>depth</key><integer>4</integer>
+ <key>extended_message</key>
+ <string>Reference count incremented. The object now has a +1 retain count</string>
+ <key>message</key>
+ <string>Reference count incremented. The object now has a +1 retain count</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>51</integer>
+ <key>col</key><integer>5</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>51</integer>
+ <key>col</key><integer>17</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>53</integer>
+ <key>col</key><integer>5</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>53</integer>
+ <key>col</key><integer>10</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>33</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>33</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>50</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>depth</key><integer>3</integer>
+ <key>extended_message</key>
+ <string>Returning to caller</string>
+ <key>message</key>
+ <string>Returning to caller</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>33</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>38</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>38</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>38</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>38</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>38</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>41</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>41</integer>
+ <key>col</key><integer>18</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>24</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>24</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>24</integer>
+ <key>col</key><integer>58</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>depth</key><integer>2</integer>
+ <key>extended_message</key>
+ <string>Returning to caller</string>
+ <key>message</key>
+ <string>Returning to caller</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>24</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>24</integer>
+ <key>col</key><integer>16</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>25</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>25</integer>
+ <key>col</key><integer>16</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>25</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>25</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>25</integer>
+ <key>col</key><integer>58</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>depth</key><integer>2</integer>
+ <key>extended_message</key>
+ <string>Calling anonymous block</string>
+ <key>message</key>
+ <string>Calling anonymous block</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>30</integer>
+ <key>col</key><integer>23</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>depth</key><integer>3</integer>
+ <key>extended_message</key>
+ <string>Entered call from '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>30</integer>
+ <key>col</key><integer>23</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>30</integer>
+ <key>col</key><integer>23</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>5</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>5</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>12</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>12</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>depth</key><integer>3</integer>
+ <key>extended_message</key>
+ <string>Assuming '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>32</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>12</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>34</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>34</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>34</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>34</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>33</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>38</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>33</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>33</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>36</integer>
+ <key>col</key><integer>50</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>depth</key><integer>3</integer>
+ <key>extended_message</key>
+ <string>Calling anonymous block</string>
+ <key>message</key>
+ <string>Calling anonymous block</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>50</integer>
+ <key>col</key><integer>40</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>depth</key><integer>4</integer>
+ <key>extended_message</key>
+ <string>Entered call</string>
+ <key>message</key>
+ <string>Entered call</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>50</integer>
+ <key>col</key><integer>40</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>50</integer>
+ <key>col</key><integer>40</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>51</integer>
+ <key>col</key><integer>5</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>51</integer>
+ <key>col</key><integer>17</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>51</integer>
+ <key>col</key><integer>5</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>51</integer>
+ <key>col</key><integer>17</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>53</integer>
+ <key>col</key><integer>5</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>53</integer>
+ <key>col</key><integer>10</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>53</integer>
+ <key>col</key><integer>5</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>53</integer>
+ <key>col</key><integer>5</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>53</integer>
+ <key>col</key><integer>21</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>depth</key><integer>4</integer>
+ <key>extended_message</key>
+ <string>Object leaked: allocated object of type '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
Modified: cfe/trunk/test/Analysis/Inputs/expected-plists/plist-output-alternate.m.plist
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/Inputs/expected-plists/plist-output-alternate.m.plist?rev=350867&r1=350866&r2=350867&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/Inputs/expected-plists/plist-output-alternate.m.plist (original)
+++ cfe/trunk/test/Analysis/Inputs/expected-plists/plist-output-alternate.m.plist Thu Jan 10 10:15:57 2019
@@ -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>
Modified: cfe/trunk/test/Analysis/Inputs/expected-plists/retain-release-path-notes.m.plist
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/Inputs/expected-plists/retain-release-path-notes.m.plist?rev=350867&r1=350866&r2=350867&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/Inputs/expected-plists/retain-release-path-notes.m.plist (original)
+++ cfe/trunk/test/Analysis/Inputs/expected-plists/retain-release-path-notes.m.plist Thu Jan 10 10:15:57 2019
@@ -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>
Modified: cfe/trunk/test/Analysis/objc-radar17039661.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/objc-radar17039661.m?rev=350867&r1=350866&r2=350867&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/objc-radar17039661.m (original)
+++ cfe/trunk/test/Analysis/objc-radar17039661.m Thu Jan 10 10:15:57 2019
@@ -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>
Modified: cfe/trunk/test/Analysis/osobject-retain-release.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/osobject-retain-release.cpp?rev=350867&r1=350866&r2=350867&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/osobject-retain-release.cpp (original)
+++ cfe/trunk/test/Analysis/osobject-retain-release.cpp Thu Jan 10 10:15:57 2019
@@ -117,14 +117,14 @@ void os_consume_ok(OS_CONSUME OSObject *
}
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 at -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 at -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 at -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 at -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 at -1{{Potential leak of an object stored into 'arr'}}
}
@@ -228,18 +228,18 @@ void check_custom_iterator_rule(OSArray
}
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 at -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 at -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 at -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 at -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 at -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 at -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 at -1{{Calling 'generateArray'}}
// expected-note at -2{{Returning from 'generateArray'}}
- // expected-note at -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 at -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 at -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(ArrayOwn
}
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 at -1{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
return arr->getCount();
Modified: cfe/trunk/test/Analysis/retain-release-arc.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/retain-release-arc.m?rev=350867&r1=350866&r2=350867&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/retain-release-arc.m (original)
+++ cfe/trunk/test/Analysis/retain-release-arc.m Thu Jan 10 10:15:57 2019
@@ -90,7 +90,7 @@ void _dispatch_object_validate(dispatch_
CFErrorRef error;
CFDictionaryRef testDict = CFPropertyListCreateWithData(kCFAllocatorDefault, (__bridge CFDataRef)plistData, 0, 0, &error);
#if HAS_ARC
- // expected-note at -2 {{Call to function 'CFPropertyListCreateWithData' returns a Core Foundation object of type CFPropertyListRef with a +1 retain count}}
+ // expected-note at -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
Modified: cfe/trunk/test/Analysis/retain-release-path-notes.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/retain-release-path-notes.m?rev=350867&r1=350866&r2=350867&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/retain-release-path-notes.m (original)
+++ cfe/trunk/test/Analysis/retain-release-path-notes.m Thu Jan 10 10:15:57 2019
@@ -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 at -1 {{Method returns an instance of MyObj with a +1 retain count}}
// expected-note at -2 {{Calling 'initX'}}
// expected-note at -3 {{Returning from 'initX'}}
- // expected-note at -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 at -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 at -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}}
Modified: cfe/trunk/test/Analysis/retaincountchecker-compoundregion.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/retaincountchecker-compoundregion.m?rev=350867&r1=350866&r2=350867&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/retaincountchecker-compoundregion.m (original)
+++ cfe/trunk/test/Analysis/retaincountchecker-compoundregion.m Thu Jan 10 10:15:57 2019
@@ -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'}}
};
}
More information about the cfe-commits
mailing list