================ @@ -15845,8 +15845,10 @@ void Sema::CheckCoroutineWrapper(FunctionDecl *FD) { RecordDecl *RD = FD->getReturnType()->getAsRecordDecl(); if (!RD || !RD->getUnderlyingDecl()->hasAttr<CoroReturnTypeAttr>()) return; - // Allow `get_return_object()`. - if (FD->getDeclName().isIdentifier() && + // Allow some_promise_type::get_return_object(). + // Since we are still in the promise definition, we can only do this + // heuristically as the promise may not be yet associated to a coroutine. + if (isa<CXXMethodDecl>(FD) && FD->getDeclName().isIdentifier() && FD->getName().equals("get_return_object") && FD->param_empty()) return; ---------------- ChuanqiXu9 wrote:
> I do not think that would work either. For example, consider TUs with only > promise definitions and no coroutine definitions. These attr would not be > available even in the end of TU. Oh, yeah. I didn't think about modules : ). > @ChuanqiXu9 is it fine to add attributes to existing functions conditioned > on how they are used rather than how they are defined? Then it is troublesome to use this attribute, which violates our intention. https://github.com/llvm/llvm-project/pull/77066 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits