зеркало из https://github.com/microsoft/clang-1.git
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:
Родитель
ea104cd90e
Коммит
e6d2a96cc9
|
@ -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(
|
||||
|
|
Загрузка…
Ссылка в новой задаче