================ @@ -11298,8 +11298,9 @@ static void DiagnoseBadConversion(Sema &S, OverloadCandidate *Cand, Expr *FromExpr = Conv.Bad.FromExpr; QualType FromTy = Conv.Bad.getFromType(); QualType ToTy = Conv.Bad.getToType(); - SourceRange ToParamRange = - !isObjectArgument ? Fn->getParamDecl(I)->getSourceRange() : SourceRange(); + SourceRange ToParamRange; + if (!isObjectArgument && I < Fn->getNumParams()) + ToParamRange = Fn->getParamDecl(I)->getSourceRange(); ---------------- mizvekov wrote:
Sure, fixing the crash is important, but in that case I would leave a FIXME and keep the bug open, with updated information. It's your call. Though I don't think solving this is complicated: Just a linear scan on the parameter list: * A parameter which is a pack consumes `cast<PackExpansionType>(Fn->getParamDecl(I)->getType())->getNumExpansions()` arguments, which can possibly be zero arguments. It should not be possible to find an unexpanded pack in this diagnostic. * A parameter which is not a pack consumes one argument. https://github.com/llvm/llvm-project/pull/93079 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits