xref: /llvm-project/clang/test/ParserOpenACC/parse-constructs.cpp (revision db4ea21dfde307f4fc873a6fe56791cd7ae3f0a1)
1 // RUN: %clang_cc1 %s -verify -fopenacc
2 
3 namespace NS {
4   void foo(); // expected-note{{declared here}}
5 
6   template<typename T>
7   void templ(); // expected-note 2{{declared here}}
8 
9   class C { // #CDef
10     void private_mem_func(); // #PrivateMemFunc
11     public:
12     void public_mem_func();
13   };
14 }
15 
16 // expected-error@+2{{use of undeclared identifier 'foo'; did you mean 'NS::foo'?}}
17 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
18 #pragma acc routine(foo)
19 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
20 #pragma acc routine(NS::foo)
21 
22 // expected-error@+2{{use of undeclared identifier 'templ'; did you mean 'NS::templ'?}}
23 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
24 #pragma acc routine(templ)
25 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
26 #pragma acc routine(NS::templ)
27 
28 // expected-error@+2{{use of undeclared identifier 'templ'; did you mean 'NS::templ'?}}
29 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
30 #pragma acc routine(templ<int>)
31 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
32 #pragma acc routine(NS::templ<int>)
33 
34 // expected-error@+2{{use of undeclared identifier 'T'}}
35 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
36 #pragma acc routine(templ<T>)
37 // expected-error@+2{{use of undeclared identifier 'T'}}
38 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
39 #pragma acc routine(NS::templ<T>)
40 
41 // expected-error@+3{{expected ')'}}
42 // expected-note@+2{{to match this '('}}
43 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
44 #pragma acc routine (NS::foo())
45 
46 // expected-error@+2 {{expected unqualified-id}}
47 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
48 #pragma acc routine()
49 
50 // expected-error@+2 {{expected unqualified-id}}
51 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
52 #pragma acc routine(int)
53 
54 // expected-error@+3{{'C' does not refer to a value}}
55 // expected-note@#CDef{{declared here}}
56 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
57 #pragma acc routine (NS::C)
58 // expected-error@+3{{'private_mem_func' is a private member of 'NS::C'}}
59 // expected-note@#PrivateMemFunc{{implicitly declared private here}}
60 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
61 #pragma acc routine (NS::C::private_mem_func)
62 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
63 #pragma acc routine (NS::C::public_mem_func)
64