static ExprResult buildPromiseCall(Sema &S, VarDecl *Promise, SourceLocation Loc, StringRef Name, MultiExprArg Args) { // Form a reference to the promise. ExprResult PromiseRef = S.BuildDeclRefExpr( Promise, Promise->getType().getNonReferenceType(), VK_LValue, Loc); if (PromiseRef.isInvalid()) return ExprError(); return buildMemberCall(S, PromiseRef.get(), Loc, Name, Args); }
static ExprResult buildPromiseCall(Sema &S, FunctionScopeInfo *Coroutine, SourceLocation Loc, StringRef Name, MutableArrayRef<Expr *> Args) { assert(Coroutine->CoroutinePromise && "no promise for coroutine"); // Form a reference to the promise. auto *Promise = Coroutine->CoroutinePromise; ExprResult PromiseRef = S.BuildDeclRefExpr( Promise, Promise->getType().getNonReferenceType(), VK_LValue, Loc); if (PromiseRef.isInvalid()) return ExprError(); // Call 'yield_value', passing in E. return buildMemberCall(S, PromiseRef.get(), Loc, Name, Args); }