[PATCH] D63584: [clang][AST] Refactoring ASTNameGenerator to use pimpl pattern (NFC).

2019-06-19 Thread Puyan Lotfi via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL363908: [clang][AST] Refactoring ASTNameGenerator to use 
pimpl pattern (NFC). (authored by zer0, committed by ).
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D63584?vs=205729=205739#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D63584/new/

https://reviews.llvm.org/D63584

Files:
  cfe/trunk/include/clang/AST/Mangle.h
  cfe/trunk/lib/AST/Mangle.cpp

Index: cfe/trunk/include/clang/AST/Mangle.h
===
--- cfe/trunk/include/clang/AST/Mangle.h
+++ cfe/trunk/include/clang/AST/Mangle.h
@@ -17,7 +17,6 @@
 #include "clang/AST/Type.h"
 #include "clang/Basic/ABI.h"
 #include "llvm/ADT/DenseMap.h"
-#include "llvm/IR/DataLayout.h"
 #include "llvm/Support/Casting.h"
 
 namespace llvm {
@@ -246,21 +245,16 @@
 };
 
 class ASTNameGenerator {
-  std::unique_ptr MC;
-  llvm::DataLayout DL;
-
 public:
   explicit ASTNameGenerator(ASTContext );
+  ~ASTNameGenerator();
   bool writeName(const Decl *D, raw_ostream );
   std::string getName(const Decl *D);
   std::vector getAllManglings(const Decl *D);
 
 private:
-  std::vector getAllManglings(const ObjCContainerDecl *OCD);
-  bool writeFuncOrVarName(const NamedDecl *D, raw_ostream );
-  void writeObjCClassName(const ObjCInterfaceDecl *D, raw_ostream );
-  std::string getMangledStructor(const NamedDecl *ND, unsigned StructorType);
-  std::string getMangledThunk(const CXXMethodDecl *MD, const ThunkInfo );
+  class Implementation;
+  std::unique_ptr Impl;
 };
 }
 
Index: cfe/trunk/lib/AST/Mangle.cpp
===
--- cfe/trunk/lib/AST/Mangle.cpp
+++ cfe/trunk/lib/AST/Mangle.cpp
@@ -22,6 +22,7 @@
 #include "clang/Basic/SourceManager.h"
 #include "clang/Basic/TargetInfo.h"
 #include "llvm/ADT/StringExtras.h"
+#include "llvm/IR/DataLayout.h"
 #include "llvm/IR/Mangler.h"
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/raw_ostream.h"
@@ -283,183 +284,204 @@
   Out << OS.str().size() << OS.str();
 }
 
-ASTNameGenerator::ASTNameGenerator(ASTContext )
-: MC(Ctx.createMangleContext()), DL(Ctx.getTargetInfo().getDataLayout()) {}
-
-bool ASTNameGenerator::writeName(const Decl *D, raw_ostream ) {
-  // First apply frontend mangling.
-  SmallString<128> FrontendBuf;
-  llvm::raw_svector_ostream FrontendBufOS(FrontendBuf);
-  if (auto *FD = dyn_cast(D)) {
-if (FD->isDependentContext())
+class ASTNameGenerator::Implementation {
+  std::unique_ptr MC;
+  llvm::DataLayout DL;
+
+public:
+  explicit Implementation(ASTContext )
+  : MC(Ctx.createMangleContext()), DL(Ctx.getTargetInfo().getDataLayout()) {
+  }
+
+  bool writeName(const Decl *D, raw_ostream ) {
+// First apply frontend mangling.
+SmallString<128> FrontendBuf;
+llvm::raw_svector_ostream FrontendBufOS(FrontendBuf);
+if (auto *FD = dyn_cast(D)) {
+  if (FD->isDependentContext())
+return true;
+  if (writeFuncOrVarName(FD, FrontendBufOS))
+return true;
+} else if (auto *VD = dyn_cast(D)) {
+  if (writeFuncOrVarName(VD, FrontendBufOS))
+return true;
+} else if (auto *MD = dyn_cast(D)) {
+  MC->mangleObjCMethodNameWithoutSize(MD, OS);
+  return false;
+} else if (auto *ID = dyn_cast(D)) {
+  writeObjCClassName(ID, FrontendBufOS);
+} else {
   return true;
-if (writeFuncOrVarName(FD, FrontendBufOS))
-  return true;
-  } else if (auto *VD = dyn_cast(D)) {
-if (writeFuncOrVarName(VD, FrontendBufOS))
-  return true;
-  } else if (auto *MD = dyn_cast(D)) {
-MC->mangleObjCMethodNameWithoutSize(MD, OS);
+}
+
+// Now apply backend mangling.
+llvm::Mangler::getNameWithPrefix(OS, FrontendBufOS.str(), DL);
 return false;
-  } else if (auto *ID = dyn_cast(D)) {
-writeObjCClassName(ID, FrontendBufOS);
-  } else {
-return true;
   }
 
-  // Now apply backend mangling.
-  llvm::Mangler::getNameWithPrefix(OS, FrontendBufOS.str(), DL);
-  return false;
-}
-
-std::string ASTNameGenerator::getName(const Decl *D) {
-  std::string Name;
-  {
-llvm::raw_string_ostream OS(Name);
-writeName(D, OS);
+  std::string getName(const Decl *D) {
+std::string Name;
+{
+  llvm::raw_string_ostream OS(Name);
+  writeName(D, OS);
+}
+return Name;
   }
-  return Name;
-}
 
-enum ObjCKind {
-  ObjCClass,
-  ObjCMetaclass,
-};
-
-static StringRef getClassSymbolPrefix(ObjCKind Kind,
-  const ASTContext ) {
-  if (Context.getLangOpts().ObjCRuntime.isGNUFamily())
-return Kind == ObjCMetaclass ? "_OBJC_METACLASS_" : "_OBJC_CLASS_";
-  return Kind == ObjCMetaclass ? "OBJC_METACLASS_$_" : "OBJC_CLASS_$_";
-}
-
-std::vector
-ASTNameGenerator::getAllManglings(const ObjCContainerDecl *OCD) {
-  StringRef ClassName;
-  if (const auto *OID = 

[PATCH] D63584: [clang][AST] Refactoring ASTNameGenerator to use pimpl pattern (NFC).

2019-06-19 Thread Saleem Abdulrasool via Phabricator via cfe-commits
compnerd accepted this revision.
compnerd added inline comments.
This revision is now accepted and ready to land.



Comment at: clang/lib/AST/Mangle.cpp:343
 
-std::vector
-ASTNameGenerator::getAllManglings(const ObjCContainerDecl *OCD) {
+  std::vector getAllManglings(const ObjCContainerDecl *OCD) {
 StringRef ClassName;

plotfi wrote:
> @aaron.ballman I can move this down to the private section in a subsequent 
> NFC if you'd like. 
The implementation is never leaked to the user.  This means that this is 
effectively private.



Comment at: clang/lib/AST/Mangle.cpp:416
 
-bool ASTNameGenerator::writeFuncOrVarName(const NamedDecl *D, raw_ostream ) 
{
+private:
+  bool writeFuncOrVarName(const NamedDecl *D, raw_ostream ) {

Don't think that it really matters to make this private or public really.  The 
implementation is fully private.



Comment at: clang/lib/AST/Mangle.cpp:473
+ASTNameGenerator::ASTNameGenerator(ASTContext )
+: Impl(new Implementation(Ctx)) {}
+

`llvm::make_unique` would be nicer.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D63584/new/

https://reviews.llvm.org/D63584



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D63584: [clang][AST] Refactoring ASTNameGenerator to use pimpl pattern (NFC).

2019-06-19 Thread Puyan Lotfi via Phabricator via cfe-commits
plotfi marked an inline comment as done.
plotfi added inline comments.



Comment at: clang/lib/AST/Mangle.cpp:343
 
-std::vector
-ASTNameGenerator::getAllManglings(const ObjCContainerDecl *OCD) {
+  std::vector getAllManglings(const ObjCContainerDecl *OCD) {
 StringRef ClassName;

@aaron.ballman I can move this down to the private section in a subsequent NFC 
if you'd like. 


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D63584/new/

https://reviews.llvm.org/D63584



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D63584: [clang][AST] Refactoring ASTNameGenerator to use pimpl pattern (NFC).

2019-06-19 Thread Puyan Lotfi via Phabricator via cfe-commits
plotfi updated this revision to Diff 205729.
plotfi added a comment.

full context


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D63584/new/

https://reviews.llvm.org/D63584

Files:
  clang/include/clang/AST/Mangle.h
  clang/lib/AST/Mangle.cpp

Index: clang/lib/AST/Mangle.cpp
===
--- clang/lib/AST/Mangle.cpp
+++ clang/lib/AST/Mangle.cpp
@@ -22,6 +22,7 @@
 #include "clang/Basic/SourceManager.h"
 #include "clang/Basic/TargetInfo.h"
 #include "llvm/ADT/StringExtras.h"
+#include "llvm/IR/DataLayout.h"
 #include "llvm/IR/Mangler.h"
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/raw_ostream.h"
@@ -283,10 +284,16 @@
   Out << OS.str().size() << OS.str();
 }
 
-ASTNameGenerator::ASTNameGenerator(ASTContext )
-: MC(Ctx.createMangleContext()), DL(Ctx.getTargetInfo().getDataLayout()) {}
+class ASTNameGenerator::Implementation {
+  std::unique_ptr MC;
+  llvm::DataLayout DL;
 
-bool ASTNameGenerator::writeName(const Decl *D, raw_ostream ) {
+public:
+  explicit Implementation(ASTContext )
+  : MC(Ctx.createMangleContext()), DL(Ctx.getTargetInfo().getDataLayout()) {
+  }
+
+  bool writeName(const Decl *D, raw_ostream ) {
 // First apply frontend mangling.
 SmallString<128> FrontendBuf;
 llvm::raw_svector_ostream FrontendBufOS(FrontendBuf);
@@ -312,7 +319,7 @@
 return false;
   }
 
-std::string ASTNameGenerator::getName(const Decl *D) {
+  std::string getName(const Decl *D) {
 std::string Name;
 {
   llvm::raw_string_ostream OS(Name);
@@ -333,8 +340,7 @@
 return Kind == ObjCMetaclass ? "OBJC_METACLASS_$_" : "OBJC_CLASS_$_";
   }
 
-std::vector
-ASTNameGenerator::getAllManglings(const ObjCContainerDecl *OCD) {
+  std::vector getAllManglings(const ObjCContainerDecl *OCD) {
 StringRef ClassName;
 if (const auto *OID = dyn_cast(OCD))
   ClassName = OID->getObjCRuntimeNameAsString();
@@ -357,7 +363,7 @@
 };
   }
 
-std::vector ASTNameGenerator::getAllManglings(const Decl *D) {
+  std::vector getAllManglings(const Decl *D) {
 if (const auto *OCD = dyn_cast(D))
   return getAllManglings(OCD);
 
@@ -407,7 +413,8 @@
 return Manglings;
   }
 
-bool ASTNameGenerator::writeFuncOrVarName(const NamedDecl *D, raw_ostream ) {
+private:
+  bool writeFuncOrVarName(const NamedDecl *D, raw_ostream ) {
 if (MC->shouldMangleDeclName(D)) {
   if (const auto *CtorD = dyn_cast(D))
 MC->mangleCXXCtor(CtorD, Ctor_Complete, OS);
@@ -425,14 +432,12 @@
 }
   }
 
-void ASTNameGenerator::writeObjCClassName(const ObjCInterfaceDecl *D,
-  raw_ostream ) {
+  void writeObjCClassName(const ObjCInterfaceDecl *D, raw_ostream ) {
 OS << getClassSymbolPrefix(ObjCClass, D->getASTContext());
 OS << D->getObjCRuntimeNameAsString();
   }
 
-std::string ASTNameGenerator::getMangledStructor(const NamedDecl *ND,
- unsigned StructorType) {
+  std::string getMangledStructor(const NamedDecl *ND, unsigned StructorType) {
 std::string FrontendBuf;
 llvm::raw_string_ostream FOS(FrontendBuf);
 
@@ -449,8 +454,7 @@
 return BOS.str();
   }
 
-std::string ASTNameGenerator::getMangledThunk(const CXXMethodDecl *MD,
-  const ThunkInfo ) {
+  std::string getMangledThunk(const CXXMethodDecl *MD, const ThunkInfo ) {
 std::string FrontendBuf;
 llvm::raw_string_ostream FOS(FrontendBuf);
 
@@ -463,3 +467,21 @@
 
 return BOS.str();
   }
+};
+
+ASTNameGenerator::ASTNameGenerator(ASTContext )
+: Impl(new Implementation(Ctx)) {}
+
+ASTNameGenerator::~ASTNameGenerator() {}
+
+bool ASTNameGenerator::writeName(const Decl *D, raw_ostream ) {
+  return Impl->writeName(D, OS);
+}
+
+std::string ASTNameGenerator::getName(const Decl *D) {
+  return Impl->getName(D);
+}
+
+std::vector ASTNameGenerator::getAllManglings(const Decl *D) {
+  return Impl->getAllManglings(D);
+}
Index: clang/include/clang/AST/Mangle.h
===
--- clang/include/clang/AST/Mangle.h
+++ clang/include/clang/AST/Mangle.h
@@ -17,7 +17,6 @@
 #include "clang/AST/Type.h"
 #include "clang/Basic/ABI.h"
 #include "llvm/ADT/DenseMap.h"
-#include "llvm/IR/DataLayout.h"
 #include "llvm/Support/Casting.h"
 
 namespace llvm {
@@ -246,21 +245,16 @@
 };
 
 class ASTNameGenerator {
-  std::unique_ptr MC;
-  llvm::DataLayout DL;
-
 public:
   explicit ASTNameGenerator(ASTContext );
+  ~ASTNameGenerator();
   bool writeName(const Decl *D, raw_ostream );
   std::string getName(const Decl *D);
   std::vector getAllManglings(const Decl *D);
 
 private:
-  std::vector getAllManglings(const ObjCContainerDecl *OCD);
-  bool writeFuncOrVarName(const NamedDecl *D, raw_ostream );
-  void writeObjCClassName(const ObjCInterfaceDecl *D, raw_ostream );
-  std::string getMangledStructor(const NamedDecl *ND, unsigned 

[PATCH] D63584: [clang][AST] Refactoring ASTNameGenerator to use pimpl pattern (NFC).

2019-06-19 Thread Puyan Lotfi via Phabricator via cfe-commits
plotfi updated this revision to Diff 205728.
plotfi added a comment.

moving datalayout.h


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D63584/new/

https://reviews.llvm.org/D63584

Files:
  clang/include/clang/AST/Mangle.h
  clang/lib/AST/Mangle.cpp

Index: clang/lib/AST/Mangle.cpp
===
--- clang/lib/AST/Mangle.cpp
+++ clang/lib/AST/Mangle.cpp
@@ -22,6 +22,7 @@
 #include "clang/Basic/SourceManager.h"
 #include "clang/Basic/TargetInfo.h"
 #include "llvm/ADT/StringExtras.h"
+#include "llvm/IR/DataLayout.h"
 #include "llvm/IR/Mangler.h"
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/raw_ostream.h"
@@ -283,183 +284,204 @@
   Out << OS.str().size() << OS.str();
 }
 
-ASTNameGenerator::ASTNameGenerator(ASTContext )
-: MC(Ctx.createMangleContext()), DL(Ctx.getTargetInfo().getDataLayout()) {}
+class ASTNameGenerator::Implementation {
+  std::unique_ptr MC;
+  llvm::DataLayout DL;
 
-bool ASTNameGenerator::writeName(const Decl *D, raw_ostream ) {
-  // First apply frontend mangling.
-  SmallString<128> FrontendBuf;
-  llvm::raw_svector_ostream FrontendBufOS(FrontendBuf);
-  if (auto *FD = dyn_cast(D)) {
-if (FD->isDependentContext())
-  return true;
-if (writeFuncOrVarName(FD, FrontendBufOS))
-  return true;
-  } else if (auto *VD = dyn_cast(D)) {
-if (writeFuncOrVarName(VD, FrontendBufOS))
+public:
+  explicit Implementation(ASTContext )
+  : MC(Ctx.createMangleContext()), DL(Ctx.getTargetInfo().getDataLayout()) {
+  }
+
+  bool writeName(const Decl *D, raw_ostream ) {
+// First apply frontend mangling.
+SmallString<128> FrontendBuf;
+llvm::raw_svector_ostream FrontendBufOS(FrontendBuf);
+if (auto *FD = dyn_cast(D)) {
+  if (FD->isDependentContext())
+return true;
+  if (writeFuncOrVarName(FD, FrontendBufOS))
+return true;
+} else if (auto *VD = dyn_cast(D)) {
+  if (writeFuncOrVarName(VD, FrontendBufOS))
+return true;
+} else if (auto *MD = dyn_cast(D)) {
+  MC->mangleObjCMethodNameWithoutSize(MD, OS);
+  return false;
+} else if (auto *ID = dyn_cast(D)) {
+  writeObjCClassName(ID, FrontendBufOS);
+} else {
   return true;
-  } else if (auto *MD = dyn_cast(D)) {
-MC->mangleObjCMethodNameWithoutSize(MD, OS);
+}
+
+// Now apply backend mangling.
+llvm::Mangler::getNameWithPrefix(OS, FrontendBufOS.str(), DL);
 return false;
-  } else if (auto *ID = dyn_cast(D)) {
-writeObjCClassName(ID, FrontendBufOS);
-  } else {
-return true;
   }
 
-  // Now apply backend mangling.
-  llvm::Mangler::getNameWithPrefix(OS, FrontendBufOS.str(), DL);
-  return false;
-}
-
-std::string ASTNameGenerator::getName(const Decl *D) {
-  std::string Name;
-  {
-llvm::raw_string_ostream OS(Name);
-writeName(D, OS);
+  std::string getName(const Decl *D) {
+std::string Name;
+{
+  llvm::raw_string_ostream OS(Name);
+  writeName(D, OS);
+}
+return Name;
   }
-  return Name;
-}
 
-enum ObjCKind {
-  ObjCClass,
-  ObjCMetaclass,
-};
+  enum ObjCKind {
+ObjCClass,
+ObjCMetaclass,
+  };
 
-static StringRef getClassSymbolPrefix(ObjCKind Kind,
-  const ASTContext ) {
-  if (Context.getLangOpts().ObjCRuntime.isGNUFamily())
-return Kind == ObjCMetaclass ? "_OBJC_METACLASS_" : "_OBJC_CLASS_";
-  return Kind == ObjCMetaclass ? "OBJC_METACLASS_$_" : "OBJC_CLASS_$_";
-}
+  static StringRef getClassSymbolPrefix(ObjCKind Kind,
+const ASTContext ) {
+if (Context.getLangOpts().ObjCRuntime.isGNUFamily())
+  return Kind == ObjCMetaclass ? "_OBJC_METACLASS_" : "_OBJC_CLASS_";
+return Kind == ObjCMetaclass ? "OBJC_METACLASS_$_" : "OBJC_CLASS_$_";
+  }
 
-std::vector
-ASTNameGenerator::getAllManglings(const ObjCContainerDecl *OCD) {
-  StringRef ClassName;
-  if (const auto *OID = dyn_cast(OCD))
-ClassName = OID->getObjCRuntimeNameAsString();
-  else if (const auto *OID = dyn_cast(OCD))
-ClassName = OID->getObjCRuntimeNameAsString();
-
-  if (ClassName.empty())
-return {};
-
-  auto Mangle = [&](ObjCKind Kind, StringRef ClassName) -> std::string {
-SmallString<40> Mangled;
-auto Prefix = getClassSymbolPrefix(Kind, OCD->getASTContext());
-llvm::Mangler::getNameWithPrefix(Mangled, Prefix + ClassName, DL);
-return Mangled.str();
-  };
+  std::vector getAllManglings(const ObjCContainerDecl *OCD) {
+StringRef ClassName;
+if (const auto *OID = dyn_cast(OCD))
+  ClassName = OID->getObjCRuntimeNameAsString();
+else if (const auto *OID = dyn_cast(OCD))
+  ClassName = OID->getObjCRuntimeNameAsString();
+
+if (ClassName.empty())
+  return {};
+
+auto Mangle = [&](ObjCKind Kind, StringRef ClassName) -> std::string {
+  SmallString<40> Mangled;
+  auto Prefix = getClassSymbolPrefix(Kind, OCD->getASTContext());
+  

[PATCH] D63584: [clang][AST] Refactoring ASTNameGenerator to use pimpl pattern (NFC).

2019-06-19 Thread Puyan Lotfi via Phabricator via cfe-commits
plotfi created this revision.
plotfi added reviewers: compnerd, aaron.ballman.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D63584

Files:
  clang/include/clang/AST/Mangle.h
  clang/lib/AST/Mangle.cpp

Index: clang/lib/AST/Mangle.cpp
===
--- clang/lib/AST/Mangle.cpp
+++ clang/lib/AST/Mangle.cpp
@@ -283,183 +283,204 @@
   Out << OS.str().size() << OS.str();
 }
 
-ASTNameGenerator::ASTNameGenerator(ASTContext )
-: MC(Ctx.createMangleContext()), DL(Ctx.getTargetInfo().getDataLayout()) {}
+class ASTNameGenerator::Implementation {
+  std::unique_ptr MC;
+  llvm::DataLayout DL;
 
-bool ASTNameGenerator::writeName(const Decl *D, raw_ostream ) {
-  // First apply frontend mangling.
-  SmallString<128> FrontendBuf;
-  llvm::raw_svector_ostream FrontendBufOS(FrontendBuf);
-  if (auto *FD = dyn_cast(D)) {
-if (FD->isDependentContext())
-  return true;
-if (writeFuncOrVarName(FD, FrontendBufOS))
-  return true;
-  } else if (auto *VD = dyn_cast(D)) {
-if (writeFuncOrVarName(VD, FrontendBufOS))
+public:
+  explicit Implementation(ASTContext )
+  : MC(Ctx.createMangleContext()), DL(Ctx.getTargetInfo().getDataLayout()) {
+  }
+
+  bool writeName(const Decl *D, raw_ostream ) {
+// First apply frontend mangling.
+SmallString<128> FrontendBuf;
+llvm::raw_svector_ostream FrontendBufOS(FrontendBuf);
+if (auto *FD = dyn_cast(D)) {
+  if (FD->isDependentContext())
+return true;
+  if (writeFuncOrVarName(FD, FrontendBufOS))
+return true;
+} else if (auto *VD = dyn_cast(D)) {
+  if (writeFuncOrVarName(VD, FrontendBufOS))
+return true;
+} else if (auto *MD = dyn_cast(D)) {
+  MC->mangleObjCMethodNameWithoutSize(MD, OS);
+  return false;
+} else if (auto *ID = dyn_cast(D)) {
+  writeObjCClassName(ID, FrontendBufOS);
+} else {
   return true;
-  } else if (auto *MD = dyn_cast(D)) {
-MC->mangleObjCMethodNameWithoutSize(MD, OS);
+}
+
+// Now apply backend mangling.
+llvm::Mangler::getNameWithPrefix(OS, FrontendBufOS.str(), DL);
 return false;
-  } else if (auto *ID = dyn_cast(D)) {
-writeObjCClassName(ID, FrontendBufOS);
-  } else {
-return true;
   }
 
-  // Now apply backend mangling.
-  llvm::Mangler::getNameWithPrefix(OS, FrontendBufOS.str(), DL);
-  return false;
-}
-
-std::string ASTNameGenerator::getName(const Decl *D) {
-  std::string Name;
-  {
-llvm::raw_string_ostream OS(Name);
-writeName(D, OS);
+  std::string getName(const Decl *D) {
+std::string Name;
+{
+  llvm::raw_string_ostream OS(Name);
+  writeName(D, OS);
+}
+return Name;
   }
-  return Name;
-}
 
-enum ObjCKind {
-  ObjCClass,
-  ObjCMetaclass,
-};
+  enum ObjCKind {
+ObjCClass,
+ObjCMetaclass,
+  };
 
-static StringRef getClassSymbolPrefix(ObjCKind Kind,
-  const ASTContext ) {
-  if (Context.getLangOpts().ObjCRuntime.isGNUFamily())
-return Kind == ObjCMetaclass ? "_OBJC_METACLASS_" : "_OBJC_CLASS_";
-  return Kind == ObjCMetaclass ? "OBJC_METACLASS_$_" : "OBJC_CLASS_$_";
-}
+  static StringRef getClassSymbolPrefix(ObjCKind Kind,
+const ASTContext ) {
+if (Context.getLangOpts().ObjCRuntime.isGNUFamily())
+  return Kind == ObjCMetaclass ? "_OBJC_METACLASS_" : "_OBJC_CLASS_";
+return Kind == ObjCMetaclass ? "OBJC_METACLASS_$_" : "OBJC_CLASS_$_";
+  }
 
-std::vector
-ASTNameGenerator::getAllManglings(const ObjCContainerDecl *OCD) {
-  StringRef ClassName;
-  if (const auto *OID = dyn_cast(OCD))
-ClassName = OID->getObjCRuntimeNameAsString();
-  else if (const auto *OID = dyn_cast(OCD))
-ClassName = OID->getObjCRuntimeNameAsString();
-
-  if (ClassName.empty())
-return {};
-
-  auto Mangle = [&](ObjCKind Kind, StringRef ClassName) -> std::string {
-SmallString<40> Mangled;
-auto Prefix = getClassSymbolPrefix(Kind, OCD->getASTContext());
-llvm::Mangler::getNameWithPrefix(Mangled, Prefix + ClassName, DL);
-return Mangled.str();
-  };
+  std::vector getAllManglings(const ObjCContainerDecl *OCD) {
+StringRef ClassName;
+if (const auto *OID = dyn_cast(OCD))
+  ClassName = OID->getObjCRuntimeNameAsString();
+else if (const auto *OID = dyn_cast(OCD))
+  ClassName = OID->getObjCRuntimeNameAsString();
+
+if (ClassName.empty())
+  return {};
+
+auto Mangle = [&](ObjCKind Kind, StringRef ClassName) -> std::string {
+  SmallString<40> Mangled;
+  auto Prefix = getClassSymbolPrefix(Kind, OCD->getASTContext());
+  llvm::Mangler::getNameWithPrefix(Mangled, Prefix + ClassName, DL);
+  return Mangled.str();
+};
+
+return {
+Mangle(ObjCClass, ClassName),
+Mangle(ObjCMetaclass, ClassName),
+};
+  }
 
-  return {
-  Mangle(ObjCClass, ClassName),
-