[clang-tools-extra] ea086d1 - Revert "[clang-doc] Improving Markdown Output"

Petr Hosek via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 4 16:00:31 PST 2020


Author: Petr Hosek
Date: 2020-03-04T16:00:22-08:00
New Revision: ea086d10ceafb5ad04e4cb37a0f19b916652e74d

URL: https://github.com/llvm/llvm-project/commit/ea086d10ceafb5ad04e4cb37a0f19b916652e74d
DIFF: https://github.com/llvm/llvm-project/commit/ea086d10ceafb5ad04e4cb37a0f19b916652e74d.diff

LOG: Revert "[clang-doc] Improving Markdown Output"

This reverts commit 45499f3801d8a00919deaf38c801885d8e75b942, it's
still failing on Windows bots.

Added: 
    

Modified: 
    clang-tools-extra/clang-doc/HTMLGenerator.cpp
    clang-tools-extra/clang-doc/MDGenerator.cpp
    clang-tools-extra/clang-doc/Representation.cpp
    clang-tools-extra/clang-doc/Representation.h
    clang-tools-extra/clang-doc/assets/index.js
    clang-tools-extra/clang-doc/tool/ClangDocMain.cpp
    clang-tools-extra/test/clang-doc/single-file.cpp
    clang-tools-extra/unittests/clang-doc/HTMLGeneratorTest.cpp
    clang-tools-extra/unittests/clang-doc/MDGeneratorTest.cpp

Removed: 
    


################################################################################
diff  --git a/clang-tools-extra/clang-doc/HTMLGenerator.cpp b/clang-tools-extra/clang-doc/HTMLGenerator.cpp
index dc569e2a482c..249d577e8580 100644
--- a/clang-tools-extra/clang-doc/HTMLGenerator.cpp
+++ b/clang-tools-extra/clang-doc/HTMLGenerator.cpp
@@ -314,9 +314,9 @@ genReference(const Reference &Type, StringRef CurrentDirectory,
     else
       return genLink(Type.Name, "#" + JumpToSection.getValue());
   }
-  llvm::SmallString<64> Path = Type.getRelativeFilePath(CurrentDirectory);
-  llvm::sys::path::append(Path, Type.getFileBaseName() + ".html");
-
+  llvm::SmallString<128> Path =
+      computeRelativePath(Type.Path, CurrentDirectory);
+  llvm::sys::path::append(Path, Type.Name + ".html");
   // Paths in HTML must be in posix-style
   llvm::sys::path::native(Path, llvm::sys::path::Style::posix);
   if (JumpToSection)
@@ -730,17 +730,15 @@ genHTML(const NamespaceInfo &I, Index &InfoIndex, const ClangDocContext &CDCtx,
   if (!I.Description.empty())
     Out.emplace_back(genHTML(I.Description));
 
-  llvm::SmallString<64> BasePath = I.getRelativeFilePath("");
-
   std::vector<std::unique_ptr<TagNode>> ChildNamespaces =
-      genReferencesBlock(I.ChildNamespaces, "Namespaces", BasePath);
+      genReferencesBlock(I.ChildNamespaces, "Namespaces", I.Path);
   AppendVector(std::move(ChildNamespaces), Out);
   std::vector<std::unique_ptr<TagNode>> ChildRecords =
-      genReferencesBlock(I.ChildRecords, "Records", BasePath);
+      genReferencesBlock(I.ChildRecords, "Records", I.Path);
   AppendVector(std::move(ChildRecords), Out);
 
   std::vector<std::unique_ptr<TagNode>> ChildFunctions =
-      genFunctionsBlock(I.ChildFunctions, CDCtx, BasePath);
+      genFunctionsBlock(I.ChildFunctions, CDCtx, I.Path);
   AppendVector(std::move(ChildFunctions), Out);
   std::vector<std::unique_ptr<TagNode>> ChildEnums =
       genEnumsBlock(I.ChildEnums, CDCtx);
@@ -862,8 +860,8 @@ llvm::Error HTMLGenerator::generateDocForInfo(Info *I, llvm::raw_ostream &OS,
                                    "unexpected info type");
   }
 
-  HTMLFile F = genInfoFile(InfoTitle, I->getRelativeFilePath(""),
-                           MainContentNodes, InfoIndex, CDCtx);
+  HTMLFile F =
+      genInfoFile(InfoTitle, I->Path, MainContentNodes, InfoIndex, CDCtx);
   F.Render(OS);
 
   return llvm::Error::success();
@@ -904,7 +902,7 @@ static llvm::Error SerializeIndex(ClangDocContext &CDCtx) {
       J.attribute("USR", toHex(llvm::toStringRef(I.USR)));
       J.attribute("Name", I.Name);
       J.attribute("RefType", getRefType(I.RefType));
-      J.attribute("Path", I.getRelativeFilePath(""));
+      J.attribute("Path", I.Path);
       J.attributeArray("Children", [&] {
         for (const Index &C : I.Children)
           IndexToJSON(C);

diff  --git a/clang-tools-extra/clang-doc/MDGenerator.cpp b/clang-tools-extra/clang-doc/MDGenerator.cpp
index 0193d47a13cd..ff99c9001349 100644
--- a/clang-tools-extra/clang-doc/MDGenerator.cpp
+++ b/clang-tools-extra/clang-doc/MDGenerator.cpp
@@ -50,20 +50,10 @@ static void writeHeader(const Twine &Text, unsigned int Num, raw_ostream &OS) {
   OS << std::string(Num, '#') + " " + Text << "\n\n";
 }
 
-static void writeFileDefinition(const ClangDocContext &CDCtx, const Location &L,
-                                raw_ostream &OS) {
-
-  if (!CDCtx.RepositoryUrl) {
-    OS << "*Defined at " << L.Filename << "#" << std::to_string(L.LineNumber)
-       << "*";
-  } else {
-    OS << "*Defined at [" << L.Filename << "#" << std::to_string(L.LineNumber)
-       << "](" << StringRef{CDCtx.RepositoryUrl.getValue()}
-       << llvm::sys::path::relative_path(L.Filename) << "#"
-       << std::to_string(L.LineNumber) << ")"
-       << "*";
-  }
-  OS << "\n\n";
+static void writeFileDefinition(const Location &L, raw_ostream &OS) {
+  OS << genItalic("Defined at line " + std::to_string(L.LineNumber) + " of " +
+                  L.Filename)
+     << "\n\n";
 }
 
 static void writeDescription(const CommentInfo &I, raw_ostream &OS) {
@@ -114,19 +104,7 @@ static void writeDescription(const CommentInfo &I, raw_ostream &OS) {
   }
 }
 
-static void writeNameLink(const StringRef &CurrentPath, const Reference &R,
-                          llvm::raw_ostream &OS) {
-
-  llvm::SmallString<64> Path = R.getRelativeFilePath(CurrentPath);
-  llvm::sys::path::append(Path, llvm::sys::path::Style::posix,
-                          R.getFileBaseName() + ".md");
-  // Paths in markdown use posix separators.
-  llvm::sys::path::native(Path, llvm::sys::path::Style::posix);
-  OS << "[" << R.Name << "](" << Path << ")";
-}
-
-static void genMarkdown(const ClangDocContext &CDCtx, const EnumInfo &I,
-                        llvm::raw_ostream &OS) {
+static void genMarkdown(const EnumInfo &I, llvm::raw_ostream &OS) {
   if (I.Scoped)
     writeLine("| enum class " + I.Name + " |", OS);
   else
@@ -140,14 +118,13 @@ static void genMarkdown(const ClangDocContext &CDCtx, const EnumInfo &I,
       Members << "| " << N << " |\n";
   writeLine(Members.str(), OS);
   if (I.DefLoc)
-    writeFileDefinition(CDCtx, I.DefLoc.getValue(), OS);
+    writeFileDefinition(I.DefLoc.getValue(), OS);
 
   for (const auto &C : I.Description)
     writeDescription(C, OS);
 }
 
-static void genMarkdown(const ClangDocContext &CDCtx, const FunctionInfo &I,
-                        llvm::raw_ostream &OS) {
+static void genMarkdown(const FunctionInfo &I, llvm::raw_ostream &OS) {
   std::string Buffer;
   llvm::raw_string_ostream Stream(Buffer);
   bool First = true;
@@ -168,14 +145,13 @@ static void genMarkdown(const ClangDocContext &CDCtx, const FunctionInfo &I,
                         Stream.str() + ")"),
               OS);
   if (I.DefLoc)
-    writeFileDefinition(CDCtx, I.DefLoc.getValue(), OS);
+    writeFileDefinition(I.DefLoc.getValue(), OS);
 
   for (const auto &C : I.Description)
     writeDescription(C, OS);
 }
 
-static void genMarkdown(const ClangDocContext &CDCtx, const NamespaceInfo &I,
-                        llvm::raw_ostream &OS) {
+static void genMarkdown(const NamespaceInfo &I, llvm::raw_ostream &OS) {
   if (I.Name == "")
     writeHeader("Global Namespace", 1, OS);
   else
@@ -188,47 +164,36 @@ static void genMarkdown(const ClangDocContext &CDCtx, const NamespaceInfo &I,
     writeNewLine(OS);
   }
 
-  llvm::SmallString<64> BasePath = I.getRelativeFilePath("");
-
   if (!I.ChildNamespaces.empty()) {
     writeHeader("Namespaces", 2, OS);
-    for (const auto &R : I.ChildNamespaces) {
-      OS << "* ";
-      writeNameLink(BasePath, R, OS);
-      OS << "\n";
-    }
+    for (const auto &R : I.ChildNamespaces)
+      writeLine(R.Name, OS);
     writeNewLine(OS);
   }
-
   if (!I.ChildRecords.empty()) {
     writeHeader("Records", 2, OS);
-    for (const auto &R : I.ChildRecords) {
-      OS << "* ";
-      writeNameLink(BasePath, R, OS);
-      OS << "\n";
-    }
+    for (const auto &R : I.ChildRecords)
+      writeLine(R.Name, OS);
     writeNewLine(OS);
   }
-
   if (!I.ChildFunctions.empty()) {
     writeHeader("Functions", 2, OS);
     for (const auto &F : I.ChildFunctions)
-      genMarkdown(CDCtx, F, OS);
+      genMarkdown(F, OS);
     writeNewLine(OS);
   }
   if (!I.ChildEnums.empty()) {
     writeHeader("Enums", 2, OS);
     for (const auto &E : I.ChildEnums)
-      genMarkdown(CDCtx, E, OS);
+      genMarkdown(E, OS);
     writeNewLine(OS);
   }
 }
 
-static void genMarkdown(const ClangDocContext &CDCtx, const RecordInfo &I,
-                        llvm::raw_ostream &OS) {
+static void genMarkdown(const RecordInfo &I, llvm::raw_ostream &OS) {
   writeHeader(getTagType(I.TagType) + " " + I.Name, 1, OS);
   if (I.DefLoc)
-    writeFileDefinition(CDCtx, I.DefLoc.getValue(), OS);
+    writeFileDefinition(I.DefLoc.getValue(), OS);
 
   if (!I.Description.empty()) {
     for (const auto &C : I.Description)
@@ -269,86 +234,17 @@ static void genMarkdown(const ClangDocContext &CDCtx, const RecordInfo &I,
   if (!I.ChildFunctions.empty()) {
     writeHeader("Functions", 2, OS);
     for (const auto &F : I.ChildFunctions)
-      genMarkdown(CDCtx, F, OS);
+      genMarkdown(F, OS);
     writeNewLine(OS);
   }
   if (!I.ChildEnums.empty()) {
     writeHeader("Enums", 2, OS);
     for (const auto &E : I.ChildEnums)
-      genMarkdown(CDCtx, E, OS);
+      genMarkdown(E, OS);
     writeNewLine(OS);
   }
 }
 
-static void serializeReference(llvm::raw_fd_ostream &OS, Index &I, int Level) {
-  // Write out the heading level starting at ##
-  OS << "##" << std::string(Level, '#') << " ";
-  writeNameLink("", I, OS);
-  OS << "\n";
-}
-
-static llvm::Error serializeIndex(ClangDocContext &CDCtx) {
-  std::error_code FileErr;
-  llvm::SmallString<128> FilePath;
-  llvm::sys::path::native(CDCtx.OutDirectory, FilePath);
-  llvm::sys::path::append(FilePath, "all_files.md");
-  llvm::raw_fd_ostream OS(FilePath, FileErr, llvm::sys::fs::OF_None);
-  if (FileErr)
-    return llvm::createStringError(llvm::inconvertibleErrorCode(),
-                                   "error creating index file: " +
-                                       FileErr.message());
-
-  CDCtx.Idx.sort();
-  OS << "# All Files";
-  if (!CDCtx.ProjectName.empty())
-    OS << " for " << CDCtx.ProjectName;
-  OS << "\n\n";
-
-  for (auto C : CDCtx.Idx.Children)
-    serializeReference(OS, C, 0);
-
-  return llvm::Error::success();
-}
-
-static llvm::Error genIndex(ClangDocContext &CDCtx) {
-  std::error_code FileErr;
-  llvm::SmallString<128> FilePath;
-  llvm::sys::path::native(CDCtx.OutDirectory, FilePath);
-  llvm::sys::path::append(FilePath, "index.md");
-  llvm::raw_fd_ostream OS(FilePath, FileErr, llvm::sys::fs::OF_None);
-  if (FileErr)
-    return llvm::createStringError(llvm::inconvertibleErrorCode(),
-                                   "error creating index file: " +
-                                       FileErr.message());
-  CDCtx.Idx.sort();
-  OS << "# " << CDCtx.ProjectName << " C/C++ Reference\n\n";
-  for (auto C : CDCtx.Idx.Children) {
-    if (!C.Children.empty()) {
-      const char *Type;
-      switch (C.RefType) {
-      case InfoType::IT_namespace:
-        Type = "Namespace";
-        break;
-      case InfoType::IT_record:
-        Type = "Type";
-        break;
-      case InfoType::IT_enum:
-        Type = "Enum";
-        break;
-      case InfoType::IT_function:
-        Type = "Function";
-        break;
-      case InfoType::IT_default:
-        Type = "Other";
-      }
-      OS << "* " << Type << ": [" << C.Name << "](";
-      if (!C.Path.empty())
-        OS << C.Path << "/";
-      OS << C.Name << ")\n";
-    }
-  }
-  return llvm::Error::success();
-}
 /// Generator for Markdown documentation.
 class MDGenerator : public Generator {
 public:
@@ -356,7 +252,6 @@ class MDGenerator : public Generator {
 
   llvm::Error generateDocForInfo(Info *I, llvm::raw_ostream &OS,
                                  const ClangDocContext &CDCtx) override;
-  llvm::Error createResources(ClangDocContext &CDCtx) override;
 };
 
 const char *MDGenerator::Format = "md";
@@ -365,16 +260,16 @@ llvm::Error MDGenerator::generateDocForInfo(Info *I, llvm::raw_ostream &OS,
                                             const ClangDocContext &CDCtx) {
   switch (I->IT) {
   case InfoType::IT_namespace:
-    genMarkdown(CDCtx, *static_cast<clang::doc::NamespaceInfo *>(I), OS);
+    genMarkdown(*static_cast<clang::doc::NamespaceInfo *>(I), OS);
     break;
   case InfoType::IT_record:
-    genMarkdown(CDCtx, *static_cast<clang::doc::RecordInfo *>(I), OS);
+    genMarkdown(*static_cast<clang::doc::RecordInfo *>(I), OS);
     break;
   case InfoType::IT_enum:
-    genMarkdown(CDCtx, *static_cast<clang::doc::EnumInfo *>(I), OS);
+    genMarkdown(*static_cast<clang::doc::EnumInfo *>(I), OS);
     break;
   case InfoType::IT_function:
-    genMarkdown(CDCtx, *static_cast<clang::doc::FunctionInfo *>(I), OS);
+    genMarkdown(*static_cast<clang::doc::FunctionInfo *>(I), OS);
     break;
   case InfoType::IT_default:
     return createStringError(llvm::inconvertibleErrorCode(),
@@ -383,25 +278,11 @@ llvm::Error MDGenerator::generateDocForInfo(Info *I, llvm::raw_ostream &OS,
   return llvm::Error::success();
 }
 
-llvm::Error MDGenerator::createResources(ClangDocContext &CDCtx) {
-  // Write an all_files.md
-  auto Err = serializeIndex(CDCtx);
-  if (Err)
-    return Err;
-
-  // Generate the index page.
-  Err = genIndex(CDCtx);
-  if (Err)
-    return Err;
-
-  return llvm::Error::success();
-}
-
 static GeneratorRegistry::Add<MDGenerator> MD(MDGenerator::Format,
                                               "Generator for MD output.");
 
-// This anchor is used to force the linker to link in the generated object
-// file and thus register the generator.
+// This anchor is used to force the linker to link in the generated object file
+// and thus register the generator.
 volatile int MDGeneratorAnchorSource = 0;
 
 } // namespace doc

diff  --git a/clang-tools-extra/clang-doc/Representation.cpp b/clang-tools-extra/clang-doc/Representation.cpp
index 34d83b438125..56d975af6f40 100644
--- a/clang-tools-extra/clang-doc/Representation.cpp
+++ b/clang-tools-extra/clang-doc/Representation.cpp
@@ -114,52 +114,6 @@ mergeInfos(std::vector<std::unique_ptr<Info>> &Values) {
   }
 }
 
-static llvm::SmallString<64>
-calculateRelativeFilePath(const InfoType &Type, const StringRef &Path,
-                          const StringRef &Name, const StringRef &CurrentPath) {
-  llvm::SmallString<64> FilePath;
-
-  if (CurrentPath != Path) {
-    // iterate back to the top
-    for (llvm::sys::path::const_iterator I =
-             llvm::sys::path::begin(CurrentPath);
-         I != llvm::sys::path::end(CurrentPath); ++I)
-      llvm::sys::path::append(FilePath, "..");
-    llvm::sys::path::append(FilePath, Path);
-  }
-
-  // Namespace references have a Path to the parent namespace, but
-  // the file is actually in the subdirectory for the namespace.
-  if (Type == doc::InfoType::IT_namespace)
-    llvm::sys::path::append(FilePath, Name);
-
-  return llvm::sys::path::relative_path(FilePath);
-}
-
-llvm::SmallString<64>
-Reference::getRelativeFilePath(const StringRef &CurrentPath) const {
-  return calculateRelativeFilePath(RefType, Path, Name, CurrentPath);
-}
-
-llvm::SmallString<16> Reference::getFileBaseName() const {
-  if (RefType == InfoType::IT_namespace)
-    return llvm::SmallString<16>("index");
-
-  return Name;
-}
-
-llvm::SmallString<64>
-Info::getRelativeFilePath(const StringRef &CurrentPath) const {
-  return calculateRelativeFilePath(IT, Path, extractName(), CurrentPath);
-}
-
-llvm::SmallString<16> Info::getFileBaseName() const {
-  if (IT == InfoType::IT_namespace)
-    return llvm::SmallString<16>("index");
-
-  return extractName();
-}
-
 bool Reference::mergeable(const Reference &Other) {
   return RefType == Other.RefType && USR == Other.USR;
 }

diff  --git a/clang-tools-extra/clang-doc/Representation.h b/clang-tools-extra/clang-doc/Representation.h
index ab87b6e45daa..de2993db0abc 100644
--- a/clang-tools-extra/clang-doc/Representation.h
+++ b/clang-tools-extra/clang-doc/Representation.h
@@ -135,12 +135,6 @@ struct Reference {
   bool mergeable(const Reference &Other);
   void merge(Reference &&I);
 
-  /// Returns the path for this Reference relative to CurrentPath.
-  llvm::SmallString<64> getRelativeFilePath(const StringRef &CurrentPath) const;
-
-  /// Returns the basename that should be used for this Reference.
-  llvm::SmallString<16> getFileBaseName() const;
-
   SymbolID USR = SymbolID(); // Unique identifier for referenced decl
   SmallString<16> Name;      // Name of type (possibly unresolved).
   InfoType RefType = InfoType::IT_default; // Indicates the type of this
@@ -268,12 +262,6 @@ struct Info {
 
   llvm::SmallString<16> extractName() const;
 
-  /// Returns the file path for this Info relative to CurrentPath.
-  llvm::SmallString<64> getRelativeFilePath(const StringRef &CurrentPath) const;
-
-  /// Returns the basename that should be used for this Info.
-  llvm::SmallString<16> getFileBaseName() const;
-
   // Returns a reference to the parent scope (that is, the immediate parent
   // namespace or class in which this decl resides).
   llvm::Expected<Reference> getEnclosingScope();

diff  --git a/clang-tools-extra/clang-doc/assets/index.js b/clang-tools-extra/clang-doc/assets/index.js
index a5ac90f2e06e..32f6556f13e7 100644
--- a/clang-tools-extra/clang-doc/assets/index.js
+++ b/clang-tools-extra/clang-doc/assets/index.js
@@ -31,12 +31,8 @@ function computeRelativePath(FilePath, CurrentDirectory) {
 
 function genLink(Ref, CurrentDirectory) {
   var Path = computeRelativePath(Ref.Path, CurrentDirectory);
-  if (Ref.RefType == "namespace")
-    Path = append(Path, "index.html");
-  else
-    Path = append(Path, Ref.Name + ".html")
-
-    ANode = document.createElement("a");
+  Path = append(Path, Ref.Name + ".html")
+  ANode = document.createElement("a");
   ANode.setAttribute("href", Path);
   var TextNode = document.createTextNode(Ref.Name);
   ANode.appendChild(TextNode);

diff  --git a/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp b/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp
index 218e36d9d91e..cfc8ff653f16 100644
--- a/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp
+++ b/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp
@@ -293,9 +293,8 @@ int main(int argc, const char **argv) {
       }
 
       doc::Info *I = Reduced.get().get();
-      auto InfoPath =
-          getInfoOutputFile(OutDirectory, I->getRelativeFilePath(""),
-                            I->getFileBaseName(), "." + Format);
+      auto InfoPath = getInfoOutputFile(OutDirectory, I->Path, I->extractName(),
+                                        "." + Format);
       if (!InfoPath) {
         llvm::errs() << toString(InfoPath.takeError()) << "\n";
         Error = true;
@@ -304,9 +303,9 @@ int main(int argc, const char **argv) {
       std::error_code FileErr;
       llvm::raw_fd_ostream InfoOS(InfoPath.get(), FileErr,
                                   llvm::sys::fs::OF_None);
-      if (FileErr) {
-        llvm::errs() << "Error opening info file " << InfoPath.get() << ": "
-                     << FileErr.message() << "\n";
+      if (FileErr != OK) {
+        llvm::errs() << "Error opening info file: " << FileErr.message()
+                     << "\n";
         return;
       }
 

diff  --git a/clang-tools-extra/test/clang-doc/single-file.cpp b/clang-tools-extra/test/clang-doc/single-file.cpp
index 2ceab4f43bb9..8bde6f9b11db 100644
--- a/clang-tools-extra/test/clang-doc/single-file.cpp
+++ b/clang-tools-extra/test/clang-doc/single-file.cpp
@@ -3,7 +3,7 @@
 // RUN: echo "" > %t/compile_flags.txt
 // RUN: cp "%s" "%t/test.cpp"
 // RUN: clang-doc --doxygen --executor=standalone -p %t %t/test.cpp -output=%t/docs
-// RUN: cat %t/docs/GlobalNamespace/index.yaml | FileCheck %s --check-prefix=CHECK
+// RUN: cat %t/docs/GlobalNamespace.yaml | FileCheck %s --check-prefix=CHECK
 // RUN: rm -rf %t
 
 void function(int x);
@@ -12,20 +12,20 @@ void function(int x) {}
 
 // CHECK: ---
 // CHECK-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-NEXT: ChildFunctions:
+// CHECK-NEXT: ChildFunctions:  
 // CHECK-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-NEXT:    Name:            'function'
-// CHECK-NEXT:    DefLocation:
+// CHECK-NEXT:    DefLocation:     
 // CHECK-NEXT:      LineNumber:      [[@LINE-8]]
 // CHECK-NEXT:      Filename:        '{{.*}}
-// CHECK-NEXT:    Location:
+// CHECK-NEXT:    Location:        
 // CHECK-NEXT:      - LineNumber:      [[@LINE-13]]
 // CHECK-NEXT:        Filename:        '{{.*}}'
-// CHECK-NEXT:    Params:
-// CHECK-NEXT:      - Type:
+// CHECK-NEXT:    Params:          
+// CHECK-NEXT:      - Type:            
 // CHECK-NEXT:          Name:            'int'
 // CHECK-NEXT:        Name:            'x'
-// CHECK-NEXT:    ReturnType:
-// CHECK-NEXT:      Type:
+// CHECK-NEXT:    ReturnType:      
+// CHECK-NEXT:      Type:            
 // CHECK-NEXT:        Name:            'void'
 // CHECK-NEXT:...

diff  --git a/clang-tools-extra/unittests/clang-doc/HTMLGeneratorTest.cpp b/clang-tools-extra/unittests/clang-doc/HTMLGeneratorTest.cpp
index 880a1af1228a..e751d0b7cc74 100644
--- a/clang-tools-extra/unittests/clang-doc/HTMLGeneratorTest.cpp
+++ b/clang-tools-extra/unittests/clang-doc/HTMLGeneratorTest.cpp
@@ -63,24 +63,24 @@ TEST(HTMLGeneratorTest, emitNamespaceHTML) {
   std::string Expected = R"raw(<!DOCTYPE html>
 <meta charset="utf-8"/>
 <title>namespace Namespace</title>
-<link rel="stylesheet" href="../clang-doc-default-stylesheet.css"/>
-<link rel="stylesheet" href="../user-provided-stylesheet.css"/>
-<script src="../index.js"></script>
+<link rel="stylesheet" href="clang-doc-default-stylesheet.css"/>
+<link rel="stylesheet" href="user-provided-stylesheet.css"/>
+<script src="index.js"></script>
 <header id="project-title">test-project</header>
 <main>
-  <div id="sidebar-left" path="Namespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+  <div id="sidebar-left" path="" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
     <h1>namespace Namespace</h1>
     <h2 id="Namespaces">Namespaces</h2>
     <ul>
       <li>
-        <a href="ChildNamespace/index.html">ChildNamespace</a>
+        <a href="Namespace/ChildNamespace.html">ChildNamespace</a>
       </li>
     </ul>
     <h2 id="Records">Records</h2>
     <ul>
       <li>
-        <a href="ChildStruct.html">ChildStruct</a>
+        <a href="Namespace/ChildStruct.html">ChildStruct</a>
       </li>
     </ul>
     <h2 id="Functions">Functions</h2>
@@ -196,14 +196,14 @@ TEST(HTMLGeneratorTest, emitRecordHTML) {
     <ul>
       <li>
         private 
-        <a href="../../../X/Y/int.html">int</a>
+        <a href="../int.html">int</a>
          X
       </li>
     </ul>
     <h2 id="Records">Records</h2>
     <ul>
       <li>
-        <a href="../../../X/Y/Z/r/ChildStruct.html">ChildStruct</a>
+        <a href="r/ChildStruct.html">ChildStruct</a>
       </li>
     </ul>
     <h2 id="Functions">Functions</h2>

diff  --git a/clang-tools-extra/unittests/clang-doc/MDGeneratorTest.cpp b/clang-tools-extra/unittests/clang-doc/MDGeneratorTest.cpp
index 006fde08c5c4..672173934446 100644
--- a/clang-tools-extra/unittests/clang-doc/MDGeneratorTest.cpp
+++ b/clang-tools-extra/unittests/clang-doc/MDGeneratorTest.cpp
@@ -47,12 +47,14 @@ TEST(MDGeneratorTest, emitNamespaceMD) {
 
 ## Namespaces
 
-* [ChildNamespace](../ChildNamespace/index.md)
+ChildNamespace
+
 
 
 ## Records
 
-* [ChildStruct](../ChildStruct.md)
+ChildStruct
+
 
 
 ## Functions
@@ -104,7 +106,7 @@ TEST(MDGeneratorTest, emitRecordMD) {
   assert(!Err);
   std::string Expected = R"raw(# class r
 
-*Defined at test.cpp#10*
+*Defined at line 10 of test.cpp*
 
 Inherits from F, G
 
@@ -169,7 +171,7 @@ TEST(MDGeneratorTest, emitFunctionMD) {
 
 *void f(int P)*
 
-*Defined at test.cpp#10*
+*Defined at line 10 of test.cpp*
 
 )raw";
 
@@ -200,7 +202,7 @@ TEST(MDGeneratorTest, emitEnumMD) {
 | X |
 
 
-*Defined at test.cpp#10*
+*Defined at line 10 of test.cpp*
 
 )raw";
 
@@ -329,7 +331,7 @@ TEST(MDGeneratorTest, emitCommentMD) {
 
 *void f(int I, int J)*
 
-*Defined at test.cpp#10*
+*Defined at line 10 of test.cpp*
 
 
 


        


More information about the cfe-commits mailing list