forked from OSchip/llvm-project
Change CheckerVisitor so that [Pre,Post]VisitCallExpr only handles CallExprs for simple C functions, not
all CallExprs (including CXXMemberCallExpr, etc.). Now the generic handler for all CallExprs is [Pre,Post]VisitGenericCallExpr. Also add [Pre,Post]Visit hooks for CXXMemberCallExpr. Change GRExprEngine::VisitCXXMemberCallExpr() to do pre/post checker visits of the call. llvm-svn: 115119
This commit is contained in:
parent
99219f16b9
commit
e18dd0a84e
|
@ -21,8 +21,9 @@
|
||||||
|
|
||||||
PREVISIT(ArraySubscriptExpr, Stmt)
|
PREVISIT(ArraySubscriptExpr, Stmt)
|
||||||
PREVISIT(BinaryOperator, Stmt)
|
PREVISIT(BinaryOperator, Stmt)
|
||||||
PREVISIT(CallExpr, Stmt)
|
PREVISIT(CallExpr, GenericCall)
|
||||||
PREVISIT(CXXOperatorCallExpr, CallExpr)
|
PREVISIT(CXXOperatorCallExpr, GenericCall)
|
||||||
|
PREVISIT(CXXMemberCallExpr, GenericCall)
|
||||||
PREVISIT(DeclStmt, Stmt)
|
PREVISIT(DeclStmt, Stmt)
|
||||||
PREVISIT(ObjCAtSynchronizedStmt, Stmt)
|
PREVISIT(ObjCAtSynchronizedStmt, Stmt)
|
||||||
PREVISIT(ObjCMessageExpr, Stmt)
|
PREVISIT(ObjCMessageExpr, Stmt)
|
||||||
|
@ -30,8 +31,9 @@ PREVISIT(ReturnStmt, Stmt)
|
||||||
|
|
||||||
POSTVISIT(BlockExpr, Stmt)
|
POSTVISIT(BlockExpr, Stmt)
|
||||||
POSTVISIT(BinaryOperator, Stmt)
|
POSTVISIT(BinaryOperator, Stmt)
|
||||||
POSTVISIT(CallExpr, Stmt)
|
POSTVISIT(CallExpr, GenericCall)
|
||||||
POSTVISIT(CXXOperatorCallExpr, CallExpr)
|
POSTVISIT(CXXOperatorCallExpr, GenericCall)
|
||||||
|
POSTVISIT(CXXMemberCallExpr, GenericCall)
|
||||||
POSTVISIT(ObjCMessageExpr, Stmt)
|
POSTVISIT(ObjCMessageExpr, Stmt)
|
||||||
|
|
||||||
#undef PREVISIT
|
#undef PREVISIT
|
||||||
|
|
|
@ -79,6 +79,13 @@ break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PreVisitGenericCall(CheckerContext &C, const CallExpr *CE) {
|
||||||
|
static_cast<ImplClass*>(this)->PreVisitStmt(C, CE);
|
||||||
|
}
|
||||||
|
void PostVisitGenericCall(CheckerContext &C, const CallExpr *CE) {
|
||||||
|
static_cast<ImplClass*>(this)->PostVisitStmt(C, CE);
|
||||||
|
}
|
||||||
|
|
||||||
void PreVisitStmt(CheckerContext &C, const Stmt *S) {
|
void PreVisitStmt(CheckerContext &C, const Stmt *S) {
|
||||||
*C.respondsToCallback = false;
|
*C.respondsToCallback = false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue