// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -std=gnu++98 %s
// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -std=gnu++11 %s

// C++-specific tests for integral constant expressions.

const int c = 10;
int ar[c];

struct X0 {
  static const int value = static_cast<int>(4.0);
};

void f() {
  if (const int value = 17) {
    int array[value];
  }
}

int a() {
  const int t=t; // expected-note {{declared here}}
#if __cplusplus <= 199711L
  // expected-note@-2 {{read of object outside its lifetime}}
#endif

  switch(1) { // do not warn that 1 is not a case value;
              // 't' might have been expected to evalaute to 1
    case t:; // expected-note {{initializer of 't' is not a constant expression}}
#if __cplusplus <= 199711L
    // expected-error@-2 {{not an integral constant expression}}
#else
    // expected-error@-4 {{case value is not a constant expression}}
#endif
  }
}

// PR6206:  out-of-line definitions are legit
namespace pr6206 {
  class Foo {
  public:
    static const int kBar;
  };

  const int Foo::kBar = 20;
  
  char Test() {
    char str[Foo::kBar];
    str[0] = '0';
    return str[0];
  }
}

// PR6373:  default arguments don't count.
void pr6373(const unsigned x = 0) {
  unsigned max = 80 / x;
}


// rdar://9204520
namespace rdar9204520 {
  
struct A {
  static const int B = int(0.75 * 1000 * 1000);
#if __cplusplus <= 199711L
  // expected-warning@-2 {{not a constant expression; folding it to a constant is a GNU extension}}
#endif
};

int foo() { return A::B; }
}

// PR11040
const int x = 10;
int* y = reinterpret_cast<const char&>(x); // expected-error {{cannot initialize}}

// This isn't an integral constant expression, but make sure it folds anyway.
struct PR8836 { char _; long long a; };
#if __cplusplus <= 199711L
// expected-warning@-2 {{'long long' is a C++11 extension}}
#endif

int PR8836test[(__typeof(sizeof(int)))&reinterpret_cast<const volatile char&>((((PR8836*)0)->a))];
// expected-warning@-1 {{folded to constant array as an extension}}
// expected-note@-2 {{cast that performs the conversions of a reinterpret_cast is not allowed in a constant expression}}

const int nonconst = 1.0;
#if __cplusplus <= 199711L
// expected-note@-2 {{declared here}}
#endif
int arr[nonconst];
#if __cplusplus <= 199711L
// expected-warning@-2 {{folded to constant array as an extension}}
// expected-note@-3 {{initializer of 'nonconst' is not a constant expression}}
#endif

const int castfloat = static_cast<int>(1.0);
int arr2[castfloat]; // ok
