================ @@ -5406,6 +5408,99 @@ ExprResult Sema::ConvertVectorExpr(Expr *E, TypeSourceInfo *TInfo, RParenLoc, CurFPFeatureOverrides()); } +ExprResult Sema::BuiltinInvoke(CallExpr *TheCall) { + SourceLocation Loc = TheCall->getBeginLoc(); + auto Args = MutableArrayRef(TheCall->getArgs(), TheCall->getNumArgs()); + assert(llvm::none_of(Args, + [](Expr *Arg) { return Arg->isTypeDependent(); })); + + if (Args.size() == 0) { + Diag(TheCall->getBeginLoc(), diag::err_typecheck_call_too_few_args_at_least) + << /*callee_type=*/0 << /*min_arg_count=*/1 << /*actual_arg_count=*/0 + << /*is_non_object=*/0 << TheCall->getSourceRange(); + return ExprError(); + } + + auto FuncT = Args[0]->getType(); + + if (auto *MPT = FuncT->getAs<MemberPointerType>()) { + if (Args.size() < 2) { + Diag(TheCall->getBeginLoc(), + diag::err_typecheck_call_too_few_args_at_least) + << /*callee_type=*/0 << /*min_arg_count=*/2 << /*actual_arg_count=*/1 + << /*is_non_object=*/0 << TheCall->getSourceRange(); + return ExprError(); + } + + auto *MemPtrClass = MPT->getQualifier()->getAsType(); + auto ObjectT = Args[1]->getType(); ---------------- AaronBallman wrote:
Please spell out the types instead of using `auto` (I'll stop commenting on that, should just make a general pass and correct them all) https://github.com/llvm/llvm-project/pull/116709 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits