================ @@ -301,9 +302,34 @@ std::vector<const NamedDecl *> HeuristicResolverImpl::resolveMemberExpr( return {}; } + // check if member expr is in the context of an explicit object method + // If so, it's safe to assume the templated arg is of type of the record + const auto ExplicitMemberHeuristic = + [&](const Expr *Base) -> std::optional<QualType> { + if (auto *DeclRef = dyn_cast_if_present<DeclRefExpr>(Base)) { + auto *PrDecl = dyn_cast_if_present<ParmVarDecl>(DeclRef->getDecl()); + + if (PrDecl && PrDecl->isExplicitObjectParameter()) { + auto CxxRecord = dyn_cast_if_present<CXXRecordDecl>( + PrDecl->getDeclContext()->getParent()); + + if (CxxRecord) { + return Ctx.getTypeDeclType(dyn_cast<TypeDecl>(CxxRecord)); ---------------- MythreyaK wrote:
`Ctx.getTypeDeclType(CxxRecord)` doesn't seem to compile without the cast. Am I doing it wrong? https://github.com/llvm/llvm-project/pull/155143 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits