|  | // RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=none -fblocks -analyzer-config eagerly-assume=false -verify %s | 
|  | // RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=none -fblocks -analyzer-config eagerly-assume=false -verify -x c++ %s | 
|  |  | 
|  | void clang_analyzer_eval(int); | 
|  |  | 
|  | void testInvalidation(void) { | 
|  | __block int i = 0; | 
|  | ^{ | 
|  | ++i; | 
|  | }(); | 
|  |  | 
|  | // Under inlining, we will know that i == 1. | 
|  | clang_analyzer_eval(i == 0); // expected-warning{{UNKNOWN}} | 
|  | } | 
|  |  | 
|  |  | 
|  | const int globalConstant = 1; | 
|  | void testCapturedConstants(void) { | 
|  | const int localConstant = 2; | 
|  | static const int staticConstant = 3; | 
|  |  | 
|  | ^{ | 
|  | clang_analyzer_eval(globalConstant == 1); // expected-warning{{TRUE}} | 
|  | clang_analyzer_eval(localConstant == 2); // expected-warning{{TRUE}} | 
|  | clang_analyzer_eval(staticConstant == 3); // expected-warning{{TRUE}} | 
|  | }(); | 
|  | } | 
|  |  | 
|  | typedef const int constInt; | 
|  | constInt anotherGlobalConstant = 1; | 
|  | void testCapturedConstantsTypedef(void) { | 
|  | constInt localConstant = 2; | 
|  | static constInt staticConstant = 3; | 
|  |  | 
|  | ^{ | 
|  | clang_analyzer_eval(anotherGlobalConstant == 1); // expected-warning{{TRUE}} | 
|  | clang_analyzer_eval(localConstant == 2); // expected-warning{{TRUE}} | 
|  | clang_analyzer_eval(staticConstant == 3); // expected-warning{{TRUE}} | 
|  | }(); | 
|  | } |