Add missing matcher for C-style cast expressions.

Patch by Gábor Horváth.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164123 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Daniel Jasper 2012-09-18 13:36:17 +00:00
Родитель ea104cd90e
Коммит e6d2a96cc9
2 изменённых файлов: 24 добавлений и 0 удалений

Просмотреть файл

@ -865,6 +865,16 @@ const internal::VariadicDynCastAllOfMatcher<
Stmt,
CXXConstCastExpr> constCastExpr;
/// \brief Matches a C-style cast expression.
///
/// Example: Matches (int*) 2.2f in
/// \code
/// int i = (int) 2.2f;
/// \endcode
const internal::VariadicDynCastAllOfMatcher<
Stmt,
CStyleCastExpr> cStyleCastExpr;
/// \brief Matches explicit cast expressions.
///
/// Matches any cast expression written in user code, whether it be a

Просмотреть файл

@ -2229,6 +2229,20 @@ TEST(StaticCast, DoesNotMatchOtherCasts) {
staticCastExpr()));
}
TEST(CStyleCast, MatchesSimpleCase) {
EXPECT_TRUE(matches("int i = (int) 2.2f;", cStyleCastExpr()));
}
TEST(CStyleCast, DoesNotMatchOtherCasts) {
EXPECT_TRUE(notMatches("char* p = static_cast<char*>(0);"
"char q, *r = const_cast<char*>(&q);"
"void* s = reinterpret_cast<char*>(&s);"
"struct B { virtual ~B() {} }; struct D : B {};"
"B b;"
"D* t = dynamic_cast<D*>(&b);",
cStyleCastExpr()));
}
TEST(HasDestinationType, MatchesSimpleCase) {
EXPECT_TRUE(matches("char* p = static_cast<char*>(0);",
staticCastExpr(hasDestinationType(