Lines Matching refs:C

54 static bool isSelfVar(SVal location, CheckerContext &C);
67 void checkForInvalidSelf(const Expr *E, CheckerContext &C,
71 void checkPostObjCMessage(const ObjCMethodCall &Msg, CheckerContext &C) const;
72 void checkPostStmt(const ObjCIvarRefExpr *E, CheckerContext &C) const;
73 void checkPreStmt(const ReturnStmt *S, CheckerContext &C) const;
75 CheckerContext &C) const;
76 void checkBind(SVal loc, SVal val, const Stmt *S, CheckerContext &C) const;
78 void checkPreCall(const CallEvent &CE, CheckerContext &C) const;
79 void checkPostCall(const CallEvent &CE, CheckerContext &C) const;
113 static SelfFlagEnum getSelfFlags(SVal val, CheckerContext &C) { in getSelfFlags() argument
114 return getSelfFlags(val, C.getState()); in getSelfFlags()
118 SelfFlagEnum flag, CheckerContext &C) { in addSelfFlag() argument
123 C.addTransition(state); in addSelfFlag()
127 static bool hasSelfFlag(SVal val, SelfFlagEnum flag, CheckerContext &C) { in hasSelfFlag() argument
128 return getSelfFlags(val, C) & flag; in hasSelfFlag()
134 static bool isInvalidSelf(const Expr *E, CheckerContext &C) { in isInvalidSelf() argument
135 SVal exprVal = C.getSVal(E); in isInvalidSelf()
136 if (!hasSelfFlag(exprVal, SelfFlag_Self, C)) in isInvalidSelf()
138 if (hasSelfFlag(exprVal, SelfFlag_InitRes, C)) in isInvalidSelf()
144 void ObjCSelfInitChecker::checkForInvalidSelf(const Expr *E, CheckerContext &C, in checkForInvalidSelf() argument
149 if (!C.getState()->get<CalledInit>()) in checkForInvalidSelf()
152 if (!isInvalidSelf(E, C)) in checkForInvalidSelf()
156 ExplodedNode *N = C.generateErrorNode(); in checkForInvalidSelf()
160 C.emitReport(std::make_unique<PathSensitiveBugReport>(BT, errorStr, N)); in checkForInvalidSelf()
164 CheckerContext &C) const { in checkPostObjCMessage()
171 C.getCurrentAnalysisDeclContext()->getDecl()))) in checkPostObjCMessage()
176 ProgramStateRef state = C.getState(); in checkPostObjCMessage()
183 SVal V = C.getSVal(Msg.getOriginExpr()); in checkPostObjCMessage()
184 addSelfFlag(state, V, SelfFlag_InitRes, C); in checkPostObjCMessage()
195 CheckerContext &C) const { in checkPostStmt()
198 C.getCurrentAnalysisDeclContext()->getDecl()))) in checkPostStmt()
202 E->getBase(), C, in checkPostStmt()
208 CheckerContext &C) const { in checkPreStmt()
211 C.getCurrentAnalysisDeclContext()->getDecl()))) in checkPreStmt()
214 checkForInvalidSelf(S->getRetValue(), C, in checkPreStmt()
236 CheckerContext &C) const { in checkPreCall()
239 C.getCurrentAnalysisDeclContext()->getDecl()))) in checkPreCall()
242 ProgramStateRef state = C.getState(); in checkPreCall()
251 if (isSelfVar(argV, C)) { in checkPreCall()
253 getSelfFlags(state->getSVal(argV.castAs<Loc>()), C); in checkPreCall()
254 C.addTransition(state->set<PreCallSelfFlags>(selfFlags)); in checkPreCall()
256 } else if (hasSelfFlag(argV, SelfFlag_Self, C)) { in checkPreCall()
257 SelfFlagEnum selfFlags = getSelfFlags(argV, C); in checkPreCall()
258 C.addTransition(state->set<PreCallSelfFlags>(selfFlags)); in checkPreCall()
265 CheckerContext &C) const { in checkPostCall()
268 C.getCurrentAnalysisDeclContext()->getDecl()))) in checkPostCall()
271 ProgramStateRef state = C.getState(); in checkPostCall()
280 if (isSelfVar(argV, C)) { in checkPostCall()
284 addSelfFlag(state, state->getSVal(argV.castAs<Loc>()), prevFlags, C); in checkPostCall()
286 } else if (hasSelfFlag(argV, SelfFlag_Self, C)) { in checkPostCall()
291 addSelfFlag(state, CE.getReturnValue(), prevFlags, C); in checkPostCall()
296 C.addTransition(state); in checkPostCall()
301 CheckerContext &C) const { in checkLocation()
303 C.getCurrentAnalysisDeclContext()->getDecl()))) in checkLocation()
308 ProgramStateRef state = C.getState(); in checkLocation()
309 if (isSelfVar(location, C)) in checkLocation()
311 C); in checkLocation()
316 CheckerContext &C) const { in checkBind()
322 if ((isSelfVar(loc, C)) && in checkBind()
323 !hasSelfFlag(val, SelfFlag_InitRes, C) && in checkBind()
324 !hasSelfFlag(val, SelfFlag_Self, C) && in checkBind()
325 !isSelfVar(val, C)) { in checkBind()
328 ProgramStateRef State = C.getState(); in checkBind()
332 C.addTransition(State); in checkBind()
408 static bool isSelfVar(SVal location, CheckerContext &C) { in isSelfVar() argument
409 AnalysisDeclContext *analCtx = C.getCurrentAnalysisDeclContext(); in isSelfVar()