From 0fab06c069ec5e339546ba481b22ffe54dcd9449 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Mon, 4 Aug 2014 04:36:15 +0000 Subject: Merging r213912: ------------------------------------------------------------------------ r213912 | rtrieu | 2014-07-24 17:24:02 -0700 (Thu, 24 Jul 2014) | 4 lines Pass the PrintingPolicy when converting types to strings in template type diffing. This removes extra "struct"/"class" in the type names and gives "bool" instead of "_Bool" for booleans. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_35@214695 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AST/ASTDiagnostic.cpp | 11 ++++++----- test/Misc/diag-template-diffing.cpp | 20 ++++++++++++++------ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/lib/AST/ASTDiagnostic.cpp b/lib/AST/ASTDiagnostic.cpp index 93b41a1335..ad71335add 100644 --- a/lib/AST/ASTDiagnostic.cpp +++ b/lib/AST/ASTDiagnostic.cpp @@ -1467,7 +1467,7 @@ class TemplateDiff { "Only one template argument may be missing."); if (Same) { - OS << FromType.getAsString(); + OS << FromType.getAsString(Policy); return; } @@ -1482,14 +1482,15 @@ class TemplateDiff { } std::string FromTypeStr = FromType.isNull() ? "(no argument)" - : FromType.getAsString(); + : FromType.getAsString(Policy); std::string ToTypeStr = ToType.isNull() ? "(no argument)" - : ToType.getAsString(); + : ToType.getAsString(Policy); // Switch to canonical typename if it is better. // TODO: merge this with other aka printing above. if (FromTypeStr == ToTypeStr) { - std::string FromCanTypeStr = FromType.getCanonicalType().getAsString(); - std::string ToCanTypeStr = ToType.getCanonicalType().getAsString(); + std::string FromCanTypeStr = + FromType.getCanonicalType().getAsString(Policy); + std::string ToCanTypeStr = ToType.getCanonicalType().getAsString(Policy); if (FromCanTypeStr != ToCanTypeStr) { FromTypeStr = FromCanTypeStr; ToTypeStr = ToCanTypeStr; diff --git a/test/Misc/diag-template-diffing.cpp b/test/Misc/diag-template-diffing.cpp index e21dc9fb9e..32d67b9390 100644 --- a/test/Misc/diag-template-diffing.cpp +++ b/test/Misc/diag-template-diffing.cpp @@ -24,17 +24,17 @@ namespace std { } } // end namespace std // CHECK-ELIDE-NOTREE: no matching function for call to 'f' -// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector' to 'vector' for 1st argument +// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector' to 'vector' for 1st argument // CHECK-NOELIDE-NOTREE: no matching function for call to 'f' -// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector' to 'vector' for 1st argument +// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector' to 'vector' for 1st argument // CHECK-ELIDE-TREE: no matching function for call to 'f' // CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // CHECK-ELIDE-TREE: vector< -// CHECK-ELIDE-TREE: [class std::basic_string != class versa_string]> +// CHECK-ELIDE-TREE: [std::basic_string != versa_string]> // CHECK-NOELIDE-TREE: no matching function for call to 'f' // CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument // CHECK-NOELIDE-TREE: vector< -// CHECK-NOELIDE-TREE: [class std::basic_string != class versa_string]> +// CHECK-NOELIDE-TREE: [std::basic_string != versa_string]> template class I1{}; @@ -1047,7 +1047,7 @@ namespace DependentInt { using T2 = M>; T2 p; T1 x = p; - // CHECK-ELIDE-NOTREE: no viable conversion from 'M>>' to 'M>>' + // CHECK-ELIDE-NOTREE: no viable conversion from 'M>>' to 'M>>' } } @@ -1064,7 +1064,7 @@ template > class vector {}; void foo() { vector v; AtomVector v2(v); - // CHECK-ELIDE-NOTREE: no known conversion from 'vector' to 'const vector' + // CHECK-ELIDE-NOTREE: no known conversion from 'vector' to 'const vector' } } @@ -1204,6 +1204,14 @@ T t6 = T(); // CHECK-ELIDE-NOTREE: no viable conversion from 'T