mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-31 14:15:12 +00:00
Allow the static assert clang-tidy checker to run over C code.
llvm-svn: 246495
This commit is contained in:
parent
f444177d00
commit
c0dc76c251
@ -27,10 +27,9 @@ StaticAssertCheck::StaticAssertCheck(StringRef Name, ClangTidyContext *Context)
|
||||
: ClangTidyCheck(Name, Context) {}
|
||||
|
||||
void StaticAssertCheck::registerMatchers(MatchFinder *Finder) {
|
||||
// FIXME: I don't see why this checker couldn't also be interesting for
|
||||
// _Static_assert in C11, or static_assert if <assert.h> has been included,
|
||||
// but it is currently only enabled for C++11. Investigate.
|
||||
if (!getLangOpts().CPlusPlus11)
|
||||
// This checker only makes sense for languages that have static assertion
|
||||
// capabilities: C++11 and C11.
|
||||
if (!(getLangOpts().CPlusPlus11 || getLangOpts().C11))
|
||||
return;
|
||||
|
||||
auto IsAlwaysFalse = expr(ignoringParenImpCasts(
|
||||
|
27
clang-tools-extra/test/clang-tidy/misc-static-assert.c
Normal file
27
clang-tools-extra/test/clang-tidy/misc-static-assert.c
Normal file
@ -0,0 +1,27 @@
|
||||
// RUN: %python %S/check_clang_tidy.py %s misc-static-assert %t -- -std=c11
|
||||
// RUN: clang-tidy %s -checks=-*,misc-static-assert -- -std=c99 | count 0
|
||||
|
||||
void abort() {}
|
||||
#ifdef NDEBUG
|
||||
#define assert(x) 1
|
||||
#else
|
||||
#define assert(x) \
|
||||
if (!(x)) \
|
||||
abort()
|
||||
#endif
|
||||
|
||||
void f(void) {
|
||||
int x = 1;
|
||||
assert(x == 0);
|
||||
// CHECK-FIXES: {{^ }}assert(x == 0);
|
||||
|
||||
#define static_assert(x, msg) _Static_assert(x, msg)
|
||||
assert(11 == 5 + 6);
|
||||
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: found assert() that could be
|
||||
// CHECK-FIXES: {{^ }}static_assert(11 == 5 + 6, "");
|
||||
#undef static_assert
|
||||
|
||||
assert(10 == 5 + 5);
|
||||
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: found assert() that could be
|
||||
// CHECK-FIXES: {{^ }}static_assert(10 == 5 + 5, "");
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user