vingeldal created this revision. Herald added subscribers: cfe-commits, kbarton, nemanjai. Herald added a project: clang. vingeldal added reviewers: aaron.ballman, lebedev.ri, JonasToth, gribozavr2. Herald added a subscriber: wuzish.
There was concernes about a false positive in clang-tidy check AvoidNonConstGlobalVariables after it was merged and a fix for assumed false positive was submitted in: https://reviews.llvm.org/D77461 There was also some discussion regarding if this was actually a false positive or a true positive. An issue was submitted to the C++ Core Guidelines asking for a clarification in the matter: https://github.com/isocpp/CppCoreGuidelines/issues/1599 The answer from the C++ Core Guidelines project seems to go against the previous assumption that this was a matter of a false positive, so this patch is suggestion to revert the previous fix of the assumed false positive. This reverts commit b2d8c89ea48beb83e0392b1f00c9eafa33c09ca8 <https://reviews.llvm.org/rGb2d8c89ea48beb83e0392b1f00c9eafa33c09ca8>. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D79113 Files: clang-tools-extra/clang-tidy/cppcoreguidelines/AvoidNonConstGlobalVariablesCheck.cpp clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-avoid-non-const-global-variables.cpp Index: clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-avoid-non-const-global-variables.cpp =================================================================== --- clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-avoid-non-const-global-variables.cpp +++ clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-avoid-non-const-global-variables.cpp @@ -231,8 +231,7 @@ // CHECKING AGAINST FALSE POSITIVES INSIDE FUNCTION SCOPE ///////////////////// int main() { for (int i = 0; i < 3; ++i) { - static int staticNonConstLoopVariable = 42; int nonConstLoopVariable = 42; - nonConstInt = nonConstLoopVariable + i + staticNonConstLoopVariable; + nonConstInt = nonConstLoopVariable + i; } } Index: clang-tools-extra/clang-tidy/cppcoreguidelines/AvoidNonConstGlobalVariablesCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/cppcoreguidelines/AvoidNonConstGlobalVariablesCheck.cpp +++ clang-tools-extra/clang-tidy/cppcoreguidelines/AvoidNonConstGlobalVariablesCheck.cpp @@ -17,15 +17,11 @@ namespace tidy { namespace cppcoreguidelines { -namespace { -AST_MATCHER(VarDecl, isLocalVarDecl) { return Node.isLocalVarDecl(); } -} // namespace - void AvoidNonConstGlobalVariablesCheck::registerMatchers(MatchFinder *Finder) { auto GlobalVariable = varDecl( hasGlobalStorage(), unless(anyOf( - isLocalVarDecl(), isConstexpr(), hasType(isConstQualified()), + isConstexpr(), hasType(isConstQualified()), hasType(referenceType())))); // References can't be changed, only the // data they reference can be changed.
Index: clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-avoid-non-const-global-variables.cpp =================================================================== --- clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-avoid-non-const-global-variables.cpp +++ clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-avoid-non-const-global-variables.cpp @@ -231,8 +231,7 @@ // CHECKING AGAINST FALSE POSITIVES INSIDE FUNCTION SCOPE ///////////////////// int main() { for (int i = 0; i < 3; ++i) { - static int staticNonConstLoopVariable = 42; int nonConstLoopVariable = 42; - nonConstInt = nonConstLoopVariable + i + staticNonConstLoopVariable; + nonConstInt = nonConstLoopVariable + i; } } Index: clang-tools-extra/clang-tidy/cppcoreguidelines/AvoidNonConstGlobalVariablesCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/cppcoreguidelines/AvoidNonConstGlobalVariablesCheck.cpp +++ clang-tools-extra/clang-tidy/cppcoreguidelines/AvoidNonConstGlobalVariablesCheck.cpp @@ -17,15 +17,11 @@ namespace tidy { namespace cppcoreguidelines { -namespace { -AST_MATCHER(VarDecl, isLocalVarDecl) { return Node.isLocalVarDecl(); } -} // namespace - void AvoidNonConstGlobalVariablesCheck::registerMatchers(MatchFinder *Finder) { auto GlobalVariable = varDecl( hasGlobalStorage(), unless(anyOf( - isLocalVarDecl(), isConstexpr(), hasType(isConstQualified()), + isConstexpr(), hasType(isConstQualified()), hasType(referenceType())))); // References can't be changed, only the // data they reference can be changed.
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits