Lines Matching refs:Env

182 StructValue &createOptionalValue(Environment &Env, BoolValue &HasValueVal) {  in createOptionalValue()  argument
185 return Env.takeOwnership(std::move(OptionalVal)); in createOptionalValue()
190 BoolValue *getHasValue(Environment &Env, Value *OptionalVal) { in getHasValue() argument
195 HasValueVal = &Env.makeAtomicBoolValue(); in getHasValue()
239 Environment &Env) { in maybeInitializeOptionalValueMember() argument
248 if (Env.getValue(ValueLoc) == nullptr) { in maybeInitializeOptionalValueMember()
260 auto *ValueVal = Env.createValue(ValueLoc.getType()); in maybeInitializeOptionalValueMember()
263 Env.setValue(ValueLoc, *ValueVal); in maybeInitializeOptionalValueMember()
269 auto *ValueVal = Env.createValue(Ty); in maybeInitializeOptionalValueMember()
272 auto &ValueLoc = Env.createStorageLocation(Ty); in maybeInitializeOptionalValueMember()
273 Env.setValue(ValueLoc, *ValueVal); in maybeInitializeOptionalValueMember()
275 OptionalVal.setProperty("value", Env.takeOwnership(std::move(ValueRef))); in maybeInitializeOptionalValueMember()
283 State.Env.getValue(*OptionalExpr, SkipPast::Reference)) { in initializeOptionalReference()
285 setHasValue(*OptionalVal, State.Env.makeAtomicBoolValue()); in initializeOptionalReference()
292 bool isEmptyOptional(const Value &OptionalVal, const Environment &Env) { in isEmptyOptional() argument
296 Env.flowConditionImplies(Env.makeNot(*HasValueVal)); in isEmptyOptional()
301 bool isNonEmptyOptional(const Value &OptionalVal, const Environment &Env) { in isNonEmptyOptional() argument
304 return HasValueVal != nullptr && Env.flowConditionImplies(*HasValueVal); in isNonEmptyOptional()
310 State.Env.getValue(*ObjectExpr, SkipPast::ReferenceThenPointer)) { in transferUnwrapCall()
311 if (State.Env.getStorageLocation(*UnwrapExpr, SkipPast::None) == nullptr) in transferUnwrapCall()
313 UnwrapExpr->getType(), *OptionalVal, State.Env)) in transferUnwrapCall()
314 State.Env.setStorageLocation(*UnwrapExpr, *Loc); in transferUnwrapCall()
321 auto &Loc = State.Env.createStorageLocation(*E); in transferMakeOptionalCall()
322 State.Env.setStorageLocation(*E, Loc); in transferMakeOptionalCall()
323 State.Env.setValue( in transferMakeOptionalCall()
324 Loc, createOptionalValue(State.Env, State.Env.getBoolLiteralValue(true))); in transferMakeOptionalCall()
331 State.Env, State.Env.getValue(*CallExpr->getImplicitObjectArgument(), in transferOptionalHasValueCall()
333 auto &CallExprLoc = State.Env.createStorageLocation(*CallExpr); in transferOptionalHasValueCall()
334 State.Env.setValue(CallExprLoc, *HasValueVal); in transferOptionalHasValueCall()
335 State.Env.setStorageLocation(*CallExpr, CallExprLoc); in transferOptionalHasValueCall()
344 BoolValue &(*ModelPred)(Environment &Env, in transferValueOrImpl() argument
347 auto &Env = State.Env; in transferValueOrImpl() local
354 State.Env, in transferValueOrImpl()
355 State.Env.getValue(*ObjectArgumentExpr, SkipPast::ReferenceThenPointer)); in transferValueOrImpl()
360 State.Env.getValue(*ValueOrPredExpr, SkipPast::None)); in transferValueOrImpl()
362 auto &ExprLoc = State.Env.createStorageLocation(*ValueOrPredExpr); in transferValueOrImpl()
363 ExprValue = &State.Env.makeAtomicBoolValue(); in transferValueOrImpl()
364 State.Env.setValue(ExprLoc, *ExprValue); in transferValueOrImpl()
365 State.Env.setStorageLocation(*ValueOrPredExpr, ExprLoc); in transferValueOrImpl()
368 Env.addToFlowCondition(ModelPred(Env, *ExprValue, *HasValueVal)); in transferValueOrImpl()
375 [](Environment &Env, BoolValue &ExprVal, in transferValueOrStringEmptyCall()
383 return Env.makeImplication(Env.makeNot(ExprVal), in transferValueOrStringEmptyCall()
392 [](Environment &Env, BoolValue &ExprVal, in transferValueOrNotEqX() argument
397 return Env.makeImplication(ExprVal, HasValueVal); in transferValueOrNotEqX()
404 if (State.Env.getStorageLocation(*E, SkipPast::None) != nullptr) in transferCallReturningOptional()
407 auto &Loc = State.Env.createStorageLocation(*E); in transferCallReturningOptional()
408 State.Env.setStorageLocation(*E, Loc); in transferCallReturningOptional()
409 State.Env.setValue( in transferCallReturningOptional()
410 Loc, createOptionalValue(State.Env, State.Env.makeAtomicBoolValue())); in transferCallReturningOptional()
416 State.Env.getStorageLocation(E, SkipPast::ReferenceThenPointer)) { in assignOptionalValue()
417 State.Env.setValue(*OptionalLoc, in assignOptionalValue()
418 createOptionalValue(State.Env, HasValueVal)); in assignOptionalValue()
439 return State.Env.getBoolLiteralValue(true); in value_orConversionHasValue()
444 getHasValue(State.Env, State.Env.getValue(E, SkipPast::Reference))) in value_orConversionHasValue()
446 return State.Env.makeAtomicBoolValue(); in value_orConversionHasValue()
465 State.Env.getStorageLocation(*E->getArg(0), SkipPast::Reference); in transferAssignment()
469 State.Env.setValue(*OptionalLoc, createOptionalValue(State.Env, HasValueVal)); in transferAssignment()
472 State.Env.setStorageLocation(*E, *OptionalLoc); in transferAssignment()
488 transferAssignment(E, State.Env.getBoolLiteralValue(false), State); in transferNulloptAssignment()
494 auto *OptionalVal1 = State.Env.getValue(OptionalLoc1); in transferSwap()
497 auto *OptionalVal2 = State.Env.getValue(OptionalLoc2); in transferSwap()
500 State.Env.setValue(OptionalLoc1, *OptionalVal2); in transferSwap()
501 State.Env.setValue(OptionalLoc2, *OptionalVal1); in transferSwap()
509 auto *OptionalLoc1 = State.Env.getStorageLocation( in transferSwapCall()
514 State.Env.getStorageLocation(*E->getArg(0), SkipPast::Reference); in transferSwapCall()
525 State.Env.getStorageLocation(*E->getArg(0), SkipPast::Reference); in transferStdSwapCall()
529 State.Env.getStorageLocation(*E->getArg(1), SkipPast::Reference); in transferStdSwapCall()
577 assignOptionalValue(*E, State, State.Env.getBoolLiteralValue(true)); in buildTransferMatchSwitch()
584 State.Env.getBoolLiteralValue(false)); in buildTransferMatchSwitch()
624 State.Env.getBoolLiteralValue(true)); in buildTransferMatchSwitch()
633 State.Env.getBoolLiteralValue(false)); in buildTransferMatchSwitch()
658 const Environment &Env) { in diagnoseUnwrapCall() argument
660 Env.getValue(*ObjectExpr, SkipPast::ReferenceThenPointer)) { in diagnoseUnwrapCall()
663 if (Env.flowConditionImplies(*HasValueVal)) in diagnoseUnwrapCall()
685 const Environment &Env) { in buildDiagnoseMatchSwitch() argument
686 return diagnoseUnwrapCall(E, E->getImplicitObjectArgument(), Env); in buildDiagnoseMatchSwitch()
693 const Environment &Env) { in buildDiagnoseMatchSwitch() argument
694 return diagnoseUnwrapCall(E, E->getArg(0), Env); in buildDiagnoseMatchSwitch()
712 Environment &Env) { in transfer() argument
713 LatticeTransferState State(L, Env); in transfer()
748 ASTContext &Context, const Stmt *Stmt, const Environment &Env) { in diagnose() argument
749 return DiagnoseMatchSwitch(*Stmt, Context, Env); in diagnose()