aboutsummaryrefslogtreecommitdiff
path: root/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp
diff options
context:
space:
mode:
authorSzabolcs Sipos <szabolcs.sipos@ericsson.com>2015-05-23 14:21:01 +0000
committerSzabolcs Sipos <szabolcs.sipos@ericsson.com>2015-05-23 14:21:01 +0000
commit0acf19ed539597dcb2bb920093c84844a3094d2d (patch)
treedd142de0748fb2589e1ee168ce5872e985b8b985 /clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp
parent5f2a1379ef0f66a906e4beaa30fa3918cb1779d8 (diff)
downloadllvm-0acf19ed539597dcb2bb920093c84844a3094d2d.zip
llvm-0acf19ed539597dcb2bb920093c84844a3094d2d.tar.gz
llvm-0acf19ed539597dcb2bb920093c84844a3094d2d.tar.bz2
[clang-tidy] Fix for llvm.org/PR23572
misc-static-assert won't report asserts whose conditions contain calls to non constexpr functions. llvm-svn: 238098
Diffstat (limited to 'clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp')
-rw-r--r--clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp b/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp
index c56262b..ed9367c 100644
--- a/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.cpp
@@ -39,11 +39,13 @@ void StaticAssertCheck::registerMatchers(MatchFinder *Finder) {
anyOf(binaryOperator(hasEitherOperand(IsAlwaysFalseWithCast)),
anything())).bind("assertExprRoot"),
IsAlwaysFalse);
+ auto NonConstexprFunctionCall =
+ callExpr(hasDeclaration(functionDecl(unless(isConstexpr()))));
auto Condition = expr(anyOf(
expr(ignoringParenCasts(anyOf(
AssertExprRoot,
unaryOperator(hasUnaryOperand(ignoringParenCasts(AssertExprRoot)))))),
- anything()));
+ anything()), unless(findAll(NonConstexprFunctionCall)));
Finder->addMatcher(
stmt(anyOf(conditionalOperator(hasCondition(Condition.bind("condition"))),