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 Weber void 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 Weber void bar() {
25606cef46SNico Weber  A<int> x;
26606cef46SNico Weber  x.method();
27606cef46SNico Weber }
28606cef46SNico Weber }
29