// 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}} } }