// { dg-do compile { target c++11 } }
#pragma omp begin assumes absent (target)
#pragma omp begin assumes absent (target)
[[omp::directive (begin assumes absent (target))]];
int a;
[[omp::directive (end assumes)]];
#pragma omp end assumes
#pragma omp end assumes
[[omp::directive (begin assumes absent (target))]];
int b;
#pragma omp end assumes		// { dg-error "'begin assumes' in attribute syntax terminated with 'end assumes' in pragma syntax" }
#pragma omp begin assumes absent (target)
int c;
[[omp::directive (end assumes)]];// { dg-error "'begin assumes' in pragma syntax terminated with 'end assumes' in attribute syntax" }
#pragma omp begin assumes absent (target)
[[omp::directive (begin assumes absent (target))]];
int d;
#pragma omp end assumes		// { dg-error "'begin assumes' in attribute syntax terminated with 'end assumes' in pragma syntax" }
#pragma omp begin assumes absent (target)
int e;
[[omp::directive (end assumes)]];// { dg-error "'begin assumes' in pragma syntax terminated with 'end assumes' in attribute syntax" }
#pragma omp end assumes
[[omp::directive (begin assumes absent (target))]];
[[omp::directive (begin assumes absent (target))]];
int f;
#pragma omp end assumes		// { dg-error "'begin assumes' in attribute syntax terminated with 'end assumes' in pragma syntax" }
#pragma omp begin assumes absent (target)
int g;
[[omp::directive (end assumes)]];// { dg-error "'begin assumes' in pragma syntax terminated with 'end assumes' in attribute syntax" }
[[omp::directive (end assumes)]];
[[omp::directive (begin assumes absent (target))]];
#pragma omp begin assumes absent (target)
int h;
#pragma omp end assumes
#pragma omp end assumes		// { dg-error "'begin assumes' in attribute syntax terminated with 'end assumes' in pragma syntax" }
#pragma omp begin assumes absent (target)
[[omp::directive (begin assumes absent (target))]];
int i;
[[omp::directive (end assumes)]];
[[omp::directive (end assumes)]];// { dg-error "'begin assumes' in pragma syntax terminated with 'end assumes' in attribute syntax" }