Lines Matching refs:Call
33 class CastValueChecker : public Checker<check::DeadSymbols, eval::Call> {
37 std::function<void(const CastValueChecker *, const CallEvent &Call,
53 bool evalCall(const CallEvent &Call, CheckerContext &C) const;
77 void evalCast(const CallEvent &Call, DefinedOrUnknownSVal DV,
79 void evalDynCast(const CallEvent &Call, DefinedOrUnknownSVal DV,
81 void evalCastOrNull(const CallEvent &Call, DefinedOrUnknownSVal DV,
83 void evalDynCastOrNull(const CallEvent &Call, DefinedOrUnknownSVal DV,
85 void evalCastAs(const CallEvent &Call, DefinedOrUnknownSVal DV,
87 void evalGetAs(const CallEvent &Call, DefinedOrUnknownSVal DV,
89 void evalIsa(const CallEvent &Call, DefinedOrUnknownSVal DV,
91 void evalIsaAndNonNull(const CallEvent &Call, DefinedOrUnknownSVal DV,
197 static void addCastTransition(const CallEvent &Call, DefinedOrUnknownSVal DV, in addCastTransition() argument
207 QualType CastToTy = Call.getResultType(); in addCastTransition()
209 if (Call.getNumArgs() > 0) { in addCastTransition()
210 Object = Call.getArgExpr(0); in addCastTransition()
211 CastFromTy = Call.parameters()[0]->getType(); in addCastTransition()
213 Object = cast<CXXInstanceCall>(&Call)->getCXXThisExpr(); in addCastTransition()
254 State->BindExpr(Call.getOriginExpr(), C.getLocationContext(), V, false), in addCastTransition()
258 static void addInstanceOfTransition(const CallEvent &Call, in addInstanceOfTransition() argument
262 const FunctionDecl *FD = Call.getDecl()->getAsFunction(); in addInstanceOfTransition()
263 QualType CastFromTy = Call.parameters()[0]->getType(); in addInstanceOfTransition()
316 NewState->BindExpr(Call.getOriginExpr(), C.getLocationContext(), in addInstanceOfTransition()
318 getNoteTag(C, CastInfo, CastToTy, Call.getArgExpr(0), true, in addInstanceOfTransition()
330 State->BindExpr(Call.getOriginExpr(), C.getLocationContext(), in addInstanceOfTransition()
332 getNoteTag(C, CastToTyVec, Call.getArgExpr(0), IsAnyKnown)); in addInstanceOfTransition()
340 static void evalNonNullParamNonNullReturn(const CallEvent &Call, in evalNonNullParamNonNullReturn() argument
344 addCastTransition(Call, DV, C, /*IsNonNullParam=*/true, in evalNonNullParamNonNullReturn()
348 static void evalNonNullParamNullReturn(const CallEvent &Call, in evalNonNullParamNullReturn() argument
351 addCastTransition(Call, DV, C, /*IsNonNullParam=*/true, in evalNonNullParamNullReturn()
355 static void evalNullParamNullReturn(const CallEvent &Call, in evalNullParamNullReturn() argument
359 C.addTransition(State->BindExpr(Call.getOriginExpr(), in evalNullParamNullReturn()
366 void CastValueChecker::evalCast(const CallEvent &Call, DefinedOrUnknownSVal DV, in evalCast() argument
368 evalNonNullParamNonNullReturn(Call, DV, C, /*IsCheckedCast=*/true); in evalCast()
371 void CastValueChecker::evalDynCast(const CallEvent &Call, in evalDynCast() argument
374 evalNonNullParamNonNullReturn(Call, DV, C); in evalDynCast()
375 evalNonNullParamNullReturn(Call, DV, C); in evalDynCast()
378 void CastValueChecker::evalCastOrNull(const CallEvent &Call, in evalCastOrNull() argument
381 evalNonNullParamNonNullReturn(Call, DV, C); in evalCastOrNull()
382 evalNullParamNullReturn(Call, DV, C); in evalCastOrNull()
385 void CastValueChecker::evalDynCastOrNull(const CallEvent &Call, in evalDynCastOrNull() argument
388 evalNonNullParamNonNullReturn(Call, DV, C); in evalDynCastOrNull()
389 evalNonNullParamNullReturn(Call, DV, C); in evalDynCastOrNull()
390 evalNullParamNullReturn(Call, DV, C); in evalDynCastOrNull()
397 static void evalZeroParamNonNullReturn(const CallEvent &Call, in evalZeroParamNonNullReturn() argument
401 addCastTransition(Call, DV, C, /*IsNonNullParam=*/true, in evalZeroParamNonNullReturn()
405 static void evalZeroParamNullReturn(const CallEvent &Call, in evalZeroParamNullReturn() argument
408 addCastTransition(Call, DV, C, /*IsNonNullParam=*/true, in evalZeroParamNullReturn()
412 void CastValueChecker::evalCastAs(const CallEvent &Call, in evalCastAs() argument
415 evalZeroParamNonNullReturn(Call, DV, C, /*IsCheckedCast=*/true); in evalCastAs()
418 void CastValueChecker::evalGetAs(const CallEvent &Call, DefinedOrUnknownSVal DV, in evalGetAs() argument
420 evalZeroParamNonNullReturn(Call, DV, C); in evalGetAs()
421 evalZeroParamNullReturn(Call, DV, C); in evalGetAs()
428 void CastValueChecker::evalIsa(const CallEvent &Call, DefinedOrUnknownSVal DV, in evalIsa() argument
434 addInstanceOfTransition(Call, DV, NonNullState, C, /*IsInstanceOf=*/true); in evalIsa()
435 addInstanceOfTransition(Call, DV, NonNullState, C, /*IsInstanceOf=*/false); in evalIsa()
443 void CastValueChecker::evalIsaAndNonNull(const CallEvent &Call, in evalIsaAndNonNull() argument
450 addInstanceOfTransition(Call, DV, NonNullState, C, /*IsInstanceOf=*/true); in evalIsaAndNonNull()
451 addInstanceOfTransition(Call, DV, NonNullState, C, /*IsInstanceOf=*/false); in evalIsaAndNonNull()
455 addInstanceOfTransition(Call, DV, NullState, C, /*IsInstanceOf=*/false); in evalIsaAndNonNull()
463 bool CastValueChecker::evalCall(const CallEvent &Call, in evalCall() argument
465 const auto *Lookup = CDM.lookup(Call); in evalCall()
479 QualType ParamT = Call.parameters()[0]->getType(); in evalCall()
480 QualType ResultT = Call.getResultType(); in evalCall()
486 DV = Call.getArgSVal(0).getAs<DefinedOrUnknownSVal>(); in evalCall()
491 const FunctionDecl *FD = Call.getDecl()->getAsFunction(); in evalCall()
495 DV = Call.getArgSVal(0).getAs<DefinedOrUnknownSVal>(); in evalCall()
499 const auto *InstanceCall = dyn_cast<CXXInstanceCall>(&Call); in evalCall()
510 Check(this, Call, *DV, C); in evalCall()