diff options
| -rw-r--r-- | clang/lib/Sema/SemaInit.cpp | 6 | ||||
| -rw-r--r-- | clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp | 10 |
2 files changed, 13 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index 2d47cda0e0f..7a6134453b5 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -5168,15 +5168,15 @@ static void DiagnoseNarrowingInInitList( : diag::warn_init_list_constant_narrowing) << InitE->getSourceRange() << ConstantValue - << EntityType; + << EntityType.getLocalUnqualifiedType(); } else S.Diag(InitE->getLocStart(), S.getLangOptions().CPlusPlus0x && !S.getLangOptions().Microsoft ? diag::err_init_list_variable_narrowing : diag::warn_init_list_variable_narrowing) << InitE->getSourceRange() - << InitE->getType() - << EntityType; + << InitE->getType().getLocalUnqualifiedType() + << EntityType.getLocalUnqualifiedType(); llvm::SmallString<128> StaticCast; llvm::raw_svector_ostream OS(StaticCast); diff --git a/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp b/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp index c7f61fbd188..be47cb8fe86 100644 --- a/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp +++ b/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp @@ -160,3 +160,13 @@ void test_template() { maybe_shrink_int<15>((int)3); // expected-note {{in instantiation}} maybe_shrink_int<70000>((char)3); // expected-note {{in instantiation}} } + + +// We don't want qualifiers on the types in the diagnostic. + +void test_qualifiers(int i) { + const int j = i; + struct {const unsigned char c;} c1 = {j}; // expected-error {{from type 'int' to 'unsigned char' in}} expected-note {{override}} + // Template arguments make it harder to avoid printing qualifiers: + Agg<const unsigned char> c2 = {j}; // expected-error {{from type 'int' to 'const unsigned char' in}} expected-note {{override}} +} |

