1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -Wc++11-compat -verify -std=c++98 %s 2*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -Wc++11-compat -verify -std=c++11 %s 3*67e74705SXin Li 4*67e74705SXin Li class A { 5*67e74705SXin Li friend static class B; // expected-error {{'static' is invalid in friend declarations}} 6*67e74705SXin Li friend extern class C; // expected-error {{'extern' is invalid in friend declarations}} 7*67e74705SXin Li #if __cplusplus < 201103L 8*67e74705SXin Li friend register class E; // expected-error {{'register' is invalid in friend declarations}} 9*67e74705SXin Li #else 10*67e74705SXin Li friend register class E; // expected-error {{'register' is invalid in friend declarations}} 11*67e74705SXin Li #endif 12*67e74705SXin Li friend mutable class F; // expected-error {{'mutable' is invalid in friend declarations}} 13*67e74705SXin Li friend typedef class G; // expected-error {{'typedef' is invalid in friend declarations}} 14*67e74705SXin Li friend __thread class G; // expected-error {{'__thread' is invalid in friend declarations}} 15*67e74705SXin Li friend _Thread_local class G; // expected-error {{'_Thread_local' is invalid in friend declarations}} 16*67e74705SXin Li friend static _Thread_local class G; // expected-error {{'static _Thread_local' is invalid in friend declarations}} 17*67e74705SXin Li #if __cplusplus < 201103L 18*67e74705SXin Li friend auto class D; // expected-warning {{incompatible with C++11}} expected-error {{'auto' is invalid in friend declarations}} 19*67e74705SXin Li #else 20*67e74705SXin Li friend thread_local class G; // expected-error {{'thread_local' is invalid in friend declarations}} 21*67e74705SXin Li #endif 22*67e74705SXin Li }; 23