// RUN: %clang_cc1 %s -verify -fopenacc

// expected-error@+1{{OpenACC construct 'parallel' cannot be used here; it can only be used in a statement context}}
#pragma acc parallel

// expected-error@+1{{OpenACC construct 'serial' cannot be used here; it can only be used in a statement context}}
#pragma acc serial

// expected-error@+1{{OpenACC construct 'kernels' cannot be used here; it can only be used in a statement context}}
#pragma acc kernels

// expected-error@+1{{OpenACC construct 'parallel' cannot be used here; it can only be used in a statement context}}
#pragma acc parallel
int foo;
// expected-error@+1{{OpenACC construct 'serial' cannot be used here; it can only be used in a statement context}}
#pragma acc serial
int foo2;
// expected-error@+1{{OpenACC construct 'kernels' cannot be used here; it can only be used in a statement context}}
#pragma acc kernels
int foo3;

struct S {
// expected-error@+1{{OpenACC construct 'parallel' cannot be used here; it can only be used in a statement context}}
#pragma acc parallel
int foo;
// expected-error@+1{{OpenACC construct 'serial' cannot be used here; it can only be used in a statement context}}
#pragma acc serial
int foo2;
// expected-error@+1{{OpenACC construct 'kernels' cannot be used here; it can only be used in a statement context}}
#pragma acc kernels
int foo3;
};

void func() {
  // FIXME: Should we disallow this on declarations, or consider this to be on
  // the initialization? This is currently rejected in C because
  // Parser::ParseOpenACCDirectiveStmt() calls ParseStatement() and passes the
  // statement context as "SubStmt" which does not allow for a declaration in C.
#pragma acc parallel
  int foo; // expected-error {{expected expression}}

#pragma acc parallel
  {
#pragma acc parallel
    {
    }
  }

  {
// expected-error@+2{{expected statement}}
#pragma acc parallel
  }

  {
// expected-error@+2{{expected statement}}
#pragma acc serial
  }
  {
// expected-error@+2{{expected statement}}
#pragma acc kernels
  }

#pragma acc parallel
  while(0){}

#pragma acc parallel
  for(;;){}

#pragma acc parallel
#pragma acc parallel
  for(;;){}

// expected-error@+2{{expected statement}}
#pragma acc parallel
};
