1*67e74705SXin Li // RUN: %clang_cc1 %s -triple i686-pc-win32 -fsyntax-only -Wc++11-narrowing -Wmicrosoft -verify -fms-extensions -std=c++11 2*67e74705SXin Li // RUN: %clang_cc1 %s -triple i686-pc-win32 -fsyntax-only -Wc++11-narrowing -Wmicrosoft -verify -fms-extensions -std=c++11 -fms-compatibility -DMS_COMPAT 3*67e74705SXin Li 4*67e74705SXin Li 5*67e74705SXin Li struct A { 6*67e74705SXin Li unsigned int a; 7*67e74705SXin Li }; 8*67e74705SXin Li int b = 3; 9*67e74705SXin Li A var = { b }; // expected-warning {{ cannot be narrowed }} expected-note {{insert an explicit cast to silence this issue}} 10*67e74705SXin Li 11*67e74705SXin Li 12*67e74705SXin Li namespace PR13433 { 13*67e74705SXin Li struct S; 14*67e74705SXin Li S make(); 15*67e74705SXin Li 16*67e74705SXin Li template<typename F> auto x(F f) -> decltype(f(make())); 17*67e74705SXin Li #ifndef MS_COMPAT 18*67e74705SXin Li // expected-error@-2{{calling 'make' with incomplete return type 'PR13433::S'}} 19*67e74705SXin Li // expected-note@-5{{'make' declared here}} 20*67e74705SXin Li // expected-note@-7{{forward declaration of 'PR13433::S'}} 21*67e74705SXin Li #endif 22*67e74705SXin Li } 23