llvm/clang/test/SemaOpenACC/parallel-assoc-stmt-inst.cpp

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

template<typename T>
void Func() {
#pragma acc parallel
    typename T::type I; //#ILOC
#pragma acc serial
    typename T::type IS; //#ILOCSERIAL
#pragma acc kernels
    typename T::type IK; //#ILOCKERNELS
}

struct S {
  using type = int;
};

void use() {
  Func<S>();
  // expected-error@#ILOC{{type 'int' cannot be used prior to '::' because it has no members}}
  // expected-note@+3{{in instantiation of function template specialization 'Func<int>' requested here}}
  // expected-error@#ILOCSERIAL{{type 'int' cannot be used prior to '::' because it has no members}}
  // expected-error@#ILOCKERNELS{{type 'int' cannot be used prior to '::' because it has no members}}
  Func<int>();
}