return true;
}
- bool VisitCXXStaticCastExpr(clang::CXXStaticCastExpr *Expr) {
- return handleCXXNamedCastExpr(Expr);
- }
-
- bool VisitCXXDynamicCastExpr(clang::CXXDynamicCastExpr *Expr) {
- return handleCXXNamedCastExpr(Expr);
- }
-
- bool VisitCXXReinterpretCastExpr(clang::CXXReinterpretCastExpr *Expr) {
- return handleCXXNamedCastExpr(Expr);
- }
-
- bool VisitCXXConstCastExpr(clang::CXXConstCastExpr *Expr) {
- return handleCXXNamedCastExpr(Expr);
- }
-
// Other visitors:
bool VisitTypeLoc(const TypeLoc Loc) {
}
}
- bool handleCXXNamedCastExpr(clang::CXXNamedCastExpr *Expr) {
- clang::QualType Type = Expr->getType();
- // See if this a cast of a pointer.
- const RecordDecl *Decl = Type->getPointeeCXXRecordDecl();
- if (!Decl) {
- // See if this is a cast of a reference.
- Decl = Type->getAsCXXRecordDecl();
- }
-
- if (Decl && getUSRForDecl(Decl) == USR) {
- SourceLocation Location =
- Expr->getTypeInfoAsWritten()->getTypeLoc().getBeginLoc();
- checkAndAddLocation(Location);
- }
-
- return true;
- }
-
private:
void checkAndAddLocation(SourceLocation Loc) {
const auto BeginLoc = Loc;