11598289cSNico Weber // RUN: %clang_cc1 %s -fsyntax-only -Wno-unused-value -Wmicrosoft -verify -fms-extensions 2c6e68daaSAndy Gibbs // expected-no-diagnostics 31598289cSNico Weber 41598289cSNico Weber // Wide character predefined identifiers 51598289cSNico Weber #define _STR2WSTR(str) L##str 61598289cSNico Weber #define STR2WSTR(str) _STR2WSTR(str) abcdefghi12(void)71598289cSNico Webervoid abcdefghi12(void) { 81598289cSNico Weber const wchar_t (*ss)[12] = &STR2WSTR(__FUNCTION__); 91598289cSNico Weber static int arr[sizeof(STR2WSTR(__FUNCTION__))==12*sizeof(wchar_t) ? 1 : -1]; 10*4a83f0abSReid Kleckner const wchar_t (*ss2)[31] = &STR2WSTR(__FUNCSIG__); 11*4a83f0abSReid Kleckner static int arr2[sizeof(STR2WSTR(__FUNCSIG__))==31*sizeof(wchar_t) ? 1 : -1]; 121598289cSNico Weber } 13606cef46SNico Weber 14606cef46SNico Weber namespace PR13206 { 15606cef46SNico Weber void foo(const wchar_t *); 16606cef46SNico Weber 17606cef46SNico Weber template<class T> class A { 18606cef46SNico Weber public: method()19606cef46SNico Weber void method() { 20606cef46SNico Weber foo(L__FUNCTION__); 21606cef46SNico Weber } 22606cef46SNico Weber }; 23606cef46SNico Weber bar()24606cef46SNico Webervoid bar() { 25606cef46SNico Weber A<int> x; 26606cef46SNico Weber x.method(); 27606cef46SNico Weber } 28606cef46SNico Weber } 29