Summary: When the expression is value dependent, isIntegerConstantExpr() crashes in C++03 mode with ../tools/clang/lib/AST/ExprConstant.cpp:9330: (anonymous namespace)::ICEDiag CheckICE(const clang::Expr *, const clang::ASTContext &): Assertion `!E->isValueDependent() && "Should not see value dependent exprs!"' failed. In C++11 mode, that assert does not trigger. This commit works around this in the check. We don't check value-dependent indices and instead check their specialization. Reviewers: alexfh, aaron.ballman Subscribers: nemanjai, cfe-commits Differential Revision: http://reviews.llvm.org/D22190 llvm-svn: 275461
12 lines
369 B
C++
12 lines
369 B
C++
// RUN: clang-tidy %s -checks=-*,cppcoreguidelines-pro-bounds-constant-array-index -- -std=c++03 | count 0
|
|
|
|
// Note: this test expects no diagnostics, but FileCheck cannot handle that,
|
|
// hence the use of | count 0.
|
|
template <int index> struct B {
|
|
int get() {
|
|
// The next line used to crash the check (in C++03 mode only).
|
|
return x[index];
|
|
}
|
|
int x[3];
|
|
};
|