https://github.com/MaskRay created 
https://github.com/llvm/llvm-project/pull/226360

cl::callback will be removed to enable migration to TableGen
https://discourse.llvm.org/t/rfc-declare-library-command-line-options-in-tablegen-one-struct-per-library/91877/3

LLM-aided

>From f4a0d9d87ab5621a842879457bef912a5d64c4e2 Mon Sep 17 00:00:00 2001
From: Fangrui Song <[email protected]>
Date: Thu, 24 Sep 2026 22:03:42 -0700
Subject: [PATCH] [clangd] Report retired flags after parsing

cl::callback will be removed to enable migration to TableGen
https://discourse.llvm.org/t/rfc-declare-library-command-line-options-in-tablegen-one-struct-per-library/91877/3

LLM-aided
---
 clang-tools-extra/clangd/tool/ClangdMain.cpp | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/clang-tools-extra/clangd/tool/ClangdMain.cpp 
b/clang-tools-extra/clangd/tool/ClangdMain.cpp
index 13fe4d3911731d..2446162fc4ce13 100644
--- a/clang-tools-extra/clangd/tool/ClangdMain.cpp
+++ b/clang-tools-extra/clangd/tool/ClangdMain.cpp
@@ -91,16 +91,16 @@ OptionCategory Retired("clangd flags no longer in use");
 const OptionCategory *ClangdCategories[] = {&Features, &Protocol,
                                             &CompileCommands, &Misc, &Retired};
 
+std::vector<const llvm::cl::Option *> RetiredOptions;
+
 template <typename T> class RetiredFlag {
   opt<T> Option;
 
 public:
   RetiredFlag(llvm::StringRef Name)
-      : Option(Name, cat(Retired), desc("Obsolete flag, ignored"), Hidden,
-               llvm::cl::callback([Name](const T &) {
-                 llvm::errs()
-                     << "The flag `-" << Name << "` is obsolete and 
ignored.\n";
-               })) {}
+      : Option(Name, cat(Retired), desc("Obsolete flag, ignored"), Hidden) {
+    RetiredOptions.push_back(&Option);
+  }
 };
 
 enum CompileArgsFrom { LSPCompileArgs, FilesystemCompileArgs };
@@ -798,6 +798,10 @@ clangd accepts flags on the commandline, and in the 
CLANGD_FLAGS environment var
   llvm::cl::HideUnrelatedOptions(ClangdCategories);
   llvm::cl::ParseCommandLineOptions(argc, argv, Overview, /*Errs=*/nullptr,
                                     /*VFS=*/nullptr, FlagsEnvVar);
+  for (const llvm::cl::Option *O : RetiredOptions)
+    if (O->getNumOccurrences())
+      llvm::errs() << "The flag `-" << O->ArgStr
+                   << "` is obsolete and ignored.\n";
   if (Test) {
     if (!Sync.getNumOccurrences())
       Sync = true;

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to