[PATCH] D71980: Fix ClangTidy Bug - 44229, 33203 and 32204
Nathan James via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Dec 29 14:39:59 PST 2019
njames93 created this revision.
njames93 added reviewers: clang-tools-extra, cfe-commits.
fixes readability-misleading-indentation broken for if constexpr <https://bugs.llvm.org/show_bug.cgi?id=32204>, readability-braces-around-statements broken for if constexpr <https://bugs.llvm.org/show_bug.cgi?id=32203> and bugprone-branch-clone false positive with template functions and constexpr <https://bugs.llvm.org/show_bug.cgi?id=44229> by disabling the relevant checks on if constexpr statements while inside an instantiated template. This is due to how the else branch of an if constexpr statement is folded away to a null statement if the condition evaluates to false
https://reviews.llvm.org/D71980
Files:
clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp
clang-tools-extra/clang-tidy/readability/BracesAroundStatementsCheck.cpp
clang-tools-extra/clang-tidy/readability/MisleadingIndentationCheck.cpp
Index: clang-tools-extra/clang-tidy/readability/MisleadingIndentationCheck.cpp
===================================================================
--- clang-tools-extra/clang-tidy/readability/MisleadingIndentationCheck.cpp
+++ clang-tools-extra/clang-tidy/readability/MisleadingIndentationCheck.cpp
@@ -106,7 +106,7 @@
}
void MisleadingIndentationCheck::registerMatchers(MatchFinder *Finder) {
- Finder->addMatcher(ifStmt(hasElse(stmt())).bind("if"), this);
+ Finder->addMatcher(ifStmt(unless(allOf(isConstexpr(), isInTemplateInstantiation())),hasElse(stmt())).bind("if"), this);
Finder->addMatcher(
compoundStmt(has(stmt(anyOf(ifStmt(), forStmt(), whileStmt()))))
.bind("compound"),
Index: clang-tools-extra/clang-tidy/readability/BracesAroundStatementsCheck.cpp
===================================================================
--- clang-tools-extra/clang-tidy/readability/BracesAroundStatementsCheck.cpp
+++ clang-tools-extra/clang-tidy/readability/BracesAroundStatementsCheck.cpp
@@ -123,7 +123,7 @@
}
void BracesAroundStatementsCheck::registerMatchers(MatchFinder *Finder) {
- Finder->addMatcher(ifStmt().bind("if"), this);
+ Finder->addMatcher(ifStmt(unless(allOf(isConstexpr(), isInTemplateInstantiation()))).bind("if"), this);
Finder->addMatcher(whileStmt().bind("while"), this);
Finder->addMatcher(doStmt().bind("do"), this);
Finder->addMatcher(forStmt().bind("for"), this);
Index: clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp
===================================================================
--- clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp
+++ clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp
@@ -59,7 +59,7 @@
void BranchCloneCheck::registerMatchers(MatchFinder *Finder) {
Finder->addMatcher(
- ifStmt(stmt().bind("if"),
+ ifStmt(unless(allOf(isConstexpr(), isInTemplateInstantiation())),stmt().bind("if"),
hasParent(stmt(unless(ifStmt(hasElse(equalsBoundNode("if")))))),
hasElse(stmt().bind("else"))),
this);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D71980.235523.patch
Type: text/x-patch
Size: 2057 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20191229/a0a25335/attachment.bin>
More information about the cfe-commits
mailing list