[clang] [Clang][Docs] use CommonOptionsParser::create instead of protected constructor on libTooling tutorial (NFC) (PR #70427)

Kohei Asano via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 27 03:14:40 PDT 2023


https://github.com/khei4 updated https://github.com/llvm/llvm-project/pull/70427

>From 166f580fda7a7cf4b87b167be03777d28638feff Mon Sep 17 00:00:00 2001
From: khei4 <kk.asano.luxy at gmail.com>
Date: Fri, 27 Oct 2023 17:46:34 +0900
Subject: [PATCH 1/2] use create instead of protected Constructor

---
 clang/docs/LibTooling.rst | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/clang/docs/LibTooling.rst b/clang/docs/LibTooling.rst
index df50dcebf9b83c7..0bb293be9d3c952 100644
--- a/clang/docs/LibTooling.rst
+++ b/clang/docs/LibTooling.rst
@@ -63,15 +63,23 @@ and automatic location of the compilation database using source files paths.
   #include "llvm/Support/CommandLine.h"
 
   using namespace clang::tooling;
+  using namespace llvm;
 
   // Apply a custom category to all command-line options so that they are the
   // only ones displayed.
-  static llvm::cl::OptionCategory MyToolCategory("my-tool options");
+  static cl::OptionCategory MyToolCategory("my-tool options");
 
   int main(int argc, const char **argv) {
-    // CommonOptionsParser constructor will parse arguments and create a
-    // CompilationDatabase.  In case of error it will terminate the program.
-    CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);
+    // CommonOptionsParser::create will parse arguments and create a
+    // CompilationDatabase. In case of error it will terminate the program.
+    Expected<CommonOptionsParser> Expected =
+        CommonOptionsParser::create(argc, argv, MyToolCategory);
+    if (!Expected)
+    {
+      errs() << Expected.takeError();
+      return 1;
+    }
+    CommonOptionsParser &OptionsParser = Expected.get();
 
     // Use OptionsParser.getCompilations() and OptionsParser.getSourcePathList()
     // to retrieve CompilationDatabase and the list of input file paths.
@@ -133,7 +141,14 @@ version of this example tool is also checked into the clang tree at
   static cl::extrahelp MoreHelp("\nMore help text...\n");
 
   int main(int argc, const char **argv) {
-    CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);
+    Expected<CommonOptionsParser> Expected =
+        CommonOptionsParser::create(argc, argv, MyToolCategory);
+    if (!Expected)
+    {
+      errs() << Expected.takeError();
+      return 1;
+    }
+    CommonOptionsParser &OptionsParser = Expected.get();
     ClangTool Tool(OptionsParser.getCompilations(),
                    OptionsParser.getSourcePathList());
     return Tool.run(newFrontendActionFactory<clang::SyntaxOnlyAction>().get());

>From d54e38952171b69310a0068318e2484c719e0658 Mon Sep 17 00:00:00 2001
From: khei4 <kk.asano.luxy at gmail.com>
Date: Fri, 27 Oct 2023 19:14:18 +0900
Subject: [PATCH 2/2] adjust: notations to example on LibASTMatchersTutorial

---
 clang/docs/LibTooling.rst | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

diff --git a/clang/docs/LibTooling.rst b/clang/docs/LibTooling.rst
index 0bb293be9d3c952..8ef59da67417ba3 100644
--- a/clang/docs/LibTooling.rst
+++ b/clang/docs/LibTooling.rst
@@ -72,14 +72,13 @@ and automatic location of the compilation database using source files paths.
   int main(int argc, const char **argv) {
     // CommonOptionsParser::create will parse arguments and create a
     // CompilationDatabase. In case of error it will terminate the program.
-    Expected<CommonOptionsParser> Expected =
-        CommonOptionsParser::create(argc, argv, MyToolCategory);
-    if (!Expected)
-    {
-      errs() << Expected.takeError();
+    auto ExpectedParser = CommonOptionsParser::create(argc, argv, MyToolCategory);
+    if (!ExpectedParser) {
+      // Fail gracefully for unsupported options.
+      llvm::errs() << ExpectedParser.takeError();
       return 1;
     }
-    CommonOptionsParser &OptionsParser = Expected.get();
+    CommonOptionsParser& OptionsParser = ExpectedParser.get();
 
     // Use OptionsParser.getCompilations() and OptionsParser.getSourcePathList()
     // to retrieve CompilationDatabase and the list of input file paths.
@@ -141,14 +140,12 @@ version of this example tool is also checked into the clang tree at
   static cl::extrahelp MoreHelp("\nMore help text...\n");
 
   int main(int argc, const char **argv) {
-    Expected<CommonOptionsParser> Expected =
-        CommonOptionsParser::create(argc, argv, MyToolCategory);
-    if (!Expected)
-    {
-      errs() << Expected.takeError();
+    auto ExpectedParser = CommonOptionsParser::create(argc, argv, MyToolCategory);
+    if (!ExpectedParser) {
+      llvm::errs() << ExpectedParser.takeError();
       return 1;
     }
-    CommonOptionsParser &OptionsParser = Expected.get();
+    CommonOptionsParser& OptionsParser = ExpectedParser.get();
     ClangTool Tool(OptionsParser.getCompilations(),
                    OptionsParser.getSourcePathList());
     return Tool.run(newFrontendActionFactory<clang::SyntaxOnlyAction>().get());



More information about the cfe-commits mailing list