When stringizing a NamedDecl for a diagnostic, treat the template
specialization types differently.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81512 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/Sema.cpp b/lib/Sema/Sema.cpp
index b158c85..080266c 100644
--- a/lib/Sema/Sema.cpp
+++ b/lib/Sema/Sema.cpp
@@ -85,13 +85,17 @@
       assert(ModLen == 0 && ArgLen == 0 &&
              "Invalid modifier for DeclarationName argument");
   } else if (Kind == Diagnostic::ak_nameddecl) {
+    bool Qualified;
     if (ModLen == 1 && Modifier[0] == 'q' && ArgLen == 0)
-      S = reinterpret_cast<NamedDecl*>(Val)->getQualifiedNameAsString();
+      Qualified = true;
     else {
       assert(ModLen == 0 && ArgLen == 0 &&
            "Invalid modifier for NamedDecl* argument");
-      S = reinterpret_cast<NamedDecl*>(Val)->getNameAsString();
+      Qualified = false;
     }
+    reinterpret_cast<NamedDecl*>(Val)->getNameForDiagnostic(S,
+                                                         Context.PrintingPolicy,
+                                                            Qualified);
   } else {
     llvm::raw_string_ostream OS(S);
     assert(Kind == Diagnostic::ak_nestednamespec);