diff options
author | dim <dim@FreeBSD.org> | 2013-06-10 20:45:12 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2013-06-10 20:45:12 +0000 |
commit | ea266cad53e3d49771fa38103913d3ec7a166694 (patch) | |
tree | 8f7776b7310bebaf415ac5b69e46e9f928c37144 /test/Analysis/objc-string.mm | |
parent | c72c57c9e9b69944e3e009cd5e209634839581d3 (diff) | |
download | FreeBSD-src-ea266cad53e3d49771fa38103913d3ec7a166694.zip FreeBSD-src-ea266cad53e3d49771fa38103913d3ec7a166694.tar.gz |
Vendor import of clang tags/RELEASE_33/final r183502 (effectively, 3.3
release):
http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_33/final@183502
Diffstat (limited to 'test/Analysis/objc-string.mm')
-rw-r--r-- | test/Analysis/objc-string.mm | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/test/Analysis/objc-string.mm b/test/Analysis/objc-string.mm new file mode 100644 index 0000000..c67ab5e --- /dev/null +++ b/test/Analysis/objc-string.mm @@ -0,0 +1,39 @@ +// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s + +void clang_analyzer_eval(bool); +@class NSString; + +void sanity() { + clang_analyzer_eval(@""); // expected-warning{{TRUE}} + clang_analyzer_eval(@"abc"); // expected-warning{{TRUE}} +} + +namespace rdar13773117 { + NSString *const kConstantGlobalString = @"foo"; + NSString *globalString = @"bar"; + + extern void invalidateGlobals(); + + void testGlobals() { + clang_analyzer_eval(kConstantGlobalString); // expected-warning{{TRUE}} + clang_analyzer_eval(globalString); // expected-warning{{UNKNOWN}} + + globalString = @"baz"; + clang_analyzer_eval(globalString); // expected-warning{{TRUE}} + + invalidateGlobals(); + + clang_analyzer_eval(kConstantGlobalString); // expected-warning{{TRUE}} + clang_analyzer_eval(globalString); // expected-warning{{UNKNOWN}} + } + + NSString *returnString(NSString *input = @"garply") { + return input; + } + + void testDefaultArg() { + clang_analyzer_eval(returnString(@"")); // expected-warning{{TRUE}} + clang_analyzer_eval(returnString(0)); // expected-warning{{FALSE}} + clang_analyzer_eval(returnString()); // expected-warning{{TRUE}} + } +} |