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

void f(int n) {
  switch (n) {
  case 0:
    n += 1;
    [[fallthrough]]; // ok
  case 1:
    if (n) {
      [[fallthrough]]; // ok
    } else {
      return;
    }
  case 2:
    for (int n = 0; n != 10; ++n)
      [[fallthrough]]; // expected-error {{does not directly precede switch label}}
  case 3:
    while (true)
      [[fallthrough]]; // expected-error {{does not directly precede switch label}}
  case 4:
    while (false)
      [[fallthrough]]; // expected-error {{does not directly precede switch label}}
  case 5:
    do [[fallthrough]]; while (true); // expected-error {{does not directly precede switch label}}
  case 6:
    do [[fallthrough]]; while (false); // expected-error {{does not directly precede switch label}}
  case 7:
    switch (n) {
    case 0:
      // FIXME: This should be an error, even though the next thing we do is to
      // fall through in an outer switch statement.
      [[fallthrough]];
    }
  case 8:
    [[fallthrough]]; // expected-error {{does not directly precede switch label}}
    goto label;
  label:
  case 9:
    n += 1;
  case 10: // no warning, -Wimplicit-fallthrough is not enabled in this test, and does not need to
           // be enabled for these diagnostics to be produced.
    break;
  }
}

[[fallthrough]] typedef int n; // expected-error {{'fallthrough' attribute cannot be applied to a declaration}}
typedef int [[fallthrough]] n; // expected-error {{'fallthrough' attribute cannot be applied to types}}
typedef int n [[fallthrough]]; // expected-error {{'fallthrough' attribute cannot be applied to a declaration}}

enum [[fallthrough]] E {}; // expected-error {{'fallthrough' attribute cannot be applied to a declaration}}
class [[fallthrough]] C {}; // expected-error {{'fallthrough' attribute cannot be applied to a declaration}}

[[fallthrough]] // expected-error {{'fallthrough' attribute cannot be applied to a declaration}}
void g() {
  [[fallthrough]] int n; // expected-error {{'fallthrough' attribute cannot be applied to a declaration}}
  [[fallthrough]] ++n; // expected-error-re {{{{^}}fallthrough attribute is only allowed on empty statements}}

  switch (n) {
    // FIXME: This should be an error.
    [[fallthrough]];
    return;

  case 0:
    [[fallthrough, fallthrough]]; // expected-error {{multiple times}}
  case 1:
    [[fallthrough(0)]]; // expected-error {{argument list}}
  case 2:
    break;
  }
}
