// 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() {
  __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() {
  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() {
  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}}
  }();
}
