// RUN: %clang_cc1 -std=c++1z -verify %s

void testIf() {
  int x = 0;
  if (x; x) ++x;
  if (int t = 0; t) ++t; else --t;

  if (int x, y = 0; y) // expected-note 2 {{previous definition is here}}
    int x = 0; // expected-error {{redefinition of 'x'}}
  else
    int x = 0; // expected-error {{redefinition of 'x'}}

  if (x; int a = 0) ++a;
  if (x, +x; int a = 0) // expected-note 2 {{previous definition is here}} expected-warning {{unused}}
    int a = 0; // expected-error {{redefinition of 'a'}}
  else
    int a = 0; // expected-error {{redefinition of 'a'}}

  if (int b = 0; b)
    ;
  b = 2; // expected-error {{use of undeclared identifier}}
}

void testSwitch() {
  int x = 0;
  switch (x; x) {
    case 1:
      ++x;
  }

  switch (int x, y = 0; y) {
    case 1:
      ++x;
    default:
      ++y;
  }

  switch (int x, y = 0; y) { // expected-note 2 {{previous definition is here}}
    case 0:
      int x = 0; // expected-error {{redefinition of 'x'}}
    case 1:
      int y = 0; // expected-error {{redefinition of 'y'}}
  };

  switch (x; int a = 0) {
    case 0:
      ++a;
  }

  switch (x, +x; int a = 0) { // expected-note {{previous definition is here}} expected-warning {{unused}}
    case 0:
      int a = 0; // expected-error {{redefinition of 'a'}} // expected-note {{previous definition is here}}
    case 1:
      int a = 0; // expected-error {{redefinition of 'a'}}
  }

  switch (int b = 0; b) {
    case 0:
      break;
  }
  b = 2; // expected-error {{use of undeclared identifier}}
}

constexpr bool constexpr_if_init(int n) {
  if (int a = n; ++a > 0)
    return true;
  else
    return false;
}

constexpr int constexpr_switch_init(int n) {
  switch (int p = n + 2; p) {
    case 0:
      return 0;
    case 1:
      return 1;
    default:
      return -1;
  }
}

void test_constexpr_init_stmt() {
  constexpr bool a = constexpr_if_init(-2);
  static_assert(!a, "");
  static_assert(constexpr_if_init(1), "");

  constexpr int b = constexpr_switch_init(-1);
  static_assert(b == 1, "");
  static_assert(constexpr_switch_init(-2) == 0, "");
  static_assert(constexpr_switch_init(-5) == -1, "");
}
