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