Author: juliehockett Date: Thu Aug 16 16:50:51 2018 New Revision: 339966 URL: http://llvm.org/viewvc/llvm-project?rev=339966&view=rev Log: Revert "Implement a (simple) Markdown generator"
This reverts commit r339948, as it's breaking a few bots in ways that I can't reproduce right now. Removed: clang-tools-extra/trunk/clang-doc/MDGenerator.cpp clang-tools-extra/trunk/test/clang-doc/md-comment.cpp clang-tools-extra/trunk/test/clang-doc/md-linkage.cpp clang-tools-extra/trunk/test/clang-doc/md-module.cpp clang-tools-extra/trunk/test/clang-doc/md-namespace.cpp clang-tools-extra/trunk/test/clang-doc/md-record.cpp Modified: clang-tools-extra/trunk/clang-doc/CMakeLists.txt clang-tools-extra/trunk/clang-doc/Generators.cpp clang-tools-extra/trunk/clang-doc/Generators.h clang-tools-extra/trunk/clang-doc/Representation.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 Modified: clang-tools-extra/trunk/clang-doc/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/CMakeLists.txt?rev=339966&r1=339965&r2=339966&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-doc/CMakeLists.txt (original) +++ clang-tools-extra/trunk/clang-doc/CMakeLists.txt Thu Aug 16 16:50:51 2018 @@ -10,7 +10,6 @@ add_clang_library(clangDoc ClangDoc.cpp Generators.cpp Mapper.cpp - MDGenerator.cpp Representation.cpp Serialize.cpp YAMLGenerator.cpp Modified: clang-tools-extra/trunk/clang-doc/Generators.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/Generators.cpp?rev=339966&r1=339965&r2=339966&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-doc/Generators.cpp (original) +++ clang-tools-extra/trunk/clang-doc/Generators.cpp Thu Aug 16 16:50:51 2018 @@ -29,11 +29,8 @@ findGeneratorByName(llvm::StringRef Form // This anchor is used to force the linker to link in the generated object file // and thus register the generators. extern volatile int YAMLGeneratorAnchorSource; -extern volatile int MDGeneratorAnchorSource; static int LLVM_ATTRIBUTE_UNUSED YAMLGeneratorAnchorDest = YAMLGeneratorAnchorSource; -static int LLVM_ATTRIBUTE_UNUSED MDGeneratorAnchorDest = - MDGeneratorAnchorSource; } // namespace doc } // namespace clang Modified: clang-tools-extra/trunk/clang-doc/Generators.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/Generators.h?rev=339966&r1=339965&r2=339966&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-doc/Generators.h (original) +++ clang-tools-extra/trunk/clang-doc/Generators.h Thu Aug 16 16:50:51 2018 @@ -27,7 +27,7 @@ public: virtual ~Generator() = default; // Write out the decl info in the specified format. - virtual llvm::Error generateDocForInfo(Info *I, llvm::raw_ostream &OS) = 0; + virtual bool generateDocForInfo(Info *I, llvm::raw_ostream &OS) = 0; }; typedef llvm::Registry<Generator> GeneratorRegistry; Removed: clang-tools-extra/trunk/clang-doc/MDGenerator.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-doc/MDGenerator.cpp?rev=339965&view=auto ============================================================================== --- clang-tools-extra/trunk/clang-doc/MDGenerator.cpp (original) +++ clang-tools-extra/trunk/clang-doc/MDGenerator.cpp (removed) @@ -1,314 +0,0 @@ -//===-- MDGenerator.cpp - Markdown Generator --------------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "Generators.h" -#include "Representation.h" -#include "llvm/ADT/StringRef.h" -#include "llvm/Support/FileSystem.h" -#include "llvm/Support/Path.h" -#include <string> - -using namespace llvm; - -namespace clang { -namespace doc { - -// Enum conversion - -std::string getAccess(AccessSpecifier AS) { - switch (AS) { - case AccessSpecifier::AS_public: - return "public"; - case AccessSpecifier::AS_protected: - return "protected"; - case AccessSpecifier::AS_private: - return "private"; - case AccessSpecifier::AS_none: - return {}; - } -} - -std::string getTagType(TagTypeKind AS) { - switch (AS) { - case TagTypeKind::TTK_Class: - return "class"; - case TagTypeKind::TTK_Union: - return "union"; - case TagTypeKind::TTK_Interface: - return "interface"; - case TagTypeKind::TTK_Struct: - return "struct"; - case TagTypeKind::TTK_Enum: - return "enum"; - } -} - -// Markdown generation - -std::string genItalic(const Twine &Text) { return "*" + Text.str() + "*"; } - -std::string genEmphasis(const Twine &Text) { return "**" + Text.str() + "**"; } - -std::string genLink(const Twine &Text, const Twine &Link) { - return "[" + Text.str() + "](" + Link.str() + ")"; -} - -std::string genReferenceList(const llvm::SmallVectorImpl<Reference> &Refs) { - std::string Buffer; - llvm::raw_string_ostream Stream(Buffer); - bool First = true; - for (const auto &R : Refs) { - if (!First) - Stream << ", "; - Stream << R.Name; - First = false; - } - return Stream.str(); -} - -void writeLine(const Twine &Text, raw_ostream &OS) { OS << Text << "\n"; } - -void writeNewLine(raw_ostream &OS) { OS << "\n"; } - -void writeHeader(const Twine &Text, unsigned int Num, raw_ostream &OS) { - OS << std::string(Num, '#') + " " + Text << "\n"; -} - -void writeFileDefinition(const Location &L, raw_ostream &OS) { - OS << genItalic("Defined at line " + std::to_string(L.LineNumber) + " of " + - L.Filename) - << "\n"; -} - -void writeDescription(const CommentInfo &I, raw_ostream &OS) { - if (I.Kind == "FullComment") { - for (const auto &Child : I.Children) - writeDescription(*Child, OS); - } else if (I.Kind == "ParagraphComment") { - for (const auto &Child : I.Children) - writeDescription(*Child, OS); - writeNewLine(OS); - } else if (I.Kind == "BlockCommandComment") { - OS << genEmphasis(I.Name); - for (const auto &Child : I.Children) - writeDescription(*Child, OS); - } else if (I.Kind == "InlineCommandComment") { - OS << genEmphasis(I.Name) << " " << I.Text; - } else if (I.Kind == "ParamCommandComment") { - std::string Direction = I.Explicit ? (" " + I.Direction).str() : ""; - OS << genEmphasis(I.ParamName) << I.Text << Direction << "\n"; - } else if (I.Kind == "TParamCommandComment") { - std::string Direction = I.Explicit ? (" " + I.Direction).str() : ""; - OS << genEmphasis(I.ParamName) << I.Text << Direction << "\n"; - } else if (I.Kind == "VerbatimBlockComment") { - for (const auto &Child : I.Children) - writeDescription(*Child, OS); - } else if (I.Kind == "VerbatimBlockLineComment") { - OS << I.Text; - writeNewLine(OS); - } else if (I.Kind == "VerbatimLineComment") { - OS << I.Text; - writeNewLine(OS); - } else if (I.Kind == "HTMLStartTagComment") { - if (I.AttrKeys.size() != I.AttrValues.size()) - return; - std::string Buffer; - llvm::raw_string_ostream Attrs(Buffer); - for (unsigned Idx = 0; Idx < I.AttrKeys.size(); ++Idx) - Attrs << " \"" << I.AttrKeys[Idx] << "=" << I.AttrValues[Idx] << "\""; - - std::string CloseTag = I.SelfClosing ? "/>" : ">"; - writeLine("<" + I.Name + Attrs.str() + CloseTag, OS); - } else if (I.Kind == "HTMLEndTagComment") { - writeLine("</" + I.Name + ">", OS); - } else if (I.Kind == "TextComment") { - OS << I.Text; - } else { - OS << "Unknown comment kind: " << I.Kind << ".\n"; - } -} - -void genMarkdown(const EnumInfo &I, llvm::raw_ostream &OS) { - if (I.Scoped) - writeLine("| enum class " + I.Name + " |", OS); - else - writeLine("| enum " + I.Name + " |", OS); - writeLine("--", OS); - - std::string Buffer; - llvm::raw_string_ostream Members(Buffer); - if (!I.Members.empty()) - for (const auto &N : I.Members) - Members << "| " << N << " |\n"; - writeLine(Members.str(), OS); - if (I.DefLoc) - writeFileDefinition(I.DefLoc.getValue(), OS); - - for (const auto &C : I.Description) - writeDescription(C, OS); -} - -void genMarkdown(const FunctionInfo &I, llvm::raw_ostream &OS) { - std::string Buffer; - llvm::raw_string_ostream Stream(Buffer); - bool First = true; - for (const auto &N : I.Params) { - if (!First) - Stream << ", "; - Stream << N.Type.Name + " " + N.Name; - First = false; - } - Twine Signature = - I.ReturnType.Type.Name + " " + I.Name + "(" + Stream.str() + ")"; - std::string Access = getAccess(I.Access); - if (Access != "") - writeHeader(genItalic(Access) + " " + Signature, 3, OS); - else - writeHeader(Signature, 3, OS); - if (I.DefLoc) - writeFileDefinition(I.DefLoc.getValue(), OS); - - for (const auto &C : I.Description) - writeDescription(C, OS); -} - -void genMarkdown(const NamespaceInfo &I, llvm::raw_ostream &OS) { - if (I.Name == "") - writeHeader("Global Namespace", 1, OS); - else - writeHeader("namespace " + I.Name, 1, OS); - writeNewLine(OS); - - if (!I.Description.empty()) { - for (const auto &C : I.Description) - writeDescription(C, OS); - writeNewLine(OS); - } - - if (!I.ChildNamespaces.empty()) { - writeHeader("Namespaces", 2, OS); - 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) - writeLine(R.Name, OS); - writeNewLine(OS); - } - if (!I.ChildFunctions.empty()) { - writeHeader("Functions", 2, OS); - for (const auto &F : I.ChildFunctions) - genMarkdown(F, OS); - writeNewLine(OS); - } - if (!I.ChildEnums.empty()) { - writeHeader("Enums", 2, OS); - for (const auto &E : I.ChildEnums) - genMarkdown(E, OS); - writeNewLine(OS); - } -} - -void genMarkdown(const RecordInfo &I, llvm::raw_ostream &OS) { - writeHeader(getTagType(I.TagType) + " " + I.Name, 1, OS); - if (I.DefLoc) - writeFileDefinition(I.DefLoc.getValue(), OS); - - if (!I.Description.empty()) { - for (const auto &C : I.Description) - writeDescription(C, OS); - writeNewLine(OS); - } - - std::string Parents = genReferenceList(I.Parents); - std::string VParents = genReferenceList(I.VirtualParents); - if (!Parents.empty() || !VParents.empty()) { - if (Parents.empty()) - writeLine("Inherits from " + VParents, OS); - else if (VParents.empty()) - writeLine("Inherits from " + Parents, OS); - else - writeLine("Inherits from " + Parents + ", " + VParents, OS); - writeNewLine(OS); - } - - if (!I.Members.empty()) { - writeHeader("Members", 2, OS); - for (const auto Member : I.Members) { - std::string Access = getAccess(Member.Access); - if (Access != "") - writeLine(Access + " " + Member.Type.Name + " " + Member.Name, OS); - else - writeLine(Member.Type.Name + " " + Member.Name, OS); - } - writeNewLine(OS); - } - - if (!I.ChildRecords.empty()) { - writeHeader("Records", 2, OS); - 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(F, OS); - writeNewLine(OS); - } - if (!I.ChildEnums.empty()) { - writeHeader("Enums", 2, OS); - for (const auto &E : I.ChildEnums) - genMarkdown(E, OS); - writeNewLine(OS); - } -} - -/// Generator for Markdown documentation. -class MDGenerator : public Generator { -public: - static const char *Format; - - llvm::Error generateDocForInfo(Info *I, llvm::raw_ostream &OS) override; -}; - -const char *MDGenerator::Format = "md"; - -llvm::Error MDGenerator::generateDocForInfo(Info *I, llvm::raw_ostream &OS) { - switch (I->IT) { - case InfoType::IT_namespace: - genMarkdown(*static_cast<clang::doc::NamespaceInfo *>(I), OS); - break; - case InfoType::IT_record: - genMarkdown(*static_cast<clang::doc::RecordInfo *>(I), OS); - break; - case InfoType::IT_enum: - genMarkdown(*static_cast<clang::doc::EnumInfo *>(I), OS); - break; - case InfoType::IT_function: - genMarkdown(*static_cast<clang::doc::FunctionInfo *>(I), OS); - break; - case InfoType::IT_default: - return llvm::make_error<llvm::StringError>("Unexpected info type.\n", - llvm::inconvertibleErrorCode()); - } - 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. -volatile int MDGeneratorAnchorSource = 0; - -} // namespace doc -} // namespace clang 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=339966&r1=339965&r2=339966&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-doc/Representation.h (original) +++ clang-tools-extra/trunk/clang-doc/Representation.h Thu Aug 16 16:50:51 2018 @@ -48,14 +48,13 @@ struct CommentInfo { CommentInfo(CommentInfo &Other) = delete; CommentInfo(CommentInfo &&Other) = default; - SmallString<16> - Kind; // Kind of comment (FullComment, ParagraphComment, TextComment, - // InlineCommandComment, HTMLStartTagComment, HTMLEndTagComment, - // BlockCommandComment, ParamCommandComment, - // TParamCommandComment, VerbatimBlockComment, - // VerbatimBlockLineComment, VerbatimLineComment). - SmallString<64> Text; // Text of the comment. - SmallString<16> Name; // Name of the comment (for Verbatim and HTML). + SmallString<16> Kind; // Kind of comment (TextComment, InlineCommandComment, + // HTMLStartTagComment, HTMLEndTagComment, + // BlockCommandComment, ParamCommandComment, + // TParamCommandComment, VerbatimBlockComment, + // VerbatimBlockLineComment, VerbatimLineComment). + SmallString<64> Text; // Text of the comment. + SmallString<16> Name; // Name of the comment (for Verbatim and HTML). SmallString<8> Direction; // Parameter direction (for (T)ParamCommand). SmallString<16> ParamName; // Parameter name (for (T)ParamCommand). SmallString<16> CloseName; // Closing tag name (for VerbatimBlock). 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=339966&r1=339965&r2=339966&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-doc/YAMLGenerator.cpp (original) +++ clang-tools-extra/trunk/clang-doc/YAMLGenerator.cpp Thu Aug 16 16:50:51 2018 @@ -242,12 +242,12 @@ class YAMLGenerator : public Generator { public: static const char *Format; - llvm::Error generateDocForInfo(Info *I, llvm::raw_ostream &OS) override; + bool generateDocForInfo(Info *I, llvm::raw_ostream &OS) override; }; const char *YAMLGenerator::Format = "yaml"; -llvm::Error YAMLGenerator::generateDocForInfo(Info *I, llvm::raw_ostream &OS) { +bool YAMLGenerator::generateDocForInfo(Info *I, llvm::raw_ostream &OS) { llvm::yaml::Output InfoYAML(OS); switch (I->IT) { case InfoType::IT_namespace: @@ -263,10 +263,10 @@ llvm::Error YAMLGenerator::generateDocFo InfoYAML << *static_cast<clang::doc::FunctionInfo *>(I); break; case InfoType::IT_default: - return llvm::make_error<llvm::StringError>("Unexpected info type.\n", - llvm::inconvertibleErrorCode()); + llvm::errs() << "Unexpected info type in index.\n"; + return true; } - return llvm::Error::success(); + return false; } static GeneratorRegistry::Add<YAMLGenerator> YAML(YAMLGenerator::Format, 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=339966&r1=339965&r2=339966&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-doc/gen_tests.py (original) +++ clang-tools-extra/trunk/clang-doc/gen_tests.py Thu Aug 16 16:50:51 2018 @@ -18,19 +18,16 @@ accuracy before using. To generate all current tests: - Generate mapper tests: - python gen_tests.py -flag='--dump-mapper' -flag='--doxygen' -flag='--extra-arg=-fmodules-ts' -prefix mapper -use-check-next + python gen_tests.py -flag='--dump-mapper' -flag='--doxygen' -flag='--extra-arg=-fmodules-ts' -prefix mapper - Generate reducer tests: - python gen_tests.py -flag='--dump-intermediate' -flag='--doxygen' -flag='--extra-arg=-fmodules-ts' -prefix bc -use-check-next + python gen_tests.py -flag='--dump-intermediate' -flag='--doxygen' -flag='--extra-arg=-fmodules-ts' -prefix bc - Generate yaml tests: - python gen_tests.py -flag='--format=yaml' -flag='--doxygen' -flag='--extra-arg=-fmodules-ts' -prefix yaml -use-check-next + 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 -use-check-next - -- Generate Markdown tests: - python gen_tests.py -flag='--format=md' -flag='--doxygen' -flag='--public' -flag='--extra-arg=-fmodules-ts' -prefix md + 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. @@ -98,8 +95,7 @@ def get_test_case_code(test_case_path, f return code -def get_output(root, out_file, case_out_path, flags, checkname, bcanalyzer, - check_next=True): +def get_output(root, out_file, case_out_path, flags, checkname, bcanalyzer): output = '' run_cmd = '' if '--dump-mapper' in flags or '--dump-intermediate' in flags: @@ -123,14 +119,8 @@ def get_output(root, out_file, case_out_ output = re.sub(YAML_USR_REGEX, YAML_USR, output) output = re.sub(BITCODE_USR_REGEX, BITCODE_USR, output) output = CHECK.format(checkname) + output.rstrip() - - if check_next: - check_comment = CHECK_NEXT.format(checkname) - else: - check_comment = CHECK.format(checkname) - - output = output.replace('\n', '\n' + check_comment) - output = run_cmd + output.replace('%s\n' % check_comment, "") + output = run_cmd + output.replace('\n', + '\n' + CHECK_NEXT.format(checkname)) return output + '\n' @@ -161,12 +151,6 @@ def main(): metavar="PATH", default='llvm-bcanalyzer', help='path to llvm-bcanalyzer binary') - parser.add_argument( - '-use-check-next', - dest='check_next', - default=False, - action='store_true', - help='Whether or not to use CHECK-NEXT in the resulting tests.') args = parser.parse_args() flags = ' '.join(args.flags) @@ -204,8 +188,7 @@ def main(): if len(usr) < 2: continue all_output += get_output(root, out_file, out_dir, args.flags, - num_outputs, args.bcanalyzer, - args.check_next) + num_outputs, args.bcanalyzer) num_outputs += 1 # Add test case code to test 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=339966&r1=339965&r2=339966&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-doc/tool/ClangDocMain.cpp (original) +++ clang-tools-extra/trunk/clang-doc/tool/ClangDocMain.cpp Thu Aug 16 16:50:51 2018 @@ -34,7 +34,6 @@ #include "clang/Tooling/StandaloneExecution.h" #include "clang/Tooling/Tooling.h" #include "llvm/ADT/APFloat.h" -#include "llvm/Support/CommandLine.h" #include "llvm/Support/Error.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/Path.h" @@ -70,18 +69,13 @@ static llvm::cl::opt<bool> llvm::cl::init(false), llvm::cl::cat(ClangDocCategory)); enum OutputFormatTy { - md, yaml, }; -static llvm::cl::opt<OutputFormatTy> - FormatEnum("format", llvm::cl::desc("Format for outputted docs."), - llvm::cl::values(clEnumValN(OutputFormatTy::yaml, "yaml", - "Documentation in YAML format."), - clEnumValN(OutputFormatTy::md, "md", - "Documentation in MD format.")), - llvm::cl::init(OutputFormatTy::yaml), - llvm::cl::cat(ClangDocCategory)); +static llvm::cl::opt<OutputFormatTy> FormatEnum( + "format", llvm::cl::desc("Format for outputted docs."), + llvm::cl::values(clEnumVal(yaml, "Documentation in YAML format.")), + llvm::cl::init(yaml), llvm::cl::cat(ClangDocCategory)); static llvm::cl::opt<bool> DoxygenOnly( "doxygen", @@ -161,12 +155,10 @@ getInfoOutputFile(StringRef Root, return Path; } -std::string getFormatString() { - switch (FormatEnum) { - case OutputFormatTy::yaml: +std::string getFormatString(OutputFormatTy Ty) { + switch (Ty) { + case yaml: return "yaml"; - case OutputFormatTy::md: - return "md"; } llvm_unreachable("Unknown OutputFormatTy"); } @@ -199,6 +191,14 @@ int main(int argc, const char **argv) { llvm::sys::PrintStackTraceOnErrorSignal(argv[0]); std::error_code OK; + // Fail early if an invalid format was provided. + std::string Format = getFormatString(FormatEnum); + auto G = doc::findGeneratorByName(Format); + if (!G) { + llvm::errs() << toString(G.takeError()) << "\n"; + return 1; + } + auto Exec = clang::tooling::createExecutorFromCommandLineArgs( argc, argv, ClangDocCategory); @@ -207,15 +207,6 @@ int main(int argc, const char **argv) { return 1; } - // Fail early if an invalid format was provided. - std::string Format = getFormatString(); - llvm::outs() << "Emiting docs in " << Format << " format.\n"; - auto G = doc::findGeneratorByName(Format); - if (!G) { - llvm::errs() << toString(G.takeError()) << "\n"; - return 1; - } - ArgumentsAdjuster ArgAdjuster; if (!DoxygenOnly) ArgAdjuster = combineAdjusters( @@ -286,8 +277,8 @@ int main(int argc, const char **argv) { continue; } - if (auto Err = G->get()->generateDocForInfo(I, InfoOS)) - llvm::errs() << toString(std::move(Err)) << "\n"; + if (G->get()->generateDocForInfo(I, InfoOS)) + llvm::errs() << "Unable to generate docs for info.\n"; } return 0; Removed: clang-tools-extra/trunk/test/clang-doc/md-comment.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/md-comment.cpp?rev=339965&view=auto ============================================================================== --- clang-tools-extra/trunk/test/clang-doc/md-comment.cpp (original) +++ clang-tools-extra/trunk/test/clang-doc/md-comment.cpp (removed) @@ -1,48 +0,0 @@ -// 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=md --doxygen --public --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs - - -// RUN: cat %t/docs/./GlobalNamespace.md | FileCheck %s --check-prefix CHECK-0 -// CHECK-0: # Global Namespace -// CHECK-0: ## Functions -// CHECK-0: ### void F(int I, int J) -// CHECK-0: *Defined at line 28 of test* -// CHECK-0: **brief** Brief description. -// CHECK-0: Extended description that continues onto the next line. -// CHECK-0: <ul "class=test"> -// CHECK-0: <li> -// CHECK-0: Testing.</ul> -// CHECK-0: The description continues. -// CHECK-0: -- -// CHECK-0: **I** [out] -// CHECK-0: **J** -// CHECK-0: **return** void -// CHECK-0: Bonus comment on definition Removed: clang-tools-extra/trunk/test/clang-doc/md-linkage.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/md-linkage.cpp?rev=339965&view=auto ============================================================================== --- clang-tools-extra/trunk/test/clang-doc/md-linkage.cpp (original) +++ clang-tools-extra/trunk/test/clang-doc/md-linkage.cpp (removed) @@ -1,134 +0,0 @@ -// 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=md --doxygen --public --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs - - -// RUN: cat %t/docs/./Class.md | FileCheck %s --check-prefix CHECK-0 -// CHECK-0: # class Class -// CHECK-0: *Defined at line 32 of test* -// CHECK-0: ## Members -// CHECK-0: int publicField -// CHECK-0: protected int protectedField -// CHECK-0: ## Functions -// CHECK-0: ### void publicMethod() -// CHECK-0: ### void protectedMethod() - -// RUN: cat %t/docs/./named.md | FileCheck %s --check-prefix CHECK-1 -// CHECK-1: # namespace named -// CHECK-1: ## Functions -// CHECK-1: ### void namedFunction() -// CHECK-1: ### void namedInlineFunction() - -// RUN: cat %t/docs/./GlobalNamespace.md | FileCheck %s --check-prefix CHECK-2 -// CHECK-2: # Global Namespace -// CHECK-2: ## Functions -// CHECK-2: ### void function(int x) -// CHECK-2: ### int inlinedFunction(int x) -// CHECK-2: ### int functionWithInnerClass(int x) -// CHECK-2: *Defined at line 14 of test* -// CHECK-2: ### int inlinedFunctionWithInnerClass(int x) -// CHECK-2: *Defined at line 23 of test* - -// RUN: cat %t/docs/named/NamedClass.md | FileCheck %s --check-prefix CHECK-3 -// CHECK-3: # class NamedClass -// CHECK-3: *Defined at line 47 of test* -// CHECK-3: ## Members -// CHECK-3: int namedPublicField -// CHECK-3: protected int namedProtectedField -// CHECK-3: ## Functions -// CHECK-3: ### void namedPublicMethod() -// CHECK-3: ### void namedProtectedMethod() Removed: clang-tools-extra/trunk/test/clang-doc/md-module.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/md-module.cpp?rev=339965&view=auto ============================================================================== --- clang-tools-extra/trunk/test/clang-doc/md-module.cpp (original) +++ clang-tools-extra/trunk/test/clang-doc/md-module.cpp (removed) @@ -1,24 +0,0 @@ -// 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=md --doxygen --public --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs - - -// RUN: cat %t/docs/./GlobalNamespace.md | FileCheck %s --check-prefix CHECK-0 -// CHECK-0: # Global Namespace -// CHECK-0: ## Functions -// CHECK-0: ### int moduleFunction(int x) -// CHECK-0: ### double exportedModuleFunction(double y, int z) Removed: clang-tools-extra/trunk/test/clang-doc/md-namespace.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/md-namespace.cpp?rev=339965&view=auto ============================================================================== --- clang-tools-extra/trunk/test/clang-doc/md-namespace.cpp (original) +++ clang-tools-extra/trunk/test/clang-doc/md-namespace.cpp (removed) @@ -1,46 +0,0 @@ -// 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=md --doxygen --public --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs - - -// RUN: cat %t/docs/./A.md | FileCheck %s --check-prefix CHECK-0 -// CHECK-0: # namespace A -// CHECK-0: ## Functions -// CHECK-0: ### void f() -// CHECK-0: *Defined at line 17 of test* - -// RUN: cat %t/docs/A/B.md | FileCheck %s --check-prefix CHECK-1 -// CHECK-1: # namespace B -// CHECK-1: ## Functions -// CHECK-1: ### enum A::B::E func(int i) -// CHECK-1: *Defined at line 23 of test* -// CHECK-1: ## Enums -// CHECK-1: | enum E | -// CHECK-1: -- -// CHECK-1: | X | -// CHECK-1: *Defined at line 21 of test* Removed: clang-tools-extra/trunk/test/clang-doc/md-record.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-doc/md-record.cpp?rev=339965&view=auto ============================================================================== --- clang-tools-extra/trunk/test/clang-doc/md-record.cpp (original) +++ clang-tools-extra/trunk/test/clang-doc/md-record.cpp (removed) @@ -1,97 +0,0 @@ -// 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=md --doxygen --public --extra-arg=-fmodules-ts -p %t %t/test.cpp -output=%t/docs - - -// RUN: cat %t/docs/./F.md | FileCheck %s --check-prefix CHECK-0 -// CHECK-0: # class F -// CHECK-0: *Defined at line 36 of test* -// CHECK-0: Inherits from E, D - -// RUN: cat %t/docs/./D.md | FileCheck %s --check-prefix CHECK-1 -// CHECK-1: # class D -// CHECK-1: *Defined at line 23 of test* - -// RUN: cat %t/docs/./GlobalNamespace.md | FileCheck %s --check-prefix CHECK-2 -// CHECK-2: # Global Namespace -// CHECK-2: ## Functions -// CHECK-2: ### void H() -// CHECK-2: *Defined at line 11 of test* -// CHECK-2: ## Enums -// CHECK-2: | enum B | -// CHECK-2: -- -// CHECK-2: | X | -// CHECK-2: | Y | -// CHECK-2: *Defined at line 17 of test* -// CHECK-2: | enum class Bc | -// CHECK-2: -- -// CHECK-2: | A | -// CHECK-2: | B | -// CHECK-2: *Defined at line 19 of test* - -// RUN: cat %t/docs/./E.md | FileCheck %s --check-prefix CHECK-3 -// CHECK-3: # class E -// CHECK-3: *Defined at line 25 of test* -// CHECK-3: ## Functions -// CHECK-3: ### void E() -// CHECK-3: *Defined at line 27 of test* -// CHECK-3: ### void ~E() -// CHECK-3: *Defined at line 28 of test* -// CHECK-3: ### void ProtectedMethod() -// CHECK-3: *Defined at line 34 of test* - -// RUN: cat %t/docs/./C.md | FileCheck %s --check-prefix CHECK-4 -// CHECK-4: # struct C -// CHECK-4: *Defined at line 21 of test* -// CHECK-4: ## Members -// CHECK-4: int i - -// RUN: cat %t/docs/./X.md | FileCheck %s --check-prefix CHECK-5 -// CHECK-5: # class X -// CHECK-5: *Defined at line 38 of test* - -// RUN: cat %t/docs/./A.md | FileCheck %s --check-prefix CHECK-6 -// CHECK-6: # union A -// CHECK-6: *Defined at line 15 of test* -// CHECK-6: ## Members -// CHECK-6: int X -// CHECK-6: int Y _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits