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
