https://github.com/carlosgalvezp updated https://github.com/llvm/llvm-project/pull/97969
>From a1fec907b5d3920d5dda8761b6e173e153b7f281 Mon Sep 17 00:00:00 2001 From: Carlos Galvez <carlosgalv...@gmail.com> Date: Sun, 7 Jul 2024 21:11:54 +0200 Subject: [PATCH] [clang-tidy] Do not warn on const variables in misc-use-internal-linkage Since in C++ they already have implicit internal linkage. https://eel.is/c++draft/diff#basic-3 Also, ensure that the check is only active in C++ code, since the warning message presents anonymous namespaces as a solution, which is not applicable to C. Fixes #97947 --- .../clang-tidy/misc/UseInternalLinkageCheck.cpp | 5 ++++- clang-tools-extra/clang-tidy/misc/UseInternalLinkageCheck.h | 3 +++ .../clang-tidy/checkers/misc/use-internal-linkage-var.cpp | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/clang-tools-extra/clang-tidy/misc/UseInternalLinkageCheck.cpp b/clang-tools-extra/clang-tidy/misc/UseInternalLinkageCheck.cpp index 44ccc2bc906a5b..bc3fc50ca75dff 100644 --- a/clang-tools-extra/clang-tidy/misc/UseInternalLinkageCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/UseInternalLinkageCheck.cpp @@ -103,7 +103,10 @@ void UseInternalLinkageCheck::registerMatchers(MatchFinder *Finder) { functionDecl(Common, unless(cxxMethodDecl()), unless(isMain())) .bind("fn"), this); - Finder->addMatcher(varDecl(Common, hasGlobalStorage()).bind("var"), this); + Finder->addMatcher( + varDecl(Common, hasGlobalStorage(), unless(hasType(isConstQualified()))) + .bind("var"), + this); } static constexpr StringRef Message = diff --git a/clang-tools-extra/clang-tidy/misc/UseInternalLinkageCheck.h b/clang-tools-extra/clang-tidy/misc/UseInternalLinkageCheck.h index 0d6c3e43aa9457..1ad28333ddc49d 100644 --- a/clang-tools-extra/clang-tidy/misc/UseInternalLinkageCheck.h +++ b/clang-tools-extra/clang-tidy/misc/UseInternalLinkageCheck.h @@ -21,6 +21,9 @@ namespace clang::tidy::misc { class UseInternalLinkageCheck : public ClangTidyCheck { public: UseInternalLinkageCheck(StringRef Name, ClangTidyContext *Context); + bool isLanguageVersionSupported(const LangOptions &LangOpts) const override { + return LangOpts.CPlusPlus; + } void registerMatchers(ast_matchers::MatchFinder *Finder) override; void check(const ast_matchers::MatchFinder::MatchResult &Result) override; void storeOptions(ClangTidyOptions::OptionMap &Opts) override; diff --git a/clang-tools-extra/test/clang-tidy/checkers/misc/use-internal-linkage-var.cpp b/clang-tools-extra/test/clang-tidy/checkers/misc/use-internal-linkage-var.cpp index 01b8d28e612301..6777ce4bb0265e 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/misc/use-internal-linkage-var.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/misc/use-internal-linkage-var.cpp @@ -42,3 +42,6 @@ int global_in_extern_c_1; } extern "C" int global_in_extern_c_2; + +const int const_global = 123; +constexpr int constexpr_global = 123; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits