1 | // RUN: %clang_cc1 -verify -std=c++11 %s |
2 | // RUN: cp %s %t |
3 | // RUN: not %clang_cc1 -x c++ -std=c++11 -fixit %t |
4 | // RUN: %clang_cc1 -Wall -pedantic -x c++ -std=c++11 %t |
5 | // RUN: not %clang_cc1 -std=c++11 -fsyntax-only -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s |
6 | |
7 | namespace ClassSpecifier { |
8 | class [[]] [[]] |
9 | attr_after_class_name_decl [[]] [[]]; // expected-error {{an attribute list cannot appear here}} |
10 | // CHECK: fix-it:{{.*}}:{9:5-9:5} |
11 | // CHECK: fix-it:{{.*}}:{9:32-9:41} |
12 | |
13 | class [[]] [[]] |
14 | attr_after_class_name_definition [[]] [[]] [[]]{}; // expected-error {{an attribute list cannot appear here}} |
15 | // CHECK: fix-it:{{.*}}:{14:4-14:4} |
16 | // CHECK: fix-it:{{.*}}:{14:37-14:51} |
17 | |
18 | class base {}; |
19 | class [[]] [[]] final_class |
20 | alignas(float) [[]] final // expected-error {{an attribute list cannot appear here}} |
21 | alignas(float) [[]] [[]] alignas(float): base{}; // expected-error {{an attribute list cannot appear here}} |
22 | // CHECK: fix-it:{{.*}}:{19:19-19:19} |
23 | // CHECK: fix-it:{{.*}}:{20:5-20:25} |
24 | // CHECK: fix-it:{{.*}}:{19:19-19:19} |
25 | // CHECK: fix-it:{{.*}}:{21:5-21:44} |
26 | |
27 | class [[]] [[]] final_class_another |
28 | [[]] [[]] alignas(16) final // expected-error {{an attribute list cannot appear here}} |
29 | [[]] [[]] alignas(16) [[]]{}; // expected-error {{an attribute list cannot appear here}} |
30 | // CHECK: fix-it:{{.*}}:{27:19-27:19} |
31 | // CHECK: fix-it:{{.*}}:{28:5-28:27} |
32 | // CHECK: fix-it:{{.*}}:{27:19-27:19} |
33 | // CHECK: fix-it:{{.*}}:{29:5-29:31} |
34 | } |
35 | |
36 | namespace BaseSpecifier { |
37 | struct base1 {}; |
38 | struct base2 {}; |
39 | class with_base_spec : public [[a]] // expected-error {{an attribute list cannot appear here}} expected-warning {{unknown}} |
40 | // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:26-[[@LINE-1]]:26}:"[{{\[}}a]]" |
41 | // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:33-[[@LINE-2]]:39}:"" |
42 | virtual [[b]] base1, // expected-error {{an attribute list cannot appear here}} expected-warning {{unknown}} |
43 | // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:26-[[@LINE-4]]:26}:"[{{\[}}b]]" |
44 | // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:34-[[@LINE-2]]:40}:"" |
45 | virtual [[c]] // expected-error {{an attribute list cannot appear here}} expected-warning {{unknown}} |
46 | // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:26-[[@LINE-1]]:26}:"[{{\[}}c]]" |
47 | // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:34-[[@LINE-2]]:40}:"" |
48 | public [[d]] base2 {}; // expected-error {{an attribute list cannot appear here}} expected-warning {{unknown}} |
49 | // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:26-[[@LINE-4]]:26}:"[{{\[}}d]]" |
50 | // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:33-[[@LINE-2]]:39}:"" |
51 | } |
52 | |
53 | [[__clang__::annotate("test")]] void annotate3(); // expected-warning {{'__clang__' is a predefined macro name, not an attribute scope specifier; did you mean '_Clang' instead?}} |
54 | // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:12}:"_Clang" |
55 | |