[clang-tools-extra] r338763 - Reland "[clang-doc] Refactoring mapper to map by scope"

Julie Hockett via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 2 13:10:18 PDT 2018


Author: juliehockett
Date: Thu Aug  2 13:10:17 2018
New Revision: 338763

URL: http://llvm.org/viewvc/llvm-project?rev=338763&view=rev
Log:
Reland "[clang-doc] Refactoring mapper to map by scope"

Relanding with a minor change to prevent an assertion on release bots.

The result of this adjusted mapper pass is that all Function and Enum
infos are absorbed into the info of their enclosing scope (i.e. the class
or namespace in which they are defined). Namespace and Record infos are
passed along to the final output, but the second pass creates a reference
to each in its parent scope. As a result, the top-level final outputs are
Namespaces and Records.

Differential Revision: https://reviews.llvm.org/D48341

Added:
    clang-tools-extra/trunk/test/clang-doc/bc-linkage.cpp
    clang-tools-extra/trunk/test/clang-doc/bc-module.cpp
    clang-tools-extra/trunk/test/clang-doc/mapper-linkage.cpp
    clang-tools-extra/trunk/test/clang-doc/mapper-module.cpp
    clang-tools-extra/trunk/test/clang-doc/public-comment.cpp
    clang-tools-extra/trunk/test/clang-doc/public-linkage.cpp
    clang-tools-extra/trunk/test/clang-doc/public-namespace.cpp
    clang-tools-extra/trunk/test/clang-doc/public-record.cpp
    clang-tools-extra/trunk/test/clang-doc/test_cases/linkage.cpp
    clang-tools-extra/trunk/test/clang-doc/test_cases/module.cpp
    clang-tools-extra/trunk/test/clang-doc/yaml-linkage.cpp
    clang-tools-extra/trunk/test/clang-doc/yaml-module.cpp
Removed:
    clang-tools-extra/trunk/test/clang-doc/module.cpp
    clang-tools-extra/trunk/test/clang-doc/public-records.cpp
Modified:
    clang-tools-extra/trunk/clang-doc/BitcodeReader.cpp
    clang-tools-extra/trunk/clang-doc/BitcodeReader.h
    clang-tools-extra/trunk/clang-doc/BitcodeWriter.cpp
    clang-tools-extra/trunk/clang-doc/BitcodeWriter.h
    clang-tools-extra/trunk/clang-doc/Mapper.cpp
    clang-tools-extra/trunk/clang-doc/Representation.cpp
    clang-tools-extra/trunk/clang-doc/Representation.h
    clang-tools-extra/trunk/clang-doc/Serialize.cpp
    clang-tools-extra/trunk/clang-doc/Serialize.h
    clang-tools-extra/trunk/clang-doc/YAMLGenerator.cpp
    clang-tools-extra/trunk/clang-doc/gen_tests.py
    clang-tools-extra/trunk/clang-doc/tool/ClangDocMain.cpp
    clang-tools-extra/trunk/test/clang-doc/bc-comment.cpp
    clang-tools-extra/trunk/test/clang-doc/bc-namespace.cpp
    clang-tools-extra/trunk/test/clang-doc/bc-record.cpp
    clang-tools-extra/trunk/test/clang-doc/mapper-comment.cpp
    clang-tools-extra/trunk/test/clang-doc/mapper-namespace.cpp
    clang-tools-extra/trunk/test/clang-doc/mapper-record.cpp
    clang-tools-extra/trunk/test/clang-doc/public-module.cpp
    clang-tools-extra/trunk/test/clang-doc/yaml-comment.cpp
    clang-tools-extra/trunk/test/clang-doc/yaml-namespace.cpp
    clang-tools-extra/trunk/test/clang-doc/yaml-record.cpp

Modified: clang-tools-extra/trunk/clang-doc/BitcodeReader.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/BitcodeReader.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-doc/BitcodeReader.cpp (original)
+++ clang-tools-extra/trunk/clang-doc/BitcodeReader.cpp Thu Aug  2 13:10:17 2018
@@ -100,6 +100,8 @@ bool decodeRecord(Record R, FieldId &Fie
   case FieldId::F_parent:
   case FieldId::F_vparent:
   case FieldId::F_type:
+  case FieldId::F_child_namespace:
+  case FieldId::F_child_record:
   case FieldId::F_default:
     Field = F;
     return true;
@@ -372,6 +374,12 @@ template <> void addReference(NamespaceI
   case FieldId::F_namespace:
     I->Namespace.emplace_back(std::move(R));
     break;
+  case FieldId::F_child_namespace:
+    I->ChildNamespaces.emplace_back(std::move(R));
+    break;
+  case FieldId::F_child_record:
+    I->ChildRecords.emplace_back(std::move(R));
+    break;
   default:
     llvm::errs() << "Invalid field type for info.\n";
     exit(1);
@@ -403,12 +411,37 @@ template <> void addReference(RecordInfo
   case FieldId::F_vparent:
     I->VirtualParents.emplace_back(std::move(R));
     break;
+  case FieldId::F_child_record:
+    I->ChildRecords.emplace_back(std::move(R));
+    break;
   default:
     llvm::errs() << "Invalid field type for info.\n";
     exit(1);
   }
 }
 
+template <typename T, typename ChildInfoType>
+void addChild(T I, ChildInfoType &&R) {
+  llvm::errs() << "Invalid child type for info.\n";
+  exit(1);
+}
+
+template <> void addChild(NamespaceInfo *I, FunctionInfo &&R) {
+  I->ChildFunctions.emplace_back(std::move(R));
+}
+
+template <> void addChild(NamespaceInfo *I, EnumInfo &&R) {
+  I->ChildEnums.emplace_back(std::move(R));
+}
+
+template <> void addChild(RecordInfo *I, FunctionInfo &&R) {
+  I->ChildFunctions.emplace_back(std::move(R));
+}
+
+template <> void addChild(RecordInfo *I, EnumInfo &&R) {
+  I->ChildEnums.emplace_back(std::move(R));
+}
+
 // Read records from bitcode into a given info.
 template <typename T> bool ClangDocBitcodeReader::readRecord(unsigned ID, T I) {
   Record R;
@@ -455,7 +488,8 @@ template <typename T> bool ClangDocBitco
 template <typename T>
 bool ClangDocBitcodeReader::readSubBlock(unsigned ID, T I) {
   switch (ID) {
-  // Blocks can only have Comment, Reference, or TypeInfo subblocks
+  // Blocks can only have Comment, Reference, TypeInfo, FunctionInfo, or
+  // EnumInfo subblocks
   case BI_COMMENT_BLOCK_ID:
     if (readBlock(ID, getCommentInfo(I)))
       return true;
@@ -492,6 +526,22 @@ bool ClangDocBitcodeReader::readSubBlock
     }
     return false;
   }
+  case BI_FUNCTION_BLOCK_ID: {
+    FunctionInfo F;
+    if (readBlock(ID, &F)) {
+      addChild(I, std::move(F));
+      return true;
+    }
+    return false;
+  }
+  case BI_ENUM_BLOCK_ID: {
+    EnumInfo E;
+    if (readBlock(ID, &E)) {
+      addChild(I, std::move(E));
+      return true;
+    }
+    return false;
+  }
   default:
     llvm::errs() << "Invalid subblock type.\n";
     return false;
@@ -573,16 +623,21 @@ std::unique_ptr<Info> ClangDocBitcodeRea
 }
 
 // Entry point
-std::vector<std::unique_ptr<Info>> ClangDocBitcodeReader::readBitcode() {
+llvm::Expected<std::vector<std::unique_ptr<Info>>>
+ClangDocBitcodeReader::readBitcode() {
   std::vector<std::unique_ptr<Info>> Infos;
   if (!validateStream())
-    return Infos;
+    return llvm::make_error<llvm::StringError>("Invalid bitcode stream.\n",
+                                               llvm::inconvertibleErrorCode());
+  ;
 
   // Read the top level blocks.
   while (!Stream.AtEndOfStream()) {
     unsigned Code = Stream.ReadCode();
     if (Code != llvm::bitc::ENTER_SUBBLOCK)
-      return Infos;
+      return llvm::make_error<llvm::StringError>(
+          "Missing subblock in bitcode.\n", llvm::inconvertibleErrorCode());
+    ;
 
     unsigned ID = Stream.ReadSubBlockID();
     switch (ID) {
@@ -592,30 +647,36 @@ std::vector<std::unique_ptr<Info>> Clang
     case BI_MEMBER_TYPE_BLOCK_ID:
     case BI_COMMENT_BLOCK_ID:
     case BI_REFERENCE_BLOCK_ID:
-      llvm::errs() << "Invalid top level block.\n";
-      return Infos;
+      return llvm::make_error<llvm::StringError>(
+          "Invalid top level block in bitcode.\n",
+          llvm::inconvertibleErrorCode());
+      ;
     case BI_NAMESPACE_BLOCK_ID:
     case BI_RECORD_BLOCK_ID:
     case BI_ENUM_BLOCK_ID:
     case BI_FUNCTION_BLOCK_ID:
-      if (std::unique_ptr<Info> I = readBlockToInfo(ID)) {
+      if (std::unique_ptr<Info> I = readBlockToInfo(ID))
         Infos.emplace_back(std::move(I));
-      }
-      return Infos;
+      continue;
     case BI_VERSION_BLOCK_ID:
       if (readBlock(ID, VersionNumber))
         continue;
-      return Infos;
+      return llvm::make_error<llvm::StringError>(
+          "Invalid bitcode version in bitcode.\n",
+          llvm::inconvertibleErrorCode());
+      ;
     case llvm::bitc::BLOCKINFO_BLOCK_ID:
       if (readBlockInfoBlock())
         continue;
-      return Infos;
+      return llvm::make_error<llvm::StringError>(
+          "Invalid BlockInfo in bitcode.\n", llvm::inconvertibleErrorCode());
+      ;
     default:
       if (!Stream.SkipBlock())
         continue;
     }
   }
-  return Infos;
+  return std::move(Infos);
 }
 
 } // namespace doc

Modified: clang-tools-extra/trunk/clang-doc/BitcodeReader.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/BitcodeReader.h?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-doc/BitcodeReader.h (original)
+++ clang-tools-extra/trunk/clang-doc/BitcodeReader.h Thu Aug  2 13:10:17 2018
@@ -19,6 +19,7 @@
 #include "BitcodeWriter.h"
 #include "Representation.h"
 #include "clang/AST/AST.h"
+#include "llvm/ADT/Optional.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/Bitcode/BitstreamReader.h"
 
@@ -31,7 +32,7 @@ public:
   ClangDocBitcodeReader(llvm::BitstreamCursor &Stream) : Stream(Stream) {}
 
   // Main entry point, calls readBlock to read each block in the given stream.
-  std::vector<std::unique_ptr<Info>> readBitcode();
+  llvm::Expected<std::vector<std::unique_ptr<Info>>> readBitcode();
 
 private:
   enum class Cursor { BadBlock = 1, Record, BlockEnd, BlockBegin };

Modified: clang-tools-extra/trunk/clang-doc/BitcodeWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/BitcodeWriter.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-doc/BitcodeWriter.cpp (original)
+++ clang-tools-extra/trunk/clang-doc/BitcodeWriter.cpp Thu Aug  2 13:10:17 2018
@@ -434,6 +434,14 @@ void ClangDocBitcodeWriter::emitBlock(co
     emitBlock(N, FieldId::F_namespace);
   for (const auto &CI : I.Description)
     emitBlock(CI);
+  for (const auto &C : I.ChildNamespaces)
+    emitBlock(C, FieldId::F_child_namespace);
+  for (const auto &C : I.ChildRecords)
+    emitBlock(C, FieldId::F_child_record);
+  for (const auto &C : I.ChildFunctions)
+    emitBlock(C);
+  for (const auto &C : I.ChildEnums)
+    emitBlock(C);
 }
 
 void ClangDocBitcodeWriter::emitBlock(const EnumInfo &I) {
@@ -472,6 +480,12 @@ void ClangDocBitcodeWriter::emitBlock(co
     emitBlock(P, FieldId::F_parent);
   for (const auto &P : I.VirtualParents)
     emitBlock(P, FieldId::F_vparent);
+  for (const auto &C : I.ChildRecords)
+    emitBlock(C, FieldId::F_child_record);
+  for (const auto &C : I.ChildFunctions)
+    emitBlock(C);
+  for (const auto &C : I.ChildEnums)
+    emitBlock(C);
 }
 
 void ClangDocBitcodeWriter::emitBlock(const FunctionInfo &I) {

Modified: clang-tools-extra/trunk/clang-doc/BitcodeWriter.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/BitcodeWriter.h?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-doc/BitcodeWriter.h (original)
+++ clang-tools-extra/trunk/clang-doc/BitcodeWriter.h Thu Aug  2 13:10:17 2018
@@ -68,11 +68,10 @@ enum BlockId {
 
 // New Ids need to be added to the enum here, and to the relevant IdNameMap and
 // initialization list in the implementation file.
-#define INFORECORDS(X) X##_USR, X##_NAME
-
 enum RecordId {
   VERSION = 1,
-  INFORECORDS(FUNCTION),
+  FUNCTION_USR,
+  FUNCTION_NAME,
   FUNCTION_DEFLOCATION,
   FUNCTION_LOCATION,
   FUNCTION_ACCESS,
@@ -91,13 +90,16 @@ enum RecordId {
   FIELD_TYPE_NAME,
   MEMBER_TYPE_NAME,
   MEMBER_TYPE_ACCESS,
-  INFORECORDS(NAMESPACE),
-  INFORECORDS(ENUM),
+  NAMESPACE_USR,
+  NAMESPACE_NAME,
+  ENUM_USR,
+  ENUM_NAME,
   ENUM_DEFLOCATION,
   ENUM_LOCATION,
   ENUM_MEMBER,
   ENUM_SCOPED,
-  INFORECORDS(RECORD),
+  RECORD_USR,
+  RECORD_NAME,
   RECORD_DEFLOCATION,
   RECORD_LOCATION,
   RECORD_TAG_TYPE,
@@ -112,10 +114,16 @@ enum RecordId {
 static constexpr unsigned BlockIdCount = BI_LAST - BI_FIRST;
 static constexpr unsigned RecordIdCount = RI_LAST - RI_FIRST;
 
-#undef INFORECORDS
-
 // Identifiers for differentiating between subblocks
-enum class FieldId { F_default, F_namespace, F_parent, F_vparent, F_type };
+enum class FieldId {
+  F_default,
+  F_namespace,
+  F_parent,
+  F_vparent,
+  F_type,
+  F_child_namespace,
+  F_child_record
+};
 
 class ClangDocBitcodeWriter {
 public:

Modified: clang-tools-extra/trunk/clang-doc/Mapper.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/Mapper.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-doc/Mapper.cpp (original)
+++ clang-tools-extra/trunk/clang-doc/Mapper.cpp Thu Aug  2 13:10:17 2018
@@ -13,6 +13,7 @@
 #include "clang/AST/Comment.h"
 #include "clang/Index/USRGeneration.h"
 #include "llvm/ADT/StringExtras.h"
+#include "llvm/Support/Error.h"
 
 using clang::comments::FullComment;
 
@@ -33,14 +34,15 @@ template <typename T> bool MapASTVisitor
   if (index::generateUSRForDecl(D, USR))
     return true;
 
-  std::string info = serialize::emitInfo(
+  auto I = serialize::emitInfo(
       D, getComment(D, D->getASTContext()), getLine(D, D->getASTContext()),
       getFile(D, D->getASTContext()), CDCtx.PublicOnly);
 
-  if (info != "")
-    CDCtx.ECtx->reportResult(
-        llvm::toHex(llvm::toStringRef(serialize::hashUSR(USR))), info);
-
+  // A null in place of I indicates that the serializer is skipping this decl
+  // for some reason (e.g. we're only reporting public decls).
+  if (I)
+    CDCtx.ECtx->reportResult(llvm::toHex(llvm::toStringRef(I->USR)),
+                       serialize::serialize(I));
   return true;
 }
 

Modified: clang-tools-extra/trunk/clang-doc/Representation.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/Representation.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-doc/Representation.cpp (original)
+++ clang-tools-extra/trunk/clang-doc/Representation.cpp Thu Aug  2 13:10:17 2018
@@ -26,17 +26,70 @@
 namespace clang {
 namespace doc {
 
-static const SymbolID EmptySID = SymbolID();
+namespace {
+
+const SymbolID EmptySID = SymbolID();
 
 template <typename T>
-std::unique_ptr<Info> reduce(std::vector<std::unique_ptr<Info>> &Values) {
-  std::unique_ptr<Info> Merged = llvm::make_unique<T>();
+llvm::Expected<std::unique_ptr<Info>>
+reduce(std::vector<std::unique_ptr<Info>> &Values) {
+  if (Values.empty())
+    return llvm::make_error<llvm::StringError>(" No values to reduce.\n",
+                                               llvm::inconvertibleErrorCode());
+  std::unique_ptr<Info> Merged = llvm::make_unique<T>(Values[0]->USR);
   T *Tmp = static_cast<T *>(Merged.get());
   for (auto &I : Values)
     Tmp->merge(std::move(*static_cast<T *>(I.get())));
-  return Merged;
+  return std::move(Merged);
+}
+
+// Return the index of the matching child in the vector, or -1 if merge is not
+// necessary.
+template <typename T>
+int getChildIndexIfExists(std::vector<T> &Children, T &ChildToMerge) {
+  for (unsigned long I = 0; I < Children.size(); I++) {
+    if (ChildToMerge.USR == Children[I].USR)
+      return I;
+  }
+  return -1;
+}
+
+// For References, we don't need to actually merge them, we just don't want
+// duplicates.
+void reduceChildren(std::vector<Reference> &Children,
+                    std::vector<Reference> &&ChildrenToMerge) {
+  for (auto &ChildToMerge : ChildrenToMerge) {
+    if (getChildIndexIfExists(Children, ChildToMerge) == -1)
+      Children.push_back(std::move(ChildToMerge));
+  }
+}
+
+void reduceChildren(std::vector<FunctionInfo> &Children,
+                    std::vector<FunctionInfo> &&ChildrenToMerge) {
+  for (auto &ChildToMerge : ChildrenToMerge) {
+    int mergeIdx = getChildIndexIfExists(Children, ChildToMerge);
+    if (mergeIdx == -1) {
+      Children.push_back(std::move(ChildToMerge));
+      continue;
+    }
+    Children[mergeIdx].merge(std::move(ChildToMerge));
+  }
 }
 
+void reduceChildren(std::vector<EnumInfo> &Children,
+                    std::vector<EnumInfo> &&ChildrenToMerge) {
+  for (auto &ChildToMerge : ChildrenToMerge) {
+    int mergeIdx = getChildIndexIfExists(Children, ChildToMerge);
+    if (mergeIdx == -1) {
+      Children.push_back(std::move(ChildToMerge));
+      continue;
+    }
+    Children[mergeIdx].merge(std::move(ChildToMerge));
+  }
+}
+
+} // namespace
+
 // Dispatch function.
 llvm::Expected<std::unique_ptr<Info>>
 mergeInfos(std::vector<std::unique_ptr<Info>> &Values) {
@@ -73,7 +126,7 @@ void Info::mergeBase(Info &&Other) {
 }
 
 bool Info::mergeable(const Info &Other) {
-  return IT == Other.IT && (USR == EmptySID || USR == Other.USR);
+  return IT == Other.IT && USR == Other.USR;
 }
 
 void SymbolInfo::merge(SymbolInfo &&Other) {
@@ -87,6 +140,11 @@ void SymbolInfo::merge(SymbolInfo &&Othe
 
 void NamespaceInfo::merge(NamespaceInfo &&Other) {
   assert(mergeable(Other));
+  // Reduce children if necessary.
+  reduceChildren(ChildNamespaces, std::move(Other.ChildNamespaces));
+  reduceChildren(ChildRecords, std::move(Other.ChildRecords));
+  reduceChildren(ChildFunctions, std::move(Other.ChildFunctions));
+  reduceChildren(ChildEnums, std::move(Other.ChildEnums));
   mergeBase(std::move(Other));
 }
 
@@ -100,6 +158,10 @@ void RecordInfo::merge(RecordInfo &&Othe
     Parents = std::move(Other.Parents);
   if (VirtualParents.empty())
     VirtualParents = std::move(Other.VirtualParents);
+  // Reduce children if necessary.
+  reduceChildren(ChildRecords, std::move(Other.ChildRecords));
+  reduceChildren(ChildFunctions, std::move(Other.ChildFunctions));
+  reduceChildren(ChildEnums, std::move(Other.ChildEnums));
   SymbolInfo::merge(std::move(Other));
 }
 

Modified: clang-tools-extra/trunk/clang-doc/Representation.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/Representation.h?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-doc/Representation.h (original)
+++ clang-tools-extra/trunk/clang-doc/Representation.h Thu Aug  2 13:10:17 2018
@@ -31,6 +31,9 @@ namespace doc {
 using SymbolID = std::array<uint8_t, 20>;
 
 struct Info;
+struct FunctionInfo;
+struct EnumInfo;
+
 enum class InfoType {
   IT_default,
   IT_namespace,
@@ -153,6 +156,9 @@ struct Location {
 struct Info {
   Info() = default;
   Info(InfoType IT) : IT(IT) {}
+  Info(InfoType IT, SymbolID USR) : USR(USR), IT(IT) {}
+  Info(InfoType IT, SymbolID USR, StringRef Name)
+      : USR(USR), IT(IT), Name(Name) {}
   Info(const Info &Other) = delete;
   Info(Info &&Other) = default;
 
@@ -166,18 +172,36 @@ struct Info {
 
   void mergeBase(Info &&I);
   bool mergeable(const Info &Other);
+
+  // Returns a reference to the parent scope (that is, the immediate parent
+  // namespace or class in which this decl resides).
+  llvm::Expected<Reference> getEnclosingScope();
 };
 
 // Info for namespaces.
 struct NamespaceInfo : public Info {
   NamespaceInfo() : Info(InfoType::IT_namespace) {}
+  NamespaceInfo(SymbolID USR) : Info(InfoType::IT_namespace, USR) {}
+  NamespaceInfo(SymbolID USR, StringRef Name)
+      : Info(InfoType::IT_namespace, USR, Name) {}
 
   void merge(NamespaceInfo &&I);
+
+  // Namespaces and Records are references because they will be properly
+  // documented in their own info, while the entirety of Functions and Enums are
+  // included here because they should not have separate documentation from
+  // their scope.
+  std::vector<Reference> ChildNamespaces;
+  std::vector<Reference> ChildRecords;
+  std::vector<FunctionInfo> ChildFunctions;
+  std::vector<EnumInfo> ChildEnums;
 };
 
 // Info for symbols.
 struct SymbolInfo : public Info {
   SymbolInfo(InfoType IT) : Info(IT) {}
+  SymbolInfo(InfoType IT, SymbolID USR) : Info(IT, USR) {}
+  SymbolInfo(InfoType IT, SymbolID USR, StringRef Name) : Info(IT, USR, Name) {}
 
   void merge(SymbolInfo &&I);
 
@@ -189,6 +213,7 @@ struct SymbolInfo : public Info {
 // Info for functions.
 struct FunctionInfo : public SymbolInfo {
   FunctionInfo() : SymbolInfo(InfoType::IT_function) {}
+  FunctionInfo(SymbolID USR) : SymbolInfo(InfoType::IT_function, USR) {}
 
   void merge(FunctionInfo &&I);
 
@@ -205,6 +230,9 @@ struct FunctionInfo : public SymbolInfo
 // Info for types.
 struct RecordInfo : public SymbolInfo {
   RecordInfo() : SymbolInfo(InfoType::IT_record) {}
+  RecordInfo(SymbolID USR) : SymbolInfo(InfoType::IT_record, USR) {}
+  RecordInfo(SymbolID USR, StringRef Name)
+      : SymbolInfo(InfoType::IT_record, USR, Name) {}
 
   void merge(RecordInfo &&I);
 
@@ -218,12 +246,21 @@ struct RecordInfo : public SymbolInfo {
                                            // parents).
   llvm::SmallVector<Reference, 4>
       VirtualParents; // List of virtual base/parent records.
+
+  // Records are references because they will be properly
+  // documented in their own info, while the entirety of Functions and Enums are
+  // included here because they should not have separate documentation from
+  // their scope.
+  std::vector<Reference> ChildRecords;
+  std::vector<FunctionInfo> ChildFunctions;
+  std::vector<EnumInfo> ChildEnums;
 };
 
 // TODO: Expand to allow for documenting templating.
 // Info for types.
 struct EnumInfo : public SymbolInfo {
   EnumInfo() : SymbolInfo(InfoType::IT_enum) {}
+  EnumInfo(SymbolID USR) : SymbolInfo(InfoType::IT_enum, USR) {}
 
   void merge(EnumInfo &&I);
 

Modified: clang-tools-extra/trunk/clang-doc/Serialize.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/Serialize.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-doc/Serialize.cpp (original)
+++ clang-tools-extra/trunk/clang-doc/Serialize.cpp Thu Aug  2 13:10:17 2018
@@ -152,6 +152,21 @@ template <typename T> static std::string
   return Buffer.str().str();
 }
 
+std::string serialize(std::unique_ptr<Info> &I) {
+  switch (I->IT) {
+  case InfoType::IT_namespace:
+    return serialize(*static_cast<NamespaceInfo *>(I.get()));
+  case InfoType::IT_record:
+    return serialize(*static_cast<RecordInfo *>(I.get()));
+  case InfoType::IT_enum:
+    return serialize(*static_cast<EnumInfo *>(I.get()));
+  case InfoType::IT_function:
+    return serialize(*static_cast<FunctionInfo *>(I.get()));
+  default:
+    return "";
+  }
+}
+
 static void parseFullComment(const FullComment *C, CommentInfo &CI) {
   ClangDocCommentVisitor Visitor(CI);
   Visitor.parseComment(C);
@@ -306,61 +321,108 @@ static void populateFunctionInfo(Functio
   parseParameters(I, D);
 }
 
-std::string emitInfo(const NamespaceDecl *D, const FullComment *FC,
-                     int LineNumber, llvm::StringRef File, bool PublicOnly) {
+std::unique_ptr<Info> emitInfo(const NamespaceDecl *D, const FullComment *FC,
+                               int LineNumber, llvm::StringRef File,
+                               bool PublicOnly) {
   if (PublicOnly && ((D->isAnonymousNamespace()) ||
                      !isPublic(D->getAccess(), D->getLinkageInternal())))
-    return "";
-  NamespaceInfo I;
-  populateInfo(I, D, FC);
-  return serialize(I);
+    return nullptr;
+  auto I = llvm::make_unique<NamespaceInfo>();
+  populateInfo(*I, D, FC);
+  return I;
 }
 
-std::string emitInfo(const RecordDecl *D, const FullComment *FC, int LineNumber,
-                     llvm::StringRef File, bool PublicOnly) {
+std::unique_ptr<Info> emitInfo(const RecordDecl *D, const FullComment *FC,
+                               int LineNumber, llvm::StringRef File,
+                               bool PublicOnly) {
   if (PublicOnly && !isPublic(D->getAccess(), D->getLinkageInternal()))
-    return "";
-  RecordInfo I;
-  populateSymbolInfo(I, D, FC, LineNumber, File);
-  I.TagType = D->getTagKind();
-  parseFields(I, D, PublicOnly);
+    return nullptr;
+  auto I = llvm::make_unique<RecordInfo>();
+  populateSymbolInfo(*I, D, FC, LineNumber, File);
+  I->TagType = D->getTagKind();
+  parseFields(*I, D, PublicOnly);
   if (const auto *C = dyn_cast<CXXRecordDecl>(D))
-    parseBases(I, C);
-  return serialize(I);
+    parseBases(*I, C);
+  return I;
 }
 
-std::string emitInfo(const FunctionDecl *D, const FullComment *FC,
-                     int LineNumber, llvm::StringRef File, bool PublicOnly) {
+std::unique_ptr<Info> emitInfo(const FunctionDecl *D, const FullComment *FC,
+                               int LineNumber, llvm::StringRef File,
+                               bool PublicOnly) {
   if (PublicOnly && !isPublic(D->getAccess(), D->getLinkageInternal()))
-    return "";
-  FunctionInfo I;
-  populateFunctionInfo(I, D, FC, LineNumber, File);
-  I.Access = clang::AccessSpecifier::AS_none;
-  return serialize(I);
+    return nullptr;
+  FunctionInfo Func;
+  populateFunctionInfo(Func, D, FC, LineNumber, File);
+  Func.Access = clang::AccessSpecifier::AS_none;
+
+  // Wrap in enclosing scope
+  auto I = llvm::make_unique<NamespaceInfo>();
+  if (!Func.Namespace.empty())
+    I->USR = Func.Namespace[0].USR;
+  else
+    I->USR = SymbolID();
+  I->ChildFunctions.push_back(std::move(Func));
+  return I;
 }
 
-std::string emitInfo(const CXXMethodDecl *D, const FullComment *FC,
-                     int LineNumber, llvm::StringRef File, bool PublicOnly) {
+std::unique_ptr<Info> emitInfo(const CXXMethodDecl *D, const FullComment *FC,
+                               int LineNumber, llvm::StringRef File,
+                               bool PublicOnly) {
   if (PublicOnly && !isPublic(D->getAccess(), D->getLinkageInternal()))
-    return "";
-  FunctionInfo I;
-  populateFunctionInfo(I, D, FC, LineNumber, File);
-  I.IsMethod = true;
-  I.Parent = Reference{getUSRForDecl(D->getParent()),
-                       D->getParent()->getNameAsString(), InfoType::IT_record};
-  I.Access = D->getAccess();
-  return serialize(I);
-}
-
-std::string emitInfo(const EnumDecl *D, const FullComment *FC, int LineNumber,
-                     llvm::StringRef File, bool PublicOnly) {
+    return nullptr;
+  FunctionInfo Func;
+  populateFunctionInfo(Func, D, FC, LineNumber, File);
+  Func.IsMethod = true;
+
+  SymbolID ParentUSR = getUSRForDecl(D->getParent());
+  Func.Parent = Reference{ParentUSR, D->getParent()->getNameAsString(),
+                          InfoType::IT_record};
+  Func.Access = D->getAccess();
+
+  // Wrap in enclosing scope
+  auto I = llvm::make_unique<RecordInfo>();
+  I->USR = ParentUSR;
+  I->ChildFunctions.push_back(std::move(Func));
+  return I;
+}
+
+std::unique_ptr<Info> emitInfo(const EnumDecl *D, const FullComment *FC,
+                               int LineNumber, llvm::StringRef File,
+                               bool PublicOnly) {
   if (PublicOnly && !isPublic(D->getAccess(), D->getLinkageInternal()))
-    return "";
-  EnumInfo I;
-  populateSymbolInfo(I, D, FC, LineNumber, File);
-  I.Scoped = D->isScoped();
-  parseEnumerators(I, D);
-  return serialize(I);
+    return nullptr;
+  EnumInfo Enum;
+  populateSymbolInfo(Enum, D, FC, LineNumber, File);
+  Enum.Scoped = D->isScoped();
+  parseEnumerators(Enum, D);
+
+  // Wrap in enclosing scope
+  if (!Enum.Namespace.empty()) {
+    switch (Enum.Namespace[0].RefType) {
+    case InfoType::IT_namespace: {
+      std::unique_ptr<Info> IPtr = llvm::make_unique<NamespaceInfo>();
+      NamespaceInfo *I = static_cast<NamespaceInfo *>(IPtr.get());
+      I->USR = Enum.Namespace[0].USR;
+      I->ChildEnums.push_back(std::move(Enum));
+      return IPtr;
+    }
+    case InfoType::IT_record: {
+      std::unique_ptr<Info> IPtr = llvm::make_unique<RecordInfo>();
+      RecordInfo *I = static_cast<RecordInfo *>(IPtr.get());
+      I->USR = Enum.Namespace[0].USR;
+      I->ChildEnums.push_back(std::move(Enum));
+      return IPtr;
+    }
+    default:
+      break;
+    }
+  }
+
+  // Put in global namespace
+  auto I = llvm::make_unique<NamespaceInfo>();
+  I->USR = SymbolID();
+  I->ChildEnums.push_back(std::move(Enum));
+  return I;
 }
 
 } // namespace serialize

Modified: clang-tools-extra/trunk/clang-doc/Serialize.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/Serialize.h?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-doc/Serialize.h (original)
+++ clang-tools-extra/trunk/clang-doc/Serialize.h Thu Aug  2 13:10:17 2018
@@ -28,16 +28,16 @@ namespace clang {
 namespace doc {
 namespace serialize {
 
-std::string emitInfo(const NamespaceDecl *D, const FullComment *FC,
-                     int LineNumber, StringRef File, bool PublicOnly);
-std::string emitInfo(const RecordDecl *D, const FullComment *FC, int LineNumber,
-                     StringRef File, bool PublicOnly);
-std::string emitInfo(const EnumDecl *D, const FullComment *FC, int LineNumber,
-                     StringRef File, bool PublicOnly);
-std::string emitInfo(const FunctionDecl *D, const FullComment *FC,
-                     int LineNumber, StringRef File, bool PublicOnly);
-std::string emitInfo(const CXXMethodDecl *D, const FullComment *FC,
-                     int LineNumber, StringRef File, bool PublicOnly);
+std::unique_ptr<Info> emitInfo(const NamespaceDecl *D, const FullComment *FC,
+                               int LineNumber, StringRef File, bool PublicOnly);
+std::unique_ptr<Info> emitInfo(const RecordDecl *D, const FullComment *FC,
+                               int LineNumber, StringRef File, bool PublicOnly);
+std::unique_ptr<Info> emitInfo(const EnumDecl *D, const FullComment *FC,
+                               int LineNumber, StringRef File, bool PublicOnly);
+std::unique_ptr<Info> emitInfo(const FunctionDecl *D, const FullComment *FC,
+                               int LineNumber, StringRef File, bool PublicOnly);
+std::unique_ptr<Info> emitInfo(const CXXMethodDecl *D, const FullComment *FC,
+                               int LineNumber, StringRef File, bool PublicOnly);
 
 // Function to hash a given USR value for storage.
 // As USRs (Unified Symbol Resolution) could be large, especially for functions
@@ -46,6 +46,8 @@ std::string emitInfo(const CXXMethodDecl
 // memory (vs storing USRs directly).
 SymbolID hashUSR(llvm::StringRef USR);
 
+std::string serialize(std::unique_ptr<Info> &I);
+
 } // namespace serialize
 } // namespace doc
 } // namespace clang

Modified: clang-tools-extra/trunk/clang-doc/YAMLGenerator.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/YAMLGenerator.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-doc/YAMLGenerator.cpp (original)
+++ clang-tools-extra/trunk/clang-doc/YAMLGenerator.cpp Thu Aug  2 13:10:17 2018
@@ -20,6 +20,8 @@ LLVM_YAML_IS_SEQUENCE_VECTOR(MemberTypeI
 LLVM_YAML_IS_SEQUENCE_VECTOR(Reference)
 LLVM_YAML_IS_SEQUENCE_VECTOR(Location)
 LLVM_YAML_IS_SEQUENCE_VECTOR(CommentInfo)
+LLVM_YAML_IS_SEQUENCE_VECTOR(FunctionInfo)
+LLVM_YAML_IS_SEQUENCE_VECTOR(EnumInfo)
 LLVM_YAML_IS_SEQUENCE_VECTOR(std::unique_ptr<CommentInfo>)
 LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::SmallString<16>)
 
@@ -175,7 +177,14 @@ template <> struct MappingTraits<MemberT
 };
 
 template <> struct MappingTraits<NamespaceInfo> {
-  static void mapping(IO &IO, NamespaceInfo &I) { InfoMapping(IO, I); }
+  static void mapping(IO &IO, NamespaceInfo &I) {
+    InfoMapping(IO, I);
+    IO.mapOptional("ChildNamespaces", I.ChildNamespaces,
+                   std::vector<Reference>());
+    IO.mapOptional("ChildRecords", I.ChildRecords, std::vector<Reference>());
+    IO.mapOptional("ChildFunctions", I.ChildFunctions);
+    IO.mapOptional("ChildEnums", I.ChildEnums);
+  }
 };
 
 template <> struct MappingTraits<RecordInfo> {
@@ -186,6 +195,9 @@ template <> struct MappingTraits<RecordI
     IO.mapOptional("Parents", I.Parents, llvm::SmallVector<Reference, 4>());
     IO.mapOptional("VirtualParents", I.VirtualParents,
                    llvm::SmallVector<Reference, 4>());
+    IO.mapOptional("ChildRecords", I.ChildRecords, std::vector<Reference>());
+    IO.mapOptional("ChildFunctions", I.ChildFunctions);
+    IO.mapOptional("ChildEnums", I.ChildEnums);
   }
 };
 

Modified: clang-tools-extra/trunk/clang-doc/gen_tests.py
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/gen_tests.py?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-doc/gen_tests.py (original)
+++ clang-tools-extra/trunk/clang-doc/gen_tests.py Thu Aug  2 13:10:17 2018
@@ -18,14 +18,17 @@ accuracy before using.
 
 To generate all current tests:
 - Generate mapper tests:
-    gen_tests.py -flag='--dump-mapper' -flag='--doxygen' -prefix mapper
+    python gen_tests.py -flag='--dump-mapper' -flag='--doxygen' -flag='--extra-arg=-fmodules-ts' -prefix mapper
 
 - Generate reducer tests:
-    gen_tests.py -flag='--dump-intermediate' -flag='--doxygen' -prefix bc
-    
+    python gen_tests.py -flag='--dump-intermediate' -flag='--doxygen' -flag='--extra-arg=-fmodules-ts' -prefix bc
+
 - Generate yaml tests:
-    gen_tests.py -flag='--format=yaml' -flag='--doxygen' -prefix yaml
-    
+    python gen_tests.py -flag='--format=yaml' -flag='--doxygen' -flag='--extra-arg=-fmodules-ts' -prefix yaml
+
+- Generate public decl tests:
+    python gen_tests.py -flag='--format=yaml' -flag='--doxygen' -flag='--public' -flag='--extra-arg=-fmodules-ts' -prefix public
+
 This script was written on/for Linux, and has not been tested on any other
 platform and so it may not work.
 
@@ -34,6 +37,7 @@ platform and so it may not work.
 import argparse
 import glob
 import os
+import re
 import shutil
 import subprocess
 
@@ -48,6 +52,10 @@ CHECK = '// CHECK-{0}: '
 
 CHECK_NEXT = '// CHECK-{0}-NEXT: '
 
+BITCODE_USR = '<USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>'
+BITCODE_USR_REGEX = r'<USR abbrevid=4 op0=20 op1=[0-9]+ op2=[0-9]+ op3=[0-9]+ op4=[0-9]+ op5=[0-9]+ op6=[0-9]+ op7=[0-9]+ op8=[0-9]+ op9=[0-9]+ op10=[0-9]+ op11=[0-9]+ op12=[0-9]+ op13=[0-9]+ op14=[0-9]+ op15=[0-9]+ op16=[0-9]+ op17=[0-9]+ op18=[0-9]+ op19=[0-9]+ op20=[0-9]+/>'
+YAML_USR = "USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'"
+YAML_USR_REGEX = r"USR:             '[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]'"
 
 def clear_test_prefix_files(prefix, tests_path):
     if os.path.isdir(tests_path):
@@ -108,6 +116,8 @@ def get_output(root, out_file, case_out_
 
     # Format output.
     output = output.replace('blob data = \'test\'', 'blob data = \'{{.*}}\'')
+    output = re.sub(YAML_USR_REGEX, YAML_USR, output)
+    output = re.sub(BITCODE_USR_REGEX, BITCODE_USR, output)
     output = CHECK.format(checkname) + output.rstrip()
     output = run_cmd + output.replace('\n',
                                       '\n' + CHECK_NEXT.format(checkname))

Modified: clang-tools-extra/trunk/clang-doc/tool/ClangDocMain.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/tool/ClangDocMain.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-doc/tool/ClangDocMain.cpp (original)
+++ clang-tools-extra/trunk/clang-doc/tool/ClangDocMain.cpp Thu Aug  2 13:10:17 2018
@@ -121,9 +121,24 @@ bool DumpResultToFile(const Twine &DirNa
   return false;
 }
 
+// A function to extract the appropriate path name for a given info's
+// documentation. The path returned is a composite of the parent namespaces as
+// directories plus the decl name as the filename.
+//
+// Example: Given the below, the <ext> path for class C will be <
+// root>/A/B/C.<ext>
+//
+// namespace A {
+// namesapce B {
+//
+// class C {};
+//
+// }
+// }
 llvm::Expected<llvm::SmallString<128>>
-getPath(StringRef Root, StringRef Ext, StringRef Name,
-        llvm::SmallVectorImpl<doc::Reference> &Namespaces) {
+getInfoOutputFile(StringRef Root,
+                  llvm::SmallVectorImpl<doc::Reference> &Namespaces,
+                  StringRef Name, StringRef Ext) {
   std::error_code OK;
   llvm::SmallString<128> Path;
   llvm::sys::path::native(Root, Path);
@@ -134,6 +149,8 @@ getPath(StringRef Root, StringRef Ext, S
     return llvm::make_error<llvm::StringError>("Unable to create directory.\n",
                                                llvm::inconvertibleErrorCode());
 
+  if (Name.empty())
+    Name = "GlobalNamespace";
   llvm::sys::path::append(Path, Name + Ext);
   return Path;
 }
@@ -146,6 +163,30 @@ std::string getFormatString(OutputFormat
   llvm_unreachable("Unknown OutputFormatTy");
 }
 
+// Iterate through tool results and build string map of info vectors from the
+// encoded bitstreams.
+bool bitcodeResultsToInfos(
+    tooling::ToolResults &Results,
+    llvm::StringMap<std::vector<std::unique_ptr<doc::Info>>> &Output) {
+  bool Err = false;
+  Results.forEachResult([&](StringRef Key, StringRef Value) {
+    llvm::BitstreamCursor Stream(Value);
+    doc::ClangDocBitcodeReader Reader(Stream);
+    auto Infos = Reader.readBitcode();
+    if (!Infos) {
+      llvm::errs() << toString(Infos.takeError()) << "\n";
+      Err = true;
+      return;
+    }
+    for (auto &I : Infos.get()) {
+      auto R =
+          Output.try_emplace(Key, std::vector<std::unique_ptr<doc::Info>>());
+      R.first->second.emplace_back(std::move(I));
+    }
+  });
+  return Err;
+}
+
 int main(int argc, const char **argv) {
   llvm::sys::PrintStackTraceOnErrorSignal(argv[0]);
   std::error_code OK;
@@ -196,30 +237,21 @@ int main(int argc, const char **argv) {
   }
 
   // Collect values into output by key.
-  llvm::outs() << "Collecting infos...\n";
-  llvm::StringMap<std::vector<std::unique_ptr<doc::Info>>> MapOutput;
-
   // In ToolResults, the Key is the hashed USR and the value is the
   // bitcode-encoded representation of the Info object.
-  Exec->get()->getToolResults()->forEachResult([&](StringRef Key,
-                                                   StringRef Value) {
-    llvm::BitstreamCursor Stream(Value);
-    doc::ClangDocBitcodeReader Reader(Stream);
-    auto Infos = Reader.readBitcode();
-    for (auto &I : Infos) {
-      auto R =
-          MapOutput.try_emplace(Key, std::vector<std::unique_ptr<doc::Info>>());
-      R.first->second.emplace_back(std::move(I));
-    }
-  });
+  llvm::outs() << "Collecting infos...\n";
+  llvm::StringMap<std::vector<std::unique_ptr<doc::Info>>> USRToInfos;
+  if (bitcodeResultsToInfos(*Exec->get()->getToolResults(), USRToInfos))
+    return 1;
 
-  // Reducing and generation phases
-  llvm::outs() << "Reducing " << MapOutput.size() << " infos...\n";
-  llvm::StringMap<std::unique_ptr<doc::Info>> ReduceOutput;
-  for (auto &Group : MapOutput) {
+  // First reducing phase (reduce all decls into one info per decl).
+  llvm::outs() << "Reducing " << USRToInfos.size() << " infos...\n";
+  for (auto &Group : USRToInfos) {
     auto Reduced = doc::mergeInfos(Group.getValue());
-    if (!Reduced)
+    if (!Reduced) {
       llvm::errs() << llvm::toString(Reduced.takeError());
+      continue;
+    }
 
     if (DumpIntermediateResult) {
       SmallString<4096> Buffer;
@@ -230,10 +262,10 @@ int main(int argc, const char **argv) {
         llvm::errs() << "Error dumping to bitcode.\n";
       continue;
     }
-
-    // Create the relevant ostream and emit the documentation for this decl.
     doc::Info *I = Reduced.get().get();
-    auto InfoPath = getPath(OutDirectory, "." + Format, I->Name, I->Namespace);
+
+    auto InfoPath =
+        getInfoOutputFile(OutDirectory, I->Namespace, I->Name, "." + Format);
     if (!InfoPath) {
       llvm::errs() << toString(InfoPath.takeError()) << "\n";
       continue;
@@ -241,7 +273,7 @@ int main(int argc, const char **argv) {
     std::error_code FileErr;
     llvm::raw_fd_ostream InfoOS(InfoPath.get(), FileErr, llvm::sys::fs::F_None);
     if (FileErr != OK) {
-      llvm::errs() << "Error opening index file: " << FileErr.message() << "\n";
+      llvm::errs() << "Error opening info file: " << FileErr.message() << "\n";
       continue;
     }
 

Modified: clang-tools-extra/trunk/test/clang-doc/bc-comment.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/bc-comment.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/bc-comment.cpp (original)
+++ clang-tools-extra/trunk/test/clang-doc/bc-comment.cpp Thu Aug  2 13:10:17 2018
@@ -27,176 +27,178 @@ void F(int I, int J);
 /// Bonus comment on definition
 void F(int I, int J) {}
 
-// RUN: clang-doc --dump-intermediate --doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: clang-doc --dump-intermediate --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
 
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/7574630614A535710E5A6ABCFFF98BCA2D06A4CA.bc | FileCheck %s --check-prefix CHECK-0
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/0000000000000000000000000000000000000000.bc | FileCheck %s --check-prefix CHECK-0
 // CHECK-0: <BLOCKINFO_BLOCK/>
 // CHECK-0-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-0-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-0-NEXT: </VersionBlock>
-// CHECK-0-NEXT: <FunctionBlock NumWords=429 BlockCodeSize=4>
-// CHECK-0-NEXT:   <USR abbrevid=4 op0=20 op1=117 op2=116 op3=99 op4=6 op5=20 op6=165 op7=53 op8=113 op9=14 op10=90 op11=106 op12=188 op13=255 op14=249 op15=139 op16=202 op17=45 op18=6 op19=164 op20=202/>
-// CHECK-0-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'F'
-// CHECK-0-NEXT:   <CommentBlock NumWords=354 BlockCodeSize=4>
-// CHECK-0-NEXT:     <Kind abbrevid=4 op0=11/> blob data = 'FullComment'
-// CHECK-0-NEXT:     <CommentBlock NumWords=13 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
-// CHECK-0-NEXT:       <CommentBlock NumWords=5 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
-// CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:     </CommentBlock>
-// CHECK-0-NEXT:     <CommentBlock NumWords=31 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Kind abbrevid=4 op0=19/> blob data = 'BlockCommandComment'
-// CHECK-0-NEXT:       <Name abbrevid=6 op0=5/> blob data = 'brief'
-// CHECK-0-NEXT:       <CommentBlock NumWords=19 BlockCodeSize=4>
+// CHECK-0-NEXT: <NamespaceBlock NumWords=432 BlockCodeSize=4>
+// CHECK-0-NEXT:   <FunctionBlock NumWords=429 BlockCodeSize=4>
+// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'F'
+// CHECK-0-NEXT:     <CommentBlock NumWords=354 BlockCodeSize=4>
+// CHECK-0-NEXT:       <Kind abbrevid=4 op0=11/> blob data = 'FullComment'
+// CHECK-0-NEXT:       <CommentBlock NumWords=13 BlockCodeSize=4>
 // CHECK-0-NEXT:         <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
-// CHECK-0-NEXT:         <CommentBlock NumWords=11 BlockCodeSize=4>
+// CHECK-0-NEXT:         <CommentBlock NumWords=5 BlockCodeSize=4>
 // CHECK-0-NEXT:           <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
-// CHECK-0-NEXT:           <Text abbrevid=5 op0=19/> blob data = ' Brief description.'
 // CHECK-0-NEXT:         </CommentBlock>
 // CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:     </CommentBlock>
-// CHECK-0-NEXT:     <CommentBlock NumWords=37 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
-// CHECK-0-NEXT:       <CommentBlock NumWords=13 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
-// CHECK-0-NEXT:         <Text abbrevid=5 op0=26/> blob data = ' Extended description that'
-// CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:       <CommentBlock NumWords=14 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
-// CHECK-0-NEXT:         <Text abbrevid=5 op0=30/> blob data = ' continues onto the next line.'
-// CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:     </CommentBlock>
-// CHECK-0-NEXT:     <CommentBlock NumWords=76 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
-// CHECK-0-NEXT:       <CommentBlock NumWords=5 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
-// CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:       <CommentBlock NumWords=14 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=19/> blob data = 'HTMLStartTagComment'
-// CHECK-0-NEXT:         <Name abbrevid=6 op0=2/> blob data = 'ul'
-// CHECK-0-NEXT:         <AttrKey abbrevid=12 op0=5/> blob data = 'class'
-// CHECK-0-NEXT:         <AttrVal abbrevid=13 op0=4/> blob data = '{{.*}}'
-// CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:       <CommentBlock NumWords=5 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
-// CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:       <CommentBlock NumWords=9 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=19/> blob data = 'HTMLStartTagComment'
-// CHECK-0-NEXT:         <Name abbrevid=6 op0=2/> blob data = 'li'
-// CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:       <CommentBlock NumWords=9 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
-// CHECK-0-NEXT:         <Text abbrevid=5 op0=9/> blob data = ' Testing.'
-// CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:       <CommentBlock NumWords=5 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
-// CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:       <CommentBlock NumWords=9 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=17/> blob data = 'HTMLEndTagComment'
-// CHECK-0-NEXT:         <Name abbrevid=6 op0=2/> blob data = 'ul'
-// CHECK-0-NEXT:         <SelfClosing abbrevid=10 op0=1/>
-// CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:     </CommentBlock>
-// CHECK-0-NEXT:     <CommentBlock NumWords=13 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
-// CHECK-0-NEXT:       <CommentBlock NumWords=5 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
-// CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:     </CommentBlock>
-// CHECK-0-NEXT:     <CommentBlock NumWords=32 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Kind abbrevid=4 op0=20/> blob data = 'VerbatimBlockComment'
-// CHECK-0-NEXT:       <Name abbrevid=6 op0=8/> blob data = 'verbatim'
-// CHECK-0-NEXT:       <CloseName abbrevid=9 op0=11/> blob data = 'endverbatim'
-// CHECK-0-NEXT:       <CommentBlock NumWords=16 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=24/> blob data = 'VerbatimBlockLineComment'
-// CHECK-0-NEXT:         <Text abbrevid=5 op0=27/> blob data = ' The description continues.'
-// CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:     </CommentBlock>
-// CHECK-0-NEXT:     <CommentBlock NumWords=22 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
-// CHECK-0-NEXT:       <CommentBlock NumWords=7 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
-// CHECK-0-NEXT:         <Text abbrevid=5 op0=3/> blob data = ' --'
+// CHECK-0-NEXT:       <CommentBlock NumWords=31 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Kind abbrevid=4 op0=19/> blob data = 'BlockCommandComment'
+// CHECK-0-NEXT:         <Name abbrevid=6 op0=5/> blob data = 'brief'
+// CHECK-0-NEXT:         <CommentBlock NumWords=19 BlockCodeSize=4>
+// CHECK-0-NEXT:           <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+// CHECK-0-NEXT:           <CommentBlock NumWords=11 BlockCodeSize=4>
+// CHECK-0-NEXT:             <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+// CHECK-0-NEXT:             <Text abbrevid=5 op0=19/> blob data = ' Brief description.'
+// CHECK-0-NEXT:           </CommentBlock>
+// CHECK-0-NEXT:         </CommentBlock>
 // CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:       <CommentBlock NumWords=5 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+// CHECK-0-NEXT:       <CommentBlock NumWords=37 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+// CHECK-0-NEXT:         <CommentBlock NumWords=13 BlockCodeSize=4>
+// CHECK-0-NEXT:           <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+// CHECK-0-NEXT:           <Text abbrevid=5 op0=26/> blob data = ' Extended description that'
+// CHECK-0-NEXT:         </CommentBlock>
+// CHECK-0-NEXT:         <CommentBlock NumWords=14 BlockCodeSize=4>
+// CHECK-0-NEXT:           <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+// CHECK-0-NEXT:           <Text abbrevid=5 op0=30/> blob data = ' continues onto the next line.'
+// CHECK-0-NEXT:         </CommentBlock>
 // CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:     </CommentBlock>
-// CHECK-0-NEXT:     <CommentBlock NumWords=39 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Kind abbrevid=4 op0=19/> blob data = 'ParamCommandComment'
-// CHECK-0-NEXT:       <Direction abbrevid=7 op0=5/> blob data = '[out]'
-// CHECK-0-NEXT:       <ParamName abbrevid=8 op0=1/> blob data = 'I'
-// CHECK-0-NEXT:       <Explicit abbrevid=11 op0=1/>
-// CHECK-0-NEXT:       <CommentBlock NumWords=25 BlockCodeSize=4>
+// CHECK-0-NEXT:       <CommentBlock NumWords=76 BlockCodeSize=4>
 // CHECK-0-NEXT:         <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
-// CHECK-0-NEXT:         <CommentBlock NumWords=10 BlockCodeSize=4>
+// CHECK-0-NEXT:         <CommentBlock NumWords=5 BlockCodeSize=4>
 // CHECK-0-NEXT:           <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
-// CHECK-0-NEXT:           <Text abbrevid=5 op0=16/> blob data = ' is a parameter.'
+// CHECK-0-NEXT:         </CommentBlock>
+// CHECK-0-NEXT:         <CommentBlock NumWords=14 BlockCodeSize=4>
+// CHECK-0-NEXT:           <Kind abbrevid=4 op0=19/> blob data = 'HTMLStartTagComment'
+// CHECK-0-NEXT:           <Name abbrevid=6 op0=2/> blob data = 'ul'
+// CHECK-0-NEXT:           <AttrKey abbrevid=12 op0=5/> blob data = 'class'
+// CHECK-0-NEXT:           <AttrVal abbrevid=13 op0=4/> blob data = '{{.*}}'
 // CHECK-0-NEXT:         </CommentBlock>
 // CHECK-0-NEXT:         <CommentBlock NumWords=5 BlockCodeSize=4>
 // CHECK-0-NEXT:           <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
 // CHECK-0-NEXT:         </CommentBlock>
+// CHECK-0-NEXT:         <CommentBlock NumWords=9 BlockCodeSize=4>
+// CHECK-0-NEXT:           <Kind abbrevid=4 op0=19/> blob data = 'HTMLStartTagComment'
+// CHECK-0-NEXT:           <Name abbrevid=6 op0=2/> blob data = 'li'
+// CHECK-0-NEXT:         </CommentBlock>
+// CHECK-0-NEXT:         <CommentBlock NumWords=9 BlockCodeSize=4>
+// CHECK-0-NEXT:           <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+// CHECK-0-NEXT:           <Text abbrevid=5 op0=9/> blob data = ' Testing.'
+// CHECK-0-NEXT:         </CommentBlock>
+// CHECK-0-NEXT:         <CommentBlock NumWords=5 BlockCodeSize=4>
+// CHECK-0-NEXT:           <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+// CHECK-0-NEXT:         </CommentBlock>
+// CHECK-0-NEXT:         <CommentBlock NumWords=9 BlockCodeSize=4>
+// CHECK-0-NEXT:           <Kind abbrevid=4 op0=17/> blob data = 'HTMLEndTagComment'
+// CHECK-0-NEXT:           <Name abbrevid=6 op0=2/> blob data = 'ul'
+// CHECK-0-NEXT:           <SelfClosing abbrevid=10 op0=1/>
+// CHECK-0-NEXT:         </CommentBlock>
 // CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:     </CommentBlock>
-// CHECK-0-NEXT:     <CommentBlock NumWords=38 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Kind abbrevid=4 op0=19/> blob data = 'ParamCommandComment'
-// CHECK-0-NEXT:       <Direction abbrevid=7 op0=4/> blob data = '[in]'
-// CHECK-0-NEXT:       <ParamName abbrevid=8 op0=1/> blob data = 'J'
-// CHECK-0-NEXT:       <CommentBlock NumWords=25 BlockCodeSize=4>
+// CHECK-0-NEXT:       <CommentBlock NumWords=13 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+// CHECK-0-NEXT:         <CommentBlock NumWords=5 BlockCodeSize=4>
+// CHECK-0-NEXT:           <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+// CHECK-0-NEXT:         </CommentBlock>
+// CHECK-0-NEXT:       </CommentBlock>
+// CHECK-0-NEXT:       <CommentBlock NumWords=32 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Kind abbrevid=4 op0=20/> blob data = 'VerbatimBlockComment'
+// CHECK-0-NEXT:         <Name abbrevid=6 op0=8/> blob data = 'verbatim'
+// CHECK-0-NEXT:         <CloseName abbrevid=9 op0=11/> blob data = 'endverbatim'
+// CHECK-0-NEXT:         <CommentBlock NumWords=16 BlockCodeSize=4>
+// CHECK-0-NEXT:           <Kind abbrevid=4 op0=24/> blob data = 'VerbatimBlockLineComment'
+// CHECK-0-NEXT:           <Text abbrevid=5 op0=27/> blob data = ' The description continues.'
+// CHECK-0-NEXT:         </CommentBlock>
+// CHECK-0-NEXT:       </CommentBlock>
+// CHECK-0-NEXT:       <CommentBlock NumWords=22 BlockCodeSize=4>
 // CHECK-0-NEXT:         <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
-// CHECK-0-NEXT:         <CommentBlock NumWords=10 BlockCodeSize=4>
+// CHECK-0-NEXT:         <CommentBlock NumWords=7 BlockCodeSize=4>
 // CHECK-0-NEXT:           <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
-// CHECK-0-NEXT:           <Text abbrevid=5 op0=16/> blob data = ' is a parameter.'
+// CHECK-0-NEXT:           <Text abbrevid=5 op0=3/> blob data = ' --'
 // CHECK-0-NEXT:         </CommentBlock>
 // CHECK-0-NEXT:         <CommentBlock NumWords=5 BlockCodeSize=4>
 // CHECK-0-NEXT:           <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
 // CHECK-0-NEXT:         </CommentBlock>
 // CHECK-0-NEXT:       </CommentBlock>
+// CHECK-0-NEXT:       <CommentBlock NumWords=39 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Kind abbrevid=4 op0=19/> blob data = 'ParamCommandComment'
+// CHECK-0-NEXT:         <Direction abbrevid=7 op0=5/> blob data = '[out]'
+// CHECK-0-NEXT:         <ParamName abbrevid=8 op0=1/> blob data = 'I'
+// CHECK-0-NEXT:         <Explicit abbrevid=11 op0=1/>
+// CHECK-0-NEXT:         <CommentBlock NumWords=25 BlockCodeSize=4>
+// CHECK-0-NEXT:           <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+// CHECK-0-NEXT:           <CommentBlock NumWords=10 BlockCodeSize=4>
+// CHECK-0-NEXT:             <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+// CHECK-0-NEXT:             <Text abbrevid=5 op0=16/> blob data = ' is a parameter.'
+// CHECK-0-NEXT:           </CommentBlock>
+// CHECK-0-NEXT:           <CommentBlock NumWords=5 BlockCodeSize=4>
+// CHECK-0-NEXT:             <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+// CHECK-0-NEXT:           </CommentBlock>
+// CHECK-0-NEXT:         </CommentBlock>
+// CHECK-0-NEXT:       </CommentBlock>
+// CHECK-0-NEXT:       <CommentBlock NumWords=38 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Kind abbrevid=4 op0=19/> blob data = 'ParamCommandComment'
+// CHECK-0-NEXT:         <Direction abbrevid=7 op0=4/> blob data = '[in]'
+// CHECK-0-NEXT:         <ParamName abbrevid=8 op0=1/> blob data = 'J'
+// CHECK-0-NEXT:         <CommentBlock NumWords=25 BlockCodeSize=4>
+// CHECK-0-NEXT:           <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+// CHECK-0-NEXT:           <CommentBlock NumWords=10 BlockCodeSize=4>
+// CHECK-0-NEXT:             <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+// CHECK-0-NEXT:             <Text abbrevid=5 op0=16/> blob data = ' is a parameter.'
+// CHECK-0-NEXT:           </CommentBlock>
+// CHECK-0-NEXT:           <CommentBlock NumWords=5 BlockCodeSize=4>
+// CHECK-0-NEXT:             <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+// CHECK-0-NEXT:           </CommentBlock>
+// CHECK-0-NEXT:         </CommentBlock>
+// CHECK-0-NEXT:       </CommentBlock>
+// CHECK-0-NEXT:       <CommentBlock NumWords=28 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Kind abbrevid=4 op0=19/> blob data = 'BlockCommandComment'
+// CHECK-0-NEXT:         <Name abbrevid=6 op0=6/> blob data = 'return'
+// CHECK-0-NEXT:         <CommentBlock NumWords=16 BlockCodeSize=4>
+// CHECK-0-NEXT:           <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+// CHECK-0-NEXT:           <CommentBlock NumWords=8 BlockCodeSize=4>
+// CHECK-0-NEXT:             <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+// CHECK-0-NEXT:             <Text abbrevid=5 op0=5/> blob data = ' void'
+// CHECK-0-NEXT:           </CommentBlock>
+// CHECK-0-NEXT:         </CommentBlock>
+// CHECK-0-NEXT:       </CommentBlock>
 // CHECK-0-NEXT:     </CommentBlock>
 // CHECK-0-NEXT:     <CommentBlock NumWords=28 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Kind abbrevid=4 op0=19/> blob data = 'BlockCommandComment'
-// CHECK-0-NEXT:       <Name abbrevid=6 op0=6/> blob data = 'return'
-// CHECK-0-NEXT:       <CommentBlock NumWords=16 BlockCodeSize=4>
+// CHECK-0-NEXT:       <Kind abbrevid=4 op0=11/> blob data = 'FullComment'
+// CHECK-0-NEXT:       <CommentBlock NumWords=21 BlockCodeSize=4>
 // CHECK-0-NEXT:         <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
-// CHECK-0-NEXT:         <CommentBlock NumWords=8 BlockCodeSize=4>
+// CHECK-0-NEXT:         <CommentBlock NumWords=13 BlockCodeSize=4>
 // CHECK-0-NEXT:           <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
-// CHECK-0-NEXT:           <Text abbrevid=5 op0=5/> blob data = ' void'
+// CHECK-0-NEXT:           <Text abbrevid=5 op0=28/> blob data = ' Bonus comment on definition'
 // CHECK-0-NEXT:         </CommentBlock>
 // CHECK-0-NEXT:       </CommentBlock>
 // CHECK-0-NEXT:     </CommentBlock>
-// CHECK-0-NEXT:   </CommentBlock>
-// CHECK-0-NEXT:   <CommentBlock NumWords=28 BlockCodeSize=4>
-// CHECK-0-NEXT:     <Kind abbrevid=4 op0=11/> blob data = 'FullComment'
-// CHECK-0-NEXT:     <CommentBlock NumWords=21 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
-// CHECK-0-NEXT:       <CommentBlock NumWords=13 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
-// CHECK-0-NEXT:         <Text abbrevid=5 op0=28/> blob data = ' Bonus comment on definition'
-// CHECK-0-NEXT:       </CommentBlock>
-// CHECK-0-NEXT:     </CommentBlock>
-// CHECK-0-NEXT:   </CommentBlock>
-// CHECK-0-NEXT:   <DefLocation abbrevid=6 op0=28 op1=4/> blob data = '{{.*}}'
-// CHECK-0-NEXT:   <Location abbrevid=7 op0=25 op1=4/> blob data = '{{.*}}'
-// CHECK-0-NEXT:   <TypeBlock NumWords=6 BlockCodeSize=4>
-// CHECK-0-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Name abbrevid=5 op0=4/> blob data = 'void'
-// CHECK-0-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-0-NEXT:     </ReferenceBlock>
-// CHECK-0-NEXT:   </TypeBlock>
-// CHECK-0-NEXT:   <FieldTypeBlock NumWords=8 BlockCodeSize=4>
-// CHECK-0-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
-// CHECK-0-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-0-NEXT:     </ReferenceBlock>
-// CHECK-0-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'I'
-// CHECK-0-NEXT:   </FieldTypeBlock>
-// CHECK-0-NEXT:   <FieldTypeBlock NumWords=8 BlockCodeSize=4>
-// CHECK-0-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
-// CHECK-0-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-0-NEXT:     </ReferenceBlock>
-// CHECK-0-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'J'
-// CHECK-0-NEXT:   </FieldTypeBlock>
-// CHECK-0-NEXT: </FunctionBlock>
+// CHECK-0-NEXT:     <DefLocation abbrevid=6 op0=28 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <Location abbrevid=7 op0=25 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:     </TypeBlock>
+// CHECK-0-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'I'
+// CHECK-0-NEXT:     </FieldTypeBlock>
+// CHECK-0-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'J'
+// CHECK-0-NEXT:     </FieldTypeBlock>
+// CHECK-0-NEXT:   </FunctionBlock>
+// CHECK-0-NEXT: </NamespaceBlock>

Added: clang-tools-extra/trunk/test/clang-doc/bc-linkage.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/bc-linkage.cpp?rev=338763&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/bc-linkage.cpp (added)
+++ clang-tools-extra/trunk/test/clang-doc/bc-linkage.cpp Thu Aug  2 13:10:17 2018
@@ -0,0 +1,844 @@
+// THIS IS A GENERATED TEST. DO NOT EDIT.
+// To regenerate, see clang-doc/gen_test.py docstring.
+//
+// REQUIRES: system-linux
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+
+void function(int x);
+
+inline int inlinedFunction(int x);
+
+int functionWithInnerClass(int x) {
+  class InnerClass { //NoLinkage
+  public:
+    int innerPublicMethod() { return 2; };
+  }; //end class
+  InnerClass temp;
+  return temp.innerPublicMethod();
+};
+
+inline int inlinedFunctionWithInnerClass(int x) {
+  class InnerClass { //VisibleNoLinkage
+  public:
+    int innerPublicMethod() { return 2; };
+  }; //end class
+  InnerClass temp;
+  return temp.innerPublicMethod();
+};
+
+class Class {
+public:
+  void publicMethod();
+  int publicField;
+
+protected:
+  void protectedMethod();
+  int protectedField;
+
+private:
+  void privateMethod();
+  int privateField;
+};
+
+namespace named {
+class NamedClass {
+public:
+  void namedPublicMethod();
+  int namedPublicField;
+
+protected:
+  void namedProtectedMethod();
+  int namedProtectedField;
+
+private:
+  void namedPrivateMethod();
+  int namedPrivateField;
+};
+
+void namedFunction();
+static void namedStaticFunction();
+inline void namedInlineFunction();
+} // namespace named
+
+static void staticFunction(int x); //Internal Linkage
+
+static int staticFunctionWithInnerClass(int x) {
+  class InnerClass { //NoLinkage
+  public:
+    int innerPublicMethod() { return 2; };
+  }; //end class
+  InnerClass temp;
+  return temp.innerPublicMethod();
+};
+
+namespace {
+class AnonClass {
+public:
+  void anonPublicMethod();
+  int anonPublicField;
+
+protected:
+  void anonProtectedMethod();
+  int anonProtectedField;
+
+private:
+  void anonPrivateMethod();
+  int anonPrivateField;
+};
+
+void anonFunction();
+static void anonStaticFunction();
+inline void anonInlineFunction();
+} // namespace
+
+// RUN: clang-doc --dump-intermediate --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
+
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/C9B3B71ACDD84C5BB320D34E97677715CDB3EA32.bc | FileCheck %s --check-prefix CHECK-0
+// CHECK-0: <BLOCKINFO_BLOCK/>
+// CHECK-0-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-0-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-0-NEXT: </VersionBlock>
+// CHECK-0-NEXT: <RecordBlock NumWords=107 BlockCodeSize=4>
+// CHECK-0-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:   <Name abbrevid=5 op0=10/> blob data = 'InnerClass'
+// CHECK-0-NEXT:   <ReferenceBlock NumWords=17 BlockCodeSize=4>
+// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:     <Name abbrevid=5 op0=29/> blob data = 'inlinedFunctionWithInnerClass'
+// CHECK-0-NEXT:     <RefType abbrevid=6 op0=3/>
+// CHECK-0-NEXT:     <Field abbrevid=7 op0=1/>
+// CHECK-0-NEXT:   </ReferenceBlock>
+// CHECK-0-NEXT:   <DefLocation abbrevid=6 op0=24 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-0-NEXT:   <FunctionBlock NumWords=71 BlockCodeSize=4>
+// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:     <Name abbrevid=5 op0=17/> blob data = 'innerPublicMethod'
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'InnerClass'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=17 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=29/> blob data = 'inlinedFunctionWithInnerClass'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=3/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-0-NEXT:     <DefLocation abbrevid=6 op0=26 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'InnerClass'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:     </TypeBlock>
+// CHECK-0-NEXT:   </FunctionBlock>
+// CHECK-0-NEXT: </RecordBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/8960B5C9247D6F5C532756E53A1AD1240FA2146F.bc | FileCheck %s --check-prefix CHECK-1
+// CHECK-1: <BLOCKINFO_BLOCK/>
+// CHECK-1-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-1-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-1-NEXT: </VersionBlock>
+// CHECK-1-NEXT: <NamespaceBlock NumWords=126 BlockCodeSize=4>
+// CHECK-1-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:   <Name abbrevid=5 op0=5/> blob data = 'named'
+// CHECK-1-NEXT:   <FunctionBlock NumWords=36 BlockCodeSize=4>
+// CHECK-1-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:     <Name abbrevid=5 op0=13/> blob data = 'namedFunction'
+// CHECK-1-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-1-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'named'
+// CHECK-1-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-1-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-1-NEXT:     </ReferenceBlock>
+// CHECK-1-NEXT:     <Location abbrevid=7 op0=61 op1=4/> blob data = '{{.*}}'
+// CHECK-1-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-1-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-1-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-1-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-1-NEXT:       </ReferenceBlock>
+// CHECK-1-NEXT:     </TypeBlock>
+// CHECK-1-NEXT:   </FunctionBlock>
+// CHECK-1-NEXT:   <FunctionBlock NumWords=37 BlockCodeSize=4>
+// CHECK-1-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:     <Name abbrevid=5 op0=19/> blob data = 'namedStaticFunction'
+// CHECK-1-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-1-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'named'
+// CHECK-1-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-1-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-1-NEXT:     </ReferenceBlock>
+// CHECK-1-NEXT:     <Location abbrevid=7 op0=62 op1=4/> blob data = '{{.*}}'
+// CHECK-1-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-1-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-1-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-1-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-1-NEXT:       </ReferenceBlock>
+// CHECK-1-NEXT:     </TypeBlock>
+// CHECK-1-NEXT:   </FunctionBlock>
+// CHECK-1-NEXT:   <FunctionBlock NumWords=37 BlockCodeSize=4>
+// CHECK-1-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:     <Name abbrevid=5 op0=19/> blob data = 'namedInlineFunction'
+// CHECK-1-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-1-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'named'
+// CHECK-1-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-1-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-1-NEXT:     </ReferenceBlock>
+// CHECK-1-NEXT:     <Location abbrevid=7 op0=63 op1=4/> blob data = '{{.*}}'
+// CHECK-1-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-1-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-1-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-1-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-1-NEXT:       </ReferenceBlock>
+// CHECK-1-NEXT:     </TypeBlock>
+// CHECK-1-NEXT:   </FunctionBlock>
+// CHECK-1-NEXT: </NamespaceBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/74A031CBE68C101F3E83F60ED17F20C11EC19D48.bc | FileCheck %s --check-prefix CHECK-2
+// CHECK-2: <BLOCKINFO_BLOCK/>
+// CHECK-2-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-2-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-2-NEXT: </VersionBlock>
+// CHECK-2-NEXT: <RecordBlock NumWords=105 BlockCodeSize=4>
+// CHECK-2-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-2-NEXT:   <Name abbrevid=5 op0=10/> blob data = 'InnerClass'
+// CHECK-2-NEXT:   <ReferenceBlock NumWords=16 BlockCodeSize=4>
+// CHECK-2-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-2-NEXT:     <Name abbrevid=5 op0=28/> blob data = 'staticFunctionWithInnerClass'
+// CHECK-2-NEXT:     <RefType abbrevid=6 op0=3/>
+// CHECK-2-NEXT:     <Field abbrevid=7 op0=1/>
+// CHECK-2-NEXT:   </ReferenceBlock>
+// CHECK-2-NEXT:   <DefLocation abbrevid=6 op0=69 op1=4/> blob data = '{{.*}}'
+// CHECK-2-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-2-NEXT:   <FunctionBlock NumWords=70 BlockCodeSize=4>
+// CHECK-2-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-2-NEXT:     <Name abbrevid=5 op0=17/> blob data = 'innerPublicMethod'
+// CHECK-2-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-2-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-2-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'InnerClass'
+// CHECK-2-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-2-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-2-NEXT:     </ReferenceBlock>
+// CHECK-2-NEXT:     <ReferenceBlock NumWords=16 BlockCodeSize=4>
+// CHECK-2-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-2-NEXT:       <Name abbrevid=5 op0=28/> blob data = 'staticFunctionWithInnerClass'
+// CHECK-2-NEXT:       <RefType abbrevid=6 op0=3/>
+// CHECK-2-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-2-NEXT:     </ReferenceBlock>
+// CHECK-2-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-2-NEXT:     <DefLocation abbrevid=6 op0=71 op1=4/> blob data = '{{.*}}'
+// CHECK-2-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-2-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-2-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'InnerClass'
+// CHECK-2-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-2-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-2-NEXT:     </ReferenceBlock>
+// CHECK-2-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-2-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-2-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-2-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-2-NEXT:       </ReferenceBlock>
+// CHECK-2-NEXT:     </TypeBlock>
+// CHECK-2-NEXT:   </FunctionBlock>
+// CHECK-2-NEXT: </RecordBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/7CDD73DCD6CD72F7E5CE25502810A182C66C4B45.bc | FileCheck %s --check-prefix CHECK-3
+// CHECK-3: <BLOCKINFO_BLOCK/>
+// CHECK-3-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-3-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-3-NEXT: </VersionBlock>
+// CHECK-3-NEXT: <RecordBlock NumWords=203 BlockCodeSize=4>
+// CHECK-3-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:   <Name abbrevid=5 op0=5/> blob data = 'Class'
+// CHECK-3-NEXT:   <DefLocation abbrevid=6 op0=32 op1=4/> blob data = '{{.*}}'
+// CHECK-3-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-3-NEXT:   <MemberTypeBlock NumWords=10 BlockCodeSize=4>
+// CHECK-3-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-3-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-3-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-3-NEXT:     </ReferenceBlock>
+// CHECK-3-NEXT:     <Name abbrevid=4 op0=11/> blob data = 'publicField'
+// CHECK-3-NEXT:     <Access abbrevid=5 op0=3/>
+// CHECK-3-NEXT:   </MemberTypeBlock>
+// CHECK-3-NEXT:   <MemberTypeBlock NumWords=11 BlockCodeSize=4>
+// CHECK-3-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-3-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-3-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-3-NEXT:     </ReferenceBlock>
+// CHECK-3-NEXT:     <Name abbrevid=4 op0=14/> blob data = 'protectedField'
+// CHECK-3-NEXT:     <Access abbrevid=5 op0=1/>
+// CHECK-3-NEXT:   </MemberTypeBlock>
+// CHECK-3-NEXT:   <MemberTypeBlock NumWords=10 BlockCodeSize=4>
+// CHECK-3-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-3-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-3-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-3-NEXT:     </ReferenceBlock>
+// CHECK-3-NEXT:     <Name abbrevid=4 op0=12/> blob data = 'privateField'
+// CHECK-3-NEXT:     <Access abbrevid=5 op0=2/>
+// CHECK-3-NEXT:   </MemberTypeBlock>
+// CHECK-3-NEXT:   <FunctionBlock NumWords=48 BlockCodeSize=4>
+// CHECK-3-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:     <Name abbrevid=5 op0=12/> blob data = 'publicMethod'
+// CHECK-3-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-3-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'Class'
+// CHECK-3-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-3-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-3-NEXT:     </ReferenceBlock>
+// CHECK-3-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-3-NEXT:     <Location abbrevid=7 op0=34 op1=4/> blob data = '{{.*}}'
+// CHECK-3-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-3-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'Class'
+// CHECK-3-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-3-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-3-NEXT:     </ReferenceBlock>
+// CHECK-3-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-3-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-3-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-3-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-3-NEXT:       </ReferenceBlock>
+// CHECK-3-NEXT:     </TypeBlock>
+// CHECK-3-NEXT:   </FunctionBlock>
+// CHECK-3-NEXT:   <FunctionBlock NumWords=49 BlockCodeSize=4>
+// CHECK-3-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:     <Name abbrevid=5 op0=15/> blob data = 'protectedMethod'
+// CHECK-3-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-3-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'Class'
+// CHECK-3-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-3-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-3-NEXT:     </ReferenceBlock>
+// CHECK-3-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-3-NEXT:     <Location abbrevid=7 op0=38 op1=4/> blob data = '{{.*}}'
+// CHECK-3-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-3-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'Class'
+// CHECK-3-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-3-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-3-NEXT:     </ReferenceBlock>
+// CHECK-3-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-3-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-3-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-3-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-3-NEXT:       </ReferenceBlock>
+// CHECK-3-NEXT:     </TypeBlock>
+// CHECK-3-NEXT:   </FunctionBlock>
+// CHECK-3-NEXT:   <FunctionBlock NumWords=49 BlockCodeSize=4>
+// CHECK-3-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:     <Name abbrevid=5 op0=13/> blob data = 'privateMethod'
+// CHECK-3-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-3-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'Class'
+// CHECK-3-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-3-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-3-NEXT:     </ReferenceBlock>
+// CHECK-3-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-3-NEXT:     <Location abbrevid=7 op0=42 op1=4/> blob data = '{{.*}}'
+// CHECK-3-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-3-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'Class'
+// CHECK-3-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-3-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-3-NEXT:     </ReferenceBlock>
+// CHECK-3-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-3-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-3-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-3-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-3-NEXT:       </ReferenceBlock>
+// CHECK-3-NEXT:     </TypeBlock>
+// CHECK-3-NEXT:   </FunctionBlock>
+// CHECK-3-NEXT: </RecordBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/85427901413EC77C961019EBB3ADEF7B0BAAFE78.bc | FileCheck %s --check-prefix CHECK-4
+// CHECK-4: <BLOCKINFO_BLOCK/>
+// CHECK-4-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-4-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-4-NEXT: </VersionBlock>
+// CHECK-4-NEXT: <RecordBlock NumWords=103 BlockCodeSize=4>
+// CHECK-4-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-4-NEXT:   <Name abbrevid=5 op0=10/> blob data = 'InnerClass'
+// CHECK-4-NEXT:   <ReferenceBlock NumWords=15 BlockCodeSize=4>
+// CHECK-4-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-4-NEXT:     <Name abbrevid=5 op0=22/> blob data = 'functionWithInnerClass'
+// CHECK-4-NEXT:     <RefType abbrevid=6 op0=3/>
+// CHECK-4-NEXT:     <Field abbrevid=7 op0=1/>
+// CHECK-4-NEXT:   </ReferenceBlock>
+// CHECK-4-NEXT:   <DefLocation abbrevid=6 op0=15 op1=4/> blob data = '{{.*}}'
+// CHECK-4-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-4-NEXT:   <FunctionBlock NumWords=69 BlockCodeSize=4>
+// CHECK-4-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-4-NEXT:     <Name abbrevid=5 op0=17/> blob data = 'innerPublicMethod'
+// CHECK-4-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-4-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-4-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'InnerClass'
+// CHECK-4-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-4-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-4-NEXT:     </ReferenceBlock>
+// CHECK-4-NEXT:     <ReferenceBlock NumWords=15 BlockCodeSize=4>
+// CHECK-4-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-4-NEXT:       <Name abbrevid=5 op0=22/> blob data = 'functionWithInnerClass'
+// CHECK-4-NEXT:       <RefType abbrevid=6 op0=3/>
+// CHECK-4-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-4-NEXT:     </ReferenceBlock>
+// CHECK-4-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-4-NEXT:     <DefLocation abbrevid=6 op0=17 op1=4/> blob data = '{{.*}}'
+// CHECK-4-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-4-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-4-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'InnerClass'
+// CHECK-4-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-4-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-4-NEXT:     </ReferenceBlock>
+// CHECK-4-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-4-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-4-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-4-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-4-NEXT:       </ReferenceBlock>
+// CHECK-4-NEXT:     </TypeBlock>
+// CHECK-4-NEXT:   </FunctionBlock>
+// CHECK-4-NEXT: </RecordBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/0000000000000000000000000000000000000000.bc | FileCheck %s --check-prefix CHECK-5
+// CHECK-5: <BLOCKINFO_BLOCK/>
+// CHECK-5-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-5-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-5-NEXT: </VersionBlock>
+// CHECK-5-NEXT: <NamespaceBlock NumWords=218 BlockCodeSize=4>
+// CHECK-5-NEXT:   <FunctionBlock NumWords=31 BlockCodeSize=4>
+// CHECK-5-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-5-NEXT:     <Name abbrevid=5 op0=8/> blob data = 'function'
+// CHECK-5-NEXT:     <Location abbrevid=7 op0=10 op1=4/> blob data = '{{.*}}'
+// CHECK-5-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-5-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-5-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-5-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-5-NEXT:       </ReferenceBlock>
+// CHECK-5-NEXT:     </TypeBlock>
+// CHECK-5-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-5-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-5-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-5-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-5-NEXT:       </ReferenceBlock>
+// CHECK-5-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'x'
+// CHECK-5-NEXT:     </FieldTypeBlock>
+// CHECK-5-NEXT:   </FunctionBlock>
+// CHECK-5-NEXT:   <FunctionBlock NumWords=33 BlockCodeSize=4>
+// CHECK-5-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-5-NEXT:     <Name abbrevid=5 op0=15/> blob data = 'inlinedFunction'
+// CHECK-5-NEXT:     <Location abbrevid=7 op0=12 op1=4/> blob data = '{{.*}}'
+// CHECK-5-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-5-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-5-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-5-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-5-NEXT:       </ReferenceBlock>
+// CHECK-5-NEXT:     </TypeBlock>
+// CHECK-5-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-5-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-5-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-5-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-5-NEXT:       </ReferenceBlock>
+// CHECK-5-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'x'
+// CHECK-5-NEXT:     </FieldTypeBlock>
+// CHECK-5-NEXT:   </FunctionBlock>
+// CHECK-5-NEXT:   <FunctionBlock NumWords=35 BlockCodeSize=4>
+// CHECK-5-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-5-NEXT:     <Name abbrevid=5 op0=22/> blob data = 'functionWithInnerClass'
+// CHECK-5-NEXT:     <DefLocation abbrevid=6 op0=14 op1=4/> blob data = '{{.*}}'
+// CHECK-5-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-5-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-5-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-5-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-5-NEXT:       </ReferenceBlock>
+// CHECK-5-NEXT:     </TypeBlock>
+// CHECK-5-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-5-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-5-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-5-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-5-NEXT:       </ReferenceBlock>
+// CHECK-5-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'x'
+// CHECK-5-NEXT:     </FieldTypeBlock>
+// CHECK-5-NEXT:   </FunctionBlock>
+// CHECK-5-NEXT:   <FunctionBlock NumWords=37 BlockCodeSize=4>
+// CHECK-5-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-5-NEXT:     <Name abbrevid=5 op0=29/> blob data = 'inlinedFunctionWithInnerClass'
+// CHECK-5-NEXT:     <DefLocation abbrevid=6 op0=23 op1=4/> blob data = '{{.*}}'
+// CHECK-5-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-5-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-5-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-5-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-5-NEXT:       </ReferenceBlock>
+// CHECK-5-NEXT:     </TypeBlock>
+// CHECK-5-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-5-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-5-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-5-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-5-NEXT:       </ReferenceBlock>
+// CHECK-5-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'x'
+// CHECK-5-NEXT:     </FieldTypeBlock>
+// CHECK-5-NEXT:   </FunctionBlock>
+// CHECK-5-NEXT:   <FunctionBlock NumWords=33 BlockCodeSize=4>
+// CHECK-5-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-5-NEXT:     <Name abbrevid=5 op0=14/> blob data = 'staticFunction'
+// CHECK-5-NEXT:     <Location abbrevid=7 op0=66 op1=4/> blob data = '{{.*}}'
+// CHECK-5-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-5-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-5-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-5-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-5-NEXT:       </ReferenceBlock>
+// CHECK-5-NEXT:     </TypeBlock>
+// CHECK-5-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-5-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-5-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-5-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-5-NEXT:       </ReferenceBlock>
+// CHECK-5-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'x'
+// CHECK-5-NEXT:     </FieldTypeBlock>
+// CHECK-5-NEXT:   </FunctionBlock>
+// CHECK-5-NEXT:   <FunctionBlock NumWords=36 BlockCodeSize=4>
+// CHECK-5-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-5-NEXT:     <Name abbrevid=5 op0=28/> blob data = 'staticFunctionWithInnerClass'
+// CHECK-5-NEXT:     <DefLocation abbrevid=6 op0=68 op1=4/> blob data = '{{.*}}'
+// CHECK-5-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-5-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-5-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-5-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-5-NEXT:       </ReferenceBlock>
+// CHECK-5-NEXT:     </TypeBlock>
+// CHECK-5-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-5-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-5-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-5-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-5-NEXT:       </ReferenceBlock>
+// CHECK-5-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'x'
+// CHECK-5-NEXT:     </FieldTypeBlock>
+// CHECK-5-NEXT:   </FunctionBlock>
+// CHECK-5-NEXT: </NamespaceBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/4712C5FA37B298A25501D1033C619B65B0ECC449.bc | FileCheck %s --check-prefix CHECK-6
+// CHECK-6: <BLOCKINFO_BLOCK/>
+// CHECK-6-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-6-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-6-NEXT: </VersionBlock>
+// CHECK-6-NEXT: <RecordBlock NumWords=270 BlockCodeSize=4>
+// CHECK-6-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:   <Name abbrevid=5 op0=10/> blob data = 'NamedClass'
+// CHECK-6-NEXT:   <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-6-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:     <Name abbrevid=5 op0=5/> blob data = 'named'
+// CHECK-6-NEXT:     <RefType abbrevid=6 op0=1/>
+// CHECK-6-NEXT:     <Field abbrevid=7 op0=1/>
+// CHECK-6-NEXT:   </ReferenceBlock>
+// CHECK-6-NEXT:   <DefLocation abbrevid=6 op0=47 op1=4/> blob data = '{{.*}}'
+// CHECK-6-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-6-NEXT:   <MemberTypeBlock NumWords=11 BlockCodeSize=4>
+// CHECK-6-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-6-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-6-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-6-NEXT:     </ReferenceBlock>
+// CHECK-6-NEXT:     <Name abbrevid=4 op0=16/> blob data = 'namedPublicField'
+// CHECK-6-NEXT:     <Access abbrevid=5 op0=3/>
+// CHECK-6-NEXT:   </MemberTypeBlock>
+// CHECK-6-NEXT:   <MemberTypeBlock NumWords=12 BlockCodeSize=4>
+// CHECK-6-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-6-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-6-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-6-NEXT:     </ReferenceBlock>
+// CHECK-6-NEXT:     <Name abbrevid=4 op0=19/> blob data = 'namedProtectedField'
+// CHECK-6-NEXT:     <Access abbrevid=5 op0=1/>
+// CHECK-6-NEXT:   </MemberTypeBlock>
+// CHECK-6-NEXT:   <MemberTypeBlock NumWords=12 BlockCodeSize=4>
+// CHECK-6-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-6-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-6-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-6-NEXT:     </ReferenceBlock>
+// CHECK-6-NEXT:     <Name abbrevid=4 op0=17/> blob data = 'namedPrivateField'
+// CHECK-6-NEXT:     <Access abbrevid=5 op0=2/>
+// CHECK-6-NEXT:   </MemberTypeBlock>
+// CHECK-6-NEXT:   <FunctionBlock NumWords=65 BlockCodeSize=4>
+// CHECK-6-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:     <Name abbrevid=5 op0=17/> blob data = 'namedPublicMethod'
+// CHECK-6-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-6-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'NamedClass'
+// CHECK-6-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-6-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-6-NEXT:     </ReferenceBlock>
+// CHECK-6-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-6-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'named'
+// CHECK-6-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-6-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-6-NEXT:     </ReferenceBlock>
+// CHECK-6-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-6-NEXT:     <Location abbrevid=7 op0=49 op1=4/> blob data = '{{.*}}'
+// CHECK-6-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-6-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'NamedClass'
+// CHECK-6-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-6-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-6-NEXT:     </ReferenceBlock>
+// CHECK-6-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-6-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-6-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-6-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-6-NEXT:       </ReferenceBlock>
+// CHECK-6-NEXT:     </TypeBlock>
+// CHECK-6-NEXT:   </FunctionBlock>
+// CHECK-6-NEXT:   <FunctionBlock NumWords=65 BlockCodeSize=4>
+// CHECK-6-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:     <Name abbrevid=5 op0=20/> blob data = 'namedProtectedMethod'
+// CHECK-6-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-6-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'NamedClass'
+// CHECK-6-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-6-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-6-NEXT:     </ReferenceBlock>
+// CHECK-6-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-6-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'named'
+// CHECK-6-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-6-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-6-NEXT:     </ReferenceBlock>
+// CHECK-6-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-6-NEXT:     <Location abbrevid=7 op0=53 op1=4/> blob data = '{{.*}}'
+// CHECK-6-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-6-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'NamedClass'
+// CHECK-6-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-6-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-6-NEXT:     </ReferenceBlock>
+// CHECK-6-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-6-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-6-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-6-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-6-NEXT:       </ReferenceBlock>
+// CHECK-6-NEXT:     </TypeBlock>
+// CHECK-6-NEXT:   </FunctionBlock>
+// CHECK-6-NEXT:   <FunctionBlock NumWords=65 BlockCodeSize=4>
+// CHECK-6-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:     <Name abbrevid=5 op0=18/> blob data = 'namedPrivateMethod'
+// CHECK-6-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-6-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'NamedClass'
+// CHECK-6-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-6-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-6-NEXT:     </ReferenceBlock>
+// CHECK-6-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-6-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'named'
+// CHECK-6-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-6-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-6-NEXT:     </ReferenceBlock>
+// CHECK-6-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-6-NEXT:     <Location abbrevid=7 op0=57 op1=4/> blob data = '{{.*}}'
+// CHECK-6-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-6-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'NamedClass'
+// CHECK-6-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-6-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-6-NEXT:     </ReferenceBlock>
+// CHECK-6-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-6-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-6-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-6-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-6-NEXT:       </ReferenceBlock>
+// CHECK-6-NEXT:     </TypeBlock>
+// CHECK-6-NEXT:   </FunctionBlock>
+// CHECK-6-NEXT: </RecordBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/6E8FB72A89761E77020BFCEE9A9A6E64B15CC2A9.bc | FileCheck %s --check-prefix CHECK-7
+// CHECK-7: <BLOCKINFO_BLOCK/>
+// CHECK-7-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-7-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-7-NEXT: </VersionBlock>
+// CHECK-7-NEXT: <RecordBlock NumWords=252 BlockCodeSize=4>
+// CHECK-7-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:   <Name abbrevid=5 op0=9/> blob data = 'AnonClass'
+// CHECK-7-NEXT:   <ReferenceBlock NumWords=7 BlockCodeSize=4>
+// CHECK-7-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:     <RefType abbrevid=6 op0=1/>
+// CHECK-7-NEXT:     <Field abbrevid=7 op0=1/>
+// CHECK-7-NEXT:   </ReferenceBlock>
+// CHECK-7-NEXT:   <DefLocation abbrevid=6 op0=78 op1=4/> blob data = '{{.*}}'
+// CHECK-7-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-7-NEXT:   <MemberTypeBlock NumWords=11 BlockCodeSize=4>
+// CHECK-7-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-7-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-7-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-7-NEXT:     </ReferenceBlock>
+// CHECK-7-NEXT:     <Name abbrevid=4 op0=15/> blob data = 'anonPublicField'
+// CHECK-7-NEXT:     <Access abbrevid=5 op0=3/>
+// CHECK-7-NEXT:   </MemberTypeBlock>
+// CHECK-7-NEXT:   <MemberTypeBlock NumWords=12 BlockCodeSize=4>
+// CHECK-7-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-7-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-7-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-7-NEXT:     </ReferenceBlock>
+// CHECK-7-NEXT:     <Name abbrevid=4 op0=18/> blob data = 'anonProtectedField'
+// CHECK-7-NEXT:     <Access abbrevid=5 op0=1/>
+// CHECK-7-NEXT:   </MemberTypeBlock>
+// CHECK-7-NEXT:   <MemberTypeBlock NumWords=11 BlockCodeSize=4>
+// CHECK-7-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-7-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-7-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-7-NEXT:     </ReferenceBlock>
+// CHECK-7-NEXT:     <Name abbrevid=4 op0=16/> blob data = 'anonPrivateField'
+// CHECK-7-NEXT:     <Access abbrevid=5 op0=2/>
+// CHECK-7-NEXT:   </MemberTypeBlock>
+// CHECK-7-NEXT:   <FunctionBlock NumWords=60 BlockCodeSize=4>
+// CHECK-7-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:     <Name abbrevid=5 op0=16/> blob data = 'anonPublicMethod'
+// CHECK-7-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-7-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:       <Name abbrevid=5 op0=9/> blob data = 'AnonClass'
+// CHECK-7-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-7-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-7-NEXT:     </ReferenceBlock>
+// CHECK-7-NEXT:     <ReferenceBlock NumWords=7 BlockCodeSize=4>
+// CHECK-7-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-7-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-7-NEXT:     </ReferenceBlock>
+// CHECK-7-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-7-NEXT:     <Location abbrevid=7 op0=80 op1=4/> blob data = '{{.*}}'
+// CHECK-7-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-7-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:       <Name abbrevid=5 op0=9/> blob data = 'AnonClass'
+// CHECK-7-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-7-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-7-NEXT:     </ReferenceBlock>
+// CHECK-7-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-7-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-7-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-7-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-7-NEXT:       </ReferenceBlock>
+// CHECK-7-NEXT:     </TypeBlock>
+// CHECK-7-NEXT:   </FunctionBlock>
+// CHECK-7-NEXT:   <FunctionBlock NumWords=61 BlockCodeSize=4>
+// CHECK-7-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:     <Name abbrevid=5 op0=19/> blob data = 'anonProtectedMethod'
+// CHECK-7-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-7-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:       <Name abbrevid=5 op0=9/> blob data = 'AnonClass'
+// CHECK-7-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-7-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-7-NEXT:     </ReferenceBlock>
+// CHECK-7-NEXT:     <ReferenceBlock NumWords=7 BlockCodeSize=4>
+// CHECK-7-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-7-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-7-NEXT:     </ReferenceBlock>
+// CHECK-7-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-7-NEXT:     <Location abbrevid=7 op0=84 op1=4/> blob data = '{{.*}}'
+// CHECK-7-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-7-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:       <Name abbrevid=5 op0=9/> blob data = 'AnonClass'
+// CHECK-7-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-7-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-7-NEXT:     </ReferenceBlock>
+// CHECK-7-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-7-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-7-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-7-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-7-NEXT:       </ReferenceBlock>
+// CHECK-7-NEXT:     </TypeBlock>
+// CHECK-7-NEXT:   </FunctionBlock>
+// CHECK-7-NEXT:   <FunctionBlock NumWords=61 BlockCodeSize=4>
+// CHECK-7-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:     <Name abbrevid=5 op0=17/> blob data = 'anonPrivateMethod'
+// CHECK-7-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-7-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:       <Name abbrevid=5 op0=9/> blob data = 'AnonClass'
+// CHECK-7-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-7-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-7-NEXT:     </ReferenceBlock>
+// CHECK-7-NEXT:     <ReferenceBlock NumWords=7 BlockCodeSize=4>
+// CHECK-7-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-7-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-7-NEXT:     </ReferenceBlock>
+// CHECK-7-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-7-NEXT:     <Location abbrevid=7 op0=88 op1=4/> blob data = '{{.*}}'
+// CHECK-7-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-7-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:       <Name abbrevid=5 op0=9/> blob data = 'AnonClass'
+// CHECK-7-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-7-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-7-NEXT:     </ReferenceBlock>
+// CHECK-7-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-7-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-7-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-7-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-7-NEXT:       </ReferenceBlock>
+// CHECK-7-NEXT:     </TypeBlock>
+// CHECK-7-NEXT:   </FunctionBlock>
+// CHECK-7-NEXT: </RecordBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/83CC52D32583E0771710A7742DE81C839E953AC8.bc | FileCheck %s --check-prefix CHECK-8
+// CHECK-8: <BLOCKINFO_BLOCK/>
+// CHECK-8-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-8-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-8-NEXT: </VersionBlock>
+// CHECK-8-NEXT: <NamespaceBlock NumWords=109 BlockCodeSize=4>
+// CHECK-8-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-8-NEXT:   <FunctionBlock NumWords=31 BlockCodeSize=4>
+// CHECK-8-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-8-NEXT:     <Name abbrevid=5 op0=12/> blob data = 'anonFunction'
+// CHECK-8-NEXT:     <ReferenceBlock NumWords=7 BlockCodeSize=4>
+// CHECK-8-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-8-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-8-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-8-NEXT:     </ReferenceBlock>
+// CHECK-8-NEXT:     <Location abbrevid=7 op0=92 op1=4/> blob data = '{{.*}}'
+// CHECK-8-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-8-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-8-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-8-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-8-NEXT:       </ReferenceBlock>
+// CHECK-8-NEXT:     </TypeBlock>
+// CHECK-8-NEXT:   </FunctionBlock>
+// CHECK-8-NEXT:   <FunctionBlock NumWords=33 BlockCodeSize=4>
+// CHECK-8-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-8-NEXT:     <Name abbrevid=5 op0=18/> blob data = 'anonStaticFunction'
+// CHECK-8-NEXT:     <ReferenceBlock NumWords=7 BlockCodeSize=4>
+// CHECK-8-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-8-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-8-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-8-NEXT:     </ReferenceBlock>
+// CHECK-8-NEXT:     <Location abbrevid=7 op0=93 op1=4/> blob data = '{{.*}}'
+// CHECK-8-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-8-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-8-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-8-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-8-NEXT:       </ReferenceBlock>
+// CHECK-8-NEXT:     </TypeBlock>
+// CHECK-8-NEXT:   </FunctionBlock>
+// CHECK-8-NEXT:   <FunctionBlock NumWords=33 BlockCodeSize=4>
+// CHECK-8-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-8-NEXT:     <Name abbrevid=5 op0=18/> blob data = 'anonInlineFunction'
+// CHECK-8-NEXT:     <ReferenceBlock NumWords=7 BlockCodeSize=4>
+// CHECK-8-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-8-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-8-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-8-NEXT:     </ReferenceBlock>
+// CHECK-8-NEXT:     <Location abbrevid=7 op0=94 op1=4/> blob data = '{{.*}}'
+// CHECK-8-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-8-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-8-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-8-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-8-NEXT:       </ReferenceBlock>
+// CHECK-8-NEXT:     </TypeBlock>
+// CHECK-8-NEXT:   </FunctionBlock>
+// CHECK-8-NEXT: </NamespaceBlock>

Added: clang-tools-extra/trunk/test/clang-doc/bc-module.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/bc-module.cpp?rev=338763&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/bc-module.cpp (added)
+++ clang-tools-extra/trunk/test/clang-doc/bc-module.cpp Thu Aug  2 13:10:17 2018
@@ -0,0 +1,87 @@
+// THIS IS A GENERATED TEST. DO NOT EDIT.
+// To regenerate, see clang-doc/gen_test.py docstring.
+//
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+
+export module M;
+
+int moduleFunction(int x); // ModuleLinkage
+
+static int staticModuleFunction(int x); // ModuleInternalLinkage
+
+export double exportedModuleFunction(double y, int z); // ExternalLinkage
+
+// RUN: clang-doc --dump-intermediate --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
+
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/0000000000000000000000000000000000000000.bc | FileCheck %s --check-prefix CHECK-0
+// CHECK-0: <BLOCKINFO_BLOCK/>
+// CHECK-0-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-0-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-0-NEXT: </VersionBlock>
+// CHECK-0-NEXT: <NamespaceBlock NumWords=121 BlockCodeSize=4>
+// CHECK-0-NEXT:   <FunctionBlock NumWords=33 BlockCodeSize=4>
+// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:     <Name abbrevid=5 op0=14/> blob data = 'moduleFunction'
+// CHECK-0-NEXT:     <Location abbrevid=7 op0=11 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:     </TypeBlock>
+// CHECK-0-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'x'
+// CHECK-0-NEXT:     </FieldTypeBlock>
+// CHECK-0-NEXT:   </FunctionBlock>
+// CHECK-0-NEXT:   <FunctionBlock NumWords=34 BlockCodeSize=4>
+// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:     <Name abbrevid=5 op0=20/> blob data = 'staticModuleFunction'
+// CHECK-0-NEXT:     <Location abbrevid=7 op0=13 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:     </TypeBlock>
+// CHECK-0-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'x'
+// CHECK-0-NEXT:     </FieldTypeBlock>
+// CHECK-0-NEXT:   </FunctionBlock>
+// CHECK-0-NEXT:   <FunctionBlock NumWords=47 BlockCodeSize=4>
+// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:     <Name abbrevid=5 op0=22/> blob data = 'exportedModuleFunction'
+// CHECK-0-NEXT:     <Location abbrevid=7 op0=15 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <TypeBlock NumWords=7 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=4 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=6/> blob data = 'double'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:     </TypeBlock>
+// CHECK-0-NEXT:     <FieldTypeBlock NumWords=9 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=4 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=6/> blob data = 'double'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'y'
+// CHECK-0-NEXT:     </FieldTypeBlock>
+// CHECK-0-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'z'
+// CHECK-0-NEXT:     </FieldTypeBlock>
+// CHECK-0-NEXT:   </FunctionBlock>
+// CHECK-0-NEXT: </NamespaceBlock>

Modified: clang-tools-extra/trunk/test/clang-doc/bc-namespace.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/bc-namespace.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/bc-namespace.cpp (original)
+++ clang-tools-extra/trunk/test/clang-doc/bc-namespace.cpp Thu Aug  2 13:10:17 2018
@@ -25,115 +25,97 @@ E func(int i) { return X; }
 }  // namespace B
 }  // namespace A
 
-// RUN: clang-doc --dump-intermediate --doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: clang-doc --dump-intermediate --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
 
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/E9ABF7E7E2425B626723D41E76E4BC7E7A5BD775.bc | FileCheck %s --check-prefix CHECK-0
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/8D042EFFC98B373450BC6B5B90A330C25A150E9C.bc | FileCheck %s --check-prefix CHECK-0
 // CHECK-0: <BLOCKINFO_BLOCK/>
 // CHECK-0-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-0-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-0-NEXT: </VersionBlock>
-// CHECK-0-NEXT: <EnumBlock NumWords=38 BlockCodeSize=4>
-// CHECK-0-NEXT:   <USR abbrevid=4 op0=20 op1=233 op2=171 op3=247 op4=231 op5=226 op6=66 op7=91 op8=98 op9=103 op10=35 op11=212 op12=30 op13=118 op14=228 op15=188 op16=126 op17=122 op18=91 op19=215 op20=117/>
-// CHECK-0-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'E'
-// CHECK-0-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1=226 op2=26 op3=247 op4=158 op5=42 op6=157 op7=2 op8=85 op9=75 op10=160 op11=144 op12=209 op13=13 op14=243 op15=159 op16=226 op17=115 op18=245 op19=205 op20=181/>
-// CHECK-0-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'B'
-// CHECK-0-NEXT:     <RefType abbrevid=6 op0=1/>
-// CHECK-0-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-0-NEXT:   </ReferenceBlock>
-// CHECK-0-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1=141 op2=4 op3=46 op4=255 op5=201 op6=139 op7=55 op8=52 op9=80 op10=188 op11=107 op12=91 op13=144 op14=163 op15=48 op16=194 op17=90 op18=21 op19=14 op20=156/>
-// CHECK-0-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'A'
-// CHECK-0-NEXT:     <RefType abbrevid=6 op0=1/>
-// CHECK-0-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-0-NEXT:   </ReferenceBlock>
-// CHECK-0-NEXT:   <DefLocation abbrevid=6 op0=21 op1=4/> blob data = '{{.*}}'
-// CHECK-0-NEXT:   <Member abbrevid=8 op0=1/> blob data = 'X'
-// CHECK-0-NEXT: </EnumBlock>
+// CHECK-0-NEXT: <NamespaceBlock NumWords=46 BlockCodeSize=4>
+// CHECK-0-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'A'
+// CHECK-0-NEXT:   <FunctionBlock NumWords=35 BlockCodeSize=4>
+// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'f'
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'A'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <DefLocation abbrevid=6 op0=17 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <Location abbrevid=7 op0=11 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:     </TypeBlock>
+// CHECK-0-NEXT:   </FunctionBlock>
+// CHECK-0-NEXT: </NamespaceBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/39D3C95A5F7CE2BA4937BD7B01BAE09EBC2AD8AC.bc | FileCheck %s --check-prefix CHECK-1
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/E21AF79E2A9D02554BA090D10DF39FE273F5CDB5.bc | FileCheck %s --check-prefix CHECK-1
 // CHECK-1: <BLOCKINFO_BLOCK/>
 // CHECK-1-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-1-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-1-NEXT: </VersionBlock>
-// CHECK-1-NEXT: <FunctionBlock NumWords=35 BlockCodeSize=4>
-// CHECK-1-NEXT:   <USR abbrevid=4 op0=20 op1=57 op2=211 op3=201 op4=90 op5=95 op6=124 op7=226 op8=186 op9=73 op10=55 op11=189 op12=123 op13=1 op14=186 op15=224 op16=158 op17=188 op18=42 op19=216 op20=172/>
-// CHECK-1-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'f'
+// CHECK-1-NEXT: <NamespaceBlock NumWords=119 BlockCodeSize=4>
+// CHECK-1-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'B'
 // CHECK-1-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-1-NEXT:     <USR abbrevid=4 op0=20 op1=141 op2=4 op3=46 op4=255 op5=201 op6=139 op7=55 op8=52 op9=80 op10=188 op11=107 op12=91 op13=144 op14=163 op15=48 op16=194 op17=90 op18=21 op19=14 op20=156/>
+// CHECK-1-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
 // CHECK-1-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'A'
 // CHECK-1-NEXT:     <RefType abbrevid=6 op0=1/>
 // CHECK-1-NEXT:     <Field abbrevid=7 op0=1/>
 // CHECK-1-NEXT:   </ReferenceBlock>
-// CHECK-1-NEXT:   <DefLocation abbrevid=6 op0=17 op1=4/> blob data = '{{.*}}'
-// CHECK-1-NEXT:   <Location abbrevid=7 op0=11 op1=4/> blob data = '{{.*}}'
-// CHECK-1-NEXT:   <TypeBlock NumWords=6 BlockCodeSize=4>
-// CHECK-1-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-1-NEXT:       <Name abbrevid=5 op0=4/> blob data = 'void'
-// CHECK-1-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-1-NEXT:   <FunctionBlock NumWords=56 BlockCodeSize=4>
+// CHECK-1-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:     <Name abbrevid=5 op0=4/> blob data = 'func'
+// CHECK-1-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-1-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'B'
+// CHECK-1-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-1-NEXT:       <Field abbrevid=7 op0=1/>
 // CHECK-1-NEXT:     </ReferenceBlock>
-// CHECK-1-NEXT:   </TypeBlock>
-// CHECK-1-NEXT: </FunctionBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/9A82CB33ED0FDF81EE383D31CD0957D153C5E840.bc | FileCheck %s --check-prefix CHECK-2
-// CHECK-2: <BLOCKINFO_BLOCK/>
-// CHECK-2-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-2-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-2-NEXT: </VersionBlock>
-// CHECK-2-NEXT: <FunctionBlock NumWords=56 BlockCodeSize=4>
-// CHECK-2-NEXT:   <USR abbrevid=4 op0=20 op1=154 op2=130 op3=203 op4=51 op5=237 op6=15 op7=223 op8=129 op9=238 op10=56 op11=61 op12=49 op13=205 op14=9 op15=87 op16=209 op17=83 op18=197 op19=232 op20=64/>
-// CHECK-2-NEXT:   <Name abbrevid=5 op0=4/> blob data = 'func'
-// CHECK-2-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-2-NEXT:     <USR abbrevid=4 op0=20 op1=226 op2=26 op3=247 op4=158 op5=42 op6=157 op7=2 op8=85 op9=75 op10=160 op11=144 op12=209 op13=13 op14=243 op15=159 op16=226 op17=115 op18=245 op19=205 op20=181/>
-// CHECK-2-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'B'
-// CHECK-2-NEXT:     <RefType abbrevid=6 op0=1/>
-// CHECK-2-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-2-NEXT:   </ReferenceBlock>
-// CHECK-2-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-2-NEXT:     <USR abbrevid=4 op0=20 op1=141 op2=4 op3=46 op4=255 op5=201 op6=139 op7=55 op8=52 op9=80 op10=188 op11=107 op12=91 op13=144 op14=163 op15=48 op16=194 op17=90 op18=21 op19=14 op20=156/>
-// CHECK-2-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'A'
-// CHECK-2-NEXT:     <RefType abbrevid=6 op0=1/>
-// CHECK-2-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-2-NEXT:   </ReferenceBlock>
-// CHECK-2-NEXT:   <DefLocation abbrevid=6 op0=23 op1=4/> blob data = '{{.*}}'
-// CHECK-2-NEXT:   <TypeBlock NumWords=8 BlockCodeSize=4>
-// CHECK-2-NEXT:     <ReferenceBlock NumWords=5 BlockCodeSize=4>
-// CHECK-2-NEXT:       <Name abbrevid=5 op0=12/> blob data = 'enum A::B::E'
-// CHECK-2-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-2-NEXT:     </ReferenceBlock>
-// CHECK-2-NEXT:   </TypeBlock>
-// CHECK-2-NEXT:   <FieldTypeBlock NumWords=8 BlockCodeSize=4>
-// CHECK-2-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-2-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
-// CHECK-2-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-2-NEXT:     </ReferenceBlock>
-// CHECK-2-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'i'
-// CHECK-2-NEXT:   </FieldTypeBlock>
-// CHECK-2-NEXT: </FunctionBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/8D042EFFC98B373450BC6B5B90A330C25A150E9C.bc | FileCheck %s --check-prefix CHECK-3
-// CHECK-3: <BLOCKINFO_BLOCK/>
-// CHECK-3-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-3-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-3-NEXT: </VersionBlock>
-// CHECK-3-NEXT: <NamespaceBlock NumWords=9 BlockCodeSize=4>
-// CHECK-3-NEXT:   <USR abbrevid=4 op0=20 op1=141 op2=4 op3=46 op4=255 op5=201 op6=139 op7=55 op8=52 op9=80 op10=188 op11=107 op12=91 op13=144 op14=163 op15=48 op16=194 op17=90 op18=21 op19=14 op20=156/>
-// CHECK-3-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'A'
-// CHECK-3-NEXT: </NamespaceBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/E21AF79E2A9D02554BA090D10DF39FE273F5CDB5.bc | FileCheck %s --check-prefix CHECK-4
-// CHECK-4: <BLOCKINFO_BLOCK/>
-// CHECK-4-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-4-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-4-NEXT: </VersionBlock>
-// CHECK-4-NEXT: <NamespaceBlock NumWords=21 BlockCodeSize=4>
-// CHECK-4-NEXT:   <USR abbrevid=4 op0=20 op1=226 op2=26 op3=247 op4=158 op5=42 op6=157 op7=2 op8=85 op9=75 op10=160 op11=144 op12=209 op13=13 op14=243 op15=159 op16=226 op17=115 op18=245 op19=205 op20=181/>
-// CHECK-4-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'B'
-// CHECK-4-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-4-NEXT:     <USR abbrevid=4 op0=20 op1=141 op2=4 op3=46 op4=255 op5=201 op6=139 op7=55 op8=52 op9=80 op10=188 op11=107 op12=91 op13=144 op14=163 op15=48 op16=194 op17=90 op18=21 op19=14 op20=156/>
-// CHECK-4-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'A'
-// CHECK-4-NEXT:     <RefType abbrevid=6 op0=1/>
-// CHECK-4-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-4-NEXT:   </ReferenceBlock>
-// CHECK-4-NEXT: </NamespaceBlock>
+// CHECK-1-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-1-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'A'
+// CHECK-1-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-1-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-1-NEXT:     </ReferenceBlock>
+// CHECK-1-NEXT:     <DefLocation abbrevid=6 op0=23 op1=4/> blob data = '{{.*}}'
+// CHECK-1-NEXT:     <TypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-1-NEXT:       <ReferenceBlock NumWords=5 BlockCodeSize=4>
+// CHECK-1-NEXT:         <Name abbrevid=5 op0=12/> blob data = 'enum A::B::E'
+// CHECK-1-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-1-NEXT:       </ReferenceBlock>
+// CHECK-1-NEXT:     </TypeBlock>
+// CHECK-1-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-1-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-1-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-1-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-1-NEXT:       </ReferenceBlock>
+// CHECK-1-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'i'
+// CHECK-1-NEXT:     </FieldTypeBlock>
+// CHECK-1-NEXT:   </FunctionBlock>
+// CHECK-1-NEXT:   <EnumBlock NumWords=38 BlockCodeSize=4>
+// CHECK-1-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
+// CHECK-1-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-1-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'B'
+// CHECK-1-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-1-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-1-NEXT:     </ReferenceBlock>
+// CHECK-1-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-1-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'A'
+// CHECK-1-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-1-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-1-NEXT:     </ReferenceBlock>
+// CHECK-1-NEXT:     <DefLocation abbrevid=6 op0=21 op1=4/> blob data = '{{.*}}'
+// CHECK-1-NEXT:     <Member abbrevid=8 op0=1/> blob data = 'X'
+// CHECK-1-NEXT:   </EnumBlock>
+// CHECK-1-NEXT: </NamespaceBlock>

Modified: clang-tools-extra/trunk/test/clang-doc/bc-record.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/bc-record.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/bc-record.cpp (original)
+++ clang-tools-extra/trunk/test/clang-doc/bc-record.cpp Thu Aug  2 13:10:17 2018
@@ -39,7 +39,7 @@ class X {
   class Y {};
 };
 
-// RUN: clang-doc --dump-intermediate --doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: clang-doc --dump-intermediate --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
 
 
 // RUN: llvm-bcanalyzer --dump %t/docs/bc/289584A8E0FF4178A794622A547AA622503967A1.bc | FileCheck %s --check-prefix CHECK-0
@@ -47,11 +47,84 @@ class X {
 // CHECK-0-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-0-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-0-NEXT: </VersionBlock>
-// CHECK-0-NEXT: <RecordBlock NumWords=12 BlockCodeSize=4>
-// CHECK-0-NEXT:   <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
+// CHECK-0-NEXT: <RecordBlock NumWords=157 BlockCodeSize=4>
+// CHECK-0-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
 // CHECK-0-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'E'
 // CHECK-0-NEXT:   <DefLocation abbrevid=6 op0=25 op1=4/> blob data = '{{.*}}'
 // CHECK-0-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-0-NEXT:   <FunctionBlock NumWords=44 BlockCodeSize=4>
+// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'E'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-0-NEXT:     <DefLocation abbrevid=6 op0=27 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'E'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:     </TypeBlock>
+// CHECK-0-NEXT:   </FunctionBlock>
+// CHECK-0-NEXT:   <FunctionBlock NumWords=44 BlockCodeSize=4>
+// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:     <Name abbrevid=5 op0=2/> blob data = '~E'
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'E'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-0-NEXT:     <DefLocation abbrevid=6 op0=28 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'E'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:     </TypeBlock>
+// CHECK-0-NEXT:   </FunctionBlock>
+// CHECK-0-NEXT:   <FunctionBlock NumWords=50 BlockCodeSize=4>
+// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:     <Name abbrevid=5 op0=15/> blob data = 'ProtectedMethod'
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'E'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-0-NEXT:     <DefLocation abbrevid=6 op0=34 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <Location abbrevid=7 op0=31 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'E'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:     </TypeBlock>
+// CHECK-0-NEXT:   </FunctionBlock>
 // CHECK-0-NEXT: </RecordBlock>
 
 // RUN: llvm-bcanalyzer --dump %t/docs/bc/3FB542274573CAEAD54CEBFFCAEE3D77FB9713D8.bc | FileCheck %s --check-prefix CHECK-1
@@ -60,10 +133,10 @@ class X {
 // CHECK-1-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-1-NEXT: </VersionBlock>
 // CHECK-1-NEXT: <RecordBlock NumWords=24 BlockCodeSize=4>
-// CHECK-1-NEXT:   <USR abbrevid=4 op0=20 op1=63 op2=181 op3=66 op4=39 op5=69 op6=115 op7=202 op8=234 op9=213 op10=76 op11=235 op12=255 op13=202 op14=238 op15=61 op16=119 op17=251 op18=151 op19=19 op20=216/>
+// CHECK-1-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
 // CHECK-1-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'I'
 // CHECK-1-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-1-NEXT:     <USR abbrevid=4 op0=20 op1=182 op2=172 op3=76 op4=92 op5=159 op6=46 op7=163 op8=242 op9=179 op10=236 op11=225 op12=163 op13=61 op14=52 op15=159 op16=78 op17=229 op18=2 op19=178 op20=78/>
+// CHECK-1-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
 // CHECK-1-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'H'
 // CHECK-1-NEXT:     <RefType abbrevid=6 op0=3/>
 // CHECK-1-NEXT:     <Field abbrevid=7 op0=1/>
@@ -72,250 +145,149 @@ class X {
 // CHECK-1-NEXT:   <TagType abbrevid=8 op0=3/>
 // CHECK-1-NEXT: </RecordBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/5093D428CDC62096A67547BA52566E4FB9404EEE.bc | FileCheck %s --check-prefix CHECK-2
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/CA7C7935730B5EACD25F080E9C83FA087CCDC75E.bc | FileCheck %s --check-prefix CHECK-2
 // CHECK-2: <BLOCKINFO_BLOCK/>
 // CHECK-2-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-2-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-2-NEXT: </VersionBlock>
-// CHECK-2-NEXT: <FunctionBlock NumWords=50 BlockCodeSize=4>
-// CHECK-2-NEXT:   <USR abbrevid=4 op0=20 op1=80 op2=147 op3=212 op4=40 op5=205 op6=198 op7=32 op8=150 op9=166 op10=117 op11=71 op12=186 op13=82 op14=86 op15=110 op16=79 op17=185 op18=64 op19=78 op20=238/>
-// CHECK-2-NEXT:   <Name abbrevid=5 op0=15/> blob data = 'ProtectedMethod'
-// CHECK-2-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-2-NEXT:     <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
-// CHECK-2-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
-// CHECK-2-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-2-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-2-NEXT:   </ReferenceBlock>
-// CHECK-2-NEXT:   <IsMethod abbrevid=9 op0=1/>
-// CHECK-2-NEXT:   <DefLocation abbrevid=6 op0=34 op1=4/> blob data = '{{.*}}'
-// CHECK-2-NEXT:   <Location abbrevid=7 op0=31 op1=4/> blob data = '{{.*}}'
-// CHECK-2-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-2-NEXT:     <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
-// CHECK-2-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
-// CHECK-2-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-2-NEXT:     <Field abbrevid=7 op0=2/>
-// CHECK-2-NEXT:   </ReferenceBlock>
-// CHECK-2-NEXT:   <TypeBlock NumWords=6 BlockCodeSize=4>
-// CHECK-2-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-2-NEXT:       <Name abbrevid=5 op0=4/> blob data = 'void'
-// CHECK-2-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-2-NEXT:     </ReferenceBlock>
-// CHECK-2-NEXT:   </TypeBlock>
-// CHECK-2-NEXT: </FunctionBlock>
+// CHECK-2-NEXT: <RecordBlock NumWords=12 BlockCodeSize=4>
+// CHECK-2-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-2-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'X'
+// CHECK-2-NEXT:   <DefLocation abbrevid=6 op0=38 op1=4/> blob data = '{{.*}}'
+// CHECK-2-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-2-NEXT: </RecordBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/CA7C7935730B5EACD25F080E9C83FA087CCDC75E.bc | FileCheck %s --check-prefix CHECK-3
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/06B5F6A19BA9F6A832E127C9968282B94619B210.bc | FileCheck %s --check-prefix CHECK-3
 // CHECK-3: <BLOCKINFO_BLOCK/>
 // CHECK-3-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-3-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-3-NEXT: </VersionBlock>
-// CHECK-3-NEXT: <RecordBlock NumWords=12 BlockCodeSize=4>
-// CHECK-3-NEXT:   <USR abbrevid=4 op0=20 op1=202 op2=124 op3=121 op4=53 op5=115 op6=11 op7=94 op8=172 op9=210 op10=95 op11=8 op12=14 op13=156 op14=131 op15=250 op16=8 op17=124 op18=205 op19=199 op20=94/>
-// CHECK-3-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'X'
-// CHECK-3-NEXT:   <DefLocation abbrevid=6 op0=38 op1=4/> blob data = '{{.*}}'
-// CHECK-3-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-3-NEXT: <RecordBlock NumWords=22 BlockCodeSize=4>
+// CHECK-3-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'C'
+// CHECK-3-NEXT:   <DefLocation abbrevid=6 op0=21 op1=4/> blob data = '{{.*}}'
+// CHECK-3-NEXT:   <MemberTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-3-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-3-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-3-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-3-NEXT:     </ReferenceBlock>
+// CHECK-3-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'i'
+// CHECK-3-NEXT:     <Access abbrevid=5 op0=3/>
+// CHECK-3-NEXT:   </MemberTypeBlock>
 // CHECK-3-NEXT: </RecordBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/B6AC4C5C9F2EA3F2B3ECE1A33D349F4EE502B24E.bc | FileCheck %s --check-prefix CHECK-4
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/641AB4A3D36399954ACDE29C7A8833032BF40472.bc | FileCheck %s --check-prefix CHECK-4
 // CHECK-4: <BLOCKINFO_BLOCK/>
 // CHECK-4-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-4-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-4-NEXT: </VersionBlock>
-// CHECK-4-NEXT: <FunctionBlock NumWords=20 BlockCodeSize=4>
-// CHECK-4-NEXT:   <USR abbrevid=4 op0=20 op1=182 op2=172 op3=76 op4=92 op5=159 op6=46 op7=163 op8=242 op9=179 op10=236 op11=225 op12=163 op13=61 op14=52 op15=159 op16=78 op17=229 op18=2 op19=178 op20=78/>
-// CHECK-4-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'H'
-// CHECK-4-NEXT:   <DefLocation abbrevid=6 op0=11 op1=4/> blob data = '{{.*}}'
-// CHECK-4-NEXT:   <TypeBlock NumWords=6 BlockCodeSize=4>
-// CHECK-4-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-4-NEXT:       <Name abbrevid=5 op0=4/> blob data = 'void'
-// CHECK-4-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-4-NEXT:     </ReferenceBlock>
-// CHECK-4-NEXT:   </TypeBlock>
-// CHECK-4-NEXT: </FunctionBlock>
+// CHECK-4-NEXT: <RecordBlock NumWords=24 BlockCodeSize=4>
+// CHECK-4-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-4-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'Y'
+// CHECK-4-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-4-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-4-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'X'
+// CHECK-4-NEXT:     <RefType abbrevid=6 op0=2/>
+// CHECK-4-NEXT:     <Field abbrevid=7 op0=1/>
+// CHECK-4-NEXT:   </ReferenceBlock>
+// CHECK-4-NEXT:   <DefLocation abbrevid=6 op0=39 op1=4/> blob data = '{{.*}}'
+// CHECK-4-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-4-NEXT: </RecordBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/06B5F6A19BA9F6A832E127C9968282B94619B210.bc | FileCheck %s --check-prefix CHECK-5
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/0000000000000000000000000000000000000000.bc | FileCheck %s --check-prefix CHECK-5
 // CHECK-5: <BLOCKINFO_BLOCK/>
 // CHECK-5-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-5-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-5-NEXT: </VersionBlock>
-// CHECK-5-NEXT: <RecordBlock NumWords=22 BlockCodeSize=4>
-// CHECK-5-NEXT:   <USR abbrevid=4 op0=20 op1=6 op2=181 op3=246 op4=161 op5=155 op6=169 op7=246 op8=168 op9=50 op10=225 op11=39 op12=201 op13=150 op14=130 op15=130 op16=185 op17=70 op18=25 op19=178 op20=16/>
-// CHECK-5-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'C'
-// CHECK-5-NEXT:   <DefLocation abbrevid=6 op0=21 op1=4/> blob data = '{{.*}}'
-// CHECK-5-NEXT:   <MemberTypeBlock NumWords=8 BlockCodeSize=4>
-// CHECK-5-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-5-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
-// CHECK-5-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-5-NEXT:     </ReferenceBlock>
-// CHECK-5-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'i'
-// CHECK-5-NEXT:     <Access abbrevid=5 op0=3/>
-// CHECK-5-NEXT:   </MemberTypeBlock>
-// CHECK-5-NEXT: </RecordBlock>
+// CHECK-5-NEXT: <NamespaceBlock NumWords=59 BlockCodeSize=4>
+// CHECK-5-NEXT:   <FunctionBlock NumWords=20 BlockCodeSize=4>
+// CHECK-5-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-5-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'H'
+// CHECK-5-NEXT:     <DefLocation abbrevid=6 op0=11 op1=4/> blob data = '{{.*}}'
+// CHECK-5-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-5-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-5-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-5-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-5-NEXT:       </ReferenceBlock>
+// CHECK-5-NEXT:     </TypeBlock>
+// CHECK-5-NEXT:   </FunctionBlock>
+// CHECK-5-NEXT:   <EnumBlock NumWords=16 BlockCodeSize=4>
+// CHECK-5-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-5-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'B'
+// CHECK-5-NEXT:     <DefLocation abbrevid=6 op0=17 op1=4/> blob data = '{{.*}}'
+// CHECK-5-NEXT:     <Member abbrevid=8 op0=1/> blob data = 'X'
+// CHECK-5-NEXT:     <Member abbrevid=8 op0=1/> blob data = 'Y'
+// CHECK-5-NEXT:   </EnumBlock>
+// CHECK-5-NEXT:   <EnumBlock NumWords=16 BlockCodeSize=4>
+// CHECK-5-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-5-NEXT:     <Name abbrevid=5 op0=2/> blob data = 'Bc'
+// CHECK-5-NEXT:     <DefLocation abbrevid=6 op0=19 op1=4/> blob data = '{{.*}}'
+// CHECK-5-NEXT:     <Scoped abbrevid=9 op0=1/>
+// CHECK-5-NEXT:     <Member abbrevid=8 op0=1/> blob data = 'A'
+// CHECK-5-NEXT:     <Member abbrevid=8 op0=1/> blob data = 'B'
+// CHECK-5-NEXT:   </EnumBlock>
+// CHECK-5-NEXT: </NamespaceBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/BD2BDEBD423F80BACCEA75DE6D6622D355FC2D17.bc | FileCheck %s --check-prefix CHECK-6
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/0921737541208B8FA9BB42B60F78AC1D779AA054.bc | FileCheck %s --check-prefix CHECK-6
 // CHECK-6: <BLOCKINFO_BLOCK/>
 // CHECK-6-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-6-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-6-NEXT: </VersionBlock>
-// CHECK-6-NEXT: <FunctionBlock NumWords=44 BlockCodeSize=4>
-// CHECK-6-NEXT:   <USR abbrevid=4 op0=20 op1=189 op2=43 op3=222 op4=189 op5=66 op6=63 op7=128 op8=186 op9=204 op10=234 op11=117 op12=222 op13=109 op14=102 op15=34 op16=211 op17=85 op18=252 op19=45 op20=23/>
-// CHECK-6-NEXT:   <Name abbrevid=5 op0=2/> blob data = '~E'
-// CHECK-6-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-6-NEXT:     <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
-// CHECK-6-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
-// CHECK-6-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-6-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-6-NEXT:   </ReferenceBlock>
-// CHECK-6-NEXT:   <IsMethod abbrevid=9 op0=1/>
-// CHECK-6-NEXT:   <DefLocation abbrevid=6 op0=28 op1=4/> blob data = '{{.*}}'
-// CHECK-6-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-6-NEXT:     <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
-// CHECK-6-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
-// CHECK-6-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-6-NEXT:     <Field abbrevid=7 op0=2/>
-// CHECK-6-NEXT:   </ReferenceBlock>
-// CHECK-6-NEXT:   <TypeBlock NumWords=6 BlockCodeSize=4>
-// CHECK-6-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-6-NEXT:       <Name abbrevid=5 op0=4/> blob data = 'void'
-// CHECK-6-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-6-NEXT:     </ReferenceBlock>
-// CHECK-6-NEXT:   </TypeBlock>
-// CHECK-6-NEXT: </FunctionBlock>
+// CHECK-6-NEXT: <RecordBlock NumWords=12 BlockCodeSize=4>
+// CHECK-6-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'D'
+// CHECK-6-NEXT:   <DefLocation abbrevid=6 op0=23 op1=4/> blob data = '{{.*}}'
+// CHECK-6-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-6-NEXT: </RecordBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/DEB4AC1CD9253CD9EF7FBE6BCAC506D77984ABD4.bc | FileCheck %s --check-prefix CHECK-7
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/E3B54702FABFF4037025BA194FC27C47006330B5.bc | FileCheck %s --check-prefix CHECK-7
 // CHECK-7: <BLOCKINFO_BLOCK/>
 // CHECK-7-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-7-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-7-NEXT: </VersionBlock>
-// CHECK-7-NEXT: <FunctionBlock NumWords=44 BlockCodeSize=4>
-// CHECK-7-NEXT:   <USR abbrevid=4 op0=20 op1=222 op2=180 op3=172 op4=28 op5=217 op6=37 op7=60 op8=217 op9=239 op10=127 op11=190 op12=107 op13=202 op14=197 op15=6 op16=215 op17=121 op18=132 op19=171 op20=212/>
-// CHECK-7-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'E'
+// CHECK-7-NEXT: <RecordBlock NumWords=37 BlockCodeSize=4>
+// CHECK-7-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'F'
+// CHECK-7-NEXT:   <DefLocation abbrevid=6 op0=36 op1=4/> blob data = '{{.*}}'
+// CHECK-7-NEXT:   <TagType abbrevid=8 op0=3/>
 // CHECK-7-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-7-NEXT:     <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
+// CHECK-7-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
 // CHECK-7-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
 // CHECK-7-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-7-NEXT:     <Field abbrevid=7 op0=1/>
+// CHECK-7-NEXT:     <Field abbrevid=7 op0=2/>
 // CHECK-7-NEXT:   </ReferenceBlock>
-// CHECK-7-NEXT:   <IsMethod abbrevid=9 op0=1/>
-// CHECK-7-NEXT:   <DefLocation abbrevid=6 op0=27 op1=4/> blob data = '{{.*}}'
 // CHECK-7-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-7-NEXT:     <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
-// CHECK-7-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
+// CHECK-7-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'D'
 // CHECK-7-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-7-NEXT:     <Field abbrevid=7 op0=2/>
+// CHECK-7-NEXT:     <Field abbrevid=7 op0=3/>
 // CHECK-7-NEXT:   </ReferenceBlock>
-// CHECK-7-NEXT:   <TypeBlock NumWords=6 BlockCodeSize=4>
-// CHECK-7-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-7-NEXT:       <Name abbrevid=5 op0=4/> blob data = 'void'
-// CHECK-7-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-7-NEXT:     </ReferenceBlock>
-// CHECK-7-NEXT:   </TypeBlock>
-// CHECK-7-NEXT: </FunctionBlock>
+// CHECK-7-NEXT: </RecordBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/641AB4A3D36399954ACDE29C7A8833032BF40472.bc | FileCheck %s --check-prefix CHECK-8
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/ACE81AFA6627B4CEF2B456FB6E1252925674AF7E.bc | FileCheck %s --check-prefix CHECK-8
 // CHECK-8: <BLOCKINFO_BLOCK/>
 // CHECK-8-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-8-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-8-NEXT: </VersionBlock>
-// CHECK-8-NEXT: <RecordBlock NumWords=24 BlockCodeSize=4>
-// CHECK-8-NEXT:   <USR abbrevid=4 op0=20 op1=100 op2=26 op3=180 op4=163 op5=211 op6=99 op7=153 op8=149 op9=74 op10=205 op11=226 op12=156 op13=122 op14=136 op15=51 op16=3 op17=43 op18=244 op19=4 op20=114/>
-// CHECK-8-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'Y'
-// CHECK-8-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-8-NEXT:     <USR abbrevid=4 op0=20 op1=202 op2=124 op3=121 op4=53 op5=115 op6=11 op7=94 op8=172 op9=210 op10=95 op11=8 op12=14 op13=156 op14=131 op15=250 op16=8 op17=124 op18=205 op19=199 op20=94/>
-// CHECK-8-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'X'
-// CHECK-8-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-8-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-8-NEXT:   </ReferenceBlock>
-// CHECK-8-NEXT:   <DefLocation abbrevid=6 op0=39 op1=4/> blob data = '{{.*}}'
-// CHECK-8-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-8-NEXT: <RecordBlock NumWords=33 BlockCodeSize=4>
+// CHECK-8-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-8-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'A'
+// CHECK-8-NEXT:   <DefLocation abbrevid=6 op0=15 op1=4/> blob data = '{{.*}}'
+// CHECK-8-NEXT:   <TagType abbrevid=8 op0=2/>
+// CHECK-8-NEXT:   <MemberTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-8-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-8-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-8-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-8-NEXT:     </ReferenceBlock>
+// CHECK-8-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'X'
+// CHECK-8-NEXT:     <Access abbrevid=5 op0=3/>
+// CHECK-8-NEXT:   </MemberTypeBlock>
+// CHECK-8-NEXT:   <MemberTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-8-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-8-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-8-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-8-NEXT:     </ReferenceBlock>
+// CHECK-8-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'Y'
+// CHECK-8-NEXT:     <Access abbrevid=5 op0=3/>
+// CHECK-8-NEXT:   </MemberTypeBlock>
 // CHECK-8-NEXT: </RecordBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/FC07BD34D5E77782C263FA944447929EA8753740.bc | FileCheck %s --check-prefix CHECK-9
-// CHECK-9: <BLOCKINFO_BLOCK/>
-// CHECK-9-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-9-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-9-NEXT: </VersionBlock>
-// CHECK-9-NEXT: <EnumBlock NumWords=16 BlockCodeSize=4>
-// CHECK-9-NEXT:   <USR abbrevid=4 op0=20 op1=252 op2=7 op3=189 op4=52 op5=213 op6=231 op7=119 op8=130 op9=194 op10=99 op11=250 op12=148 op13=68 op14=71 op15=146 op16=158 op17=168 op18=117 op19=55 op20=64/>
-// CHECK-9-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'B'
-// CHECK-9-NEXT:   <DefLocation abbrevid=6 op0=17 op1=4/> blob data = '{{.*}}'
-// CHECK-9-NEXT:   <Member abbrevid=8 op0=1/> blob data = 'X'
-// CHECK-9-NEXT:   <Member abbrevid=8 op0=1/> blob data = 'Y'
-// CHECK-9-NEXT: </EnumBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/0921737541208B8FA9BB42B60F78AC1D779AA054.bc | FileCheck %s --check-prefix CHECK-10
-// CHECK-10: <BLOCKINFO_BLOCK/>
-// CHECK-10-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-10-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-10-NEXT: </VersionBlock>
-// CHECK-10-NEXT: <RecordBlock NumWords=12 BlockCodeSize=4>
-// CHECK-10-NEXT:   <USR abbrevid=4 op0=20 op1=9 op2=33 op3=115 op4=117 op5=65 op6=32 op7=139 op8=143 op9=169 op10=187 op11=66 op12=182 op13=15 op14=120 op15=172 op16=29 op17=119 op18=154 op19=160 op20=84/>
-// CHECK-10-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'D'
-// CHECK-10-NEXT:   <DefLocation abbrevid=6 op0=23 op1=4/> blob data = '{{.*}}'
-// CHECK-10-NEXT:   <TagType abbrevid=8 op0=3/>
-// CHECK-10-NEXT: </RecordBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/E3B54702FABFF4037025BA194FC27C47006330B5.bc | FileCheck %s --check-prefix CHECK-11
-// CHECK-11: <BLOCKINFO_BLOCK/>
-// CHECK-11-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-11-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-11-NEXT: </VersionBlock>
-// CHECK-11-NEXT: <RecordBlock NumWords=37 BlockCodeSize=4>
-// CHECK-11-NEXT:   <USR abbrevid=4 op0=20 op1=227 op2=181 op3=71 op4=2 op5=250 op6=191 op7=244 op8=3 op9=112 op10=37 op11=186 op12=25 op13=79 op14=194 op15=124 op16=71 op17=0 op18=99 op19=48 op20=181/>
-// CHECK-11-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'F'
-// CHECK-11-NEXT:   <DefLocation abbrevid=6 op0=36 op1=4/> blob data = '{{.*}}'
-// CHECK-11-NEXT:   <TagType abbrevid=8 op0=3/>
-// CHECK-11-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-11-NEXT:     <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
-// CHECK-11-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
-// CHECK-11-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-11-NEXT:     <Field abbrevid=7 op0=2/>
-// CHECK-11-NEXT:   </ReferenceBlock>
-// CHECK-11-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-11-NEXT:     <USR abbrevid=4 op0=20 op1=9 op2=33 op3=115 op4=117 op5=65 op6=32 op7=139 op8=143 op9=169 op10=187 op11=66 op12=182 op13=15 op14=120 op15=172 op16=29 op17=119 op18=154 op19=160 op20=84/>
-// CHECK-11-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'D'
-// CHECK-11-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-11-NEXT:     <Field abbrevid=7 op0=3/>
-// CHECK-11-NEXT:   </ReferenceBlock>
-// CHECK-11-NEXT: </RecordBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/ACE81AFA6627B4CEF2B456FB6E1252925674AF7E.bc | FileCheck %s --check-prefix CHECK-12
-// CHECK-12: <BLOCKINFO_BLOCK/>
-// CHECK-12-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-12-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-12-NEXT: </VersionBlock>
-// CHECK-12-NEXT: <RecordBlock NumWords=33 BlockCodeSize=4>
-// CHECK-12-NEXT:   <USR abbrevid=4 op0=20 op1=172 op2=232 op3=26 op4=250 op5=102 op6=39 op7=180 op8=206 op9=242 op10=180 op11=86 op12=251 op13=110 op14=18 op15=82 op16=146 op17=86 op18=116 op19=175 op20=126/>
-// CHECK-12-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'A'
-// CHECK-12-NEXT:   <DefLocation abbrevid=6 op0=15 op1=4/> blob data = '{{.*}}'
-// CHECK-12-NEXT:   <TagType abbrevid=8 op0=2/>
-// CHECK-12-NEXT:   <MemberTypeBlock NumWords=8 BlockCodeSize=4>
-// CHECK-12-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-12-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
-// CHECK-12-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-12-NEXT:     </ReferenceBlock>
-// CHECK-12-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'X'
-// CHECK-12-NEXT:     <Access abbrevid=5 op0=3/>
-// CHECK-12-NEXT:   </MemberTypeBlock>
-// CHECK-12-NEXT:   <MemberTypeBlock NumWords=8 BlockCodeSize=4>
-// CHECK-12-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-12-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
-// CHECK-12-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-12-NEXT:     </ReferenceBlock>
-// CHECK-12-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'Y'
-// CHECK-12-NEXT:     <Access abbrevid=5 op0=3/>
-// CHECK-12-NEXT:   </MemberTypeBlock>
-// CHECK-12-NEXT: </RecordBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/1E3438A08BA22025C0B46289FF0686F92C8924C5.bc | FileCheck %s --check-prefix CHECK-13
-// CHECK-13: <BLOCKINFO_BLOCK/>
-// CHECK-13-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-13-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-13-NEXT: </VersionBlock>
-// CHECK-13-NEXT: <EnumBlock NumWords=16 BlockCodeSize=4>
-// CHECK-13-NEXT:   <USR abbrevid=4 op0=20 op1=30 op2=52 op3=56 op4=160 op5=139 op6=162 op7=32 op8=37 op9=192 op10=180 op11=98 op12=137 op13=255 op14=6 op15=134 op16=249 op17=44 op18=137 op19=36 op20=197/>
-// CHECK-13-NEXT:   <Name abbrevid=5 op0=2/> blob data = 'Bc'
-// CHECK-13-NEXT:   <DefLocation abbrevid=6 op0=19 op1=4/> blob data = '{{.*}}'
-// CHECK-13-NEXT:   <Scoped abbrevid=9 op0=1/>
-// CHECK-13-NEXT:   <Member abbrevid=8 op0=1/> blob data = 'A'
-// CHECK-13-NEXT:   <Member abbrevid=8 op0=1/> blob data = 'B'
-// CHECK-13-NEXT: </EnumBlock>

Modified: clang-tools-extra/trunk/test/clang-doc/mapper-comment.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/mapper-comment.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/mapper-comment.cpp (original)
+++ clang-tools-extra/trunk/test/clang-doc/mapper-comment.cpp Thu Aug  2 13:10:17 2018
@@ -27,46 +27,48 @@ void F(int I, int J);
 /// Bonus comment on definition
 void F(int I, int J) {}
 
-// RUN: clang-doc --dump-mapper --doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: clang-doc --dump-mapper --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
 
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/7574630614A535710E5A6ABCFFF98BCA2D06A4CA.bc | FileCheck %s --check-prefix CHECK-0
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/0000000000000000000000000000000000000000.bc | FileCheck %s --check-prefix CHECK-0
 // CHECK-0: <BLOCKINFO_BLOCK/>
 // CHECK-0-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-0-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-0-NEXT: </VersionBlock>
-// CHECK-0-NEXT: <FunctionBlock NumWords=70 BlockCodeSize=4>
-// CHECK-0-NEXT:   <USR abbrevid=4 op0=20 op1=117 op2=116 op3=99 op4=6 op5=20 op6=165 op7=53 op8=113 op9=14 op10=90 op11=106 op12=188 op13=255 op14=249 op15=139 op16=202 op17=45 op18=6 op19=164 op20=202/>
-// CHECK-0-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'F'
-// CHECK-0-NEXT:   <CommentBlock NumWords=28 BlockCodeSize=4>
-// CHECK-0-NEXT:     <Kind abbrevid=4 op0=11/> blob data = 'FullComment'
-// CHECK-0-NEXT:     <CommentBlock NumWords=21 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
-// CHECK-0-NEXT:       <CommentBlock NumWords=13 BlockCodeSize=4>
-// CHECK-0-NEXT:         <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
-// CHECK-0-NEXT:         <Text abbrevid=5 op0=28/> blob data = ' Bonus comment on definition'
+// CHECK-0-NEXT: <NamespaceBlock NumWords=73 BlockCodeSize=4>
+// CHECK-0-NEXT:   <FunctionBlock NumWords=70 BlockCodeSize=4>
+// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'F'
+// CHECK-0-NEXT:     <CommentBlock NumWords=28 BlockCodeSize=4>
+// CHECK-0-NEXT:       <Kind abbrevid=4 op0=11/> blob data = 'FullComment'
+// CHECK-0-NEXT:       <CommentBlock NumWords=21 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Kind abbrevid=4 op0=16/> blob data = 'ParagraphComment'
+// CHECK-0-NEXT:         <CommentBlock NumWords=13 BlockCodeSize=4>
+// CHECK-0-NEXT:           <Kind abbrevid=4 op0=11/> blob data = 'TextComment'
+// CHECK-0-NEXT:           <Text abbrevid=5 op0=28/> blob data = ' Bonus comment on definition'
+// CHECK-0-NEXT:         </CommentBlock>
 // CHECK-0-NEXT:       </CommentBlock>
 // CHECK-0-NEXT:     </CommentBlock>
-// CHECK-0-NEXT:   </CommentBlock>
-// CHECK-0-NEXT:   <DefLocation abbrevid=6 op0=28 op1=4/> blob data = '{{.*}}'
-// CHECK-0-NEXT:   <TypeBlock NumWords=6 BlockCodeSize=4>
-// CHECK-0-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Name abbrevid=5 op0=4/> blob data = 'void'
-// CHECK-0-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-0-NEXT:     </ReferenceBlock>
-// CHECK-0-NEXT:   </TypeBlock>
-// CHECK-0-NEXT:   <FieldTypeBlock NumWords=8 BlockCodeSize=4>
-// CHECK-0-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
-// CHECK-0-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-0-NEXT:     </ReferenceBlock>
-// CHECK-0-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'I'
-// CHECK-0-NEXT:   </FieldTypeBlock>
-// CHECK-0-NEXT:   <FieldTypeBlock NumWords=8 BlockCodeSize=4>
-// CHECK-0-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-0-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
-// CHECK-0-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-0-NEXT:     </ReferenceBlock>
-// CHECK-0-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'J'
-// CHECK-0-NEXT:   </FieldTypeBlock>
-// CHECK-0-NEXT: </FunctionBlock>
+// CHECK-0-NEXT:     <DefLocation abbrevid=6 op0=28 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:     </TypeBlock>
+// CHECK-0-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'I'
+// CHECK-0-NEXT:     </FieldTypeBlock>
+// CHECK-0-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'J'
+// CHECK-0-NEXT:     </FieldTypeBlock>
+// CHECK-0-NEXT:   </FunctionBlock>
+// CHECK-0-NEXT: </NamespaceBlock>

Added: clang-tools-extra/trunk/test/clang-doc/mapper-linkage.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/mapper-linkage.cpp?rev=338763&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/mapper-linkage.cpp (added)
+++ clang-tools-extra/trunk/test/clang-doc/mapper-linkage.cpp Thu Aug  2 13:10:17 2018
@@ -0,0 +1,402 @@
+// THIS IS A GENERATED TEST. DO NOT EDIT.
+// To regenerate, see clang-doc/gen_test.py docstring.
+//
+// REQUIRES: system-linux
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+
+void function(int x);
+
+inline int inlinedFunction(int x);
+
+int functionWithInnerClass(int x) {
+  class InnerClass { //NoLinkage
+  public:
+    int innerPublicMethod() { return 2; };
+  }; //end class
+  InnerClass temp;
+  return temp.innerPublicMethod();
+};
+
+inline int inlinedFunctionWithInnerClass(int x) {
+  class InnerClass { //VisibleNoLinkage
+  public:
+    int innerPublicMethod() { return 2; };
+  }; //end class
+  InnerClass temp;
+  return temp.innerPublicMethod();
+};
+
+class Class {
+public:
+  void publicMethod();
+  int publicField;
+
+protected:
+  void protectedMethod();
+  int protectedField;
+
+private:
+  void privateMethod();
+  int privateField;
+};
+
+namespace named {
+class NamedClass {
+public:
+  void namedPublicMethod();
+  int namedPublicField;
+
+protected:
+  void namedProtectedMethod();
+  int namedProtectedField;
+
+private:
+  void namedPrivateMethod();
+  int namedPrivateField;
+};
+
+void namedFunction();
+static void namedStaticFunction();
+inline void namedInlineFunction();
+} // namespace named
+
+static void staticFunction(int x); //Internal Linkage
+
+static int staticFunctionWithInnerClass(int x) {
+  class InnerClass { //NoLinkage
+  public:
+    int innerPublicMethod() { return 2; };
+  }; //end class
+  InnerClass temp;
+  return temp.innerPublicMethod();
+};
+
+namespace {
+class AnonClass {
+public:
+  void anonPublicMethod();
+  int anonPublicField;
+
+protected:
+  void anonProtectedMethod();
+  int anonProtectedField;
+
+private:
+  void anonPrivateMethod();
+  int anonPrivateField;
+};
+
+void anonFunction();
+static void anonStaticFunction();
+inline void anonInlineFunction();
+} // namespace
+
+// RUN: clang-doc --dump-mapper --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
+
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/C9B3B71ACDD84C5BB320D34E97677715CDB3EA32.bc | FileCheck %s --check-prefix CHECK-0
+// CHECK-0: <BLOCKINFO_BLOCK/>
+// CHECK-0-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-0-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-0-NEXT: </VersionBlock>
+// CHECK-0-NEXT: <RecordBlock NumWords=79 BlockCodeSize=4>
+// CHECK-0-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:   <FunctionBlock NumWords=71 BlockCodeSize=4>
+// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:     <Name abbrevid=5 op0=17/> blob data = 'innerPublicMethod'
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'InnerClass'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=17 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=29/> blob data = 'inlinedFunctionWithInnerClass'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=3/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-0-NEXT:     <DefLocation abbrevid=6 op0=26 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'InnerClass'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:     </TypeBlock>
+// CHECK-0-NEXT:   </FunctionBlock>
+// CHECK-0-NEXT: </RecordBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/8960B5C9247D6F5C532756E53A1AD1240FA2146F.bc | FileCheck %s --check-prefix CHECK-1
+// CHECK-1: <BLOCKINFO_BLOCK/>
+// CHECK-1-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-1-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-1-NEXT: </VersionBlock>
+// CHECK-1-NEXT: <NamespaceBlock NumWords=45 BlockCodeSize=4>
+// CHECK-1-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:   <FunctionBlock NumWords=37 BlockCodeSize=4>
+// CHECK-1-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:     <Name abbrevid=5 op0=19/> blob data = 'namedInlineFunction'
+// CHECK-1-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-1-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'named'
+// CHECK-1-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-1-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-1-NEXT:     </ReferenceBlock>
+// CHECK-1-NEXT:     <Location abbrevid=7 op0=63 op1=4/> blob data = '{{.*}}'
+// CHECK-1-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-1-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-1-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-1-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-1-NEXT:       </ReferenceBlock>
+// CHECK-1-NEXT:     </TypeBlock>
+// CHECK-1-NEXT:   </FunctionBlock>
+// CHECK-1-NEXT: </NamespaceBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/74A031CBE68C101F3E83F60ED17F20C11EC19D48.bc | FileCheck %s --check-prefix CHECK-2
+// CHECK-2: <BLOCKINFO_BLOCK/>
+// CHECK-2-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-2-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-2-NEXT: </VersionBlock>
+// CHECK-2-NEXT: <RecordBlock NumWords=78 BlockCodeSize=4>
+// CHECK-2-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-2-NEXT:   <FunctionBlock NumWords=70 BlockCodeSize=4>
+// CHECK-2-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-2-NEXT:     <Name abbrevid=5 op0=17/> blob data = 'innerPublicMethod'
+// CHECK-2-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-2-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-2-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'InnerClass'
+// CHECK-2-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-2-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-2-NEXT:     </ReferenceBlock>
+// CHECK-2-NEXT:     <ReferenceBlock NumWords=16 BlockCodeSize=4>
+// CHECK-2-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-2-NEXT:       <Name abbrevid=5 op0=28/> blob data = 'staticFunctionWithInnerClass'
+// CHECK-2-NEXT:       <RefType abbrevid=6 op0=3/>
+// CHECK-2-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-2-NEXT:     </ReferenceBlock>
+// CHECK-2-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-2-NEXT:     <DefLocation abbrevid=6 op0=71 op1=4/> blob data = '{{.*}}'
+// CHECK-2-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-2-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-2-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'InnerClass'
+// CHECK-2-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-2-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-2-NEXT:     </ReferenceBlock>
+// CHECK-2-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-2-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-2-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-2-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-2-NEXT:       </ReferenceBlock>
+// CHECK-2-NEXT:     </TypeBlock>
+// CHECK-2-NEXT:   </FunctionBlock>
+// CHECK-2-NEXT: </RecordBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/7CDD73DCD6CD72F7E5CE25502810A182C66C4B45.bc | FileCheck %s --check-prefix CHECK-3
+// CHECK-3: <BLOCKINFO_BLOCK/>
+// CHECK-3-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-3-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-3-NEXT: </VersionBlock>
+// CHECK-3-NEXT: <RecordBlock NumWords=57 BlockCodeSize=4>
+// CHECK-3-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:   <FunctionBlock NumWords=49 BlockCodeSize=4>
+// CHECK-3-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:     <Name abbrevid=5 op0=13/> blob data = 'privateMethod'
+// CHECK-3-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-3-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'Class'
+// CHECK-3-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-3-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-3-NEXT:     </ReferenceBlock>
+// CHECK-3-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-3-NEXT:     <Location abbrevid=7 op0=42 op1=4/> blob data = '{{.*}}'
+// CHECK-3-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-3-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'Class'
+// CHECK-3-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-3-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-3-NEXT:     </ReferenceBlock>
+// CHECK-3-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-3-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-3-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-3-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-3-NEXT:       </ReferenceBlock>
+// CHECK-3-NEXT:     </TypeBlock>
+// CHECK-3-NEXT:   </FunctionBlock>
+// CHECK-3-NEXT: </RecordBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/85427901413EC77C961019EBB3ADEF7B0BAAFE78.bc | FileCheck %s --check-prefix CHECK-4
+// CHECK-4: <BLOCKINFO_BLOCK/>
+// CHECK-4-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-4-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-4-NEXT: </VersionBlock>
+// CHECK-4-NEXT: <RecordBlock NumWords=77 BlockCodeSize=4>
+// CHECK-4-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-4-NEXT:   <FunctionBlock NumWords=69 BlockCodeSize=4>
+// CHECK-4-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-4-NEXT:     <Name abbrevid=5 op0=17/> blob data = 'innerPublicMethod'
+// CHECK-4-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-4-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-4-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'InnerClass'
+// CHECK-4-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-4-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-4-NEXT:     </ReferenceBlock>
+// CHECK-4-NEXT:     <ReferenceBlock NumWords=15 BlockCodeSize=4>
+// CHECK-4-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-4-NEXT:       <Name abbrevid=5 op0=22/> blob data = 'functionWithInnerClass'
+// CHECK-4-NEXT:       <RefType abbrevid=6 op0=3/>
+// CHECK-4-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-4-NEXT:     </ReferenceBlock>
+// CHECK-4-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-4-NEXT:     <DefLocation abbrevid=6 op0=17 op1=4/> blob data = '{{.*}}'
+// CHECK-4-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-4-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-4-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'InnerClass'
+// CHECK-4-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-4-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-4-NEXT:     </ReferenceBlock>
+// CHECK-4-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-4-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-4-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-4-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-4-NEXT:       </ReferenceBlock>
+// CHECK-4-NEXT:     </TypeBlock>
+// CHECK-4-NEXT:   </FunctionBlock>
+// CHECK-4-NEXT: </RecordBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/0000000000000000000000000000000000000000.bc | FileCheck %s --check-prefix CHECK-5
+// CHECK-5: <BLOCKINFO_BLOCK/>
+// CHECK-5-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-5-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-5-NEXT: </VersionBlock>
+// CHECK-5-NEXT: <NamespaceBlock NumWords=39 BlockCodeSize=4>
+// CHECK-5-NEXT:   <FunctionBlock NumWords=36 BlockCodeSize=4>
+// CHECK-5-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-5-NEXT:     <Name abbrevid=5 op0=28/> blob data = 'staticFunctionWithInnerClass'
+// CHECK-5-NEXT:     <DefLocation abbrevid=6 op0=68 op1=4/> blob data = '{{.*}}'
+// CHECK-5-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-5-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-5-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-5-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-5-NEXT:       </ReferenceBlock>
+// CHECK-5-NEXT:     </TypeBlock>
+// CHECK-5-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-5-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-5-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-5-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-5-NEXT:       </ReferenceBlock>
+// CHECK-5-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'x'
+// CHECK-5-NEXT:     </FieldTypeBlock>
+// CHECK-5-NEXT:   </FunctionBlock>
+// CHECK-5-NEXT: </NamespaceBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/4712C5FA37B298A25501D1033C619B65B0ECC449.bc | FileCheck %s --check-prefix CHECK-6
+// CHECK-6: <BLOCKINFO_BLOCK/>
+// CHECK-6-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-6-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-6-NEXT: </VersionBlock>
+// CHECK-6-NEXT: <RecordBlock NumWords=73 BlockCodeSize=4>
+// CHECK-6-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:   <FunctionBlock NumWords=65 BlockCodeSize=4>
+// CHECK-6-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:     <Name abbrevid=5 op0=18/> blob data = 'namedPrivateMethod'
+// CHECK-6-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-6-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'NamedClass'
+// CHECK-6-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-6-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-6-NEXT:     </ReferenceBlock>
+// CHECK-6-NEXT:     <ReferenceBlock NumWords=11 BlockCodeSize=4>
+// CHECK-6-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:       <Name abbrevid=5 op0=5/> blob data = 'named'
+// CHECK-6-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-6-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-6-NEXT:     </ReferenceBlock>
+// CHECK-6-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-6-NEXT:     <Location abbrevid=7 op0=57 op1=4/> blob data = '{{.*}}'
+// CHECK-6-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-6-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:       <Name abbrevid=5 op0=10/> blob data = 'NamedClass'
+// CHECK-6-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-6-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-6-NEXT:     </ReferenceBlock>
+// CHECK-6-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-6-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-6-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-6-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-6-NEXT:       </ReferenceBlock>
+// CHECK-6-NEXT:     </TypeBlock>
+// CHECK-6-NEXT:   </FunctionBlock>
+// CHECK-6-NEXT: </RecordBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/6E8FB72A89761E77020BFCEE9A9A6E64B15CC2A9.bc | FileCheck %s --check-prefix CHECK-7
+// CHECK-7: <BLOCKINFO_BLOCK/>
+// CHECK-7-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-7-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-7-NEXT: </VersionBlock>
+// CHECK-7-NEXT: <RecordBlock NumWords=69 BlockCodeSize=4>
+// CHECK-7-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:   <FunctionBlock NumWords=61 BlockCodeSize=4>
+// CHECK-7-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:     <Name abbrevid=5 op0=17/> blob data = 'anonPrivateMethod'
+// CHECK-7-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-7-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:       <Name abbrevid=5 op0=9/> blob data = 'AnonClass'
+// CHECK-7-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-7-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-7-NEXT:     </ReferenceBlock>
+// CHECK-7-NEXT:     <ReferenceBlock NumWords=7 BlockCodeSize=4>
+// CHECK-7-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-7-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-7-NEXT:     </ReferenceBlock>
+// CHECK-7-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-7-NEXT:     <Location abbrevid=7 op0=88 op1=4/> blob data = '{{.*}}'
+// CHECK-7-NEXT:     <ReferenceBlock NumWords=12 BlockCodeSize=4>
+// CHECK-7-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:       <Name abbrevid=5 op0=9/> blob data = 'AnonClass'
+// CHECK-7-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-7-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-7-NEXT:     </ReferenceBlock>
+// CHECK-7-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-7-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-7-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-7-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-7-NEXT:       </ReferenceBlock>
+// CHECK-7-NEXT:     </TypeBlock>
+// CHECK-7-NEXT:   </FunctionBlock>
+// CHECK-7-NEXT: </RecordBlock>
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/83CC52D32583E0771710A7742DE81C839E953AC8.bc | FileCheck %s --check-prefix CHECK-8
+// CHECK-8: <BLOCKINFO_BLOCK/>
+// CHECK-8-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-8-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-8-NEXT: </VersionBlock>
+// CHECK-8-NEXT: <NamespaceBlock NumWords=41 BlockCodeSize=4>
+// CHECK-8-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-8-NEXT:   <FunctionBlock NumWords=33 BlockCodeSize=4>
+// CHECK-8-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-8-NEXT:     <Name abbrevid=5 op0=18/> blob data = 'anonInlineFunction'
+// CHECK-8-NEXT:     <ReferenceBlock NumWords=7 BlockCodeSize=4>
+// CHECK-8-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-8-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-8-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-8-NEXT:     </ReferenceBlock>
+// CHECK-8-NEXT:     <Location abbrevid=7 op0=94 op1=4/> blob data = '{{.*}}'
+// CHECK-8-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-8-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-8-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-8-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-8-NEXT:       </ReferenceBlock>
+// CHECK-8-NEXT:     </TypeBlock>
+// CHECK-8-NEXT:   </FunctionBlock>
+// CHECK-8-NEXT: </NamespaceBlock>

Added: clang-tools-extra/trunk/test/clang-doc/mapper-module.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/mapper-module.cpp?rev=338763&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/mapper-module.cpp (added)
+++ clang-tools-extra/trunk/test/clang-doc/mapper-module.cpp Thu Aug  2 13:10:17 2018
@@ -0,0 +1,51 @@
+// THIS IS A GENERATED TEST. DO NOT EDIT.
+// To regenerate, see clang-doc/gen_test.py docstring.
+//
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+
+export module M;
+
+int moduleFunction(int x); // ModuleLinkage
+
+static int staticModuleFunction(int x); // ModuleInternalLinkage
+
+export double exportedModuleFunction(double y, int z); // ExternalLinkage
+
+// RUN: clang-doc --dump-mapper --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
+
+
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/0000000000000000000000000000000000000000.bc | FileCheck %s --check-prefix CHECK-0
+// CHECK-0: <BLOCKINFO_BLOCK/>
+// CHECK-0-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
+// CHECK-0-NEXT:   <Version abbrevid=4 op0=2/>
+// CHECK-0-NEXT: </VersionBlock>
+// CHECK-0-NEXT: <NamespaceBlock NumWords=50 BlockCodeSize=4>
+// CHECK-0-NEXT:   <FunctionBlock NumWords=47 BlockCodeSize=4>
+// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:     <Name abbrevid=5 op0=22/> blob data = 'exportedModuleFunction'
+// CHECK-0-NEXT:     <Location abbrevid=7 op0=15 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <TypeBlock NumWords=7 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=4 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=6/> blob data = 'double'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:     </TypeBlock>
+// CHECK-0-NEXT:     <FieldTypeBlock NumWords=9 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=4 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=6/> blob data = 'double'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'y'
+// CHECK-0-NEXT:     </FieldTypeBlock>
+// CHECK-0-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'z'
+// CHECK-0-NEXT:     </FieldTypeBlock>
+// CHECK-0-NEXT:   </FunctionBlock>
+// CHECK-0-NEXT: </NamespaceBlock>

Modified: clang-tools-extra/trunk/test/clang-doc/mapper-namespace.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/mapper-namespace.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/mapper-namespace.cpp (original)
+++ clang-tools-extra/trunk/test/clang-doc/mapper-namespace.cpp Thu Aug  2 13:10:17 2018
@@ -25,114 +25,70 @@ E func(int i) { return X; }
 }  // namespace B
 }  // namespace A
 
-// RUN: clang-doc --dump-mapper --doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: clang-doc --dump-mapper --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
 
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/E9ABF7E7E2425B626723D41E76E4BC7E7A5BD775.bc | FileCheck %s --check-prefix CHECK-0
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/8D042EFFC98B373450BC6B5B90A330C25A150E9C.bc | FileCheck %s --check-prefix CHECK-0
 // CHECK-0: <BLOCKINFO_BLOCK/>
 // CHECK-0-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-0-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-0-NEXT: </VersionBlock>
-// CHECK-0-NEXT: <EnumBlock NumWords=38 BlockCodeSize=4>
-// CHECK-0-NEXT:   <USR abbrevid=4 op0=20 op1=233 op2=171 op3=247 op4=231 op5=226 op6=66 op7=91 op8=98 op9=103 op10=35 op11=212 op12=30 op13=118 op14=228 op15=188 op16=126 op17=122 op18=91 op19=215 op20=117/>
-// CHECK-0-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'E'
-// CHECK-0-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1=226 op2=26 op3=247 op4=158 op5=42 op6=157 op7=2 op8=85 op9=75 op10=160 op11=144 op12=209 op13=13 op14=243 op15=159 op16=226 op17=115 op18=245 op19=205 op20=181/>
-// CHECK-0-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'B'
-// CHECK-0-NEXT:     <RefType abbrevid=6 op0=1/>
-// CHECK-0-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-0-NEXT:   </ReferenceBlock>
-// CHECK-0-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1=141 op2=4 op3=46 op4=255 op5=201 op6=139 op7=55 op8=52 op9=80 op10=188 op11=107 op12=91 op13=144 op14=163 op15=48 op16=194 op17=90 op18=21 op19=14 op20=156/>
-// CHECK-0-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'A'
-// CHECK-0-NEXT:     <RefType abbrevid=6 op0=1/>
-// CHECK-0-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-0-NEXT:   </ReferenceBlock>
-// CHECK-0-NEXT:   <DefLocation abbrevid=6 op0=21 op1=4/> blob data = '{{.*}}'
-// CHECK-0-NEXT:   <Member abbrevid=8 op0=1/> blob data = 'X'
-// CHECK-0-NEXT: </EnumBlock>
+// CHECK-0-NEXT: <NamespaceBlock NumWords=40 BlockCodeSize=4>
+// CHECK-0-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:   <FunctionBlock NumWords=32 BlockCodeSize=4>
+// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'f'
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'A'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <DefLocation abbrevid=6 op0=17 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:     </TypeBlock>
+// CHECK-0-NEXT:   </FunctionBlock>
+// CHECK-0-NEXT: </NamespaceBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/39D3C95A5F7CE2BA4937BD7B01BAE09EBC2AD8AC.bc | FileCheck %s --check-prefix CHECK-1
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/E21AF79E2A9D02554BA090D10DF39FE273F5CDB5.bc | FileCheck %s --check-prefix CHECK-1
 // CHECK-1: <BLOCKINFO_BLOCK/>
 // CHECK-1-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-1-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-1-NEXT: </VersionBlock>
-// CHECK-1-NEXT: <FunctionBlock NumWords=32 BlockCodeSize=4>
-// CHECK-1-NEXT:   <USR abbrevid=4 op0=20 op1=57 op2=211 op3=201 op4=90 op5=95 op6=124 op7=226 op8=186 op9=73 op10=55 op11=189 op12=123 op13=1 op14=186 op15=224 op16=158 op17=188 op18=42 op19=216 op20=172/>
-// CHECK-1-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'f'
-// CHECK-1-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-1-NEXT:     <USR abbrevid=4 op0=20 op1=141 op2=4 op3=46 op4=255 op5=201 op6=139 op7=55 op8=52 op9=80 op10=188 op11=107 op12=91 op13=144 op14=163 op15=48 op16=194 op17=90 op18=21 op19=14 op20=156/>
-// CHECK-1-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'A'
-// CHECK-1-NEXT:     <RefType abbrevid=6 op0=1/>
-// CHECK-1-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-1-NEXT:   </ReferenceBlock>
-// CHECK-1-NEXT:   <DefLocation abbrevid=6 op0=17 op1=4/> blob data = '{{.*}}'
-// CHECK-1-NEXT:   <TypeBlock NumWords=6 BlockCodeSize=4>
-// CHECK-1-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-1-NEXT:       <Name abbrevid=5 op0=4/> blob data = 'void'
-// CHECK-1-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-1-NEXT: <NamespaceBlock NumWords=64 BlockCodeSize=4>
+// CHECK-1-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:   <FunctionBlock NumWords=56 BlockCodeSize=4>
+// CHECK-1-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:     <Name abbrevid=5 op0=4/> blob data = 'func'
+// CHECK-1-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-1-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'B'
+// CHECK-1-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-1-NEXT:       <Field abbrevid=7 op0=1/>
 // CHECK-1-NEXT:     </ReferenceBlock>
-// CHECK-1-NEXT:   </TypeBlock>
-// CHECK-1-NEXT: </FunctionBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/9A82CB33ED0FDF81EE383D31CD0957D153C5E840.bc | FileCheck %s --check-prefix CHECK-2
-// CHECK-2: <BLOCKINFO_BLOCK/>
-// CHECK-2-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-2-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-2-NEXT: </VersionBlock>
-// CHECK-2-NEXT: <FunctionBlock NumWords=56 BlockCodeSize=4>
-// CHECK-2-NEXT:   <USR abbrevid=4 op0=20 op1=154 op2=130 op3=203 op4=51 op5=237 op6=15 op7=223 op8=129 op9=238 op10=56 op11=61 op12=49 op13=205 op14=9 op15=87 op16=209 op17=83 op18=197 op19=232 op20=64/>
-// CHECK-2-NEXT:   <Name abbrevid=5 op0=4/> blob data = 'func'
-// CHECK-2-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-2-NEXT:     <USR abbrevid=4 op0=20 op1=226 op2=26 op3=247 op4=158 op5=42 op6=157 op7=2 op8=85 op9=75 op10=160 op11=144 op12=209 op13=13 op14=243 op15=159 op16=226 op17=115 op18=245 op19=205 op20=181/>
-// CHECK-2-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'B'
-// CHECK-2-NEXT:     <RefType abbrevid=6 op0=1/>
-// CHECK-2-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-2-NEXT:   </ReferenceBlock>
-// CHECK-2-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-2-NEXT:     <USR abbrevid=4 op0=20 op1=141 op2=4 op3=46 op4=255 op5=201 op6=139 op7=55 op8=52 op9=80 op10=188 op11=107 op12=91 op13=144 op14=163 op15=48 op16=194 op17=90 op18=21 op19=14 op20=156/>
-// CHECK-2-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'A'
-// CHECK-2-NEXT:     <RefType abbrevid=6 op0=1/>
-// CHECK-2-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-2-NEXT:   </ReferenceBlock>
-// CHECK-2-NEXT:   <DefLocation abbrevid=6 op0=23 op1=4/> blob data = '{{.*}}'
-// CHECK-2-NEXT:   <TypeBlock NumWords=8 BlockCodeSize=4>
-// CHECK-2-NEXT:     <ReferenceBlock NumWords=5 BlockCodeSize=4>
-// CHECK-2-NEXT:       <Name abbrevid=5 op0=12/> blob data = 'enum A::B::E'
-// CHECK-2-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-2-NEXT:     </ReferenceBlock>
-// CHECK-2-NEXT:   </TypeBlock>
-// CHECK-2-NEXT:   <FieldTypeBlock NumWords=8 BlockCodeSize=4>
-// CHECK-2-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-2-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
-// CHECK-2-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-2-NEXT:     </ReferenceBlock>
-// CHECK-2-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'i'
-// CHECK-2-NEXT:   </FieldTypeBlock>
-// CHECK-2-NEXT: </FunctionBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/8D042EFFC98B373450BC6B5B90A330C25A150E9C.bc | FileCheck %s --check-prefix CHECK-3
-// CHECK-3: <BLOCKINFO_BLOCK/>
-// CHECK-3-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-3-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-3-NEXT: </VersionBlock>
-// CHECK-3-NEXT: <NamespaceBlock NumWords=9 BlockCodeSize=4>
-// CHECK-3-NEXT:   <USR abbrevid=4 op0=20 op1=141 op2=4 op3=46 op4=255 op5=201 op6=139 op7=55 op8=52 op9=80 op10=188 op11=107 op12=91 op13=144 op14=163 op15=48 op16=194 op17=90 op18=21 op19=14 op20=156/>
-// CHECK-3-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'A'
-// CHECK-3-NEXT: </NamespaceBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/E21AF79E2A9D02554BA090D10DF39FE273F5CDB5.bc | FileCheck %s --check-prefix CHECK-4
-// CHECK-4: <BLOCKINFO_BLOCK/>
-// CHECK-4-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-4-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-4-NEXT: </VersionBlock>
-// CHECK-4-NEXT: <NamespaceBlock NumWords=21 BlockCodeSize=4>
-// CHECK-4-NEXT:   <USR abbrevid=4 op0=20 op1=226 op2=26 op3=247 op4=158 op5=42 op6=157 op7=2 op8=85 op9=75 op10=160 op11=144 op12=209 op13=13 op14=243 op15=159 op16=226 op17=115 op18=245 op19=205 op20=181/>
-// CHECK-4-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'B'
-// CHECK-4-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-4-NEXT:     <USR abbrevid=4 op0=20 op1=141 op2=4 op3=46 op4=255 op5=201 op6=139 op7=55 op8=52 op9=80 op10=188 op11=107 op12=91 op13=144 op14=163 op15=48 op16=194 op17=90 op18=21 op19=14 op20=156/>
-// CHECK-4-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'A'
-// CHECK-4-NEXT:     <RefType abbrevid=6 op0=1/>
-// CHECK-4-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-4-NEXT:   </ReferenceBlock>
-// CHECK-4-NEXT: </NamespaceBlock>
+// CHECK-1-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-1-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-1-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'A'
+// CHECK-1-NEXT:       <RefType abbrevid=6 op0=1/>
+// CHECK-1-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-1-NEXT:     </ReferenceBlock>
+// CHECK-1-NEXT:     <DefLocation abbrevid=6 op0=23 op1=4/> blob data = '{{.*}}'
+// CHECK-1-NEXT:     <TypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-1-NEXT:       <ReferenceBlock NumWords=5 BlockCodeSize=4>
+// CHECK-1-NEXT:         <Name abbrevid=5 op0=12/> blob data = 'enum A::B::E'
+// CHECK-1-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-1-NEXT:       </ReferenceBlock>
+// CHECK-1-NEXT:     </TypeBlock>
+// CHECK-1-NEXT:     <FieldTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-1-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-1-NEXT:         <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-1-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-1-NEXT:       </ReferenceBlock>
+// CHECK-1-NEXT:       <Name abbrevid=4 op0=1/> blob data = 'i'
+// CHECK-1-NEXT:     </FieldTypeBlock>
+// CHECK-1-NEXT:   </FunctionBlock>
+// CHECK-1-NEXT: </NamespaceBlock>

Modified: clang-tools-extra/trunk/test/clang-doc/mapper-record.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/mapper-record.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/mapper-record.cpp (original)
+++ clang-tools-extra/trunk/test/clang-doc/mapper-record.cpp Thu Aug  2 13:10:17 2018
@@ -39,7 +39,7 @@ class X {
   class Y {};
 };
 
-// RUN: clang-doc --dump-mapper --doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: clang-doc --dump-mapper --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
 
 
 // RUN: llvm-bcanalyzer --dump %t/docs/bc/289584A8E0FF4178A794622A547AA622503967A1.bc | FileCheck %s --check-prefix CHECK-0
@@ -47,11 +47,32 @@ class X {
 // CHECK-0-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-0-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-0-NEXT: </VersionBlock>
-// CHECK-0-NEXT: <RecordBlock NumWords=12 BlockCodeSize=4>
-// CHECK-0-NEXT:   <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
-// CHECK-0-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'E'
-// CHECK-0-NEXT:   <DefLocation abbrevid=6 op0=25 op1=4/> blob data = '{{.*}}'
-// CHECK-0-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-0-NEXT: <RecordBlock NumWords=55 BlockCodeSize=4>
+// CHECK-0-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:   <FunctionBlock NumWords=47 BlockCodeSize=4>
+// CHECK-0-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:     <Name abbrevid=5 op0=15/> blob data = 'ProtectedMethod'
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'E'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=1/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <IsMethod abbrevid=9 op0=1/>
+// CHECK-0-NEXT:     <DefLocation abbrevid=6 op0=34 op1=4/> blob data = '{{.*}}'
+// CHECK-0-NEXT:     <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-0-NEXT:       <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-0-NEXT:       <Name abbrevid=5 op0=1/> blob data = 'E'
+// CHECK-0-NEXT:       <RefType abbrevid=6 op0=2/>
+// CHECK-0-NEXT:       <Field abbrevid=7 op0=2/>
+// CHECK-0-NEXT:     </ReferenceBlock>
+// CHECK-0-NEXT:     <TypeBlock NumWords=6 BlockCodeSize=4>
+// CHECK-0-NEXT:       <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-0-NEXT:         <Name abbrevid=5 op0=4/> blob data = 'void'
+// CHECK-0-NEXT:         <Field abbrevid=7 op0=4/>
+// CHECK-0-NEXT:       </ReferenceBlock>
+// CHECK-0-NEXT:     </TypeBlock>
+// CHECK-0-NEXT:   </FunctionBlock>
 // CHECK-0-NEXT: </RecordBlock>
 
 // RUN: llvm-bcanalyzer --dump %t/docs/bc/3FB542274573CAEAD54CEBFFCAEE3D77FB9713D8.bc | FileCheck %s --check-prefix CHECK-1
@@ -60,10 +81,10 @@ class X {
 // CHECK-1-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-1-NEXT: </VersionBlock>
 // CHECK-1-NEXT: <RecordBlock NumWords=24 BlockCodeSize=4>
-// CHECK-1-NEXT:   <USR abbrevid=4 op0=20 op1=63 op2=181 op3=66 op4=39 op5=69 op6=115 op7=202 op8=234 op9=213 op10=76 op11=235 op12=255 op13=202 op14=238 op15=61 op16=119 op17=251 op18=151 op19=19 op20=216/>
+// CHECK-1-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
 // CHECK-1-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'I'
 // CHECK-1-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-1-NEXT:     <USR abbrevid=4 op0=20 op1=182 op2=172 op3=76 op4=92 op5=159 op6=46 op7=163 op8=242 op9=179 op10=236 op11=225 op12=163 op13=61 op14=52 op15=159 op16=78 op17=229 op18=2 op19=178 op20=78/>
+// CHECK-1-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
 // CHECK-1-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'H'
 // CHECK-1-NEXT:     <RefType abbrevid=6 op0=3/>
 // CHECK-1-NEXT:     <Field abbrevid=7 op0=1/>
@@ -72,246 +93,128 @@ class X {
 // CHECK-1-NEXT:   <TagType abbrevid=8 op0=3/>
 // CHECK-1-NEXT: </RecordBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/5093D428CDC62096A67547BA52566E4FB9404EEE.bc | FileCheck %s --check-prefix CHECK-2
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/CA7C7935730B5EACD25F080E9C83FA087CCDC75E.bc | FileCheck %s --check-prefix CHECK-2
 // CHECK-2: <BLOCKINFO_BLOCK/>
 // CHECK-2-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-2-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-2-NEXT: </VersionBlock>
-// CHECK-2-NEXT: <FunctionBlock NumWords=47 BlockCodeSize=4>
-// CHECK-2-NEXT:   <USR abbrevid=4 op0=20 op1=80 op2=147 op3=212 op4=40 op5=205 op6=198 op7=32 op8=150 op9=166 op10=117 op11=71 op12=186 op13=82 op14=86 op15=110 op16=79 op17=185 op18=64 op19=78 op20=238/>
-// CHECK-2-NEXT:   <Name abbrevid=5 op0=15/> blob data = 'ProtectedMethod'
-// CHECK-2-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-2-NEXT:     <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
-// CHECK-2-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
-// CHECK-2-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-2-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-2-NEXT:   </ReferenceBlock>
-// CHECK-2-NEXT:   <IsMethod abbrevid=9 op0=1/>
-// CHECK-2-NEXT:   <DefLocation abbrevid=6 op0=34 op1=4/> blob data = '{{.*}}'
-// CHECK-2-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-2-NEXT:     <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
-// CHECK-2-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
-// CHECK-2-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-2-NEXT:     <Field abbrevid=7 op0=2/>
-// CHECK-2-NEXT:   </ReferenceBlock>
-// CHECK-2-NEXT:   <TypeBlock NumWords=6 BlockCodeSize=4>
-// CHECK-2-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-2-NEXT:       <Name abbrevid=5 op0=4/> blob data = 'void'
-// CHECK-2-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-2-NEXT:     </ReferenceBlock>
-// CHECK-2-NEXT:   </TypeBlock>
-// CHECK-2-NEXT: </FunctionBlock>
+// CHECK-2-NEXT: <RecordBlock NumWords=12 BlockCodeSize=4>
+// CHECK-2-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-2-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'X'
+// CHECK-2-NEXT:   <DefLocation abbrevid=6 op0=38 op1=4/> blob data = '{{.*}}'
+// CHECK-2-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-2-NEXT: </RecordBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/CA7C7935730B5EACD25F080E9C83FA087CCDC75E.bc | FileCheck %s --check-prefix CHECK-3
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/06B5F6A19BA9F6A832E127C9968282B94619B210.bc | FileCheck %s --check-prefix CHECK-3
 // CHECK-3: <BLOCKINFO_BLOCK/>
 // CHECK-3-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-3-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-3-NEXT: </VersionBlock>
-// CHECK-3-NEXT: <RecordBlock NumWords=12 BlockCodeSize=4>
-// CHECK-3-NEXT:   <USR abbrevid=4 op0=20 op1=202 op2=124 op3=121 op4=53 op5=115 op6=11 op7=94 op8=172 op9=210 op10=95 op11=8 op12=14 op13=156 op14=131 op15=250 op16=8 op17=124 op18=205 op19=199 op20=94/>
-// CHECK-3-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'X'
-// CHECK-3-NEXT:   <DefLocation abbrevid=6 op0=38 op1=4/> blob data = '{{.*}}'
-// CHECK-3-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-3-NEXT: <RecordBlock NumWords=22 BlockCodeSize=4>
+// CHECK-3-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-3-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'C'
+// CHECK-3-NEXT:   <DefLocation abbrevid=6 op0=21 op1=4/> blob data = '{{.*}}'
+// CHECK-3-NEXT:   <MemberTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-3-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-3-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-3-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-3-NEXT:     </ReferenceBlock>
+// CHECK-3-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'i'
+// CHECK-3-NEXT:   </MemberTypeBlock>
 // CHECK-3-NEXT: </RecordBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/B6AC4C5C9F2EA3F2B3ECE1A33D349F4EE502B24E.bc | FileCheck %s --check-prefix CHECK-4
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/641AB4A3D36399954ACDE29C7A8833032BF40472.bc | FileCheck %s --check-prefix CHECK-4
 // CHECK-4: <BLOCKINFO_BLOCK/>
 // CHECK-4-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-4-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-4-NEXT: </VersionBlock>
-// CHECK-4-NEXT: <FunctionBlock NumWords=20 BlockCodeSize=4>
-// CHECK-4-NEXT:   <USR abbrevid=4 op0=20 op1=182 op2=172 op3=76 op4=92 op5=159 op6=46 op7=163 op8=242 op9=179 op10=236 op11=225 op12=163 op13=61 op14=52 op15=159 op16=78 op17=229 op18=2 op19=178 op20=78/>
-// CHECK-4-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'H'
-// CHECK-4-NEXT:   <DefLocation abbrevid=6 op0=11 op1=4/> blob data = '{{.*}}'
-// CHECK-4-NEXT:   <TypeBlock NumWords=6 BlockCodeSize=4>
-// CHECK-4-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-4-NEXT:       <Name abbrevid=5 op0=4/> blob data = 'void'
-// CHECK-4-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-4-NEXT:     </ReferenceBlock>
-// CHECK-4-NEXT:   </TypeBlock>
-// CHECK-4-NEXT: </FunctionBlock>
+// CHECK-4-NEXT: <RecordBlock NumWords=24 BlockCodeSize=4>
+// CHECK-4-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-4-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'Y'
+// CHECK-4-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
+// CHECK-4-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-4-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'X'
+// CHECK-4-NEXT:     <RefType abbrevid=6 op0=2/>
+// CHECK-4-NEXT:     <Field abbrevid=7 op0=1/>
+// CHECK-4-NEXT:   </ReferenceBlock>
+// CHECK-4-NEXT:   <DefLocation abbrevid=6 op0=39 op1=4/> blob data = '{{.*}}'
+// CHECK-4-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-4-NEXT: </RecordBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/06B5F6A19BA9F6A832E127C9968282B94619B210.bc | FileCheck %s --check-prefix CHECK-5
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/0000000000000000000000000000000000000000.bc | FileCheck %s --check-prefix CHECK-5
 // CHECK-5: <BLOCKINFO_BLOCK/>
 // CHECK-5-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-5-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-5-NEXT: </VersionBlock>
-// CHECK-5-NEXT: <RecordBlock NumWords=22 BlockCodeSize=4>
-// CHECK-5-NEXT:   <USR abbrevid=4 op0=20 op1=6 op2=181 op3=246 op4=161 op5=155 op6=169 op7=246 op8=168 op9=50 op10=225 op11=39 op12=201 op13=150 op14=130 op15=130 op16=185 op17=70 op18=25 op19=178 op20=16/>
-// CHECK-5-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'C'
-// CHECK-5-NEXT:   <DefLocation abbrevid=6 op0=21 op1=4/> blob data = '{{.*}}'
-// CHECK-5-NEXT:   <MemberTypeBlock NumWords=8 BlockCodeSize=4>
-// CHECK-5-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-5-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
-// CHECK-5-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-5-NEXT:     </ReferenceBlock>
-// CHECK-5-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'i'
-// CHECK-5-NEXT:   </MemberTypeBlock>
-// CHECK-5-NEXT: </RecordBlock>
+// CHECK-5-NEXT: <NamespaceBlock NumWords=19 BlockCodeSize=4>
+// CHECK-5-NEXT:   <EnumBlock NumWords=16 BlockCodeSize=4>
+// CHECK-5-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-5-NEXT:     <Name abbrevid=5 op0=2/> blob data = 'Bc'
+// CHECK-5-NEXT:     <DefLocation abbrevid=6 op0=19 op1=4/> blob data = '{{.*}}'
+// CHECK-5-NEXT:     <Scoped abbrevid=9 op0=1/>
+// CHECK-5-NEXT:     <Member abbrevid=8 op0=1/> blob data = 'A'
+// CHECK-5-NEXT:     <Member abbrevid=8 op0=1/> blob data = 'B'
+// CHECK-5-NEXT:   </EnumBlock>
+// CHECK-5-NEXT: </NamespaceBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/BD2BDEBD423F80BACCEA75DE6D6622D355FC2D17.bc | FileCheck %s --check-prefix CHECK-6
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/0921737541208B8FA9BB42B60F78AC1D779AA054.bc | FileCheck %s --check-prefix CHECK-6
 // CHECK-6: <BLOCKINFO_BLOCK/>
 // CHECK-6-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-6-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-6-NEXT: </VersionBlock>
-// CHECK-6-NEXT: <FunctionBlock NumWords=44 BlockCodeSize=4>
-// CHECK-6-NEXT:   <USR abbrevid=4 op0=20 op1=189 op2=43 op3=222 op4=189 op5=66 op6=63 op7=128 op8=186 op9=204 op10=234 op11=117 op12=222 op13=109 op14=102 op15=34 op16=211 op17=85 op18=252 op19=45 op20=23/>
-// CHECK-6-NEXT:   <Name abbrevid=5 op0=2/> blob data = '~E'
-// CHECK-6-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-6-NEXT:     <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
-// CHECK-6-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
-// CHECK-6-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-6-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-6-NEXT:   </ReferenceBlock>
-// CHECK-6-NEXT:   <IsMethod abbrevid=9 op0=1/>
-// CHECK-6-NEXT:   <DefLocation abbrevid=6 op0=28 op1=4/> blob data = '{{.*}}'
-// CHECK-6-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-6-NEXT:     <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
-// CHECK-6-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
-// CHECK-6-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-6-NEXT:     <Field abbrevid=7 op0=2/>
-// CHECK-6-NEXT:   </ReferenceBlock>
-// CHECK-6-NEXT:   <TypeBlock NumWords=6 BlockCodeSize=4>
-// CHECK-6-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-6-NEXT:       <Name abbrevid=5 op0=4/> blob data = 'void'
-// CHECK-6-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-6-NEXT:     </ReferenceBlock>
-// CHECK-6-NEXT:   </TypeBlock>
-// CHECK-6-NEXT: </FunctionBlock>
+// CHECK-6-NEXT: <RecordBlock NumWords=12 BlockCodeSize=4>
+// CHECK-6-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-6-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'D'
+// CHECK-6-NEXT:   <DefLocation abbrevid=6 op0=23 op1=4/> blob data = '{{.*}}'
+// CHECK-6-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-6-NEXT: </RecordBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/DEB4AC1CD9253CD9EF7FBE6BCAC506D77984ABD4.bc | FileCheck %s --check-prefix CHECK-7
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/E3B54702FABFF4037025BA194FC27C47006330B5.bc | FileCheck %s --check-prefix CHECK-7
 // CHECK-7: <BLOCKINFO_BLOCK/>
 // CHECK-7-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-7-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-7-NEXT: </VersionBlock>
-// CHECK-7-NEXT: <FunctionBlock NumWords=44 BlockCodeSize=4>
-// CHECK-7-NEXT:   <USR abbrevid=4 op0=20 op1=222 op2=180 op3=172 op4=28 op5=217 op6=37 op7=60 op8=217 op9=239 op10=127 op11=190 op12=107 op13=202 op14=197 op15=6 op16=215 op17=121 op18=132 op19=171 op20=212/>
-// CHECK-7-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'E'
+// CHECK-7-NEXT: <RecordBlock NumWords=37 BlockCodeSize=4>
+// CHECK-7-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'F'
+// CHECK-7-NEXT:   <DefLocation abbrevid=6 op0=36 op1=4/> blob data = '{{.*}}'
+// CHECK-7-NEXT:   <TagType abbrevid=8 op0=3/>
 // CHECK-7-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-7-NEXT:     <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
+// CHECK-7-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
 // CHECK-7-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
 // CHECK-7-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-7-NEXT:     <Field abbrevid=7 op0=1/>
+// CHECK-7-NEXT:     <Field abbrevid=7 op0=2/>
 // CHECK-7-NEXT:   </ReferenceBlock>
-// CHECK-7-NEXT:   <IsMethod abbrevid=9 op0=1/>
-// CHECK-7-NEXT:   <DefLocation abbrevid=6 op0=27 op1=4/> blob data = '{{.*}}'
 // CHECK-7-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-7-NEXT:     <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
-// CHECK-7-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
+// CHECK-7-NEXT:     <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-7-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'D'
 // CHECK-7-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-7-NEXT:     <Field abbrevid=7 op0=2/>
+// CHECK-7-NEXT:     <Field abbrevid=7 op0=3/>
 // CHECK-7-NEXT:   </ReferenceBlock>
-// CHECK-7-NEXT:   <TypeBlock NumWords=6 BlockCodeSize=4>
-// CHECK-7-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-7-NEXT:       <Name abbrevid=5 op0=4/> blob data = 'void'
-// CHECK-7-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-7-NEXT:     </ReferenceBlock>
-// CHECK-7-NEXT:   </TypeBlock>
-// CHECK-7-NEXT: </FunctionBlock>
+// CHECK-7-NEXT: </RecordBlock>
 
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/641AB4A3D36399954ACDE29C7A8833032BF40472.bc | FileCheck %s --check-prefix CHECK-8
+// RUN: llvm-bcanalyzer --dump %t/docs/bc/ACE81AFA6627B4CEF2B456FB6E1252925674AF7E.bc | FileCheck %s --check-prefix CHECK-8
 // CHECK-8: <BLOCKINFO_BLOCK/>
 // CHECK-8-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
 // CHECK-8-NEXT:   <Version abbrevid=4 op0=2/>
 // CHECK-8-NEXT: </VersionBlock>
-// CHECK-8-NEXT: <RecordBlock NumWords=24 BlockCodeSize=4>
-// CHECK-8-NEXT:   <USR abbrevid=4 op0=20 op1=100 op2=26 op3=180 op4=163 op5=211 op6=99 op7=153 op8=149 op9=74 op10=205 op11=226 op12=156 op13=122 op14=136 op15=51 op16=3 op17=43 op18=244 op19=4 op20=114/>
-// CHECK-8-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'Y'
-// CHECK-8-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-8-NEXT:     <USR abbrevid=4 op0=20 op1=202 op2=124 op3=121 op4=53 op5=115 op6=11 op7=94 op8=172 op9=210 op10=95 op11=8 op12=14 op13=156 op14=131 op15=250 op16=8 op17=124 op18=205 op19=199 op20=94/>
-// CHECK-8-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'X'
-// CHECK-8-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-8-NEXT:     <Field abbrevid=7 op0=1/>
-// CHECK-8-NEXT:   </ReferenceBlock>
-// CHECK-8-NEXT:   <DefLocation abbrevid=6 op0=39 op1=4/> blob data = '{{.*}}'
-// CHECK-8-NEXT:   <TagType abbrevid=8 op0=3/>
+// CHECK-8-NEXT: <RecordBlock NumWords=33 BlockCodeSize=4>
+// CHECK-8-NEXT:   <USR abbrevid=4 op0=20 op1={{[0-9]+}} op2={{[0-9]+}} op3={{[0-9]+}} op4={{[0-9]+}} op5={{[0-9]+}} op6={{[0-9]+}} op7={{[0-9]+}} op8={{[0-9]+}} op9={{[0-9]+}} op10={{[0-9]+}} op11={{[0-9]+}} op12={{[0-9]+}} op13={{[0-9]+}} op14={{[0-9]+}} op15={{[0-9]+}} op16={{[0-9]+}} op17={{[0-9]+}} op18={{[0-9]+}} op19={{[0-9]+}} op20={{[0-9]+}}/>
+// CHECK-8-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'A'
+// CHECK-8-NEXT:   <DefLocation abbrevid=6 op0=15 op1=4/> blob data = '{{.*}}'
+// CHECK-8-NEXT:   <TagType abbrevid=8 op0=2/>
+// CHECK-8-NEXT:   <MemberTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-8-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-8-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-8-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-8-NEXT:     </ReferenceBlock>
+// CHECK-8-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'X'
+// CHECK-8-NEXT:   </MemberTypeBlock>
+// CHECK-8-NEXT:   <MemberTypeBlock NumWords=8 BlockCodeSize=4>
+// CHECK-8-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
+// CHECK-8-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
+// CHECK-8-NEXT:       <Field abbrevid=7 op0=4/>
+// CHECK-8-NEXT:     </ReferenceBlock>
+// CHECK-8-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'Y'
+// CHECK-8-NEXT:   </MemberTypeBlock>
 // CHECK-8-NEXT: </RecordBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/FC07BD34D5E77782C263FA944447929EA8753740.bc | FileCheck %s --check-prefix CHECK-9
-// CHECK-9: <BLOCKINFO_BLOCK/>
-// CHECK-9-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-9-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-9-NEXT: </VersionBlock>
-// CHECK-9-NEXT: <EnumBlock NumWords=16 BlockCodeSize=4>
-// CHECK-9-NEXT:   <USR abbrevid=4 op0=20 op1=252 op2=7 op3=189 op4=52 op5=213 op6=231 op7=119 op8=130 op9=194 op10=99 op11=250 op12=148 op13=68 op14=71 op15=146 op16=158 op17=168 op18=117 op19=55 op20=64/>
-// CHECK-9-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'B'
-// CHECK-9-NEXT:   <DefLocation abbrevid=6 op0=17 op1=4/> blob data = '{{.*}}'
-// CHECK-9-NEXT:   <Member abbrevid=8 op0=1/> blob data = 'X'
-// CHECK-9-NEXT:   <Member abbrevid=8 op0=1/> blob data = 'Y'
-// CHECK-9-NEXT: </EnumBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/0921737541208B8FA9BB42B60F78AC1D779AA054.bc | FileCheck %s --check-prefix CHECK-10
-// CHECK-10: <BLOCKINFO_BLOCK/>
-// CHECK-10-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-10-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-10-NEXT: </VersionBlock>
-// CHECK-10-NEXT: <RecordBlock NumWords=12 BlockCodeSize=4>
-// CHECK-10-NEXT:   <USR abbrevid=4 op0=20 op1=9 op2=33 op3=115 op4=117 op5=65 op6=32 op7=139 op8=143 op9=169 op10=187 op11=66 op12=182 op13=15 op14=120 op15=172 op16=29 op17=119 op18=154 op19=160 op20=84/>
-// CHECK-10-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'D'
-// CHECK-10-NEXT:   <DefLocation abbrevid=6 op0=23 op1=4/> blob data = '{{.*}}'
-// CHECK-10-NEXT:   <TagType abbrevid=8 op0=3/>
-// CHECK-10-NEXT: </RecordBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/E3B54702FABFF4037025BA194FC27C47006330B5.bc | FileCheck %s --check-prefix CHECK-11
-// CHECK-11: <BLOCKINFO_BLOCK/>
-// CHECK-11-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-11-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-11-NEXT: </VersionBlock>
-// CHECK-11-NEXT: <RecordBlock NumWords=37 BlockCodeSize=4>
-// CHECK-11-NEXT:   <USR abbrevid=4 op0=20 op1=227 op2=181 op3=71 op4=2 op5=250 op6=191 op7=244 op8=3 op9=112 op10=37 op11=186 op12=25 op13=79 op14=194 op15=124 op16=71 op17=0 op18=99 op19=48 op20=181/>
-// CHECK-11-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'F'
-// CHECK-11-NEXT:   <DefLocation abbrevid=6 op0=36 op1=4/> blob data = '{{.*}}'
-// CHECK-11-NEXT:   <TagType abbrevid=8 op0=3/>
-// CHECK-11-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-11-NEXT:     <USR abbrevid=4 op0=20 op1=40 op2=149 op3=132 op4=168 op5=224 op6=255 op7=65 op8=120 op9=167 op10=148 op11=98 op12=42 op13=84 op14=122 op15=166 op16=34 op17=80 op18=57 op19=103 op20=161/>
-// CHECK-11-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'E'
-// CHECK-11-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-11-NEXT:     <Field abbrevid=7 op0=2/>
-// CHECK-11-NEXT:   </ReferenceBlock>
-// CHECK-11-NEXT:   <ReferenceBlock NumWords=10 BlockCodeSize=4>
-// CHECK-11-NEXT:     <USR abbrevid=4 op0=20 op1=9 op2=33 op3=115 op4=117 op5=65 op6=32 op7=139 op8=143 op9=169 op10=187 op11=66 op12=182 op13=15 op14=120 op15=172 op16=29 op17=119 op18=154 op19=160 op20=84/>
-// CHECK-11-NEXT:     <Name abbrevid=5 op0=1/> blob data = 'D'
-// CHECK-11-NEXT:     <RefType abbrevid=6 op0=2/>
-// CHECK-11-NEXT:     <Field abbrevid=7 op0=3/>
-// CHECK-11-NEXT:   </ReferenceBlock>
-// CHECK-11-NEXT: </RecordBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/ACE81AFA6627B4CEF2B456FB6E1252925674AF7E.bc | FileCheck %s --check-prefix CHECK-12
-// CHECK-12: <BLOCKINFO_BLOCK/>
-// CHECK-12-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-12-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-12-NEXT: </VersionBlock>
-// CHECK-12-NEXT: <RecordBlock NumWords=33 BlockCodeSize=4>
-// CHECK-12-NEXT:   <USR abbrevid=4 op0=20 op1=172 op2=232 op3=26 op4=250 op5=102 op6=39 op7=180 op8=206 op9=242 op10=180 op11=86 op12=251 op13=110 op14=18 op15=82 op16=146 op17=86 op18=116 op19=175 op20=126/>
-// CHECK-12-NEXT:   <Name abbrevid=5 op0=1/> blob data = 'A'
-// CHECK-12-NEXT:   <DefLocation abbrevid=6 op0=15 op1=4/> blob data = '{{.*}}'
-// CHECK-12-NEXT:   <TagType abbrevid=8 op0=2/>
-// CHECK-12-NEXT:   <MemberTypeBlock NumWords=8 BlockCodeSize=4>
-// CHECK-12-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-12-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
-// CHECK-12-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-12-NEXT:     </ReferenceBlock>
-// CHECK-12-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'X'
-// CHECK-12-NEXT:   </MemberTypeBlock>
-// CHECK-12-NEXT:   <MemberTypeBlock NumWords=8 BlockCodeSize=4>
-// CHECK-12-NEXT:     <ReferenceBlock NumWords=3 BlockCodeSize=4>
-// CHECK-12-NEXT:       <Name abbrevid=5 op0=3/> blob data = 'int'
-// CHECK-12-NEXT:       <Field abbrevid=7 op0=4/>
-// CHECK-12-NEXT:     </ReferenceBlock>
-// CHECK-12-NEXT:     <Name abbrevid=4 op0=1/> blob data = 'Y'
-// CHECK-12-NEXT:   </MemberTypeBlock>
-// CHECK-12-NEXT: </RecordBlock>
-
-// RUN: llvm-bcanalyzer --dump %t/docs/bc/1E3438A08BA22025C0B46289FF0686F92C8924C5.bc | FileCheck %s --check-prefix CHECK-13
-// CHECK-13: <BLOCKINFO_BLOCK/>
-// CHECK-13-NEXT: <VersionBlock NumWords=1 BlockCodeSize=4>
-// CHECK-13-NEXT:   <Version abbrevid=4 op0=2/>
-// CHECK-13-NEXT: </VersionBlock>
-// CHECK-13-NEXT: <EnumBlock NumWords=16 BlockCodeSize=4>
-// CHECK-13-NEXT:   <USR abbrevid=4 op0=20 op1=30 op2=52 op3=56 op4=160 op5=139 op6=162 op7=32 op8=37 op9=192 op10=180 op11=98 op12=137 op13=255 op14=6 op15=134 op16=249 op17=44 op18=137 op19=36 op20=197/>
-// CHECK-13-NEXT:   <Name abbrevid=5 op0=2/> blob data = 'Bc'
-// CHECK-13-NEXT:   <DefLocation abbrevid=6 op0=19 op1=4/> blob data = '{{.*}}'
-// CHECK-13-NEXT:   <Scoped abbrevid=9 op0=1/>
-// CHECK-13-NEXT:   <Member abbrevid=8 op0=1/> blob data = 'A'
-// CHECK-13-NEXT:   <Member abbrevid=8 op0=1/> blob data = 'B'
-// CHECK-13-NEXT: </EnumBlock>

Removed: clang-tools-extra/trunk/test/clang-doc/module.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/module.cpp?rev=338762&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/module.cpp (original)
+++ clang-tools-extra/trunk/test/clang-doc/module.cpp (removed)
@@ -1,61 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: echo "" > %t/compile_flags.txt
-// RUN: cp "%s" "%t/test.cpp"
-// RUN: clang-doc --extra-arg=-fmodules-ts --doxygen -p %t %t/test.cpp -output=%t/docs
-// RUN: cat %t/docs/moduleFunction.yaml | FileCheck %s --check-prefix=CHECK-A
-// RUN: cat %t/docs/staticModuleFunction.yaml | FileCheck %s --check-prefix=CHECK-B
-// RUN: cat %t/docs/exportedModuleFunction.yaml | FileCheck %s --check-prefix=CHECK-C
-
-export module M;
-
-int moduleFunction(int x); //ModuleLinkage
-// CHECK-A: ---
-// CHECK-A-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-A-NEXT: Name:            'moduleFunction'
-// CHECK-A-NEXT: Location:
-// CHECK-A-NEXT:   - LineNumber:      12
-// CHECK-A-NEXT:     Filename:        {{.*}}
-// CHECK-A-NEXT: Params:
-// CHECK-A-NEXT:   - Type:
-// CHECK-A-NEXT:       Name:            'int'
-// CHECK-A-NEXT:     Name:            'x'
-// CHECK-A-NEXT: ReturnType:
-// CHECK-A-NEXT:   Type:
-// CHECK-A-NEXT:     Name:            'int'
-// CHECK-A-NEXT: ...
-
-static int staticModuleFunction(int x); //ModuleInternalLinkage
-// CHECK-B: ---
-// CHECK-B-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-B-NEXT: Name:            'staticModuleFunction'
-// CHECK-B-NEXT: Location:
-// CHECK-B-NEXT:   - LineNumber:      28
-// CHECK-B-NEXT:     Filename:        {{.*}}
-// CHECK-B-NEXT: Params:
-// CHECK-B-NEXT:   - Type:
-// CHECK-B-NEXT:       Name:            'int'
-// CHECK-B-NEXT:     Name:            'x'
-// CHECK-B-NEXT: ReturnType:
-// CHECK-B-NEXT:   Type:
-// CHECK-B-NEXT:     Name:            'int'
-// CHECK-B-NEXT: ...
-
-export double exportedModuleFunction(double y, int z); //ExternalLinkage
-// CHECK-C: ---
-// CHECK-C-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-C-NEXT: Name:            'exportedModuleFunction'
-// CHECK-C-NEXT: Location:
-// CHECK-C-NEXT:   - LineNumber:      44
-// CHECK-C-NEXT:     Filename:        {{.*}}
-// CHECK-C-NEXT: Params:
-// CHECK-C-NEXT:   - Type:
-// CHECK-C-NEXT:       Name:            'double'
-// CHECK-C-NEXT:     Name:            'y'
-// CHECK-C-NEXT:   - Type:
-// CHECK-C-NEXT:       Name:            'int'
-// CHECK-C-NEXT:     Name:            'z'
-// CHECK-C-NEXT: ReturnType:
-// CHECK-C-NEXT:   Type:
-// CHECK-C-NEXT:     Name:            'double'
-// CHECK-C-NEXT: ...

Added: clang-tools-extra/trunk/test/clang-doc/public-comment.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/public-comment.cpp?rev=338763&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/public-comment.cpp (added)
+++ clang-tools-extra/trunk/test/clang-doc/public-comment.cpp Thu Aug  2 13:10:17 2018
@@ -0,0 +1,138 @@
+// THIS IS A GENERATED TEST. DO NOT EDIT.
+// To regenerate, see clang-doc/gen_test.py docstring.
+//
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+
+/// \brief Brief description.
+///
+/// Extended description that
+/// continues onto the next line.
+/// 
+/// <ul class="test">
+///   <li> Testing.
+/// </ul>
+///
+/// \verbatim
+/// The description continues.
+/// \endverbatim
+/// --
+/// \param [out] I is a parameter.
+/// \param J is a parameter.
+/// \return void
+void F(int I, int J);
+
+/// Bonus comment on definition
+void F(int I, int J) {}
+
+// RUN: clang-doc --format=yaml --doxygen --public --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
+
+
+// RUN: cat %t/docs/./GlobalNamespace.yaml | FileCheck %s --check-prefix CHECK-0
+// CHECK-0: ---
+// CHECK-0-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT: ChildFunctions:  
+// CHECK-0-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Name:            'F'
+// CHECK-0-NEXT:     Description:     
+// CHECK-0-NEXT:       - Kind:            'FullComment'
+// CHECK-0-NEXT:         Children:        
+// CHECK-0-NEXT:           - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:           - Kind:            'BlockCommandComment'
+// CHECK-0-NEXT:             Name:            'brief'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:                 Children:        
+// CHECK-0-NEXT:                   - Kind:            'TextComment'
+// CHECK-0-NEXT:                     Text:            ' Brief description.'
+// CHECK-0-NEXT:           - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:                 Text:            ' Extended description that'
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:                 Text:            ' continues onto the next line.'
+// CHECK-0-NEXT:           - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:               - Kind:            'HTMLStartTagComment'
+// CHECK-0-NEXT:                 Name:            'ul'
+// CHECK-0-NEXT:                 AttrKeys:        
+// CHECK-0-NEXT:                   - 'class'
+// CHECK-0-NEXT:                 AttrValues:      
+// CHECK-0-NEXT:                   - 'test'
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:               - Kind:            'HTMLStartTagComment'
+// CHECK-0-NEXT:                 Name:            'li'
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:                 Text:            ' Testing.'
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:               - Kind:            'HTMLEndTagComment'
+// CHECK-0-NEXT:                 Name:            'ul'
+// CHECK-0-NEXT:                 SelfClosing:     true
+// CHECK-0-NEXT:           - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:           - Kind:            'VerbatimBlockComment'
+// CHECK-0-NEXT:             Name:            'verbatim'
+// CHECK-0-NEXT:             CloseName:       'endverbatim'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'VerbatimBlockLineComment'
+// CHECK-0-NEXT:                 Text:            ' The description continues.'
+// CHECK-0-NEXT:           - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:                 Text:            ' --'
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:           - Kind:            'ParamCommandComment'
+// CHECK-0-NEXT:             Direction:       '[out]'
+// CHECK-0-NEXT:             ParamName:       'I'
+// CHECK-0-NEXT:             Explicit:        true
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:                 Children:        
+// CHECK-0-NEXT:                   - Kind:            'TextComment'
+// CHECK-0-NEXT:                     Text:            ' is a parameter.'
+// CHECK-0-NEXT:                   - Kind:            'TextComment'
+// CHECK-0-NEXT:           - Kind:            'ParamCommandComment'
+// CHECK-0-NEXT:             Direction:       '[in]'
+// CHECK-0-NEXT:             ParamName:       'J'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:                 Children:        
+// CHECK-0-NEXT:                   - Kind:            'TextComment'
+// CHECK-0-NEXT:                     Text:            ' is a parameter.'
+// CHECK-0-NEXT:                   - Kind:            'TextComment'
+// CHECK-0-NEXT:           - Kind:            'BlockCommandComment'
+// CHECK-0-NEXT:             Name:            'return'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:                 Children:        
+// CHECK-0-NEXT:                   - Kind:            'TextComment'
+// CHECK-0-NEXT:                     Text:            ' void'
+// CHECK-0-NEXT:       - Kind:            'FullComment'
+// CHECK-0-NEXT:         Children:        
+// CHECK-0-NEXT:           - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:                 Text:            ' Bonus comment on definition'
+// CHECK-0-NEXT:     DefLocation:     
+// CHECK-0-NEXT:       LineNumber:      28
+// CHECK-0-NEXT:       Filename:        'test'
+// CHECK-0-NEXT:     Location:        
+// CHECK-0-NEXT:       - LineNumber:      25
+// CHECK-0-NEXT:         Filename:        'test'
+// CHECK-0-NEXT:     Params:          
+// CHECK-0-NEXT:       - Type:            
+// CHECK-0-NEXT:           Name:            'int'
+// CHECK-0-NEXT:         Name:            'I'
+// CHECK-0-NEXT:       - Type:            
+// CHECK-0-NEXT:           Name:            'int'
+// CHECK-0-NEXT:         Name:            'J'
+// CHECK-0-NEXT:     ReturnType:      
+// CHECK-0-NEXT:       Type:            
+// CHECK-0-NEXT:         Name:            'void'
+// CHECK-0-NEXT: ...

Added: clang-tools-extra/trunk/test/clang-doc/public-linkage.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/public-linkage.cpp?rev=338763&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/public-linkage.cpp (added)
+++ clang-tools-extra/trunk/test/clang-doc/public-linkage.cpp Thu Aug  2 13:10:17 2018
@@ -0,0 +1,299 @@
+// THIS IS A GENERATED TEST. DO NOT EDIT.
+// To regenerate, see clang-doc/gen_test.py docstring.
+//
+// REQUIRES: system-linux
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+
+void function(int x);
+
+inline int inlinedFunction(int x);
+
+int functionWithInnerClass(int x) {
+  class InnerClass { //NoLinkage
+  public:
+    int innerPublicMethod() { return 2; };
+  }; //end class
+  InnerClass temp;
+  return temp.innerPublicMethod();
+};
+
+inline int inlinedFunctionWithInnerClass(int x) {
+  class InnerClass { //VisibleNoLinkage
+  public:
+    int innerPublicMethod() { return 2; };
+  }; //end class
+  InnerClass temp;
+  return temp.innerPublicMethod();
+};
+
+class Class {
+public:
+  void publicMethod();
+  int publicField;
+
+protected:
+  void protectedMethod();
+  int protectedField;
+
+private:
+  void privateMethod();
+  int privateField;
+};
+
+namespace named {
+class NamedClass {
+public:
+  void namedPublicMethod();
+  int namedPublicField;
+
+protected:
+  void namedProtectedMethod();
+  int namedProtectedField;
+
+private:
+  void namedPrivateMethod();
+  int namedPrivateField;
+};
+
+void namedFunction();
+static void namedStaticFunction();
+inline void namedInlineFunction();
+} // namespace named
+
+static void staticFunction(int x); //Internal Linkage
+
+static int staticFunctionWithInnerClass(int x) {
+  class InnerClass { //NoLinkage
+  public:
+    int innerPublicMethod() { return 2; };
+  }; //end class
+  InnerClass temp;
+  return temp.innerPublicMethod();
+};
+
+namespace {
+class AnonClass {
+public:
+  void anonPublicMethod();
+  int anonPublicField;
+
+protected:
+  void anonProtectedMethod();
+  int anonProtectedField;
+
+private:
+  void anonPrivateMethod();
+  int anonPrivateField;
+};
+
+void anonFunction();
+static void anonStaticFunction();
+inline void anonInlineFunction();
+} // namespace
+
+// RUN: clang-doc --format=yaml --doxygen --public --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
+
+
+// RUN: cat %t/docs/./Class.yaml | FileCheck %s --check-prefix CHECK-0
+// CHECK-0: ---
+// CHECK-0-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT: Name:            'Class'
+// CHECK-0-NEXT: DefLocation:     
+// CHECK-0-NEXT:   LineNumber:      32
+// CHECK-0-NEXT:   Filename:        'test'
+// CHECK-0-NEXT: TagType:         Class
+// CHECK-0-NEXT: Members:         
+// CHECK-0-NEXT:   - Type:            
+// CHECK-0-NEXT:       Name:            'int'
+// CHECK-0-NEXT:     Name:            'publicField'
+// CHECK-0-NEXT:   - Type:            
+// CHECK-0-NEXT:       Name:            'int'
+// CHECK-0-NEXT:     Name:            'protectedField'
+// CHECK-0-NEXT:     Access:          Protected
+// CHECK-0-NEXT: ChildFunctions:  
+// CHECK-0-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Name:            'publicMethod'
+// CHECK-0-NEXT:     Namespace:       
+// CHECK-0-NEXT:       - Type:            Record
+// CHECK-0-NEXT:         Name:            'Class'
+// CHECK-0-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Location:        
+// CHECK-0-NEXT:       - LineNumber:      34
+// CHECK-0-NEXT:         Filename:        'test'
+// CHECK-0-NEXT:     IsMethod:        true
+// CHECK-0-NEXT:     Parent:          
+// CHECK-0-NEXT:       Type:            Record
+// CHECK-0-NEXT:       Name:            'Class'
+// CHECK-0-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     ReturnType:      
+// CHECK-0-NEXT:       Type:            
+// CHECK-0-NEXT:         Name:            'void'
+// CHECK-0-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Name:            'protectedMethod'
+// CHECK-0-NEXT:     Namespace:       
+// CHECK-0-NEXT:       - Type:            Record
+// CHECK-0-NEXT:         Name:            'Class'
+// CHECK-0-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Location:        
+// CHECK-0-NEXT:       - LineNumber:      38
+// CHECK-0-NEXT:         Filename:        'test'
+// CHECK-0-NEXT:     IsMethod:        true
+// CHECK-0-NEXT:     Parent:          
+// CHECK-0-NEXT:       Type:            Record
+// CHECK-0-NEXT:       Name:            'Class'
+// CHECK-0-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     ReturnType:      
+// CHECK-0-NEXT:       Type:            
+// CHECK-0-NEXT:         Name:            'void'
+// CHECK-0-NEXT: ...
+
+// RUN: cat %t/docs/./named.yaml | FileCheck %s --check-prefix CHECK-1
+// CHECK-1: ---
+// CHECK-1-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT: Name:            'named'
+// CHECK-1-NEXT: ChildFunctions:  
+// CHECK-1-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     Name:            'namedFunction'
+// CHECK-1-NEXT:     Namespace:       
+// CHECK-1-NEXT:       - Type:            Namespace
+// CHECK-1-NEXT:         Name:            'named'
+// CHECK-1-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     Location:        
+// CHECK-1-NEXT:       - LineNumber:      61
+// CHECK-1-NEXT:         Filename:        'test'
+// CHECK-1-NEXT:     ReturnType:      
+// CHECK-1-NEXT:       Type:            
+// CHECK-1-NEXT:         Name:            'void'
+// CHECK-1-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     Name:            'namedInlineFunction'
+// CHECK-1-NEXT:     Namespace:       
+// CHECK-1-NEXT:       - Type:            Namespace
+// CHECK-1-NEXT:         Name:            'named'
+// CHECK-1-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     Location:        
+// CHECK-1-NEXT:       - LineNumber:      63
+// CHECK-1-NEXT:         Filename:        'test'
+// CHECK-1-NEXT:     ReturnType:      
+// CHECK-1-NEXT:       Type:            
+// CHECK-1-NEXT:         Name:            'void'
+// CHECK-1-NEXT: ...
+
+// RUN: cat %t/docs/./GlobalNamespace.yaml | FileCheck %s --check-prefix CHECK-2
+// CHECK-2: ---
+// CHECK-2-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT: ChildFunctions:  
+// CHECK-2-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:     Name:            'function'
+// CHECK-2-NEXT:     Location:        
+// CHECK-2-NEXT:       - LineNumber:      10
+// CHECK-2-NEXT:         Filename:        'test'
+// CHECK-2-NEXT:     Params:          
+// CHECK-2-NEXT:       - Type:            
+// CHECK-2-NEXT:           Name:            'int'
+// CHECK-2-NEXT:         Name:            'x'
+// CHECK-2-NEXT:     ReturnType:      
+// CHECK-2-NEXT:       Type:            
+// CHECK-2-NEXT:         Name:            'void'
+// CHECK-2-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:     Name:            'inlinedFunction'
+// CHECK-2-NEXT:     Location:        
+// CHECK-2-NEXT:       - LineNumber:      12
+// CHECK-2-NEXT:         Filename:        'test'
+// CHECK-2-NEXT:     Params:          
+// CHECK-2-NEXT:       - Type:            
+// CHECK-2-NEXT:           Name:            'int'
+// CHECK-2-NEXT:         Name:            'x'
+// CHECK-2-NEXT:     ReturnType:      
+// CHECK-2-NEXT:       Type:            
+// CHECK-2-NEXT:         Name:            'int'
+// CHECK-2-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:     Name:            'functionWithInnerClass'
+// CHECK-2-NEXT:     DefLocation:     
+// CHECK-2-NEXT:       LineNumber:      14
+// CHECK-2-NEXT:       Filename:        'test'
+// CHECK-2-NEXT:     Params:          
+// CHECK-2-NEXT:       - Type:            
+// CHECK-2-NEXT:           Name:            'int'
+// CHECK-2-NEXT:         Name:            'x'
+// CHECK-2-NEXT:     ReturnType:      
+// CHECK-2-NEXT:       Type:            
+// CHECK-2-NEXT:         Name:            'int'
+// CHECK-2-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:     Name:            'inlinedFunctionWithInnerClass'
+// CHECK-2-NEXT:     DefLocation:     
+// CHECK-2-NEXT:       LineNumber:      23
+// CHECK-2-NEXT:       Filename:        'test'
+// CHECK-2-NEXT:     Params:          
+// CHECK-2-NEXT:       - Type:            
+// CHECK-2-NEXT:           Name:            'int'
+// CHECK-2-NEXT:         Name:            'x'
+// CHECK-2-NEXT:     ReturnType:      
+// CHECK-2-NEXT:       Type:            
+// CHECK-2-NEXT:         Name:            'int'
+// CHECK-2-NEXT: ...
+
+// RUN: cat %t/docs/named/NamedClass.yaml | FileCheck %s --check-prefix CHECK-3
+// CHECK-3: ---
+// CHECK-3-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT: Name:            'NamedClass'
+// CHECK-3-NEXT: Namespace:       
+// CHECK-3-NEXT:   - Type:            Namespace
+// CHECK-3-NEXT:     Name:            'named'
+// CHECK-3-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT: DefLocation:     
+// CHECK-3-NEXT:   LineNumber:      47
+// CHECK-3-NEXT:   Filename:        'test'
+// CHECK-3-NEXT: TagType:         Class
+// CHECK-3-NEXT: Members:         
+// CHECK-3-NEXT:   - Type:            
+// CHECK-3-NEXT:       Name:            'int'
+// CHECK-3-NEXT:     Name:            'namedPublicField'
+// CHECK-3-NEXT:   - Type:            
+// CHECK-3-NEXT:       Name:            'int'
+// CHECK-3-NEXT:     Name:            'namedProtectedField'
+// CHECK-3-NEXT:     Access:          Protected
+// CHECK-3-NEXT: ChildFunctions:  
+// CHECK-3-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Name:            'namedPublicMethod'
+// CHECK-3-NEXT:     Namespace:       
+// CHECK-3-NEXT:       - Type:            Record
+// CHECK-3-NEXT:         Name:            'NamedClass'
+// CHECK-3-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:       - Type:            Namespace
+// CHECK-3-NEXT:         Name:            'named'
+// CHECK-3-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Location:        
+// CHECK-3-NEXT:       - LineNumber:      49
+// CHECK-3-NEXT:         Filename:        'test'
+// CHECK-3-NEXT:     IsMethod:        true
+// CHECK-3-NEXT:     Parent:          
+// CHECK-3-NEXT:       Type:            Record
+// CHECK-3-NEXT:       Name:            'NamedClass'
+// CHECK-3-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     ReturnType:      
+// CHECK-3-NEXT:       Type:            
+// CHECK-3-NEXT:         Name:            'void'
+// CHECK-3-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Name:            'namedProtectedMethod'
+// CHECK-3-NEXT:     Namespace:       
+// CHECK-3-NEXT:       - Type:            Record
+// CHECK-3-NEXT:         Name:            'NamedClass'
+// CHECK-3-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:       - Type:            Namespace
+// CHECK-3-NEXT:         Name:            'named'
+// CHECK-3-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Location:        
+// CHECK-3-NEXT:       - LineNumber:      53
+// CHECK-3-NEXT:         Filename:        'test'
+// CHECK-3-NEXT:     IsMethod:        true
+// CHECK-3-NEXT:     Parent:          
+// CHECK-3-NEXT:       Type:            Record
+// CHECK-3-NEXT:       Name:            'NamedClass'
+// CHECK-3-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     ReturnType:      
+// CHECK-3-NEXT:       Type:            
+// CHECK-3-NEXT:         Name:            'void'
+// CHECK-3-NEXT: ...

Modified: clang-tools-extra/trunk/test/clang-doc/public-module.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/public-module.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/public-module.cpp (original)
+++ clang-tools-extra/trunk/test/clang-doc/public-module.cpp Thu Aug  2 13:10:17 2018
@@ -1,53 +1,51 @@
-// This test requires linux because it uses `diff` and compares filepaths
-// REQUIRES: system-linux
+// THIS IS A GENERATED TEST. DO NOT EDIT.
+// To regenerate, see clang-doc/gen_test.py docstring.
+//
 // RUN: rm -rf %t
 // RUN: mkdir %t
 // RUN: echo "" > %t/compile_flags.txt
 // RUN: cp "%s" "%t/test.cpp"
-// RUN: clang-doc --public --extra-arg=-fmodules-ts --doxygen -p %t %t/test.cpp -output=%t/docs-with-public-flag
-// RUN: clang-doc --extra-arg=-fmodules-ts --doxygen -p %t %t/test.cpp -output=%t/docs-without
-// RUN: cat %t/docs-with-public-flag/moduleFunction.yaml | FileCheck %s --check-prefix=CHECK-A
-// RUN: cat %t/docs-with-public-flag/exportedModuleFunction.yaml | FileCheck %s --check-prefix=CHECK-B
-// RUN: (diff -qry %t/docs-with-public-flag %t/docs-without | sed 's:.*/::' > %t/public.diff) || true
-// RUN: cat %t/public.diff | FileCheck %s --check-prefix=CHECK-C
 
 export module M;
 
-int moduleFunction(int x); //ModuleLinkage
-// CHECK-A: ---
-// CHECK-A-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-A-NEXT: Name:            'moduleFunction'
-// CHECK-A-NEXT: Location:
-// CHECK-A-NEXT:   - LineNumber:      16
-// CHECK-A-NEXT:     Filename:        {{.*}}
-// CHECK-A-NEXT: Params:
-// CHECK-A-NEXT:   - Type:
-// CHECK-A-NEXT:       Name:            'int'
-// CHECK-A-NEXT:     Name:            'x'
-// CHECK-A-NEXT: ReturnType:
-// CHECK-A-NEXT:   Type:
-// CHECK-A-NEXT:     Name:            'int'
-// CHECK-A-NEXT: ...
-
-static int staticModuleFunction(int x); //ModuleInternalLinkage
-
-export double exportedModuleFunction(double y, int z); //ExternalLinkage
-// CHECK-B: ---
-// CHECK-B-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-B-NEXT: Name:            'exportedModuleFunction'
-// CHECK-B-NEXT: Location:
-// CHECK-B-NEXT:   - LineNumber:      34
-// CHECK-B-NEXT:     Filename:        {{.*}}
-// CHECK-B-NEXT: Params:
-// CHECK-B-NEXT:   - Type:
-// CHECK-B-NEXT:       Name:            'double'
-// CHECK-B-NEXT:     Name:            'y'
-// CHECK-B-NEXT:   - Type:
-// CHECK-B-NEXT:       Name:            'int'
-// CHECK-B-NEXT:     Name:            'z'
-// CHECK-B-NEXT: ReturnType:
-// CHECK-B-NEXT:   Type:
-// CHECK-B-NEXT:     Name:            'double'
-// CHECK-B-NEXT: ...
+int moduleFunction(int x); // ModuleLinkage
 
-// CHECK-C: docs-without: staticModuleFunction.yaml
+static int staticModuleFunction(int x); // ModuleInternalLinkage
+
+export double exportedModuleFunction(double y, int z); // ExternalLinkage
+
+// RUN: clang-doc --format=yaml --doxygen --public --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
+
+
+// RUN: cat %t/docs/./GlobalNamespace.yaml | FileCheck %s --check-prefix CHECK-0
+// CHECK-0: ---
+// CHECK-0-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT: ChildFunctions:  
+// CHECK-0-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Name:            'moduleFunction'
+// CHECK-0-NEXT:     Location:        
+// CHECK-0-NEXT:       - LineNumber:      11
+// CHECK-0-NEXT:         Filename:        'test'
+// CHECK-0-NEXT:     Params:          
+// CHECK-0-NEXT:       - Type:            
+// CHECK-0-NEXT:           Name:            'int'
+// CHECK-0-NEXT:         Name:            'x'
+// CHECK-0-NEXT:     ReturnType:      
+// CHECK-0-NEXT:       Type:            
+// CHECK-0-NEXT:         Name:            'int'
+// CHECK-0-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Name:            'exportedModuleFunction'
+// CHECK-0-NEXT:     Location:        
+// CHECK-0-NEXT:       - LineNumber:      15
+// CHECK-0-NEXT:         Filename:        'test'
+// CHECK-0-NEXT:     Params:          
+// CHECK-0-NEXT:       - Type:            
+// CHECK-0-NEXT:           Name:            'double'
+// CHECK-0-NEXT:         Name:            'y'
+// CHECK-0-NEXT:       - Type:            
+// CHECK-0-NEXT:           Name:            'int'
+// CHECK-0-NEXT:         Name:            'z'
+// CHECK-0-NEXT:     ReturnType:      
+// CHECK-0-NEXT:       Type:            
+// CHECK-0-NEXT:         Name:            'double'
+// CHECK-0-NEXT: ...

Added: clang-tools-extra/trunk/test/clang-doc/public-namespace.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/public-namespace.cpp?rev=338763&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/public-namespace.cpp (added)
+++ clang-tools-extra/trunk/test/clang-doc/public-namespace.cpp Thu Aug  2 13:10:17 2018
@@ -0,0 +1,96 @@
+// THIS IS A GENERATED TEST. DO NOT EDIT.
+// To regenerate, see clang-doc/gen_test.py docstring.
+//
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+
+namespace A {
+  
+void f();
+
+}  // namespace A
+
+namespace A {
+
+void f(){};
+
+namespace B {
+
+enum E { X };
+
+E func(int i) { return X; }
+
+}  // namespace B
+}  // namespace A
+
+// RUN: clang-doc --format=yaml --doxygen --public --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
+
+
+// RUN: cat %t/docs/./A.yaml | FileCheck %s --check-prefix CHECK-0
+// CHECK-0: ---
+// CHECK-0-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT: Name:            'A'
+// CHECK-0-NEXT: ChildFunctions:  
+// CHECK-0-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Name:            'f'
+// CHECK-0-NEXT:     Namespace:       
+// CHECK-0-NEXT:       - Type:            Namespace
+// CHECK-0-NEXT:         Name:            'A'
+// CHECK-0-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     DefLocation:     
+// CHECK-0-NEXT:       LineNumber:      17
+// CHECK-0-NEXT:       Filename:        'test'
+// CHECK-0-NEXT:     Location:        
+// CHECK-0-NEXT:       - LineNumber:      11
+// CHECK-0-NEXT:         Filename:        'test'
+// CHECK-0-NEXT:     ReturnType:      
+// CHECK-0-NEXT:       Type:            
+// CHECK-0-NEXT:         Name:            'void'
+// CHECK-0-NEXT: ...
+
+// RUN: cat %t/docs/A/B.yaml | FileCheck %s --check-prefix CHECK-1
+// CHECK-1: ---
+// CHECK-1-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT: Name:            'B'
+// CHECK-1-NEXT: Namespace:       
+// CHECK-1-NEXT:   - Type:            Namespace
+// CHECK-1-NEXT:     Name:            'A'
+// CHECK-1-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT: ChildFunctions:  
+// CHECK-1-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     Name:            'func'
+// CHECK-1-NEXT:     Namespace:       
+// CHECK-1-NEXT:       - Type:            Namespace
+// CHECK-1-NEXT:         Name:            'B'
+// CHECK-1-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:       - Type:            Namespace
+// CHECK-1-NEXT:         Name:            'A'
+// CHECK-1-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     DefLocation:     
+// CHECK-1-NEXT:       LineNumber:      23
+// CHECK-1-NEXT:       Filename:        'test'
+// CHECK-1-NEXT:     Params:          
+// CHECK-1-NEXT:       - Type:            
+// CHECK-1-NEXT:           Name:            'int'
+// CHECK-1-NEXT:         Name:            'i'
+// CHECK-1-NEXT:     ReturnType:      
+// CHECK-1-NEXT:       Type:            
+// CHECK-1-NEXT:         Name:            'enum A::B::E'
+// CHECK-1-NEXT: ChildEnums:      
+// CHECK-1-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     Name:            'E'
+// CHECK-1-NEXT:     Namespace:       
+// CHECK-1-NEXT:       - Type:            Namespace
+// CHECK-1-NEXT:         Name:            'B'
+// CHECK-1-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:       - Type:            Namespace
+// CHECK-1-NEXT:         Name:            'A'
+// CHECK-1-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     DefLocation:     
+// CHECK-1-NEXT:       LineNumber:      21
+// CHECK-1-NEXT:       Filename:        'test'
+// CHECK-1-NEXT:     Members:         
+// CHECK-1-NEXT:       - 'X'
+// CHECK-1-NEXT: ...

Added: clang-tools-extra/trunk/test/clang-doc/public-record.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/public-record.cpp?rev=338763&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/public-record.cpp (added)
+++ clang-tools-extra/trunk/test/clang-doc/public-record.cpp Thu Aug  2 13:10:17 2018
@@ -0,0 +1,208 @@
+// THIS IS A GENERATED TEST. DO NOT EDIT.
+// To regenerate, see clang-doc/gen_test.py docstring.
+//
+// This test requires Linux due to system-dependent USR for the inner class.
+// REQUIRES: system-linux
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+
+void H() {
+  class I {};
+}
+
+union A { int X; int Y; };
+
+enum B { X, Y };
+
+enum class Bc { A, B };
+
+struct C { int i; };
+
+class D {};
+
+class E {
+public:
+  E() {}
+  ~E() {}
+
+protected:
+  void ProtectedMethod();
+};
+
+void E::ProtectedMethod() {}
+
+class F : virtual private D, public E {};
+
+class X {
+  class Y {};
+};
+
+// RUN: clang-doc --format=yaml --doxygen --public --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
+
+
+// RUN: cat %t/docs/./C.yaml | FileCheck %s --check-prefix CHECK-0
+// CHECK-0: ---
+// CHECK-0-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT: Name:            'C'
+// CHECK-0-NEXT: DefLocation:     
+// CHECK-0-NEXT:   LineNumber:      21
+// CHECK-0-NEXT:   Filename:        'test'
+// CHECK-0-NEXT: Members:         
+// CHECK-0-NEXT:   - Type:            
+// CHECK-0-NEXT:       Name:            'int'
+// CHECK-0-NEXT:     Name:            'i'
+// CHECK-0-NEXT: ...
+
+// RUN: cat %t/docs/./A.yaml | FileCheck %s --check-prefix CHECK-1
+// CHECK-1: ---
+// CHECK-1-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT: Name:            'A'
+// CHECK-1-NEXT: DefLocation:     
+// CHECK-1-NEXT:   LineNumber:      15
+// CHECK-1-NEXT:   Filename:        'test'
+// CHECK-1-NEXT: TagType:         Union
+// CHECK-1-NEXT: Members:         
+// CHECK-1-NEXT:   - Type:            
+// CHECK-1-NEXT:       Name:            'int'
+// CHECK-1-NEXT:     Name:            'X'
+// CHECK-1-NEXT:   - Type:            
+// CHECK-1-NEXT:       Name:            'int'
+// CHECK-1-NEXT:     Name:            'Y'
+// CHECK-1-NEXT: ...
+
+// RUN: cat %t/docs/./F.yaml | FileCheck %s --check-prefix CHECK-2
+// CHECK-2: ---
+// CHECK-2-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT: Name:            'F'
+// CHECK-2-NEXT: DefLocation:     
+// CHECK-2-NEXT:   LineNumber:      36
+// CHECK-2-NEXT:   Filename:        'test'
+// CHECK-2-NEXT: TagType:         Class
+// CHECK-2-NEXT: Parents:         
+// CHECK-2-NEXT:   - Type:            Record
+// CHECK-2-NEXT:     Name:            'E'
+// CHECK-2-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT: VirtualParents:  
+// CHECK-2-NEXT:   - Type:            Record
+// CHECK-2-NEXT:     Name:            'D'
+// CHECK-2-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT: ...
+
+// RUN: cat %t/docs/./E.yaml | FileCheck %s --check-prefix CHECK-3
+// CHECK-3: ---
+// CHECK-3-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT: Name:            'E'
+// CHECK-3-NEXT: DefLocation:     
+// CHECK-3-NEXT:   LineNumber:      25
+// CHECK-3-NEXT:   Filename:        'test'
+// CHECK-3-NEXT: TagType:         Class
+// CHECK-3-NEXT: ChildFunctions:  
+// CHECK-3-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Name:            'E'
+// CHECK-3-NEXT:     Namespace:       
+// CHECK-3-NEXT:       - Type:            Record
+// CHECK-3-NEXT:         Name:            'E'
+// CHECK-3-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     DefLocation:     
+// CHECK-3-NEXT:       LineNumber:      27
+// CHECK-3-NEXT:       Filename:        'test'
+// CHECK-3-NEXT:     IsMethod:        true
+// CHECK-3-NEXT:     Parent:          
+// CHECK-3-NEXT:       Type:            Record
+// CHECK-3-NEXT:       Name:            'E'
+// CHECK-3-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     ReturnType:      
+// CHECK-3-NEXT:       Type:            
+// CHECK-3-NEXT:         Name:            'void'
+// CHECK-3-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Name:            '~E'
+// CHECK-3-NEXT:     Namespace:       
+// CHECK-3-NEXT:       - Type:            Record
+// CHECK-3-NEXT:         Name:            'E'
+// CHECK-3-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     DefLocation:     
+// CHECK-3-NEXT:       LineNumber:      28
+// CHECK-3-NEXT:       Filename:        'test'
+// CHECK-3-NEXT:     IsMethod:        true
+// CHECK-3-NEXT:     Parent:          
+// CHECK-3-NEXT:       Type:            Record
+// CHECK-3-NEXT:       Name:            'E'
+// CHECK-3-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     ReturnType:      
+// CHECK-3-NEXT:       Type:            
+// CHECK-3-NEXT:         Name:            'void'
+// CHECK-3-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Name:            'ProtectedMethod'
+// CHECK-3-NEXT:     Namespace:       
+// CHECK-3-NEXT:       - Type:            Record
+// CHECK-3-NEXT:         Name:            'E'
+// CHECK-3-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     DefLocation:     
+// CHECK-3-NEXT:       LineNumber:      34
+// CHECK-3-NEXT:       Filename:        'test'
+// CHECK-3-NEXT:     Location:        
+// CHECK-3-NEXT:       - LineNumber:      31
+// CHECK-3-NEXT:         Filename:        'test'
+// CHECK-3-NEXT:     IsMethod:        true
+// CHECK-3-NEXT:     Parent:          
+// CHECK-3-NEXT:       Type:            Record
+// CHECK-3-NEXT:       Name:            'E'
+// CHECK-3-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     ReturnType:      
+// CHECK-3-NEXT:       Type:            
+// CHECK-3-NEXT:         Name:            'void'
+// CHECK-3-NEXT: ...
+
+// RUN: cat %t/docs/./D.yaml | FileCheck %s --check-prefix CHECK-4
+// CHECK-4: ---
+// CHECK-4-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: Name:            'D'
+// CHECK-4-NEXT: DefLocation:     
+// CHECK-4-NEXT:   LineNumber:      23
+// CHECK-4-NEXT:   Filename:        'test'
+// CHECK-4-NEXT: TagType:         Class
+// CHECK-4-NEXT: ...
+
+// RUN: cat %t/docs/./X.yaml | FileCheck %s --check-prefix CHECK-5
+// CHECK-5: ---
+// CHECK-5-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT: Name:            'X'
+// CHECK-5-NEXT: DefLocation:     
+// CHECK-5-NEXT:   LineNumber:      38
+// CHECK-5-NEXT:   Filename:        'test'
+// CHECK-5-NEXT: TagType:         Class
+// CHECK-5-NEXT: ...
+
+// RUN: cat %t/docs/./GlobalNamespace.yaml | FileCheck %s --check-prefix CHECK-6
+// CHECK-6: ---
+// CHECK-6-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-6-NEXT: ChildFunctions:  
+// CHECK-6-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-6-NEXT:     Name:            'H'
+// CHECK-6-NEXT:     DefLocation:     
+// CHECK-6-NEXT:       LineNumber:      11
+// CHECK-6-NEXT:       Filename:        'test'
+// CHECK-6-NEXT:     ReturnType:      
+// CHECK-6-NEXT:       Type:            
+// CHECK-6-NEXT:         Name:            'void'
+// CHECK-6-NEXT: ChildEnums:      
+// CHECK-6-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-6-NEXT:     Name:            'B'
+// CHECK-6-NEXT:     DefLocation:     
+// CHECK-6-NEXT:       LineNumber:      17
+// CHECK-6-NEXT:       Filename:        'test'
+// CHECK-6-NEXT:     Members:         
+// CHECK-6-NEXT:       - 'X'
+// CHECK-6-NEXT:       - 'Y'
+// CHECK-6-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-6-NEXT:     Name:            'Bc'
+// CHECK-6-NEXT:     DefLocation:     
+// CHECK-6-NEXT:       LineNumber:      19
+// CHECK-6-NEXT:       Filename:        'test'
+// CHECK-6-NEXT:     Scoped:          true
+// CHECK-6-NEXT:     Members:         
+// CHECK-6-NEXT:       - 'A'
+// CHECK-6-NEXT:       - 'B'
+// CHECK-6-NEXT: ...

Removed: clang-tools-extra/trunk/test/clang-doc/public-records.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/public-records.cpp?rev=338762&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/public-records.cpp (original)
+++ clang-tools-extra/trunk/test/clang-doc/public-records.cpp (removed)
@@ -1,341 +0,0 @@
-// This test requires linux because it uses `diff` and compares filepaths
-// REQUIRES: system-linux
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: echo "" > %t/compile_flags.txt
-// RUN: cp "%s" "%t/test.cpp"
-// RUN: clang-doc --public --doxygen -p %t %t/test.cpp -output=%t/docs
-// RUN: clang-doc --doxygen -p %t %t/test.cpp -output=%t/docs-without-flag
-// RUN: cat %t/docs/function.yaml | FileCheck %s --check-prefix=CHECK-A
-// RUN: cat %t/docs/inlinedFunction.yaml | FileCheck %s --check-prefix=CHECK-B
-// RUN: cat %t/docs/functionWithInnerClass.yaml | FileCheck %s --check-prefix=CHECK-C
-// RUN: cat %t/docs/inlinedFunctionWithInnerClass.yaml | FileCheck %s --check-prefix=CHECK-D
-// RUN: cat %t/docs/Class/publicMethod.yaml| FileCheck %s --check-prefix=CHECK-E
-// RUN: cat %t/docs/Class.yaml| FileCheck %s --check-prefix=CHECK-F
-// RUN: cat %t/docs/Class/protectedMethod.yaml| FileCheck %s --check-prefix=CHECK-G
-// RUN: cat %t/docs/named.yaml| FileCheck %s --check-prefix=CHECK-H
-// RUN: cat %t/docs/named/NamedClass.yaml| FileCheck %s --check-prefix=CHECK-I
-// RUN: cat %t/docs/named/namedFunction.yaml| FileCheck %s --check-prefix=CHECK-J
-// RUN: cat %t/docs/named/namedInlineFunction.yaml| FileCheck %s --check-prefix=CHECK-K
-// RUN: cat %t/docs/named/NamedClass/namedPublicMethod.yaml| FileCheck %s --check-prefix=CHECK-L
-// RUN: cat %t/docs/named/NamedClass/namedProtectedMethod.yaml| FileCheck %s --check-prefix=CHECK-M
-// RUN: (diff -qry %t/docs-without-flag %t/docs | sed 's:.*/::' > %t/public.diff) || true
-// RUN: cat %t/public.diff | FileCheck %s --check-prefix=CHECK-N
-
-void function(int x);
-
-// CHECK-A: ---
-// CHECK-A-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-A-NEXT: Name:            'function'
-// CHECK-A-NEXT: Location:
-// CHECK-A-NEXT:   - LineNumber:      25
-// CHECK-A-NEXT:     Filename:        {{.*}}
-// CHECK-A-NEXT: Params:
-// CHECK-A-NEXT:   - Type:
-// CHECK-A-NEXT:       Name:            'int'
-// CHECK-A-NEXT:     Name:            'x'
-// CHECK-A-NEXT: ReturnType:
-// CHECK-A-NEXT:   Type:
-// CHECK-A-NEXT:     Name:            'void'
-// CHECK-A-NEXT: ...
-
-inline int inlinedFunction(int x);
-
-// CHECK-B: ---
-// CHECK-B-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-B-NEXT: Name:            'inlinedFunction'
-// CHECK-B-NEXT: Location:
-// CHECK-B-NEXT:   - LineNumber:      42
-// CHECK-B-NEXT:     Filename:        {{.*}}
-// CHECK-B-NEXT: Params:
-// CHECK-B-NEXT:   - Type:
-// CHECK-B-NEXT:       Name:            'int'
-// CHECK-B-NEXT:     Name:            'x'
-// CHECK-B-NEXT: ReturnType:
-// CHECK-B-NEXT:   Type:
-// CHECK-B-NEXT:     Name:            'int'
-// CHECK-B-NEXT: ...
-
-int functionWithInnerClass(int x){
-    class InnerClass { //NoLinkage
-      public:
-        int innerPublicMethod() { return 2; };
-    }; //end class
-    InnerClass temp;
-    return temp.innerPublicMethod();
-};
-
-// CHECK-C: ---
-// CHECK-C-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-C-NEXT: Name:            'functionWithInnerClass'
-// CHECK-C-NEXT: DefLocation:
-// CHECK-C-NEXT:   LineNumber:      59
-// CHECK-C-NEXT:   Filename:        {{.*}}
-// CHECK-C-NEXT: Params:
-// CHECK-C-NEXT:   - Type:
-// CHECK-C-NEXT:       Name:            'int'
-// CHECK-C-NEXT:     Name:            'x'
-// CHECK-C-NEXT: ReturnType:
-// CHECK-C-NEXT:   Type:
-// CHECK-C-NEXT:     Name:            'int'
-// CHECK-C-NEXT: ...
-
-inline int inlinedFunctionWithInnerClass(int x){
-    class InnerClass { //VisibleNoLinkage
-      public:
-        int innerPublicMethod() { return 2; };
-    }; //end class
-    InnerClass temp;
-    return temp.innerPublicMethod();
-};
-
-// CHECK-D: ---
-// CHECK-D-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-D-NEXT: Name:            'inlinedFunctionWithInnerClass'
-// CHECK-D-NEXT: DefLocation:
-// CHECK-D-NEXT:   LineNumber:      83
-// CHECK-D-NEXT:   Filename:        {{.*}}
-// CHECK-D-NEXT: Params:
-// CHECK-D-NEXT:   - Type:
-// CHECK-D-NEXT:       Name:            'int'
-// CHECK-D-NEXT:     Name:            'x'
-// CHECK-D-NEXT: ReturnType:
-// CHECK-D-NEXT:   Type:
-// CHECK-D-NEXT:     Name:            'int'
-// CHECK-D-NEXT: ...
-
-class Class {
- public:
-  void publicMethod();
-  int  publicField;
- protected:
-  void protectedMethod();
-  int  protectedField;
- private:
-  void privateMethod();
-  int  privateField;
-};
-
-// CHECK-E: ---
-// CHECK-E-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-E-NEXT: Name:            'publicMethod'
-// CHECK-E-NEXT: Namespace:
-// CHECK-E-NEXT:   - Type:            Record
-// CHECK-E-NEXT:     Name:            'Class'
-// CHECK-E-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-E-NEXT: Location:
-// CHECK-E-NEXT:   - LineNumber:      109
-// CHECK-E-NEXT:     Filename:        {{.*}}
-// CHECK-E-NEXT: IsMethod:        true
-// CHECK-E-NEXT: Parent:
-// CHECK-E-NEXT:   Type:            Record
-// CHECK-E-NEXT:   Name:            'Class'
-// CHECK-E-NEXT:   USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-E-NEXT: ReturnType:
-// CHECK-E-NEXT:   Type:
-// CHECK-E-NEXT:     Name:            'void'
-// CHECK-E-NEXT: ...
-
-// CHECK-F: ---
-// CHECK-F-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-F-NEXT: Name:            'Class'
-// CHECK-F-NEXT: DefLocation:
-// CHECK-F-NEXT:   LineNumber:      107
-// CHECK-F-NEXT:   Filename:        {{.*}}
-// CHECK-F-NEXT: TagType:         Class
-// CHECK-F-NEXT: Members:
-// CHECK-F-NEXT:   - Type:
-// CHECK-F-NEXT:       Name:            'int'
-// CHECK-F-NEXT:     Name:            'publicField'
-// CHECK-F-NEXT:   - Type:
-// CHECK-F-NEXT:       Name:            'int'
-// CHECK-F-NEXT:     Name:            'protectedField'
-// CHECK-F-NEXT:     Access:          Protected
-// CHECK-F-NEXT: ...
-
-// CHECK-G: ---
-// CHECK-G-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-G-NEXT: Name:            'protectedMethod'
-// CHECK-G-NEXT: Namespace:
-// CHECK-G-NEXT:   - Type:            Record
-// CHECK-G-NEXT:     Name:            'Class'
-// CHECK-G-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-G-NEXT: Location:
-// CHECK-G-NEXT:   - LineNumber:      112
-// CHECK-G-NEXT:     Filename:        {{.*}}
-// CHECK-G-NEXT: IsMethod:        true
-// CHECK-G-NEXT: Parent:
-// CHECK-G-NEXT:   Type:            Record
-// CHECK-G-NEXT:   Name:            'Class'
-// CHECK-G-NEXT:   USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-G-NEXT: ReturnType:
-// CHECK-G-NEXT:   Type:
-// CHECK-G-NEXT:     Name:            'void'
-// CHECK-G-NEXT: ...
-
-namespace named{
-    class NamedClass {
-     public:
-      void namedPublicMethod();
-      int  namedPublicField;
-     protected:
-      void namedProtectedMethod();
-      int  namedProtectedField;
-     private:
-      void namedPrivateMethod();
-      int  namedPrivateField;
-    };
-
-    void namedFunction();
-    static void namedStaticFunction();
-    inline void namedInlineFunction();
-}
-
-// CHECK-H: ---
-// CHECK-H-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-H-NEXT: Name:            'named'
-// CHECK-H-NEXT: ...
-
-// CHECK-I: ---
-// CHECK-I-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-I-NEXT: Name:            'NamedClass'
-// CHECK-I-NEXT: Namespace:
-// CHECK-I-NEXT:   - Type:            Namespace
-// CHECK-I-NEXT:     Name:            'named'
-// CHECK-I-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-I-NEXT: DefLocation:
-// CHECK-I-NEXT:   LineNumber:      177
-// CHECK-I-NEXT:   Filename:        {{.*}}
-// CHECK-I-NEXT: TagType:         Class
-// CHECK-I-NEXT: Members:
-// CHECK-I-NEXT:   - Type:
-// CHECK-I-NEXT:       Name:            'int'
-// CHECK-I-NEXT:     Name:            'namedPublicField'
-// CHECK-I-NEXT:   - Type:
-// CHECK-I-NEXT:       Name:            'int'
-// CHECK-I-NEXT:     Name:            'namedProtectedField'
-// CHECK-I-NEXT:     Access:          Protected
-// CHECK-I-NEXT: ...
-
-// CHECK-J: ---
-// CHECK-J-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-J-NEXT: Name:            'namedFunction'
-// CHECK-J-NEXT: Namespace:
-// CHECK-J-NEXT:   - Type:            Namespace
-// CHECK-J-NEXT:     Name:            'named'
-// CHECK-J-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-J-NEXT: Location:
-// CHECK-J-NEXT:   - LineNumber:      189
-// CHECK-J-NEXT:     Filename:        {{.*}}
-// CHECK-J-NEXT: ReturnType:
-// CHECK-J-NEXT:   Type:
-// CHECK-J-NEXT:     Name:            'void'
-// CHECK-J-NEXT: ...
-
-// CHECK-K: ---
-// CHECK-K-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-K-NEXT: Name:            'namedInlineFunction'
-// CHECK-K-NEXT: Namespace:
-// CHECK-K-NEXT:   - Type:            Namespace
-// CHECK-K-NEXT:     Name:            'named'
-// CHECK-K-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-K-NEXT: Location:
-// CHECK-K-NEXT:   - LineNumber:      191
-// CHECK-K-NEXT:     Filename:        {{.*}}
-// CHECK-K-NEXT: ReturnType:
-// CHECK-K-NEXT:   Type:
-// CHECK-K-NEXT:     Name:            'void'
-// CHECK-K-NEXT: ...
-
-// CHECK-L: ---
-// CHECK-L-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-L-NEXT: Name:            'namedPublicMethod'
-// CHECK-L-NEXT: Namespace:
-// CHECK-L-NEXT:   - Type:            Record
-// CHECK-L-NEXT:     Name:            'NamedClass'
-// CHECK-L-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-L-NEXT:   - Type:            Namespace
-// CHECK-L-NEXT:     Name:            'named'
-// CHECK-L-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-L-NEXT: Location:
-// CHECK-L-NEXT:   - LineNumber:      179
-// CHECK-L-NEXT:     Filename:        {{.*}}
-// CHECK-L-NEXT: IsMethod:        true
-// CHECK-L-NEXT: Parent:
-// CHECK-L-NEXT:   Type:            Record
-// CHECK-L-NEXT:   Name:            'NamedClass'
-// CHECK-L-NEXT:   USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-L-NEXT: ReturnType:
-// CHECK-L-NEXT:   Type:
-// CHECK-L-NEXT:     Name:            'void'
-// CHECK-L-NEXT: ...
-
-// CHECK-M: ---
-// CHECK-M-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-M-NEXT: Name:            'namedProtectedMethod'
-// CHECK-M-NEXT: Namespace:
-// CHECK-M-NEXT:   - Type:            Record
-// CHECK-M-NEXT:     Name:            'NamedClass'
-// CHECK-M-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-M-NEXT:   - Type:            Namespace
-// CHECK-M-NEXT:     Name:            'named'
-// CHECK-M-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-M-NEXT: Location:
-// CHECK-M-NEXT:   - LineNumber:      182
-// CHECK-M-NEXT:     Filename:        {{.*}}
-// CHECK-M-NEXT: IsMethod:        true
-// CHECK-M-NEXT: Parent:
-// CHECK-M-NEXT:   Type:            Record
-// CHECK-M-NEXT:   Name:            'NamedClass'
-// CHECK-M-NEXT:   USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
-// CHECK-M-NEXT: ReturnType:
-// CHECK-M-NEXT:   Type:
-// CHECK-M-NEXT:     Name:            'void'
-// CHECK-M-NEXT: ...
-
-
-static void staticFunction(int x); //Internal Linkage
-
-static int staticFunctionWithInnerClass(int x){
-    class InnerClass { //NoLinkage
-      public:
-        int innerPublicMethod() { return 2; };
-    }; //end class
-    InnerClass temp;
-    return temp.innerPublicMethod();
-};
-
-namespace{
-    class AnonClass {
-     public:
-      void anonPublicMethod();
-      int  anonPublicField;
-     protected:
-      void anonProtectedMethod();
-      int  anonProtectedField;
-     private:
-      void anonPrivateMethod();
-      int  anonPrivateField;
-    };
-
-    void anonFunction();
-    static void anonStaticFunction();
-    inline void anonInlineFunction();
-}
-
-// CHECK-N: docs-without-flag: .yaml
-// CHECK-N-NEXT: docs-without-flag: AnonClass
-// CHECK-N-NEXT: docs-without-flag: AnonClass.yaml
-// CHECK-N-NEXT: Class: privateMethod.yaml
-// CHECK-N-NEXT: Class.yaml differ
-// CHECK-N-NEXT: docs-without-flag: anonFunction.yaml
-// CHECK-N-NEXT: docs-without-flag: anonInlineFunction.yaml
-// CHECK-N-NEXT: docs-without-flag: anonStaticFunction.yaml
-// CHECK-N-NEXT: docs-without-flag: functionWithInnerClass
-// CHECK-N-NEXT: docs-without-flag: inlinedFunctionWithInnerClass
-// CHECK-N-NEXT: NamedClass: namedPrivateMethod.yaml
-// CHECK-N-NEXT: NamedClass.yaml differ
-// CHECK-N-NEXT: named: namedStaticFunction.yaml
-// CHECK-N-NEXT: docs-without-flag: staticFunction.yaml
-// CHECK-N-NEXT: docs-without-flag: staticFunctionWithInnerClass
-// CHECK-N-NEXT: docs-without-flag: staticFunctionWithInnerClass.yaml

Added: clang-tools-extra/trunk/test/clang-doc/test_cases/linkage.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/test_cases/linkage.cpp?rev=338763&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/test_cases/linkage.cpp (added)
+++ clang-tools-extra/trunk/test/clang-doc/test_cases/linkage.cpp Thu Aug  2 13:10:17 2018
@@ -0,0 +1,95 @@
+// THIS IS A GENERATED TEST. DO NOT EDIT.
+// To regenerate, see clang-doc/gen_test.py docstring.
+//
+// REQUIRES: system-linux
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+
+void function(int x);
+
+inline int inlinedFunction(int x);
+
+int functionWithInnerClass(int x) {
+  class InnerClass { //NoLinkage
+  public:
+    int innerPublicMethod() { return 2; };
+  }; //end class
+  InnerClass temp;
+  return temp.innerPublicMethod();
+};
+
+inline int inlinedFunctionWithInnerClass(int x) {
+  class InnerClass { //VisibleNoLinkage
+  public:
+    int innerPublicMethod() { return 2; };
+  }; //end class
+  InnerClass temp;
+  return temp.innerPublicMethod();
+};
+
+class Class {
+public:
+  void publicMethod();
+  int publicField;
+
+protected:
+  void protectedMethod();
+  int protectedField;
+
+private:
+  void privateMethod();
+  int privateField;
+};
+
+namespace named {
+class NamedClass {
+public:
+  void namedPublicMethod();
+  int namedPublicField;
+
+protected:
+  void namedProtectedMethod();
+  int namedProtectedField;
+
+private:
+  void namedPrivateMethod();
+  int namedPrivateField;
+};
+
+void namedFunction();
+static void namedStaticFunction();
+inline void namedInlineFunction();
+} // namespace named
+
+static void staticFunction(int x); //Internal Linkage
+
+static int staticFunctionWithInnerClass(int x) {
+  class InnerClass { //NoLinkage
+  public:
+    int innerPublicMethod() { return 2; };
+  }; //end class
+  InnerClass temp;
+  return temp.innerPublicMethod();
+};
+
+namespace {
+class AnonClass {
+public:
+  void anonPublicMethod();
+  int anonPublicField;
+
+protected:
+  void anonProtectedMethod();
+  int anonProtectedField;
+
+private:
+  void anonPrivateMethod();
+  int anonPrivateField;
+};
+
+void anonFunction();
+static void anonStaticFunction();
+inline void anonInlineFunction();
+} // namespace

Added: clang-tools-extra/trunk/test/clang-doc/test_cases/module.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/test_cases/module.cpp?rev=338763&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/test_cases/module.cpp (added)
+++ clang-tools-extra/trunk/test/clang-doc/test_cases/module.cpp Thu Aug  2 13:10:17 2018
@@ -0,0 +1,15 @@
+// THIS IS A GENERATED TEST. DO NOT EDIT.
+// To regenerate, see clang-doc/gen_test.py docstring.
+//
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+
+export module M;
+
+int moduleFunction(int x); // ModuleLinkage
+
+static int staticModuleFunction(int x); // ModuleInternalLinkage
+
+export double exportedModuleFunction(double y, int z); // ExternalLinkage

Modified: clang-tools-extra/trunk/test/clang-doc/yaml-comment.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/yaml-comment.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/yaml-comment.cpp (original)
+++ clang-tools-extra/trunk/test/clang-doc/yaml-comment.cpp Thu Aug  2 13:10:17 2018
@@ -27,110 +27,112 @@ void F(int I, int J);
 /// Bonus comment on definition
 void F(int I, int J) {}
 
-// RUN: clang-doc --format=yaml --doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: clang-doc --format=yaml --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
 
 
-// RUN: cat %t/docs/./F.yaml | FileCheck %s --check-prefix CHECK-0
+// RUN: cat %t/docs/./GlobalNamespace.yaml | FileCheck %s --check-prefix CHECK-0
 // CHECK-0: ---
-// CHECK-0-NEXT: USR:             '7574630614A535710E5A6ABCFFF98BCA2D06A4CA'
-// CHECK-0-NEXT: Name:            'F'
-// CHECK-0-NEXT: Description:     
-// CHECK-0-NEXT:   - Kind:            'FullComment'
-// CHECK-0-NEXT:     Children:        
-// CHECK-0-NEXT:       - Kind:            'ParagraphComment'
-// CHECK-0-NEXT:         Children:        
-// CHECK-0-NEXT:           - Kind:            'TextComment'
-// CHECK-0-NEXT:       - Kind:            'BlockCommandComment'
-// CHECK-0-NEXT:         Name:            'brief'
+// CHECK-0-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT: ChildFunctions:  
+// CHECK-0-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Name:            'F'
+// CHECK-0-NEXT:     Description:     
+// CHECK-0-NEXT:       - Kind:            'FullComment'
 // CHECK-0-NEXT:         Children:        
 // CHECK-0-NEXT:           - Kind:            'ParagraphComment'
 // CHECK-0-NEXT:             Children:        
 // CHECK-0-NEXT:               - Kind:            'TextComment'
-// CHECK-0-NEXT:                 Text:            ' Brief description.'
-// CHECK-0-NEXT:       - Kind:            'ParagraphComment'
-// CHECK-0-NEXT:         Children:        
-// CHECK-0-NEXT:           - Kind:            'TextComment'
-// CHECK-0-NEXT:             Text:            ' Extended description that'
-// CHECK-0-NEXT:           - Kind:            'TextComment'
-// CHECK-0-NEXT:             Text:            ' continues onto the next line.'
-// CHECK-0-NEXT:       - Kind:            'ParagraphComment'
-// CHECK-0-NEXT:         Children:        
-// CHECK-0-NEXT:           - Kind:            'TextComment'
-// CHECK-0-NEXT:           - Kind:            'HTMLStartTagComment'
-// CHECK-0-NEXT:             Name:            'ul'
-// CHECK-0-NEXT:             AttrKeys:        
-// CHECK-0-NEXT:               - 'class'
-// CHECK-0-NEXT:             AttrValues:      
-// CHECK-0-NEXT:               - 'test'
-// CHECK-0-NEXT:           - Kind:            'TextComment'
-// CHECK-0-NEXT:           - Kind:            'HTMLStartTagComment'
-// CHECK-0-NEXT:             Name:            'li'
-// CHECK-0-NEXT:           - Kind:            'TextComment'
-// CHECK-0-NEXT:             Text:            ' Testing.'
-// CHECK-0-NEXT:           - Kind:            'TextComment'
-// CHECK-0-NEXT:           - Kind:            'HTMLEndTagComment'
-// CHECK-0-NEXT:             Name:            'ul'
-// CHECK-0-NEXT:             SelfClosing:     true
-// CHECK-0-NEXT:       - Kind:            'ParagraphComment'
-// CHECK-0-NEXT:         Children:        
-// CHECK-0-NEXT:           - Kind:            'TextComment'
-// CHECK-0-NEXT:       - Kind:            'VerbatimBlockComment'
-// CHECK-0-NEXT:         Name:            'verbatim'
-// CHECK-0-NEXT:         CloseName:       'endverbatim'
-// CHECK-0-NEXT:         Children:        
-// CHECK-0-NEXT:           - Kind:            'VerbatimBlockLineComment'
-// CHECK-0-NEXT:             Text:            ' The description continues.'
-// CHECK-0-NEXT:       - Kind:            'ParagraphComment'
-// CHECK-0-NEXT:         Children:        
-// CHECK-0-NEXT:           - Kind:            'TextComment'
-// CHECK-0-NEXT:             Text:            ' --'
-// CHECK-0-NEXT:           - Kind:            'TextComment'
-// CHECK-0-NEXT:       - Kind:            'ParamCommandComment'
-// CHECK-0-NEXT:         Direction:       '[out]'
-// CHECK-0-NEXT:         ParamName:       'I'
-// CHECK-0-NEXT:         Explicit:        true
-// CHECK-0-NEXT:         Children:        
+// CHECK-0-NEXT:           - Kind:            'BlockCommandComment'
+// CHECK-0-NEXT:             Name:            'brief'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:                 Children:        
+// CHECK-0-NEXT:                   - Kind:            'TextComment'
+// CHECK-0-NEXT:                     Text:            ' Brief description.'
 // CHECK-0-NEXT:           - Kind:            'ParagraphComment'
 // CHECK-0-NEXT:             Children:        
 // CHECK-0-NEXT:               - Kind:            'TextComment'
-// CHECK-0-NEXT:                 Text:            ' is a parameter.'
+// CHECK-0-NEXT:                 Text:            ' Extended description that'
 // CHECK-0-NEXT:               - Kind:            'TextComment'
-// CHECK-0-NEXT:       - Kind:            'ParamCommandComment'
-// CHECK-0-NEXT:         Direction:       '[in]'
-// CHECK-0-NEXT:         ParamName:       'J'
-// CHECK-0-NEXT:         Children:        
+// CHECK-0-NEXT:                 Text:            ' continues onto the next line.'
+// CHECK-0-NEXT:           - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:               - Kind:            'HTMLStartTagComment'
+// CHECK-0-NEXT:                 Name:            'ul'
+// CHECK-0-NEXT:                 AttrKeys:        
+// CHECK-0-NEXT:                   - 'class'
+// CHECK-0-NEXT:                 AttrValues:      
+// CHECK-0-NEXT:                   - 'test'
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:               - Kind:            'HTMLStartTagComment'
+// CHECK-0-NEXT:                 Name:            'li'
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:                 Text:            ' Testing.'
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:               - Kind:            'HTMLEndTagComment'
+// CHECK-0-NEXT:                 Name:            'ul'
+// CHECK-0-NEXT:                 SelfClosing:     true
+// CHECK-0-NEXT:           - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'TextComment'
+// CHECK-0-NEXT:           - Kind:            'VerbatimBlockComment'
+// CHECK-0-NEXT:             Name:            'verbatim'
+// CHECK-0-NEXT:             CloseName:       'endverbatim'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'VerbatimBlockLineComment'
+// CHECK-0-NEXT:                 Text:            ' The description continues.'
 // CHECK-0-NEXT:           - Kind:            'ParagraphComment'
 // CHECK-0-NEXT:             Children:        
 // CHECK-0-NEXT:               - Kind:            'TextComment'
-// CHECK-0-NEXT:                 Text:            ' is a parameter.'
+// CHECK-0-NEXT:                 Text:            ' --'
 // CHECK-0-NEXT:               - Kind:            'TextComment'
-// CHECK-0-NEXT:       - Kind:            'BlockCommandComment'
-// CHECK-0-NEXT:         Name:            'return'
+// CHECK-0-NEXT:           - Kind:            'ParamCommandComment'
+// CHECK-0-NEXT:             Direction:       '[out]'
+// CHECK-0-NEXT:             ParamName:       'I'
+// CHECK-0-NEXT:             Explicit:        true
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:                 Children:        
+// CHECK-0-NEXT:                   - Kind:            'TextComment'
+// CHECK-0-NEXT:                     Text:            ' is a parameter.'
+// CHECK-0-NEXT:                   - Kind:            'TextComment'
+// CHECK-0-NEXT:           - Kind:            'ParamCommandComment'
+// CHECK-0-NEXT:             Direction:       '[in]'
+// CHECK-0-NEXT:             ParamName:       'J'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:                 Children:        
+// CHECK-0-NEXT:                   - Kind:            'TextComment'
+// CHECK-0-NEXT:                     Text:            ' is a parameter.'
+// CHECK-0-NEXT:                   - Kind:            'TextComment'
+// CHECK-0-NEXT:           - Kind:            'BlockCommandComment'
+// CHECK-0-NEXT:             Name:            'return'
+// CHECK-0-NEXT:             Children:        
+// CHECK-0-NEXT:               - Kind:            'ParagraphComment'
+// CHECK-0-NEXT:                 Children:        
+// CHECK-0-NEXT:                   - Kind:            'TextComment'
+// CHECK-0-NEXT:                     Text:            ' void'
+// CHECK-0-NEXT:       - Kind:            'FullComment'
 // CHECK-0-NEXT:         Children:        
 // CHECK-0-NEXT:           - Kind:            'ParagraphComment'
 // CHECK-0-NEXT:             Children:        
 // CHECK-0-NEXT:               - Kind:            'TextComment'
-// CHECK-0-NEXT:                 Text:            ' void'
-// CHECK-0-NEXT:   - Kind:            'FullComment'
-// CHECK-0-NEXT:     Children:        
-// CHECK-0-NEXT:       - Kind:            'ParagraphComment'
-// CHECK-0-NEXT:         Children:        
-// CHECK-0-NEXT:           - Kind:            'TextComment'
-// CHECK-0-NEXT:             Text:            ' Bonus comment on definition'
-// CHECK-0-NEXT: DefLocation:     
-// CHECK-0-NEXT:   LineNumber:      28
-// CHECK-0-NEXT:   Filename:        'test'
-// CHECK-0-NEXT: Location:        
-// CHECK-0-NEXT:   - LineNumber:      25
-// CHECK-0-NEXT:     Filename:        'test'
-// CHECK-0-NEXT: Params:          
-// CHECK-0-NEXT:   - Type:            
-// CHECK-0-NEXT:       Name:            'int'
-// CHECK-0-NEXT:     Name:            'I'
-// CHECK-0-NEXT:   - Type:            
-// CHECK-0-NEXT:       Name:            'int'
-// CHECK-0-NEXT:     Name:            'J'
-// CHECK-0-NEXT: ReturnType:      
-// CHECK-0-NEXT:   Type:            
-// CHECK-0-NEXT:     Name:            'void'
+// CHECK-0-NEXT:                 Text:            ' Bonus comment on definition'
+// CHECK-0-NEXT:     DefLocation:     
+// CHECK-0-NEXT:       LineNumber:      28
+// CHECK-0-NEXT:       Filename:        'test'
+// CHECK-0-NEXT:     Location:        
+// CHECK-0-NEXT:       - LineNumber:      25
+// CHECK-0-NEXT:         Filename:        'test'
+// CHECK-0-NEXT:     Params:          
+// CHECK-0-NEXT:       - Type:            
+// CHECK-0-NEXT:           Name:            'int'
+// CHECK-0-NEXT:         Name:            'I'
+// CHECK-0-NEXT:       - Type:            
+// CHECK-0-NEXT:           Name:            'int'
+// CHECK-0-NEXT:         Name:            'J'
+// CHECK-0-NEXT:     ReturnType:      
+// CHECK-0-NEXT:       Type:            
+// CHECK-0-NEXT:         Name:            'void'
 // CHECK-0-NEXT: ...

Added: clang-tools-extra/trunk/test/clang-doc/yaml-linkage.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/yaml-linkage.cpp?rev=338763&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/yaml-linkage.cpp (added)
+++ clang-tools-extra/trunk/test/clang-doc/yaml-linkage.cpp Thu Aug  2 13:10:17 2018
@@ -0,0 +1,529 @@
+// THIS IS A GENERATED TEST. DO NOT EDIT.
+// To regenerate, see clang-doc/gen_test.py docstring.
+//
+// REQUIRES: system-linux
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+
+void function(int x);
+
+inline int inlinedFunction(int x);
+
+int functionWithInnerClass(int x) {
+  class InnerClass { //NoLinkage
+  public:
+    int innerPublicMethod() { return 2; };
+  }; //end class
+  InnerClass temp;
+  return temp.innerPublicMethod();
+};
+
+inline int inlinedFunctionWithInnerClass(int x) {
+  class InnerClass { //VisibleNoLinkage
+  public:
+    int innerPublicMethod() { return 2; };
+  }; //end class
+  InnerClass temp;
+  return temp.innerPublicMethod();
+};
+
+class Class {
+public:
+  void publicMethod();
+  int publicField;
+
+protected:
+  void protectedMethod();
+  int protectedField;
+
+private:
+  void privateMethod();
+  int privateField;
+};
+
+namespace named {
+class NamedClass {
+public:
+  void namedPublicMethod();
+  int namedPublicField;
+
+protected:
+  void namedProtectedMethod();
+  int namedProtectedField;
+
+private:
+  void namedPrivateMethod();
+  int namedPrivateField;
+};
+
+void namedFunction();
+static void namedStaticFunction();
+inline void namedInlineFunction();
+} // namespace named
+
+static void staticFunction(int x); //Internal Linkage
+
+static int staticFunctionWithInnerClass(int x) {
+  class InnerClass { //NoLinkage
+  public:
+    int innerPublicMethod() { return 2; };
+  }; //end class
+  InnerClass temp;
+  return temp.innerPublicMethod();
+};
+
+namespace {
+class AnonClass {
+public:
+  void anonPublicMethod();
+  int anonPublicField;
+
+protected:
+  void anonProtectedMethod();
+  int anonProtectedField;
+
+private:
+  void anonPrivateMethod();
+  int anonPrivateField;
+};
+
+void anonFunction();
+static void anonStaticFunction();
+inline void anonInlineFunction();
+} // namespace
+
+// RUN: clang-doc --format=yaml --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
+
+
+// RUN: cat %t/docs/./Class.yaml | FileCheck %s --check-prefix CHECK-0
+// CHECK-0: ---
+// CHECK-0-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT: Name:            'Class'
+// CHECK-0-NEXT: DefLocation:     
+// CHECK-0-NEXT:   LineNumber:      32
+// CHECK-0-NEXT:   Filename:        'test'
+// CHECK-0-NEXT: TagType:         Class
+// CHECK-0-NEXT: Members:         
+// CHECK-0-NEXT:   - Type:            
+// CHECK-0-NEXT:       Name:            'int'
+// CHECK-0-NEXT:     Name:            'publicField'
+// CHECK-0-NEXT:   - Type:            
+// CHECK-0-NEXT:       Name:            'int'
+// CHECK-0-NEXT:     Name:            'protectedField'
+// CHECK-0-NEXT:     Access:          Protected
+// CHECK-0-NEXT:   - Type:            
+// CHECK-0-NEXT:       Name:            'int'
+// CHECK-0-NEXT:     Name:            'privateField'
+// CHECK-0-NEXT:     Access:          Private
+// CHECK-0-NEXT: ChildFunctions:  
+// CHECK-0-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Name:            'publicMethod'
+// CHECK-0-NEXT:     Namespace:       
+// CHECK-0-NEXT:       - Type:            Record
+// CHECK-0-NEXT:         Name:            'Class'
+// CHECK-0-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Location:        
+// CHECK-0-NEXT:       - LineNumber:      34
+// CHECK-0-NEXT:         Filename:        'test'
+// CHECK-0-NEXT:     IsMethod:        true
+// CHECK-0-NEXT:     Parent:          
+// CHECK-0-NEXT:       Type:            Record
+// CHECK-0-NEXT:       Name:            'Class'
+// CHECK-0-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     ReturnType:      
+// CHECK-0-NEXT:       Type:            
+// CHECK-0-NEXT:         Name:            'void'
+// CHECK-0-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Name:            'protectedMethod'
+// CHECK-0-NEXT:     Namespace:       
+// CHECK-0-NEXT:       - Type:            Record
+// CHECK-0-NEXT:         Name:            'Class'
+// CHECK-0-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Location:        
+// CHECK-0-NEXT:       - LineNumber:      38
+// CHECK-0-NEXT:         Filename:        'test'
+// CHECK-0-NEXT:     IsMethod:        true
+// CHECK-0-NEXT:     Parent:          
+// CHECK-0-NEXT:       Type:            Record
+// CHECK-0-NEXT:       Name:            'Class'
+// CHECK-0-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     ReturnType:      
+// CHECK-0-NEXT:       Type:            
+// CHECK-0-NEXT:         Name:            'void'
+// CHECK-0-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Name:            'privateMethod'
+// CHECK-0-NEXT:     Namespace:       
+// CHECK-0-NEXT:       - Type:            Record
+// CHECK-0-NEXT:         Name:            'Class'
+// CHECK-0-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Location:        
+// CHECK-0-NEXT:       - LineNumber:      42
+// CHECK-0-NEXT:         Filename:        'test'
+// CHECK-0-NEXT:     IsMethod:        true
+// CHECK-0-NEXT:     Parent:          
+// CHECK-0-NEXT:       Type:            Record
+// CHECK-0-NEXT:       Name:            'Class'
+// CHECK-0-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     ReturnType:      
+// CHECK-0-NEXT:       Type:            
+// CHECK-0-NEXT:         Name:            'void'
+// CHECK-0-NEXT: ...
+
+// RUN: cat %t/docs/./named.yaml | FileCheck %s --check-prefix CHECK-1
+// CHECK-1: ---
+// CHECK-1-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT: Name:            'named'
+// CHECK-1-NEXT: ChildFunctions:  
+// CHECK-1-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     Name:            'namedFunction'
+// CHECK-1-NEXT:     Namespace:       
+// CHECK-1-NEXT:       - Type:            Namespace
+// CHECK-1-NEXT:         Name:            'named'
+// CHECK-1-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     Location:        
+// CHECK-1-NEXT:       - LineNumber:      61
+// CHECK-1-NEXT:         Filename:        'test'
+// CHECK-1-NEXT:     ReturnType:      
+// CHECK-1-NEXT:       Type:            
+// CHECK-1-NEXT:         Name:            'void'
+// CHECK-1-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     Name:            'namedStaticFunction'
+// CHECK-1-NEXT:     Namespace:       
+// CHECK-1-NEXT:       - Type:            Namespace
+// CHECK-1-NEXT:         Name:            'named'
+// CHECK-1-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     Location:        
+// CHECK-1-NEXT:       - LineNumber:      62
+// CHECK-1-NEXT:         Filename:        'test'
+// CHECK-1-NEXT:     ReturnType:      
+// CHECK-1-NEXT:       Type:            
+// CHECK-1-NEXT:         Name:            'void'
+// CHECK-1-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     Name:            'namedInlineFunction'
+// CHECK-1-NEXT:     Namespace:       
+// CHECK-1-NEXT:       - Type:            Namespace
+// CHECK-1-NEXT:         Name:            'named'
+// CHECK-1-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     Location:        
+// CHECK-1-NEXT:       - LineNumber:      63
+// CHECK-1-NEXT:         Filename:        'test'
+// CHECK-1-NEXT:     ReturnType:      
+// CHECK-1-NEXT:       Type:            
+// CHECK-1-NEXT:         Name:            'void'
+// CHECK-1-NEXT: ...
+
+// RUN: cat %t/docs/./AnonClass.yaml | FileCheck %s --check-prefix CHECK-2
+// CHECK-2: ---
+// CHECK-2-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT: Name:            'AnonClass'
+// CHECK-2-NEXT: Namespace:       
+// CHECK-2-NEXT:   - Type:            Namespace
+// CHECK-2-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT: DefLocation:     
+// CHECK-2-NEXT:   LineNumber:      78
+// CHECK-2-NEXT:   Filename:        'test'
+// CHECK-2-NEXT: TagType:         Class
+// CHECK-2-NEXT: Members:         
+// CHECK-2-NEXT:   - Type:            
+// CHECK-2-NEXT:       Name:            'int'
+// CHECK-2-NEXT:     Name:            'anonPublicField'
+// CHECK-2-NEXT:   - Type:            
+// CHECK-2-NEXT:       Name:            'int'
+// CHECK-2-NEXT:     Name:            'anonProtectedField'
+// CHECK-2-NEXT:     Access:          Protected
+// CHECK-2-NEXT:   - Type:            
+// CHECK-2-NEXT:       Name:            'int'
+// CHECK-2-NEXT:     Name:            'anonPrivateField'
+// CHECK-2-NEXT:     Access:          Private
+// CHECK-2-NEXT: ChildFunctions:  
+// CHECK-2-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:     Name:            'anonPublicMethod'
+// CHECK-2-NEXT:     Namespace:       
+// CHECK-2-NEXT:       - Type:            Record
+// CHECK-2-NEXT:         Name:            'AnonClass'
+// CHECK-2-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:       - Type:            Namespace
+// CHECK-2-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:     Location:        
+// CHECK-2-NEXT:       - LineNumber:      80
+// CHECK-2-NEXT:         Filename:        'test'
+// CHECK-2-NEXT:     IsMethod:        true
+// CHECK-2-NEXT:     Parent:          
+// CHECK-2-NEXT:       Type:            Record
+// CHECK-2-NEXT:       Name:            'AnonClass'
+// CHECK-2-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:     ReturnType:      
+// CHECK-2-NEXT:       Type:            
+// CHECK-2-NEXT:         Name:            'void'
+// CHECK-2-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:     Name:            'anonProtectedMethod'
+// CHECK-2-NEXT:     Namespace:       
+// CHECK-2-NEXT:       - Type:            Record
+// CHECK-2-NEXT:         Name:            'AnonClass'
+// CHECK-2-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:       - Type:            Namespace
+// CHECK-2-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:     Location:        
+// CHECK-2-NEXT:       - LineNumber:      84
+// CHECK-2-NEXT:         Filename:        'test'
+// CHECK-2-NEXT:     IsMethod:        true
+// CHECK-2-NEXT:     Parent:          
+// CHECK-2-NEXT:       Type:            Record
+// CHECK-2-NEXT:       Name:            'AnonClass'
+// CHECK-2-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:     ReturnType:      
+// CHECK-2-NEXT:       Type:            
+// CHECK-2-NEXT:         Name:            'void'
+// CHECK-2-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:     Name:            'anonPrivateMethod'
+// CHECK-2-NEXT:     Namespace:       
+// CHECK-2-NEXT:       - Type:            Record
+// CHECK-2-NEXT:         Name:            'AnonClass'
+// CHECK-2-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:       - Type:            Namespace
+// CHECK-2-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:     Location:        
+// CHECK-2-NEXT:       - LineNumber:      88
+// CHECK-2-NEXT:         Filename:        'test'
+// CHECK-2-NEXT:     IsMethod:        true
+// CHECK-2-NEXT:     Parent:          
+// CHECK-2-NEXT:       Type:            Record
+// CHECK-2-NEXT:       Name:            'AnonClass'
+// CHECK-2-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-2-NEXT:     ReturnType:      
+// CHECK-2-NEXT:       Type:            
+// CHECK-2-NEXT:         Name:            'void'
+// CHECK-2-NEXT: ...
+
+// RUN: cat %t/docs/./GlobalNamespace.yaml | FileCheck %s --check-prefix CHECK-3
+// CHECK-3: ---
+// CHECK-3-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT: ChildFunctions:  
+// CHECK-3-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Name:            'anonFunction'
+// CHECK-3-NEXT:     Namespace:       
+// CHECK-3-NEXT:       - Type:            Namespace
+// CHECK-3-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Location:        
+// CHECK-3-NEXT:       - LineNumber:      92
+// CHECK-3-NEXT:         Filename:        'test'
+// CHECK-3-NEXT:     ReturnType:      
+// CHECK-3-NEXT:       Type:            
+// CHECK-3-NEXT:         Name:            'void'
+// CHECK-3-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Name:            'anonStaticFunction'
+// CHECK-3-NEXT:     Namespace:       
+// CHECK-3-NEXT:       - Type:            Namespace
+// CHECK-3-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Location:        
+// CHECK-3-NEXT:       - LineNumber:      93
+// CHECK-3-NEXT:         Filename:        'test'
+// CHECK-3-NEXT:     ReturnType:      
+// CHECK-3-NEXT:       Type:            
+// CHECK-3-NEXT:         Name:            'void'
+// CHECK-3-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Name:            'anonInlineFunction'
+// CHECK-3-NEXT:     Namespace:       
+// CHECK-3-NEXT:       - Type:            Namespace
+// CHECK-3-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Location:        
+// CHECK-3-NEXT:       - LineNumber:      94
+// CHECK-3-NEXT:         Filename:        'test'
+// CHECK-3-NEXT:     ReturnType:      
+// CHECK-3-NEXT:       Type:            
+// CHECK-3-NEXT:         Name:            'void'
+// CHECK-3-NEXT: ...
+
+// RUN: cat %t/docs/staticFunctionWithInnerClass/InnerClass.yaml | FileCheck %s --check-prefix CHECK-4
+// CHECK-4: ---
+// CHECK-4-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: Name:            'InnerClass'
+// CHECK-4-NEXT: Namespace:       
+// CHECK-4-NEXT:   - Type:            Function
+// CHECK-4-NEXT:     Name:            'staticFunctionWithInnerClass'
+// CHECK-4-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT: DefLocation:     
+// CHECK-4-NEXT:   LineNumber:      69
+// CHECK-4-NEXT:   Filename:        'test'
+// CHECK-4-NEXT: TagType:         Class
+// CHECK-4-NEXT: ChildFunctions:  
+// CHECK-4-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT:     Name:            'innerPublicMethod'
+// CHECK-4-NEXT:     Namespace:       
+// CHECK-4-NEXT:       - Type:            Record
+// CHECK-4-NEXT:         Name:            'InnerClass'
+// CHECK-4-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT:       - Type:            Function
+// CHECK-4-NEXT:         Name:            'staticFunctionWithInnerClass'
+// CHECK-4-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT:     DefLocation:     
+// CHECK-4-NEXT:       LineNumber:      71
+// CHECK-4-NEXT:       Filename:        'test'
+// CHECK-4-NEXT:     IsMethod:        true
+// CHECK-4-NEXT:     Parent:          
+// CHECK-4-NEXT:       Type:            Record
+// CHECK-4-NEXT:       Name:            'InnerClass'
+// CHECK-4-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-4-NEXT:     ReturnType:      
+// CHECK-4-NEXT:       Type:            
+// CHECK-4-NEXT:         Name:            'int'
+// CHECK-4-NEXT: ...
+
+// RUN: cat %t/docs/named/NamedClass.yaml | FileCheck %s --check-prefix CHECK-5
+// CHECK-5: ---
+// CHECK-5-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT: Name:            'NamedClass'
+// CHECK-5-NEXT: Namespace:       
+// CHECK-5-NEXT:   - Type:            Namespace
+// CHECK-5-NEXT:     Name:            'named'
+// CHECK-5-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT: DefLocation:     
+// CHECK-5-NEXT:   LineNumber:      47
+// CHECK-5-NEXT:   Filename:        'test'
+// CHECK-5-NEXT: TagType:         Class
+// CHECK-5-NEXT: Members:         
+// CHECK-5-NEXT:   - Type:            
+// CHECK-5-NEXT:       Name:            'int'
+// CHECK-5-NEXT:     Name:            'namedPublicField'
+// CHECK-5-NEXT:   - Type:            
+// CHECK-5-NEXT:       Name:            'int'
+// CHECK-5-NEXT:     Name:            'namedProtectedField'
+// CHECK-5-NEXT:     Access:          Protected
+// CHECK-5-NEXT:   - Type:            
+// CHECK-5-NEXT:       Name:            'int'
+// CHECK-5-NEXT:     Name:            'namedPrivateField'
+// CHECK-5-NEXT:     Access:          Private
+// CHECK-5-NEXT: ChildFunctions:  
+// CHECK-5-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT:     Name:            'namedPublicMethod'
+// CHECK-5-NEXT:     Namespace:       
+// CHECK-5-NEXT:       - Type:            Record
+// CHECK-5-NEXT:         Name:            'NamedClass'
+// CHECK-5-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT:       - Type:            Namespace
+// CHECK-5-NEXT:         Name:            'named'
+// CHECK-5-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT:     Location:        
+// CHECK-5-NEXT:       - LineNumber:      49
+// CHECK-5-NEXT:         Filename:        'test'
+// CHECK-5-NEXT:     IsMethod:        true
+// CHECK-5-NEXT:     Parent:          
+// CHECK-5-NEXT:       Type:            Record
+// CHECK-5-NEXT:       Name:            'NamedClass'
+// CHECK-5-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT:     ReturnType:      
+// CHECK-5-NEXT:       Type:            
+// CHECK-5-NEXT:         Name:            'void'
+// CHECK-5-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT:     Name:            'namedProtectedMethod'
+// CHECK-5-NEXT:     Namespace:       
+// CHECK-5-NEXT:       - Type:            Record
+// CHECK-5-NEXT:         Name:            'NamedClass'
+// CHECK-5-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT:       - Type:            Namespace
+// CHECK-5-NEXT:         Name:            'named'
+// CHECK-5-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT:     Location:        
+// CHECK-5-NEXT:       - LineNumber:      53
+// CHECK-5-NEXT:         Filename:        'test'
+// CHECK-5-NEXT:     IsMethod:        true
+// CHECK-5-NEXT:     Parent:          
+// CHECK-5-NEXT:       Type:            Record
+// CHECK-5-NEXT:       Name:            'NamedClass'
+// CHECK-5-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT:     ReturnType:      
+// CHECK-5-NEXT:       Type:            
+// CHECK-5-NEXT:         Name:            'void'
+// CHECK-5-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT:     Name:            'namedPrivateMethod'
+// CHECK-5-NEXT:     Namespace:       
+// CHECK-5-NEXT:       - Type:            Record
+// CHECK-5-NEXT:         Name:            'NamedClass'
+// CHECK-5-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT:       - Type:            Namespace
+// CHECK-5-NEXT:         Name:            'named'
+// CHECK-5-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT:     Location:        
+// CHECK-5-NEXT:       - LineNumber:      57
+// CHECK-5-NEXT:         Filename:        'test'
+// CHECK-5-NEXT:     IsMethod:        true
+// CHECK-5-NEXT:     Parent:          
+// CHECK-5-NEXT:       Type:            Record
+// CHECK-5-NEXT:       Name:            'NamedClass'
+// CHECK-5-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT:     ReturnType:      
+// CHECK-5-NEXT:       Type:            
+// CHECK-5-NEXT:         Name:            'void'
+// CHECK-5-NEXT: ...
+
+// RUN: cat %t/docs/functionWithInnerClass/InnerClass.yaml | FileCheck %s --check-prefix CHECK-6
+// CHECK-6: ---
+// CHECK-6-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-6-NEXT: Name:            'InnerClass'
+// CHECK-6-NEXT: Namespace:       
+// CHECK-6-NEXT:   - Type:            Function
+// CHECK-6-NEXT:     Name:            'functionWithInnerClass'
+// CHECK-6-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-6-NEXT: DefLocation:     
+// CHECK-6-NEXT:   LineNumber:      15
+// CHECK-6-NEXT:   Filename:        'test'
+// CHECK-6-NEXT: TagType:         Class
+// CHECK-6-NEXT: ChildFunctions:  
+// CHECK-6-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-6-NEXT:     Name:            'innerPublicMethod'
+// CHECK-6-NEXT:     Namespace:       
+// CHECK-6-NEXT:       - Type:            Record
+// CHECK-6-NEXT:         Name:            'InnerClass'
+// CHECK-6-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-6-NEXT:       - Type:            Function
+// CHECK-6-NEXT:         Name:            'functionWithInnerClass'
+// CHECK-6-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-6-NEXT:     DefLocation:     
+// CHECK-6-NEXT:       LineNumber:      17
+// CHECK-6-NEXT:       Filename:        'test'
+// CHECK-6-NEXT:     IsMethod:        true
+// CHECK-6-NEXT:     Parent:          
+// CHECK-6-NEXT:       Type:            Record
+// CHECK-6-NEXT:       Name:            'InnerClass'
+// CHECK-6-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-6-NEXT:     ReturnType:      
+// CHECK-6-NEXT:       Type:            
+// CHECK-6-NEXT:         Name:            'int'
+// CHECK-6-NEXT: ...
+
+// RUN: cat %t/docs/inlinedFunctionWithInnerClass/InnerClass.yaml | FileCheck %s --check-prefix CHECK-7
+// CHECK-7: ---
+// CHECK-7-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-7-NEXT: Name:            'InnerClass'
+// CHECK-7-NEXT: Namespace:       
+// CHECK-7-NEXT:   - Type:            Function
+// CHECK-7-NEXT:     Name:            'inlinedFunctionWithInnerClass'
+// CHECK-7-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-7-NEXT: DefLocation:     
+// CHECK-7-NEXT:   LineNumber:      24
+// CHECK-7-NEXT:   Filename:        'test'
+// CHECK-7-NEXT: TagType:         Class
+// CHECK-7-NEXT: ChildFunctions:  
+// CHECK-7-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-7-NEXT:     Name:            'innerPublicMethod'
+// CHECK-7-NEXT:     Namespace:       
+// CHECK-7-NEXT:       - Type:            Record
+// CHECK-7-NEXT:         Name:            'InnerClass'
+// CHECK-7-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-7-NEXT:       - Type:            Function
+// CHECK-7-NEXT:         Name:            'inlinedFunctionWithInnerClass'
+// CHECK-7-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-7-NEXT:     DefLocation:     
+// CHECK-7-NEXT:       LineNumber:      26
+// CHECK-7-NEXT:       Filename:        'test'
+// CHECK-7-NEXT:     IsMethod:        true
+// CHECK-7-NEXT:     Parent:          
+// CHECK-7-NEXT:       Type:            Record
+// CHECK-7-NEXT:       Name:            'InnerClass'
+// CHECK-7-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-7-NEXT:     ReturnType:      
+// CHECK-7-NEXT:       Type:            
+// CHECK-7-NEXT:         Name:            'int'
+// CHECK-7-NEXT: ...

Added: clang-tools-extra/trunk/test/clang-doc/yaml-module.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/yaml-module.cpp?rev=338763&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/yaml-module.cpp (added)
+++ clang-tools-extra/trunk/test/clang-doc/yaml-module.cpp Thu Aug  2 13:10:17 2018
@@ -0,0 +1,63 @@
+// THIS IS A GENERATED TEST. DO NOT EDIT.
+// To regenerate, see clang-doc/gen_test.py docstring.
+//
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: echo "" > %t/compile_flags.txt
+// RUN: cp "%s" "%t/test.cpp"
+
+export module M;
+
+int moduleFunction(int x); // ModuleLinkage
+
+static int staticModuleFunction(int x); // ModuleInternalLinkage
+
+export double exportedModuleFunction(double y, int z); // ExternalLinkage
+
+// RUN: clang-doc --format=yaml --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
+
+
+// RUN: cat %t/docs/./GlobalNamespace.yaml | FileCheck %s --check-prefix CHECK-0
+// CHECK-0: ---
+// CHECK-0-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT: ChildFunctions:  
+// CHECK-0-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Name:            'moduleFunction'
+// CHECK-0-NEXT:     Location:        
+// CHECK-0-NEXT:       - LineNumber:      11
+// CHECK-0-NEXT:         Filename:        'test'
+// CHECK-0-NEXT:     Params:          
+// CHECK-0-NEXT:       - Type:            
+// CHECK-0-NEXT:           Name:            'int'
+// CHECK-0-NEXT:         Name:            'x'
+// CHECK-0-NEXT:     ReturnType:      
+// CHECK-0-NEXT:       Type:            
+// CHECK-0-NEXT:         Name:            'int'
+// CHECK-0-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Name:            'staticModuleFunction'
+// CHECK-0-NEXT:     Location:        
+// CHECK-0-NEXT:       - LineNumber:      13
+// CHECK-0-NEXT:         Filename:        'test'
+// CHECK-0-NEXT:     Params:          
+// CHECK-0-NEXT:       - Type:            
+// CHECK-0-NEXT:           Name:            'int'
+// CHECK-0-NEXT:         Name:            'x'
+// CHECK-0-NEXT:     ReturnType:      
+// CHECK-0-NEXT:       Type:            
+// CHECK-0-NEXT:         Name:            'int'
+// CHECK-0-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Name:            'exportedModuleFunction'
+// CHECK-0-NEXT:     Location:        
+// CHECK-0-NEXT:       - LineNumber:      15
+// CHECK-0-NEXT:         Filename:        'test'
+// CHECK-0-NEXT:     Params:          
+// CHECK-0-NEXT:       - Type:            
+// CHECK-0-NEXT:           Name:            'double'
+// CHECK-0-NEXT:         Name:            'y'
+// CHECK-0-NEXT:       - Type:            
+// CHECK-0-NEXT:           Name:            'int'
+// CHECK-0-NEXT:         Name:            'z'
+// CHECK-0-NEXT:     ReturnType:      
+// CHECK-0-NEXT:       Type:            
+// CHECK-0-NEXT:         Name:            'double'
+// CHECK-0-NEXT: ...

Modified: clang-tools-extra/trunk/test/clang-doc/yaml-namespace.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/yaml-namespace.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/yaml-namespace.cpp (original)
+++ clang-tools-extra/trunk/test/clang-doc/yaml-namespace.cpp Thu Aug  2 13:10:17 2018
@@ -25,81 +25,72 @@ E func(int i) { return X; }
 }  // namespace B
 }  // namespace A
 
-// RUN: clang-doc --format=yaml --doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: clang-doc --format=yaml --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
 
 
 // RUN: cat %t/docs/./A.yaml | FileCheck %s --check-prefix CHECK-0
 // CHECK-0: ---
-// CHECK-0-NEXT: USR:             '8D042EFFC98B373450BC6B5B90A330C25A150E9C'
+// CHECK-0-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
 // CHECK-0-NEXT: Name:            'A'
+// CHECK-0-NEXT: ChildFunctions:  
+// CHECK-0-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     Name:            'f'
+// CHECK-0-NEXT:     Namespace:       
+// CHECK-0-NEXT:       - Type:            Namespace
+// CHECK-0-NEXT:         Name:            'A'
+// CHECK-0-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-0-NEXT:     DefLocation:     
+// CHECK-0-NEXT:       LineNumber:      17
+// CHECK-0-NEXT:       Filename:        'test'
+// CHECK-0-NEXT:     Location:        
+// CHECK-0-NEXT:       - LineNumber:      11
+// CHECK-0-NEXT:         Filename:        'test'
+// CHECK-0-NEXT:     ReturnType:      
+// CHECK-0-NEXT:       Type:            
+// CHECK-0-NEXT:         Name:            'void'
 // CHECK-0-NEXT: ...
 
-// RUN: cat %t/docs/A/f.yaml | FileCheck %s --check-prefix CHECK-1
+// RUN: cat %t/docs/A/B.yaml | FileCheck %s --check-prefix CHECK-1
 // CHECK-1: ---
-// CHECK-1-NEXT: USR:             '39D3C95A5F7CE2BA4937BD7B01BAE09EBC2AD8AC'
-// CHECK-1-NEXT: Name:            'f'
+// CHECK-1-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT: Name:            'B'
 // CHECK-1-NEXT: Namespace:       
 // CHECK-1-NEXT:   - Type:            Namespace
 // CHECK-1-NEXT:     Name:            'A'
-// CHECK-1-NEXT:     USR:             '8D042EFFC98B373450BC6B5B90A330C25A150E9C'
-// CHECK-1-NEXT: DefLocation:     
-// CHECK-1-NEXT:   LineNumber:      17
-// CHECK-1-NEXT:   Filename:        'test'
-// CHECK-1-NEXT: Location:        
-// CHECK-1-NEXT:   - LineNumber:      11
-// CHECK-1-NEXT:     Filename:        'test'
-// CHECK-1-NEXT: ReturnType:      
-// CHECK-1-NEXT:   Type:            
-// CHECK-1-NEXT:     Name:            'void'
+// CHECK-1-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT: ChildFunctions:  
+// CHECK-1-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     Name:            'func'
+// CHECK-1-NEXT:     Namespace:       
+// CHECK-1-NEXT:       - Type:            Namespace
+// CHECK-1-NEXT:         Name:            'B'
+// CHECK-1-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:       - Type:            Namespace
+// CHECK-1-NEXT:         Name:            'A'
+// CHECK-1-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     DefLocation:     
+// CHECK-1-NEXT:       LineNumber:      23
+// CHECK-1-NEXT:       Filename:        'test'
+// CHECK-1-NEXT:     Params:          
+// CHECK-1-NEXT:       - Type:            
+// CHECK-1-NEXT:           Name:            'int'
+// CHECK-1-NEXT:         Name:            'i'
+// CHECK-1-NEXT:     ReturnType:      
+// CHECK-1-NEXT:       Type:            
+// CHECK-1-NEXT:         Name:            'enum A::B::E'
+// CHECK-1-NEXT: ChildEnums:      
+// CHECK-1-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     Name:            'E'
+// CHECK-1-NEXT:     Namespace:       
+// CHECK-1-NEXT:       - Type:            Namespace
+// CHECK-1-NEXT:         Name:            'B'
+// CHECK-1-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:       - Type:            Namespace
+// CHECK-1-NEXT:         Name:            'A'
+// CHECK-1-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-1-NEXT:     DefLocation:     
+// CHECK-1-NEXT:       LineNumber:      21
+// CHECK-1-NEXT:       Filename:        'test'
+// CHECK-1-NEXT:     Members:         
+// CHECK-1-NEXT:       - 'X'
 // CHECK-1-NEXT: ...
-
-// RUN: cat %t/docs/A/B.yaml | FileCheck %s --check-prefix CHECK-2
-// CHECK-2: ---
-// CHECK-2-NEXT: USR:             'E21AF79E2A9D02554BA090D10DF39FE273F5CDB5'
-// CHECK-2-NEXT: Name:            'B'
-// CHECK-2-NEXT: Namespace:       
-// CHECK-2-NEXT:   - Type:            Namespace
-// CHECK-2-NEXT:     Name:            'A'
-// CHECK-2-NEXT:     USR:             '8D042EFFC98B373450BC6B5B90A330C25A150E9C'
-// CHECK-2-NEXT: ...
-
-// RUN: cat %t/docs/A/B/E.yaml | FileCheck %s --check-prefix CHECK-3
-// CHECK-3: ---
-// CHECK-3-NEXT: USR:             'E9ABF7E7E2425B626723D41E76E4BC7E7A5BD775'
-// CHECK-3-NEXT: Name:            'E'
-// CHECK-3-NEXT: Namespace:       
-// CHECK-3-NEXT:   - Type:            Namespace
-// CHECK-3-NEXT:     Name:            'B'
-// CHECK-3-NEXT:     USR:             'E21AF79E2A9D02554BA090D10DF39FE273F5CDB5'
-// CHECK-3-NEXT:   - Type:            Namespace
-// CHECK-3-NEXT:     Name:            'A'
-// CHECK-3-NEXT:     USR:             '8D042EFFC98B373450BC6B5B90A330C25A150E9C'
-// CHECK-3-NEXT: DefLocation:     
-// CHECK-3-NEXT:   LineNumber:      21
-// CHECK-3-NEXT:   Filename:        'test'
-// CHECK-3-NEXT: Members:         
-// CHECK-3-NEXT:   - 'X'
-// CHECK-3-NEXT: ...
-
-// RUN: cat %t/docs/A/B/func.yaml | FileCheck %s --check-prefix CHECK-4
-// CHECK-4: ---
-// CHECK-4-NEXT: USR:             '9A82CB33ED0FDF81EE383D31CD0957D153C5E840'
-// CHECK-4-NEXT: Name:            'func'
-// CHECK-4-NEXT: Namespace:       
-// CHECK-4-NEXT:   - Type:            Namespace
-// CHECK-4-NEXT:     Name:            'B'
-// CHECK-4-NEXT:     USR:             'E21AF79E2A9D02554BA090D10DF39FE273F5CDB5'
-// CHECK-4-NEXT:   - Type:            Namespace
-// CHECK-4-NEXT:     Name:            'A'
-// CHECK-4-NEXT:     USR:             '8D042EFFC98B373450BC6B5B90A330C25A150E9C'
-// CHECK-4-NEXT: DefLocation:     
-// CHECK-4-NEXT:   LineNumber:      23
-// CHECK-4-NEXT:   Filename:        'test'
-// CHECK-4-NEXT: Params:          
-// CHECK-4-NEXT:   - Type:            
-// CHECK-4-NEXT:       Name:            'int'
-// CHECK-4-NEXT:     Name:            'i'
-// CHECK-4-NEXT: ReturnType:      
-// CHECK-4-NEXT:   Type:            
-// CHECK-4-NEXT:     Name:            'enum A::B::E'
-// CHECK-4-NEXT: ...

Modified: clang-tools-extra/trunk/test/clang-doc/yaml-record.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/yaml-record.cpp?rev=338763&r1=338762&r2=338763&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-doc/yaml-record.cpp (original)
+++ clang-tools-extra/trunk/test/clang-doc/yaml-record.cpp Thu Aug  2 13:10:17 2018
@@ -39,12 +39,12 @@ class X {
   class Y {};
 };
 
-// RUN: clang-doc --format=yaml --doxygen -p %t %t/test.cpp -output=%t/docs
+// RUN: clang-doc --format=yaml --doxygen --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs
 
 
 // RUN: cat %t/docs/./C.yaml | FileCheck %s --check-prefix CHECK-0
 // CHECK-0: ---
-// CHECK-0-NEXT: USR:             '06B5F6A19BA9F6A832E127C9968282B94619B210'
+// CHECK-0-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
 // CHECK-0-NEXT: Name:            'C'
 // CHECK-0-NEXT: DefLocation:     
 // CHECK-0-NEXT:   LineNumber:      21
@@ -57,7 +57,7 @@ class X {
 
 // RUN: cat %t/docs/./A.yaml | FileCheck %s --check-prefix CHECK-1
 // CHECK-1: ---
-// CHECK-1-NEXT: USR:             'ACE81AFA6627B4CEF2B456FB6E1252925674AF7E'
+// CHECK-1-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
 // CHECK-1-NEXT: Name:            'A'
 // CHECK-1-NEXT: DefLocation:     
 // CHECK-1-NEXT:   LineNumber:      15
@@ -74,7 +74,7 @@ class X {
 
 // RUN: cat %t/docs/./F.yaml | FileCheck %s --check-prefix CHECK-2
 // CHECK-2: ---
-// CHECK-2-NEXT: USR:             'E3B54702FABFF4037025BA194FC27C47006330B5'
+// CHECK-2-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
 // CHECK-2-NEXT: Name:            'F'
 // CHECK-2-NEXT: DefLocation:     
 // CHECK-2-NEXT:   LineNumber:      36
@@ -83,26 +83,81 @@ class X {
 // CHECK-2-NEXT: Parents:         
 // CHECK-2-NEXT:   - Type:            Record
 // CHECK-2-NEXT:     Name:            'E'
-// CHECK-2-NEXT:     USR:             '289584A8E0FF4178A794622A547AA622503967A1'
+// CHECK-2-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
 // CHECK-2-NEXT: VirtualParents:  
 // CHECK-2-NEXT:   - Type:            Record
 // CHECK-2-NEXT:     Name:            'D'
-// CHECK-2-NEXT:     USR:             '0921737541208B8FA9BB42B60F78AC1D779AA054'
+// CHECK-2-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
 // CHECK-2-NEXT: ...
 
 // RUN: cat %t/docs/./E.yaml | FileCheck %s --check-prefix CHECK-3
 // CHECK-3: ---
-// CHECK-3-NEXT: USR:             '289584A8E0FF4178A794622A547AA622503967A1'
+// CHECK-3-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
 // CHECK-3-NEXT: Name:            'E'
 // CHECK-3-NEXT: DefLocation:     
 // CHECK-3-NEXT:   LineNumber:      25
 // CHECK-3-NEXT:   Filename:        'test'
 // CHECK-3-NEXT: TagType:         Class
+// CHECK-3-NEXT: ChildFunctions:  
+// CHECK-3-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Name:            'E'
+// CHECK-3-NEXT:     Namespace:       
+// CHECK-3-NEXT:       - Type:            Record
+// CHECK-3-NEXT:         Name:            'E'
+// CHECK-3-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     DefLocation:     
+// CHECK-3-NEXT:       LineNumber:      27
+// CHECK-3-NEXT:       Filename:        'test'
+// CHECK-3-NEXT:     IsMethod:        true
+// CHECK-3-NEXT:     Parent:          
+// CHECK-3-NEXT:       Type:            Record
+// CHECK-3-NEXT:       Name:            'E'
+// CHECK-3-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     ReturnType:      
+// CHECK-3-NEXT:       Type:            
+// CHECK-3-NEXT:         Name:            'void'
+// CHECK-3-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Name:            '~E'
+// CHECK-3-NEXT:     Namespace:       
+// CHECK-3-NEXT:       - Type:            Record
+// CHECK-3-NEXT:         Name:            'E'
+// CHECK-3-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     DefLocation:     
+// CHECK-3-NEXT:       LineNumber:      28
+// CHECK-3-NEXT:       Filename:        'test'
+// CHECK-3-NEXT:     IsMethod:        true
+// CHECK-3-NEXT:     Parent:          
+// CHECK-3-NEXT:       Type:            Record
+// CHECK-3-NEXT:       Name:            'E'
+// CHECK-3-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     ReturnType:      
+// CHECK-3-NEXT:       Type:            
+// CHECK-3-NEXT:         Name:            'void'
+// CHECK-3-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     Name:            'ProtectedMethod'
+// CHECK-3-NEXT:     Namespace:       
+// CHECK-3-NEXT:       - Type:            Record
+// CHECK-3-NEXT:         Name:            'E'
+// CHECK-3-NEXT:         USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     DefLocation:     
+// CHECK-3-NEXT:       LineNumber:      34
+// CHECK-3-NEXT:       Filename:        'test'
+// CHECK-3-NEXT:     Location:        
+// CHECK-3-NEXT:       - LineNumber:      31
+// CHECK-3-NEXT:         Filename:        'test'
+// CHECK-3-NEXT:     IsMethod:        true
+// CHECK-3-NEXT:     Parent:          
+// CHECK-3-NEXT:       Type:            Record
+// CHECK-3-NEXT:       Name:            'E'
+// CHECK-3-NEXT:       USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-3-NEXT:     ReturnType:      
+// CHECK-3-NEXT:       Type:            
+// CHECK-3-NEXT:         Name:            'void'
 // CHECK-3-NEXT: ...
 
 // RUN: cat %t/docs/./D.yaml | FileCheck %s --check-prefix CHECK-4
 // CHECK-4: ---
-// CHECK-4-NEXT: USR:             '0921737541208B8FA9BB42B60F78AC1D779AA054'
+// CHECK-4-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
 // CHECK-4-NEXT: Name:            'D'
 // CHECK-4-NEXT: DefLocation:     
 // CHECK-4-NEXT:   LineNumber:      23
@@ -110,143 +165,72 @@ class X {
 // CHECK-4-NEXT: TagType:         Class
 // CHECK-4-NEXT: ...
 
-// RUN: cat %t/docs/./B.yaml | FileCheck %s --check-prefix CHECK-5
+// RUN: cat %t/docs/./X.yaml | FileCheck %s --check-prefix CHECK-5
 // CHECK-5: ---
-// CHECK-5-NEXT: USR:             'FC07BD34D5E77782C263FA944447929EA8753740'
-// CHECK-5-NEXT: Name:            'B'
+// CHECK-5-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-5-NEXT: Name:            'X'
 // CHECK-5-NEXT: DefLocation:     
-// CHECK-5-NEXT:   LineNumber:      17
+// CHECK-5-NEXT:   LineNumber:      38
 // CHECK-5-NEXT:   Filename:        'test'
-// CHECK-5-NEXT: Members:         
-// CHECK-5-NEXT:   - 'X'
-// CHECK-5-NEXT:   - 'Y'
+// CHECK-5-NEXT: TagType:         Class
 // CHECK-5-NEXT: ...
 
-// RUN: cat %t/docs/./X.yaml | FileCheck %s --check-prefix CHECK-6
+// RUN: cat %t/docs/./GlobalNamespace.yaml | FileCheck %s --check-prefix CHECK-6
 // CHECK-6: ---
-// CHECK-6-NEXT: USR:             'CA7C7935730B5EACD25F080E9C83FA087CCDC75E'
-// CHECK-6-NEXT: Name:            'X'
-// CHECK-6-NEXT: DefLocation:     
-// CHECK-6-NEXT:   LineNumber:      38
-// CHECK-6-NEXT:   Filename:        'test'
-// CHECK-6-NEXT: TagType:         Class
+// CHECK-6-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-6-NEXT: ChildFunctions:  
+// CHECK-6-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-6-NEXT:     Name:            'H'
+// CHECK-6-NEXT:     DefLocation:     
+// CHECK-6-NEXT:       LineNumber:      11
+// CHECK-6-NEXT:       Filename:        'test'
+// CHECK-6-NEXT:     ReturnType:      
+// CHECK-6-NEXT:       Type:            
+// CHECK-6-NEXT:         Name:            'void'
+// CHECK-6-NEXT: ChildEnums:      
+// CHECK-6-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-6-NEXT:     Name:            'B'
+// CHECK-6-NEXT:     DefLocation:     
+// CHECK-6-NEXT:       LineNumber:      17
+// CHECK-6-NEXT:       Filename:        'test'
+// CHECK-6-NEXT:     Members:         
+// CHECK-6-NEXT:       - 'X'
+// CHECK-6-NEXT:       - 'Y'
+// CHECK-6-NEXT:   - USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-6-NEXT:     Name:            'Bc'
+// CHECK-6-NEXT:     DefLocation:     
+// CHECK-6-NEXT:       LineNumber:      19
+// CHECK-6-NEXT:       Filename:        'test'
+// CHECK-6-NEXT:     Scoped:          true
+// CHECK-6-NEXT:     Members:         
+// CHECK-6-NEXT:       - 'A'
+// CHECK-6-NEXT:       - 'B'
 // CHECK-6-NEXT: ...
 
-// RUN: cat %t/docs/./H.yaml | FileCheck %s --check-prefix CHECK-7
+// RUN: cat %t/docs/H/I.yaml | FileCheck %s --check-prefix CHECK-7
 // CHECK-7: ---
-// CHECK-7-NEXT: USR:             'B6AC4C5C9F2EA3F2B3ECE1A33D349F4EE502B24E'
-// CHECK-7-NEXT: Name:            'H'
+// CHECK-7-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-7-NEXT: Name:            'I'
+// CHECK-7-NEXT: Namespace:       
+// CHECK-7-NEXT:   - Type:            Function
+// CHECK-7-NEXT:     Name:            'H'
+// CHECK-7-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
 // CHECK-7-NEXT: DefLocation:     
-// CHECK-7-NEXT:   LineNumber:      11
+// CHECK-7-NEXT:   LineNumber:      12
 // CHECK-7-NEXT:   Filename:        'test'
-// CHECK-7-NEXT: ReturnType:      
-// CHECK-7-NEXT:   Type:            
-// CHECK-7-NEXT:     Name:            'void'
+// CHECK-7-NEXT: TagType:         Class
 // CHECK-7-NEXT: ...
 
-// RUN: cat %t/docs/./Bc.yaml | FileCheck %s --check-prefix CHECK-8
+// RUN: cat %t/docs/X/Y.yaml | FileCheck %s --check-prefix CHECK-8
 // CHECK-8: ---
-// CHECK-8-NEXT: USR:             '1E3438A08BA22025C0B46289FF0686F92C8924C5'
-// CHECK-8-NEXT: Name:            'Bc'
+// CHECK-8-NEXT: USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
+// CHECK-8-NEXT: Name:            'Y'
+// CHECK-8-NEXT: Namespace:       
+// CHECK-8-NEXT:   - Type:            Record
+// CHECK-8-NEXT:     Name:            'X'
+// CHECK-8-NEXT:     USR:             '{{[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]}}'
 // CHECK-8-NEXT: DefLocation:     
-// CHECK-8-NEXT:   LineNumber:      19
+// CHECK-8-NEXT:   LineNumber:      39
 // CHECK-8-NEXT:   Filename:        'test'
-// CHECK-8-NEXT: Scoped:          true
-// CHECK-8-NEXT: Members:         
-// CHECK-8-NEXT:   - 'A'
-// CHECK-8-NEXT:   - 'B'
+// CHECK-8-NEXT: TagType:         Class
 // CHECK-8-NEXT: ...
-
-// RUN: cat %t/docs/H/I.yaml | FileCheck %s --check-prefix CHECK-9
-// CHECK-9: ---
-// CHECK-9-NEXT: USR:             '3FB542274573CAEAD54CEBFFCAEE3D77FB9713D8'
-// CHECK-9-NEXT: Name:            'I'
-// CHECK-9-NEXT: Namespace:       
-// CHECK-9-NEXT:   - Type:            Function
-// CHECK-9-NEXT:     Name:            'H'
-// CHECK-9-NEXT:     USR:             'B6AC4C5C9F2EA3F2B3ECE1A33D349F4EE502B24E'
-// CHECK-9-NEXT: DefLocation:     
-// CHECK-9-NEXT:   LineNumber:      12
-// CHECK-9-NEXT:   Filename:        'test'
-// CHECK-9-NEXT: TagType:         Class
-// CHECK-9-NEXT: ...
-
-// RUN: cat %t/docs/X/Y.yaml | FileCheck %s --check-prefix CHECK-10
-// CHECK-10: ---
-// CHECK-10-NEXT: USR:             '641AB4A3D36399954ACDE29C7A8833032BF40472'
-// CHECK-10-NEXT: Name:            'Y'
-// CHECK-10-NEXT: Namespace:       
-// CHECK-10-NEXT:   - Type:            Record
-// CHECK-10-NEXT:     Name:            'X'
-// CHECK-10-NEXT:     USR:             'CA7C7935730B5EACD25F080E9C83FA087CCDC75E'
-// CHECK-10-NEXT: DefLocation:     
-// CHECK-10-NEXT:   LineNumber:      39
-// CHECK-10-NEXT:   Filename:        'test'
-// CHECK-10-NEXT: TagType:         Class
-// CHECK-10-NEXT: ...
-
-// RUN: cat %t/docs/E/ProtectedMethod.yaml | FileCheck %s --check-prefix CHECK-11
-// CHECK-11: ---
-// CHECK-11-NEXT: USR:             '5093D428CDC62096A67547BA52566E4FB9404EEE'
-// CHECK-11-NEXT: Name:            'ProtectedMethod'
-// CHECK-11-NEXT: Namespace:       
-// CHECK-11-NEXT:   - Type:            Record
-// CHECK-11-NEXT:     Name:            'E'
-// CHECK-11-NEXT:     USR:             '289584A8E0FF4178A794622A547AA622503967A1'
-// CHECK-11-NEXT: DefLocation:     
-// CHECK-11-NEXT:   LineNumber:      34
-// CHECK-11-NEXT:   Filename:        'test'
-// CHECK-11-NEXT: Location:        
-// CHECK-11-NEXT:   - LineNumber:      31
-// CHECK-11-NEXT:     Filename:        'test'
-// CHECK-11-NEXT: IsMethod:        true
-// CHECK-11-NEXT: Parent:          
-// CHECK-11-NEXT:   Type:            Record
-// CHECK-11-NEXT:   Name:            'E'
-// CHECK-11-NEXT:   USR:             '289584A8E0FF4178A794622A547AA622503967A1'
-// CHECK-11-NEXT: ReturnType:      
-// CHECK-11-NEXT:   Type:            
-// CHECK-11-NEXT:     Name:            'void'
-// CHECK-11-NEXT: ...
-
-// RUN: cat %t/docs/E/E.yaml | FileCheck %s --check-prefix CHECK-12
-// CHECK-12: ---
-// CHECK-12-NEXT: USR:             'DEB4AC1CD9253CD9EF7FBE6BCAC506D77984ABD4'
-// CHECK-12-NEXT: Name:            'E'
-// CHECK-12-NEXT: Namespace:       
-// CHECK-12-NEXT:   - Type:            Record
-// CHECK-12-NEXT:     Name:            'E'
-// CHECK-12-NEXT:     USR:             '289584A8E0FF4178A794622A547AA622503967A1'
-// CHECK-12-NEXT: DefLocation:     
-// CHECK-12-NEXT:   LineNumber:      27
-// CHECK-12-NEXT:   Filename:        'test'
-// CHECK-12-NEXT: IsMethod:        true
-// CHECK-12-NEXT: Parent:          
-// CHECK-12-NEXT:   Type:            Record
-// CHECK-12-NEXT:   Name:            'E'
-// CHECK-12-NEXT:   USR:             '289584A8E0FF4178A794622A547AA622503967A1'
-// CHECK-12-NEXT: ReturnType:      
-// CHECK-12-NEXT:   Type:            
-// CHECK-12-NEXT:     Name:            'void'
-// CHECK-12-NEXT: ...
-
-// RUN: cat %t/docs/E/~E.yaml | FileCheck %s --check-prefix CHECK-13
-// CHECK-13: ---
-// CHECK-13-NEXT: USR:             'BD2BDEBD423F80BACCEA75DE6D6622D355FC2D17'
-// CHECK-13-NEXT: Name:            '~E'
-// CHECK-13-NEXT: Namespace:       
-// CHECK-13-NEXT:   - Type:            Record
-// CHECK-13-NEXT:     Name:            'E'
-// CHECK-13-NEXT:     USR:             '289584A8E0FF4178A794622A547AA622503967A1'
-// CHECK-13-NEXT: DefLocation:     
-// CHECK-13-NEXT:   LineNumber:      28
-// CHECK-13-NEXT:   Filename:        'test'
-// CHECK-13-NEXT: IsMethod:        true
-// CHECK-13-NEXT: Parent:          
-// CHECK-13-NEXT:   Type:            Record
-// CHECK-13-NEXT:   Name:            'E'
-// CHECK-13-NEXT:   USR:             '289584A8E0FF4178A794622A547AA622503967A1'
-// CHECK-13-NEXT: ReturnType:      
-// CHECK-13-NEXT:   Type:            
-// CHECK-13-NEXT:     Name:            'void'
-// CHECK-13-NEXT: ...




More information about the cfe-commits mailing list