]> granicus.if.org Git - clang/commitdiff
Add raw_ostream operators to NamedDecl for convenience. Switch over all users of...
authorBenjamin Kramer <benny.kra@googlemail.com>
Sat, 17 Apr 2010 09:33:03 +0000 (09:33 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Sat, 17 Apr 2010 09:33:03 +0000 (09:33 +0000)
The next step is to print the name directly into the stream, avoiding a temporary std::string copy.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101632 91177308-0d34-0410-b5e6-96231b3b80d8

29 files changed:
include/clang/AST/Decl.h
include/clang/AST/DeclObjC.h
lib/AST/Decl.cpp
lib/AST/DeclObjC.cpp
lib/AST/DeclPrinter.cpp
lib/AST/Expr.cpp
lib/AST/RecordLayoutBuilder.cpp
lib/AST/StmtDumper.cpp
lib/AST/StmtPrinter.cpp
lib/AST/TemplateName.cpp
lib/Checker/BugReporter.cpp
lib/Checker/BugReporterVisitors.cpp
lib/Checker/CFRefCount.cpp
lib/Checker/CallAndMessageChecker.cpp
lib/Checker/CheckObjCDealloc.cpp
lib/Checker/CheckObjCInstMethSignature.cpp
lib/Checker/CheckSecuritySyntaxOnly.cpp
lib/Checker/MemRegion.cpp
lib/Checker/NSErrorChecker.cpp
lib/Checker/ObjCUnusedIVarsChecker.cpp
lib/CodeGen/CGObjCMac.cpp
lib/CodeGen/Mangle.cpp
lib/Frontend/ASTConsumers.cpp
lib/Frontend/AnalysisConsumer.cpp
lib/Index/ASTLocation.cpp
lib/Sema/CodeCompleteConsumer.cpp
lib/Sema/SemaInit.cpp
lib/Sema/SemaOverload.cpp
tools/CIndex/CIndexUSRs.cpp

index a6a8b4cc841ea64d1c685ed521644c7ee05857db..e3e16d3d919504d77b2e1c23cd9100c418300f64 100644 (file)
@@ -217,6 +217,8 @@ public:
   static bool classofKind(Kind K) { return K >= NamedFirst && K <= NamedLast; }
 };
 
+llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const NamedDecl *ND);
+
 /// NamespaceDecl - Represent a C++ namespace.
 class NamespaceDecl : public NamedDecl, public DeclContext {
   SourceLocation LBracLoc, RBracLoc;
index 991330466a52d52dd505039a04cb0886f7abb494..18bb607d796c3cdc5d7598d496e8f8c07c8edc63 100644 (file)
@@ -1132,6 +1132,9 @@ public:
   static bool classofKind(Kind K) { return K == ObjCCategoryImpl;}
 };
 
+llvm::raw_ostream &operator<<(llvm::raw_ostream &OS,
+                              const ObjCCategoryImplDecl *CID);
+
 /// ObjCImplementationDecl - Represents a class definition - this is where
 /// method definitions are specified. For example:
 ///
@@ -1217,6 +1220,9 @@ public:
   static bool classofKind(Kind K) { return K == ObjCImplementation; }
 };
 
+llvm::raw_ostream &operator<<(llvm::raw_ostream &OS,
+                              const ObjCImplementationDecl *ID);
+
 /// ObjCCompatibleAliasDecl - Represents alias of a class. This alias is
 /// declared as @compatibility_alias alias class.
 class ObjCCompatibleAliasDecl : public NamedDecl {
index d4cc945b1ba083c3f81a24a80e17079634c08e83..fdec2f5d654296c1943b82abd5d3562ada8fc1e7 100644 (file)
@@ -512,6 +512,12 @@ bool NamedDecl::isCXXInstanceMember() const {
   return false;
 }
 
+llvm::raw_ostream &clang::operator<<(llvm::raw_ostream &OS,
+                                     const NamedDecl *ND) {
+  OS << ND->getNameAsString();
+  return OS;
+}
+
 //===----------------------------------------------------------------------===//
 // DeclaratorDecl Implementation
 //===----------------------------------------------------------------------===//
index db46d89a762b1657be8b51d0c84b7133a7a02625..dc4aacdb515c68e1509a60a40b1cf6665a57ea87 100644 (file)
@@ -843,6 +843,12 @@ FindPropertyImplDecl(IdentifierInfo *Id) const {
   return 0;
 }
 
+llvm::raw_ostream &clang::operator<<(llvm::raw_ostream &OS,
+                                     const ObjCCategoryImplDecl *CID) {
+  OS << CID->getName();
+  return OS;
+}
+
 //===----------------------------------------------------------------------===//
 // ObjCImplementationDecl
 //===----------------------------------------------------------------------===//
@@ -855,6 +861,12 @@ ObjCImplementationDecl::Create(ASTContext &C, DeclContext *DC,
   return new (C) ObjCImplementationDecl(DC, L, ClassInterface, SuperDecl);
 }
 
+llvm::raw_ostream &clang::operator<<(llvm::raw_ostream &OS,
+                                     const ObjCImplementationDecl *ID) {
+  OS << ID->getName();
+  return OS;
+}
+
 //===----------------------------------------------------------------------===//
 // ObjCCompatibleAliasDecl
 //===----------------------------------------------------------------------===//
index a625865ecdb3324f4dec5054eed60e0b00383f88..539492479707c9ebeeb9bdccde27d0cf5680d09c 100644 (file)
@@ -301,17 +301,15 @@ void DeclPrinter::VisitTypedefDecl(TypedefDecl *D) {
 }
 
 void DeclPrinter::VisitEnumDecl(EnumDecl *D) {
-  Out << "enum " << D->getNameAsString() << " {\n";
+  Out << "enum " << D << " {\n";
   VisitDeclContext(D);
   Indent() << "}";
 }
 
 void DeclPrinter::VisitRecordDecl(RecordDecl *D) {
   Out << D->getKindName();
-  if (D->getIdentifier()) {
-    Out << " ";
-    Out << D->getNameAsString();
-  }
+  if (D->getIdentifier())
+    Out << ' ' << D;
 
   if (D->isDefinition()) {
     Out << " {\n";
@@ -321,7 +319,7 @@ void DeclPrinter::VisitRecordDecl(RecordDecl *D) {
 }
 
 void DeclPrinter::VisitEnumConstantDecl(EnumConstantDecl *D) {
-  Out << D->getNameAsString();
+  Out << D;
   if (Expr *Init = D->getInitExpr()) {
     Out << " = ";
     Init->printPretty(Out, Context, 0, Policy, Indentation);
@@ -406,7 +404,7 @@ void DeclPrinter::VisitFunctionDecl(FunctionDecl *D) {
             Out << ", ";
           if (BMInitializer->isMemberInitializer()) {
             FieldDecl *FD = BMInitializer->getMember();
-            Out <<  FD->getNameAsString();
+            Out << FD;
           } else {
             Out << QualType(BMInitializer->getBaseClass(), 0).getAsString();
           }
@@ -537,7 +535,7 @@ void DeclPrinter::VisitFileScopeAsmDecl(FileScopeAsmDecl *D) {
 // C++ declarations
 //----------------------------------------------------------------------------
 void DeclPrinter::VisitNamespaceDecl(NamespaceDecl *D) {
-  Out << "namespace " << D->getNameAsString() << " {\n";
+  Out << "namespace " << D << " {\n";
   VisitDeclContext(D);
   Indent() << "}";
 }
@@ -546,22 +544,20 @@ void DeclPrinter::VisitUsingDirectiveDecl(UsingDirectiveDecl *D) {
   Out << "using namespace ";
   if (D->getQualifier())
     D->getQualifier()->print(Out, Policy);
-  Out << D->getNominatedNamespaceAsWritten()->getNameAsString();
+  Out << D->getNominatedNamespaceAsWritten();
 }
 
 void DeclPrinter::VisitNamespaceAliasDecl(NamespaceAliasDecl *D) {
-  Out << "namespace " << D->getNameAsString() << " = ";
+  Out << "namespace " << D << " = ";
   if (D->getQualifier())
     D->getQualifier()->print(Out, Policy);
-  Out << D->getAliasedNamespace()->getNameAsString();
+  Out << D->getAliasedNamespace();
 }
 
 void DeclPrinter::VisitCXXRecordDecl(CXXRecordDecl *D) {
   Out << D->getKindName();
-  if (D->getIdentifier()) {
-    Out << " ";
-    Out << D->getNameAsString();
-  }
+  if (D->getIdentifier())
+    Out << ' ' << D;
 
   if (D->isDefinition()) {
     // Print the base classes
@@ -669,7 +665,7 @@ void DeclPrinter::VisitObjCClassDecl(ObjCClassDecl *D) {
   for (ObjCClassDecl::iterator I = D->begin(), E = D->end();
        I != E; ++I) {
     if (I != D->begin()) Out << ", ";
-    Out << I->getInterface()->getNameAsString();
+    Out << I->getInterface();
   }
 }
 
@@ -688,8 +684,7 @@ void DeclPrinter::VisitObjCMethodDecl(ObjCMethodDecl *OMD) {
     // FIXME: selector is missing here!
     pos = name.find_first_of(":", lastPos);
     Out << " " << name.substr(lastPos, pos - lastPos);
-    Out << ":(" << (*PI)->getType().getAsString(Policy) << ")"
-        << (*PI)->getNameAsString();
+    Out << ":(" << (*PI)->getType().getAsString(Policy) << ')' << *PI;
     lastPos = pos + 1;
   }
 
@@ -711,7 +706,7 @@ void DeclPrinter::VisitObjCImplementationDecl(ObjCImplementationDecl *OID) {
   ObjCInterfaceDecl *SID = OID->getSuperClass();
 
   if (SID)
-    Out << "@implementation " << I << " : " << SID->getNameAsString();
+    Out << "@implementation " << I << " : " << SID;
   else
     Out << "@implementation " << I;
   Out << "\n";
@@ -724,7 +719,7 @@ void DeclPrinter::VisitObjCInterfaceDecl(ObjCInterfaceDecl *OID) {
   ObjCInterfaceDecl *SID = OID->getSuperClass();
 
   if (SID)
-    Out << "@interface " << I << " : " << SID->getNameAsString();
+    Out << "@interface " << I << " : " << SID;
   else
     Out << "@interface " << I;
 
@@ -733,7 +728,7 @@ void DeclPrinter::VisitObjCInterfaceDecl(ObjCInterfaceDecl *OID) {
   if (!Protocols.empty()) {
     for (ObjCList<ObjCProtocolDecl>::iterator I = Protocols.begin(),
          E = Protocols.end(); I != E; ++I)
-      Out << (I == Protocols.begin() ? '<' : ',') << (*I)->getNameAsString();
+      Out << (I == Protocols.begin() ? '<' : ',') << *I;
   }
 
   if (!Protocols.empty())
@@ -744,8 +739,7 @@ void DeclPrinter::VisitObjCInterfaceDecl(ObjCInterfaceDecl *OID) {
     Indentation += Policy.Indentation;
     for (ObjCInterfaceDecl::ivar_iterator I = OID->ivar_begin(),
          E = OID->ivar_end(); I != E; ++I) {
-      Indent() << (*I)->getType().getAsString(Policy)
-          << ' '  << (*I)->getNameAsString() << ";\n";
+      Indent() << (*I)->getType().getAsString(Policy) << ' ' << *I << ";\n";
     }
     Indentation -= Policy.Indentation;
     Out << "}\n";
@@ -762,20 +756,18 @@ void DeclPrinter::VisitObjCForwardProtocolDecl(ObjCForwardProtocolDecl *D) {
          E = D->protocol_end();
        I != E; ++I) {
     if (I != D->protocol_begin()) Out << ", ";
-    Out << (*I)->getNameAsString();
+    Out << *I;
   }
 }
 
 void DeclPrinter::VisitObjCProtocolDecl(ObjCProtocolDecl *PID) {
-  Out << "@protocol " << PID->getNameAsString() << '\n';
+  Out << "@protocol " << PID << '\n';
   VisitDeclContext(PID, false);
   Out << "@end";
 }
 
 void DeclPrinter::VisitObjCCategoryImplDecl(ObjCCategoryImplDecl *PID) {
-  Out << "@implementation "
-      << PID->getClassInterface()->getNameAsString()
-      << '(' << PID->getNameAsString() << ")\n";
+  Out << "@implementation " << PID->getClassInterface() << '(' << PID << ")\n";
 
   VisitDeclContext(PID, false);
   Out << "@end";
@@ -783,9 +775,7 @@ void DeclPrinter::VisitObjCCategoryImplDecl(ObjCCategoryImplDecl *PID) {
 }
 
 void DeclPrinter::VisitObjCCategoryDecl(ObjCCategoryDecl *PID) {
-  Out << "@interface "
-      << PID->getClassInterface()->getNameAsString()
-      << '(' << PID->getNameAsString() << ")\n";
+  Out << "@interface " << PID->getClassInterface() << '(' << PID << ")\n";
   VisitDeclContext(PID, false);
   Out << "@end";
 
@@ -793,8 +783,8 @@ void DeclPrinter::VisitObjCCategoryDecl(ObjCCategoryDecl *PID) {
 }
 
 void DeclPrinter::VisitObjCCompatibleAliasDecl(ObjCCompatibleAliasDecl *AID) {
-  Out << "@compatibility_alias " << AID->getNameAsString()
-      << ' ' << AID->getClassInterface()->getNameAsString() << ";\n";
+  Out << "@compatibility_alias " << AID
+      << ' ' << AID->getClassInterface() << ";\n";
 }
 
 /// PrintObjCPropertyDecl - print a property declaration.
@@ -854,8 +844,7 @@ void DeclPrinter::VisitObjCPropertyDecl(ObjCPropertyDecl *PDecl) {
   }
   Out << " )";
   }
-  Out << ' ' << PDecl->getType().getAsString(Policy)
-  << ' ' << PDecl->getNameAsString();
+  Out << ' ' << PDecl->getType().getAsString(Policy) << ' ' << PDecl;
 }
 
 void DeclPrinter::VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *PID) {
@@ -863,28 +852,28 @@ void DeclPrinter::VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *PID) {
     Out << "@synthesize ";
   else
     Out << "@dynamic ";
-  Out << PID->getPropertyDecl()->getNameAsString();
+  Out << PID->getPropertyDecl();
   if (PID->getPropertyIvarDecl())
-    Out << "=" << PID->getPropertyIvarDecl()->getNameAsString();
+    Out << '=' << PID->getPropertyIvarDecl();
 }
 
 void DeclPrinter::VisitUsingDecl(UsingDecl *D) {
   Out << "using ";
   D->getTargetNestedNameDecl()->print(Out, Policy);
-  Out << D->getNameAsString();
+  Out << D;
 }
 
 void
 DeclPrinter::VisitUnresolvedUsingTypenameDecl(UnresolvedUsingTypenameDecl *D) {
   Out << "using typename ";
   D->getTargetNestedNameSpecifier()->print(Out, Policy);
-  Out << D->getDeclName().getAsString();
+  Out << D->getDeclName();
 }
 
 void DeclPrinter::VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D) {
   Out << "using ";
   D->getTargetNestedNameSpecifier()->print(Out, Policy);
-  Out << D->getDeclName().getAsString();
+  Out << D->getDeclName();
 }
 
 void DeclPrinter::VisitUsingShadowDecl(UsingShadowDecl *D) {
index 7c715bd3c3a55784421cdcfe246aaa107508d000..88b5b5e5674f5e8285930d80a790bc1f4318cba0 100644 (file)
@@ -290,14 +290,12 @@ std::string PredefinedExpr::ComputeName(IdentType IT, const Decl *CurrentDecl) {
     // For incorrect code, there might not be an ObjCInterfaceDecl.  Do
     // a null check to avoid a crash.
     if (const ObjCInterfaceDecl *ID = MD->getClassInterface())
-      Out << ID->getNameAsString();
+      Out << ID;
 
     if (const ObjCCategoryImplDecl *CID =
-        dyn_cast<ObjCCategoryImplDecl>(MD->getDeclContext())) {
-      Out << '(';
-      Out <<  CID->getNameAsString();
-      Out <<  ')';
-    }
+        dyn_cast<ObjCCategoryImplDecl>(MD->getDeclContext()))
+      Out << '(' << CID << ')';
+
     Out <<  ' ';
     Out << MD->getSelector().getAsString();
     Out <<  ']';
index 15ad11f7fd84f9fef3b4baea7f4e03f18d00c15d..d1de70a7ab8413155cbf68d663b023b8addda237 100644 (file)
@@ -924,7 +924,7 @@ static void DumpCXXRecordLayout(llvm::raw_ostream &OS,
   // Vtable pointer.
   if (RD->isDynamicClass() && !PrimaryBase) {
     PrintOffset(OS, Offset, IndentLevel);
-    OS << '(' << RD->getNameAsString() << " vtable pointer)\n";
+    OS << '(' << RD << " vtable pointer)\n";
   }
   // Dump (non-virtual) bases
   for (CXXRecordDecl::base_class_const_iterator I = RD->bases_begin(),
@@ -961,8 +961,7 @@ static void DumpCXXRecordLayout(llvm::raw_ostream &OS,
     }
 
     PrintOffset(OS, FieldOffset, IndentLevel);
-    OS << Field->getType().getAsString() << ' ';
-    OS << Field->getNameAsString() << '\n';
+    OS << Field->getType().getAsString() << ' ' << Field << '\n';
   }
 
   if (!IncludeVirtualBases)
index ba6218be1426acb794198f1d4995f919594358e6..79f61f2bf360e4eae2bf28c232723b23efc4e890 100644 (file)
@@ -219,7 +219,7 @@ void StmtDumper::DumpDeclarator(Decl *D) {
   // nodes are where they need to be.
   if (TypedefDecl *localType = dyn_cast<TypedefDecl>(D)) {
     OS << "\"typedef " << localType->getUnderlyingType().getAsString()
-       << " " << localType->getNameAsString() << "\"";
+       << ' ' << localType << '"';
   } else if (ValueDecl *VD = dyn_cast<ValueDecl>(D)) {
     OS << "\"";
     // Emit storage class for vardecls.
@@ -328,15 +328,14 @@ void StmtDumper::VisitDeclRefExpr(DeclRefExpr *Node) {
   case Decl::ObjCClass: OS << "ObjCClass"; break;
   }
 
-  OS << "='" << Node->getDecl()->getNameAsString()
-     << "' " << (void*)Node->getDecl();
+  OS << "='" << Node->getDecl() << "' " << (void*)Node->getDecl();
 }
 
 void StmtDumper::VisitUnresolvedLookupExpr(UnresolvedLookupExpr *Node) {
   DumpExpr(Node);
   OS << " (";
   if (!Node->requiresADL()) OS << "no ";
-  OS << "ADL) = '" << Node->getName().getAsString() << "'";
+  OS << "ADL) = '" << Node->getName() << '\'';
 
   UnresolvedLookupExpr::decls_iterator
     I = Node->decls_begin(), E = Node->decls_end();
@@ -349,7 +348,7 @@ void StmtDumper::VisitObjCIvarRefExpr(ObjCIvarRefExpr *Node) {
   DumpExpr(Node);
 
   OS << " " << Node->getDecl()->getDeclKindName()
-     << "Decl='" << Node->getDecl()->getNameAsString()
+     << "Decl='" << Node->getDecl()
      << "' " << (void*)Node->getDecl();
   if (Node->isFreeIvar())
     OS << " isFreeIvar";
@@ -408,7 +407,7 @@ void StmtDumper::VisitSizeOfAlignOfExpr(SizeOfAlignOfExpr *Node) {
 void StmtDumper::VisitMemberExpr(MemberExpr *Node) {
   DumpExpr(Node);
   OS << " " << (Node->isArrow() ? "->" : ".")
-     << Node->getMemberDecl()->getNameAsString() << " "
+     << Node->getMemberDecl() << ' '
      << (void*)Node->getMemberDecl();
 }
 void StmtDumper::VisitExtVectorElementExpr(ExtVectorElementExpr *Node) {
@@ -525,14 +524,13 @@ void StmtDumper::VisitObjCSelectorExpr(ObjCSelectorExpr *Node) {
 void StmtDumper::VisitObjCProtocolExpr(ObjCProtocolExpr *Node) {
   DumpExpr(Node);
 
-  OS << " " << Node->getProtocol()->getNameAsString();
+  OS << ' ' << Node->getProtocol();
 }
 
 void StmtDumper::VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *Node) {
   DumpExpr(Node);
 
-  OS << " Kind=PropertyRef Property=\""
-     << Node->getProperty()->getNameAsString() << "\"";
+  OS << " Kind=PropertyRef Property=\"" << Node->getProperty() << '"';
 }
 
 void StmtDumper::VisitObjCImplicitSetterGetterRefExpr(
index da43878628fbdd9f655ebeeaf044be74d3bd783f..44d475853d181d53880762b5fb7bce1e5587aa3b 100644 (file)
@@ -474,7 +474,7 @@ void StmtPrinter::VisitExpr(Expr *Node) {
 void StmtPrinter::VisitDeclRefExpr(DeclRefExpr *Node) {
   if (NestedNameSpecifier *Qualifier = Node->getQualifier())
     Qualifier->print(OS, Policy);
-  OS << Node->getDecl()->getNameAsString();
+  OS << Node->getDecl();
   if (Node->hasExplicitTemplateArgumentList())
     OS << TemplateSpecializationType::PrintTemplateArgumentList(
                                                     Node->getTemplateArgs(),
@@ -509,7 +509,7 @@ void StmtPrinter::VisitObjCIvarRefExpr(ObjCIvarRefExpr *Node) {
     PrintExpr(Node->getBase());
     OS << (Node->isArrow() ? "->" : ".");
   }
-  OS << Node->getDecl()->getNameAsString();
+  OS << Node->getDecl();
 }
 
 void StmtPrinter::VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *Node) {
@@ -527,7 +527,7 @@ void StmtPrinter::VisitObjCImplicitSetterGetterRefExpr(
     OS << ".";
   }
   if (Node->getGetterMethod())
-    OS << Node->getGetterMethod()->getNameAsString();
+    OS << Node->getGetterMethod();
 
 }
 
@@ -695,7 +695,7 @@ bool StmtPrinter::PrintOffsetOfDesignator(Expr *E) {
   } else {
     MemberExpr *ME = cast<MemberExpr>(E);
     bool IsFirst = PrintOffsetOfDesignator(ME->getBase());
-    OS << (IsFirst ? "" : ".") << ME->getMemberDecl()->getNameAsString();
+    OS << (IsFirst ? "" : ".") << ME->getMemberDecl();
     return false;
   }
 }
@@ -746,7 +746,7 @@ void StmtPrinter::VisitMemberExpr(MemberExpr *Node) {
   if (NestedNameSpecifier *Qualifier = Node->getQualifier())
     Qualifier->print(OS, Policy);
 
-  OS << Node->getMemberDecl()->getNameAsString();
+  OS << Node->getMemberDecl();
 
   if (Node->hasExplicitTemplateArgumentList())
     OS << TemplateSpecializationType::PrintTemplateArgumentList(
@@ -1242,7 +1242,7 @@ void StmtPrinter::VisitObjCSelectorExpr(ObjCSelectorExpr *Node) {
 }
 
 void StmtPrinter::VisitObjCProtocolExpr(ObjCProtocolExpr *Node) {
-  OS << "@protocol(" << Node->getProtocol()->getNameAsString() << ')';
+  OS << "@protocol(" << Node->getProtocol() << ')';
 }
 
 void StmtPrinter::VisitObjCMessageExpr(ObjCMessageExpr *Mess) {
@@ -1304,7 +1304,7 @@ void StmtPrinter::VisitBlockExpr(BlockExpr *Node) {
 }
 
 void StmtPrinter::VisitBlockDeclRefExpr(BlockDeclRefExpr *Node) {
-  OS << Node->getDecl()->getNameAsString();
+  OS << Node->getDecl();
 }
 //===----------------------------------------------------------------------===//
 // Stmt method implementations
index a1ee5522640e9a32bb2f99a1b011224652028b78..14722f70398c5f39c879cde176e9f46bb38c535b 100644 (file)
@@ -47,13 +47,13 @@ void
 TemplateName::print(llvm::raw_ostream &OS, const PrintingPolicy &Policy,
                     bool SuppressNNS) const {
   if (TemplateDecl *Template = Storage.dyn_cast<TemplateDecl *>())
-    OS << Template->getNameAsString();
+    OS << Template;
   else if (QualifiedTemplateName *QTN = getAsQualifiedTemplateName()) {
     if (!SuppressNNS)
       QTN->getQualifier()->print(OS, Policy);
     if (QTN->hasTemplateKeyword())
       OS << "template ";
-    OS << QTN->getDecl()->getNameAsString();
+    OS << QTN->getDecl();
   } else if (DependentTemplateName *DTN = getAsDependentTemplateName()) {
     if (!SuppressNNS && DTN->getQualifier())
       DTN->getQualifier()->print(OS, Policy);
index 4475872ee2dca154a07901c6bd0582e729e95c13..3bcc03f4f29c7d60f94f5000525f711ab379c303 100644 (file)
@@ -607,7 +607,7 @@ static void GenerateMinimalPathDiagnostic(PathDiagnostic& PD,
 
                   if (D) {
                     GetRawInt = false;
-                    os << D->getNameAsString();
+                    os << D;
                   }
                 }
 
index 06cee5bcd1bc721f9a13ab0de990f1214bc4a688..544129bbf28402d8533c2b3d83f50d1d13ba665e 100644 (file)
@@ -144,7 +144,7 @@ public:
       if (const DeclStmt *DS = PS->getStmtAs<DeclStmt>()) {
 
         if (const VarRegion *VR = dyn_cast<VarRegion>(R)) {
-          os << "Variable '" << VR->getDecl()->getNameAsString() << "' ";
+          os << "Variable '" << VR->getDecl() << "' ";
         }
         else
           return NULL;
@@ -206,7 +206,7 @@ public:
         return NULL;
 
       if (const VarRegion *VR = dyn_cast<VarRegion>(R)) {
-        os << '\'' << VR->getDecl()->getNameAsString() << '\'';
+        os << '\'' << VR->getDecl() << '\'';
       }
       else
         return NULL;
index 3c4a27cc07f4015eca7b77cb3ec3229a5d62c02b..a0b46661600425b353aed81d4256d30305cf97cc 100644 (file)
@@ -2081,7 +2081,7 @@ PathDiagnosticPiece* CFRefReport::VisitNode(const ExplodedNode* N,
       // Get the name of the callee (if it is available).
       SVal X = CurrSt->getSValAsScalarOrLoc(CE->getCallee());
       if (const FunctionDecl* FD = X.getAsFunctionDecl())
-        os << "Call to function '" << FD->getNameAsString() <<'\'';
+        os << "Call to function '" << FD << '\'';
       else
         os << "function call";
     }
index dd1856c9d2d670bca10c79ff6e6a08fefd4a3a42..ce9f26ec69e9a49af17d524a90d30cf657b95d34 100644 (file)
@@ -154,8 +154,7 @@ bool CallAndMessageChecker::PreVisitProcessArg(CheckerContext &C,
         os << "Passed-by-value struct argument contains uninitialized data";
 
         if (F.FieldChain.size() == 1)
-          os << " (e.g., field: '" << F.FieldChain[0]->getNameAsString()
-             << "')";
+          os << " (e.g., field: '" << F.FieldChain[0] << "')";
         else {
           os << " (e.g., via the field chain: '";
           bool first = true;
@@ -165,7 +164,7 @@ bool CallAndMessageChecker::PreVisitProcessArg(CheckerContext &C,
               first = false;
             else
               os << '.';
-            os << (*DI)->getNameAsString();
+            os << *DI;
           }
           os << "')";
         }
index d9606f1306d4e3c7da506d31c0601d7645d69151..f510de573e2f751634f578c19c8658599aacfcc1 100644 (file)
@@ -166,8 +166,7 @@ void clang::CheckObjCDealloc(const ObjCImplementationDecl* D,
 
     std::string buf;
     llvm::raw_string_ostream os(buf);
-    os << "Objective-C class '" << D->getNameAsString()
-       << "' lacks a 'dealloc' instance method";
+    os << "Objective-C class '" << D << "' lacks a 'dealloc' instance method";
 
     BR.EmitBasicReport(name, os.str(), D->getLocStart());
     return;
@@ -182,8 +181,7 @@ void clang::CheckObjCDealloc(const ObjCImplementationDecl* D,
 
     std::string buf;
     llvm::raw_string_ostream os(buf);
-    os << "The 'dealloc' instance method in Objective-C class '"
-       << D->getNameAsString()
+    os << "The 'dealloc' instance method in Objective-C class '" << D
        << "' does not send a 'dealloc' message to its super class"
            " (missing [super dealloc])";
 
@@ -238,7 +236,7 @@ void clang::CheckObjCDealloc(const ObjCImplementationDecl* D,
                ? "missing ivar release (leak)"
                : "missing ivar release (Hybrid MM, non-GC)";
 
-        os << "The '" << ID->getNameAsString()
+        os << "The '" << ID
            << "' instance variable was retained by a synthesized property but "
               "wasn't released in 'dealloc'";
       } else {
@@ -246,7 +244,7 @@ void clang::CheckObjCDealloc(const ObjCImplementationDecl* D,
                ? "extra ivar release (use-after-release)"
                : "extra ivar release (Hybrid MM, non-GC)";
 
-        os << "The '" << ID->getNameAsString()
+        os << "The '" << ID
            << "' instance variable was not retained by a synthesized property "
               "but was released in 'dealloc'";
       }
index 8c43a45d92c0ca25337765fba9d8c207e869bc08..76a092393bb4e5ae31ac6427918d121dd0162152 100644 (file)
@@ -49,16 +49,16 @@ static void CompareReturnTypes(const ObjCMethodDecl *MethDerived,
     llvm::raw_string_ostream os(sbuf);
 
     os << "The Objective-C class '"
-       << MethDerived->getClassInterface()->getNameAsString()
+       << MethDerived->getClassInterface()
        << "', which is derived from class '"
-       << MethAncestor->getClassInterface()->getNameAsString()
+       << MethAncestor->getClassInterface()
        << "', defines the instance method '"
        << MethDerived->getSelector().getAsString()
        << "' whose return type is '"
        << ResDerived.getAsString()
        << "'.  A method with the same name (same selector) is also defined in "
           "class '"
-       << MethAncestor->getClassInterface()->getNameAsString()
+       << MethAncestor->getClassInterface()
        << "' and has a return type of '"
        << ResAncestor.getAsString()
        << "'.  These two types are incompatible, and may result in undefined "
index efbce6126146253af354cdbd454fdfa714c4ad3d..74e12b18a81a0290432749e1c7f936615ecff9be 100644 (file)
@@ -387,11 +387,11 @@ void WalkAST::CheckCall_rand(const CallExpr *CE, const FunctionDecl *FD) {
   // Issue a warning.
   llvm::SmallString<256> buf1;
   llvm::raw_svector_ostream os1(buf1);
-  os1 << "'" << FD->getNameAsString() << "' is a poor random number generator";
+  os1 << '\'' << FD << "' is a poor random number generator";
 
   llvm::SmallString<256> buf2;
   llvm::raw_svector_ostream os2(buf2);
-  os2 << "Function '" << FD->getNameAsString()
+  os2 << "Function '" << FD
       << "' is obsolete because it implements a poor random number generator."
       << "  Use 'arc4random' instead";
 
@@ -472,14 +472,12 @@ void WalkAST::CheckUncheckedReturnValue(CallExpr *CE) {
   // Issue a warning.
   llvm::SmallString<256> buf1;
   llvm::raw_svector_ostream os1(buf1);
-  os1 << "Return value is not checked in call to '" << FD->getNameAsString()
-     << "'";
+  os1 << "Return value is not checked in call to '" << FD << '\'';
 
   llvm::SmallString<256> buf2;
   llvm::raw_svector_ostream os2(buf2);
-  os2 << "The return value from the call to '" << FD->getNameAsString()
-      << "' is not checked.  If an error occurs in '"
-      << FD->getNameAsString()
+  os2 << "The return value from the call to '" << FD
+      << "' is not checked.  If an error occurs in '" << FD
       << "', the following code may execute with unexpected privileges";
 
   SourceRange R = CE->getCallee()->getSourceRange();
index 0571d81f9021e28aba6cc3908ad3ef5453e2903d..9a664c78a77c0dd98b8aec4fe4666705edd8d23a 100644 (file)
@@ -365,11 +365,11 @@ void ElementRegion::dumpToStream(llvm::raw_ostream& os) const {
 }
 
 void FieldRegion::dumpToStream(llvm::raw_ostream& os) const {
-  os << superRegion << "->" << getDecl()->getNameAsString();
+  os << superRegion << "->" << getDecl();
 }
 
 void ObjCIvarRegion::dumpToStream(llvm::raw_ostream& os) const {
-  os << "ivar{" << superRegion << ',' << getDecl()->getNameAsString() << '}';
+  os << "ivar{" << superRegion << ',' << getDecl() << '}';
 }
 
 void StringRegion::dumpToStream(llvm::raw_ostream& os) const {
@@ -381,7 +381,7 @@ void SymbolicRegion::dumpToStream(llvm::raw_ostream& os) const {
 }
 
 void VarRegion::dumpToStream(llvm::raw_ostream& os) const {
-  os << cast<VarDecl>(D)->getNameAsString();
+  os << cast<VarDecl>(D);
 }
 
 void RegionRawOffset::dump() const {
index 9130bfad84079b06bb318fe817085b5e87ffad11..e30d54ccd79cf090ca59673fb280e2c00bc8d1e5 100644 (file)
@@ -226,7 +226,7 @@ void NSErrorChecker::CheckParamDeref(const VarDecl *Param,
     else
       os << "documented in CoreFoundation/CFError.h the parameter '";
 
-    os << Param->getNameAsString() << "' may be null.";
+    os << Param << "' may be null.";
 
     BugReport *report = new BugReport(*this, os.str(), *I);
     // FIXME: Notable symbols are now part of the report.  We should
index 04d897aec894978a7caf3956f4117cb0d915baa9..0e47621d4205b5d9a95461d3e04389c282f861f9 100644 (file)
@@ -150,8 +150,7 @@ void clang::CheckObjCUnusedIvar(const ObjCImplementationDecl *D,
     if (I->second == Unused) {
       std::string sbuf;
       llvm::raw_string_ostream os(sbuf);
-      os << "Instance variable '" << I->first->getNameAsString()
-         << "' in class '" << ID->getNameAsString()
+      os << "Instance variable '" << I->first << "' in class '" << ID
          << "' is never used by the methods in its @implementation "
             "(although it may be used by category methods).";
 
index a6c2cc9010a74eadcfb8eb2b4cee4ce381b39da0..d33fd8d503d80d83e19941d79af4bc75c638d3d0 100644 (file)
@@ -3565,7 +3565,7 @@ void CGObjCCommonMac::GetNameForMethod(const ObjCMethodDecl *D,
      << '[' << CD->getName();
   if (const ObjCCategoryImplDecl *CID =
       dyn_cast<ObjCCategoryImplDecl>(D->getDeclContext()))
-    OS << '(' << CID->getNameAsString() << ')';
+    OS << '(' << CID << ')';
   OS << ' ' << D->getSelector().getAsString() << ']';
 }
 
index c0366bf11b69a816e62868decce8b970eab49c3a..2b6e581f2057c95047d9f9575642cfb99434466e 100644 (file)
@@ -896,7 +896,7 @@ void CXXNameMangler::mangleObjCMethodName(const ObjCMethodDecl *MD) {
   assert (CD && "Missing container decl in GetNameForMethod");
   OS << (MD->isInstanceMethod() ? '-' : '+') << '[' << CD->getName();
   if (const ObjCCategoryImplDecl *CID = dyn_cast<ObjCCategoryImplDecl>(CD))
-    OS << '(' << CID->getNameAsString() << ')';
+    OS << '(' << CID << ')';
   OS << ' ' << MD->getSelector().getAsString() << ']';
 
   Out << OS.str().size() << OS.str();
index b53a80e47bc5c127dc6017249087b38c70811ebe..7b8ebf92032e10e25c22a093a54fec8bba329e10 100644 (file)
@@ -164,7 +164,7 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
   case Decl::Namespace: {
     Out << "[namespace] ";
     const NamespaceDecl* ND = cast<NamespaceDecl>(DC);
-    Out << ND->getNameAsString();
+    Out << ND;
     break;
   }
   case Decl::Enum: {
@@ -173,7 +173,7 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
       Out << "[enum] ";
     else
       Out << "<enum> ";
-    Out << ED->getNameAsString();
+    Out << ED;
     break;
   }
   case Decl::Record: {
@@ -182,7 +182,7 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
       Out << "[struct] ";
     else
       Out << "<struct> ";
-    Out << RD->getNameAsString();
+    Out << RD;
     break;
   }
   case Decl::CXXRecord: {
@@ -191,7 +191,7 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
       Out << "[class] ";
     else
       Out << "<class> ";
-    Out << RD->getNameAsString() << " " << DC;
+    Out << RD << ' ' << DC;
     break;
   }
   case Decl::ObjCMethod:
@@ -224,7 +224,7 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
       Out << "[function] ";
     else
       Out << "<function> ";
-    Out << FD->getNameAsString();
+    Out << FD;
     // Print the parameters.
     Out << "(";
     bool PrintComma = false;
@@ -234,7 +234,7 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
         Out << ", ";
       else
         PrintComma = true;
-      Out << (*I)->getNameAsString();
+      Out << *I;
     }
     Out << ")";
     break;
@@ -247,7 +247,7 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
       Out << "(c++ method) ";
     else
       Out << "<c++ method> ";
-    Out << D->getNameAsString();
+    Out << D;
     // Print the parameters.
     Out << "(";
     bool PrintComma = false;
@@ -257,7 +257,7 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
         Out << ", ";
       else
         PrintComma = true;
-      Out << (*I)->getNameAsString();
+      Out << *I;
     }
     Out << ")";
 
@@ -277,7 +277,7 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
       Out << "(c++ ctor) ";
     else
       Out << "<c++ ctor> ";
-    Out << D->getNameAsString();
+    Out << D;
     // Print the parameters.
     Out << "(";
     bool PrintComma = false;
@@ -287,7 +287,7 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
         Out << ", ";
       else
         PrintComma = true;
-      Out << (*I)->getNameAsString();
+      Out << *I;
     }
     Out << ")";
 
@@ -306,7 +306,7 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
       Out << "(c++ dtor) ";
     else
       Out << "<c++ dtor> ";
-    Out << D->getNameAsString();
+    Out << D;
     // Check the semantic DC.
     const DeclContext* SemaDC = D->getDeclContext();
     const DeclContext* LexicalDC = D->getLexicalDeclContext();
@@ -322,7 +322,7 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
       Out << "(c++ conversion) ";
     else
       Out << "<c++ conversion> ";
-    Out << D->getNameAsString();
+    Out << D;
     // Check the semantic DC.
     const DeclContext* SemaDC = D->getDeclContext();
     const DeclContext* LexicalDC = D->getLexicalDeclContext();
@@ -369,42 +369,42 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
     }
     case Decl::Field: {
       FieldDecl* FD = cast<FieldDecl>(*I);
-      Out << "<field> " << FD->getNameAsString() << "\n";
+      Out << "<field> " << FD << '\n';
       break;
     }
     case Decl::Typedef: {
       TypedefDecl* TD = cast<TypedefDecl>(*I);
-      Out << "<typedef> " << TD->getNameAsString() << "\n";
+      Out << "<typedef> " << TD << '\n';
       break;
     }
     case Decl::EnumConstant: {
       EnumConstantDecl* ECD = cast<EnumConstantDecl>(*I);
-      Out << "<enum constant> " << ECD->getNameAsString() << "\n";
+      Out << "<enum constant> " << ECD << '\n';
       break;
     }
     case Decl::Var: {
       VarDecl* VD = cast<VarDecl>(*I);
-      Out << "<var> " << VD->getNameAsString() << "\n";
+      Out << "<var> " << VD << '\n';
       break;
     }
     case Decl::ImplicitParam: {
       ImplicitParamDecl* IPD = cast<ImplicitParamDecl>(*I);
-      Out << "<implicit parameter> " << IPD->getNameAsString() << "\n";
+      Out << "<implicit parameter> " << IPD << '\n';
       break;
     }
     case Decl::ParmVar: {
       ParmVarDecl* PVD = cast<ParmVarDecl>(*I);
-      Out << "<parameter> " << PVD->getNameAsString() << "\n";
+      Out << "<parameter> " << PVD << '\n';
       break;
     }
     case Decl::ObjCProperty: {
       ObjCPropertyDecl* OPD = cast<ObjCPropertyDecl>(*I);
-      Out << "<objc property> " << OPD->getNameAsString() << "\n";
+      Out << "<objc property> " << OPD << '\n';
       break;
     }
     case Decl::FunctionTemplate: {
       FunctionTemplateDecl* FTD = cast<FunctionTemplateDecl>(*I);
-      Out << "<function template> " << FTD->getNameAsString() << "\n";
+      Out << "<function template> " << FTD << '\n';
       break;
     }
     case Decl::FileScopeAsm: {
@@ -417,16 +417,16 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
     }
     case Decl::NamespaceAlias: {
       NamespaceAliasDecl* NAD = cast<NamespaceAliasDecl>(*I);
-      Out << "<namespace alias> " << NAD->getNameAsString() << "\n";
+      Out << "<namespace alias> " << NAD << '\n';
       break;
     }
     case Decl::ClassTemplate: {
       ClassTemplateDecl *CTD = cast<ClassTemplateDecl>(*I);
-      Out << "<class template> " << CTD->getNameAsString() << '\n';
+      Out << "<class template> " << CTD << '\n';
       break;
     }
     default:
-      Out << "DeclKind: " << DK << '"' << I->getDeclKindName() << "\"\n";
+      Out << "DeclKind: " << DK << '"' << *I << "\"\n";
       assert(0 && "decl unhandled");
     }
   }
index 2ca833b66777226b12fd22391c9f37f4126174e2..d55fbc1a21feb73443b3a96652a01638b4932f8a 100644 (file)
@@ -150,7 +150,7 @@ public:
 
     if (isa<FunctionDecl>(D) || isa<ObjCMethodDecl>(D)) {
       const NamedDecl *ND = cast<NamedDecl>(D);
-      llvm::errs() << ' ' << ND->getNameAsString() << '\n';
+      llvm::errs() << ' ' << ND << '\n';
     }
     else if (isa<BlockDecl>(D)) {
       llvm::errs() << ' ' << "block(line:" << Loc.getLine() << ",col:"
index c24f3bf5b3c1f6fab3dba3eb3630e12aee2a23fd..091bc78c2669192f614127f83c565684a0d2e715 100644 (file)
@@ -87,7 +87,7 @@ void ASTLocation::print(llvm::raw_ostream &OS) const {
   case N_Decl:
     OS << "[Decl: " << AsDecl()->getDeclKindName() << " ";
     if (const NamedDecl *ND = dyn_cast<NamedDecl>(AsDecl()))
-      OS << ND->getNameAsString();
+      OS << ND;
     break;
 
   case N_Stmt:
@@ -97,7 +97,7 @@ void ASTLocation::print(llvm::raw_ostream &OS) const {
     
   case N_NamedRef:
     OS << "[NamedRef: " << AsNamedRef().ND->getDeclKindName() << " ";
-    OS << AsNamedRef().ND->getNameAsString();
+    OS << AsNamedRef().ND;
     break;
     
   case N_Type: {
index 9f0ee5cde737129574a3ef0542785d3151af1fc6..0ef9a15faaf9db6a05cb136e5d17df15b6a5dfe2 100644 (file)
@@ -425,7 +425,7 @@ PrintingCodeCompleteConsumer::ProcessCodeCompleteResults(Sema &SemaRef,
     OS << "COMPLETION: ";
     switch (Results[I].Kind) {
     case Result::RK_Declaration:
-      OS << Results[I].Declaration->getNameAsString() ;
+      OS << Results[I].Declaration;
       if (Results[I].Hidden)
         OS << " (Hidden)";
       if (CodeCompletionString *CCS 
index e50a8602652bc9c8a442b9c65c62f68533fc9876..76de0729b5b95876ea17f8f160dd69c2d8a28a0f 100644 (file)
@@ -4020,8 +4020,7 @@ void InitializationSequence::dump(llvm::raw_ostream &OS) const {
       break;
       
     case SK_UserConversion:
-      OS << "user-defined conversion via "
-         << S->Function.Function->getNameAsString();
+      OS << "user-defined conversion via " << S->Function.Function;
       break;
       
     case SK_QualificationConversionRValue:
index 3d1fa434dca99e76682042bd4b3c11df62b472bd..c4a42cd1eff953bdf1a39c3eaab100042e0ead5c 100644 (file)
@@ -226,7 +226,7 @@ void UserDefinedConversionSequence::DebugPrint() const {
     Before.DebugPrint();
     OS << " -> ";
   }
-  OS << "'" << ConversionFunction->getNameAsString() << "'";
+  OS << '\'' << ConversionFunction << '\'';
   if (After.First || After.Second || After.Third) {
     OS << " -> ";
     After.DebugPrint();
index 2d623e33f60101bf2f971f8f526fcce77fd6dd0c..d67f97a5a608ce9b0e34fb08d28adf47694a5186 100644 (file)
@@ -137,7 +137,7 @@ void USRGenerator::VisitFieldDecl(FieldDecl *D) {
 
 void USRGenerator::VisitFunctionDecl(FunctionDecl *D) {
   VisitDeclContext(D->getDeclContext());
-  Out << "@F@" << D->getNameAsString();
+  Out << "@F@" << D;
 }
 
 void USRGenerator::VisitNamedDecl(NamedDecl *D) {
@@ -155,7 +155,7 @@ void USRGenerator::VisitNamedDecl(NamedDecl *D) {
 
 void USRGenerator::VisitNamespaceDecl(NamespaceDecl *D) {
   VisitDeclContext(D->getDeclContext());
-  Out << "@N@" << D->getNameAsString();
+  Out << "@N@" << D;
 }
 
 void USRGenerator::VisitObjCMethodDecl(ObjCMethodDecl *D) {
@@ -251,7 +251,7 @@ void USRGenerator::VisitTagDecl(TagDecl *D) {
 
   if (s.empty()) {
     if (TD)
-      Out << '@' << TD->getNameAsString();
+      Out << '@' << TD;
   }
   else
     Out << '@' << s;