aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Sema/SemaInit.cpp4
-rw-r--r--test/SemaCXX/microsoft-cxx0x.cpp10
2 files changed, 12 insertions, 2 deletions
diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp
index e410f2f9a0..ee122ff05d 100644
--- a/lib/Sema/SemaInit.cpp
+++ b/lib/Sema/SemaInit.cpp
@@ -5145,7 +5145,7 @@ static void DiagnoseNarrowingInInitList(
bool Constant, const APValue &ConstantValue) {
if (Constant) {
S.Diag(InitE->getLocStart(),
- S.getLangOptions().CPlusPlus0x
+ S.getLangOptions().CPlusPlus0x && !S.getLangOptions().Microsoft
? diag::err_init_list_constant_narrowing
: diag::warn_init_list_constant_narrowing)
<< InitE->getSourceRange()
@@ -5153,7 +5153,7 @@ static void DiagnoseNarrowingInInitList(
<< EntityType;
} else
S.Diag(InitE->getLocStart(),
- S.getLangOptions().CPlusPlus0x
+ S.getLangOptions().CPlusPlus0x && !S.getLangOptions().Microsoft
? diag::err_init_list_variable_narrowing
: diag::warn_init_list_variable_narrowing)
<< InitE->getSourceRange()
diff --git a/test/SemaCXX/microsoft-cxx0x.cpp b/test/SemaCXX/microsoft-cxx0x.cpp
new file mode 100644
index 0000000000..ae2219b143
--- /dev/null
+++ b/test/SemaCXX/microsoft-cxx0x.cpp
@@ -0,0 +1,10 @@
+// RUN: %clang_cc1 %s -triple i686-pc-win32 -fsyntax-only -Wc++0x-narrowing -Wmicrosoft -verify -fms-extensions -std=c++0x
+
+
+struct A {
+ unsigned int a;
+};
+int b = 3;
+A var = { b }; // expected-warning {{ cannot be narrowed }} expected-note {{override}}
+
+