aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp14
-rw-r--r--clang-tools-extra/test/clang-tidy/misc-static-assert.cpp8
2 files changed, 19 insertions, 3 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp b/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp
index fd6c4ca..91451e6 100644
--- a/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp
@@ -75,9 +75,17 @@ void StaticAssertCheck::check(const MatchFinder::MatchResult &Result) {
return;
// False literal is not the result of macro expansion.
- if (IsAlwaysFalse &&
- !SM.getImmediateSpellingLoc(IsAlwaysFalse->getExprLoc()).isMacroID())
- return;
+ if (IsAlwaysFalse) {
+ SourceLocation FalseLiteralLoc =
+ SM.getImmediateSpellingLoc(IsAlwaysFalse->getExprLoc());
+ if (!FalseLiteralLoc.isMacroID())
+ return;
+
+ StringRef FalseMacroName =
+ Lexer::getImmediateMacroName(FalseLiteralLoc, SM, Opts);
+ if (FalseMacroName.compare_lower("false") == 0)
+ return;
+ }
SourceLocation AssertLoc = SM.getImmediateMacroCallerLoc(AssertExpansionLoc);
diff --git a/clang-tools-extra/test/clang-tidy/misc-static-assert.cpp b/clang-tools-extra/test/clang-tidy/misc-static-assert.cpp
index e17a701..040515a 100644
--- a/clang-tools-extra/test/clang-tidy/misc-static-assert.cpp
+++ b/clang-tools-extra/test/clang-tidy/misc-static-assert.cpp
@@ -12,6 +12,9 @@ void abort() {}
#define ZERO_MACRO 0
+#define False false
+#define FALSE 0
+
#define my_macro() assert(0 == 1)
// CHECK-FIXES: #define my_macro() assert(0 == 1)
@@ -60,6 +63,11 @@ int main() {
assert(false);
// CHECK-FIXES: {{^ }}assert(false);
+ assert(False);
+ // CHECK-FIXES: {{^ }}assert(False);
+ assert(FALSE);
+ // CHECK-FIXES: {{^ }}assert(FALSE);
+
assert(ZERO_MACRO);
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: found assert() that could be
// CHECK-FIXES: {{^ }}static_assert(ZERO_MACRO, "");