Lines Matching refs:Cand
1382 for (OverloadCandidateSet::iterator Cand = Conversions.begin(); in TryUserDefinedConversion() local
1383 Cand != Conversions.end(); ++Cand) in TryUserDefinedConversion()
1384 if (Cand->Best) in TryUserDefinedConversion()
1385 ICS.Ambiguous.addConversion(Cand->FoundDecl, Cand->Function); in TryUserDefinedConversion()
4709 for (OverloadCandidateSet::iterator Cand = CandidateSet.begin(); in FindConversionForRefInit() local
4710 Cand != CandidateSet.end(); ++Cand) in FindConversionForRefInit()
4711 if (Cand->Best) in FindConversionForRefInit()
4712 ICS.Ambiguous.addConversion(Cand->FoundDecl, Cand->Function); in FindConversionForRefInit()
9335 for (OverloadCandidateSet::iterator Cand = CandidateSet.begin(), in AddArgumentDependentLookupCandidates() local
9337 Cand != CandEnd; ++Cand) in AddArgumentDependentLookupCandidates()
9338 if (Cand->Function) { in AddArgumentDependentLookupCandidates()
9339 Fns.erase(Cand->Function); in AddArgumentDependentLookupCandidates()
9340 if (FunctionTemplateDecl *FunTmpl = Cand->Function->getPrimaryTemplate()) in AddArgumentDependentLookupCandidates()
9955 [](OverloadCandidate &Cand) { return &Cand; }); in BestViableFunction() argument
9971 llvm::any_of(Candidates, [&](OverloadCandidate *Cand) { in BestViableFunction() argument
9973 return Cand->Viable && Cand->Function && in BestViableFunction()
9974 S.IdentifyCUDAPreference(Caller, Cand->Function) == in BestViableFunction()
9978 auto IsWrongSideCandidate = [&](OverloadCandidate *Cand) { in BestViableFunction() argument
9980 return Cand->Viable && Cand->Function && in BestViableFunction()
9981 S.IdentifyCUDAPreference(Caller, Cand->Function) == in BestViableFunction()
9990 for (auto *Cand : Candidates) { in BestViableFunction() local
9991 Cand->Best = false; in BestViableFunction()
9992 if (Cand->Viable) in BestViableFunction()
9994 isBetterOverloadCandidate(S, *Cand, *Best, Loc, Kind)) in BestViableFunction()
9995 Best = Cand; in BestViableFunction()
10012 for (auto *Cand : Candidates) { in BestViableFunction() local
10013 if (Cand->Viable && !Cand->Best && in BestViableFunction()
10014 !isBetterOverloadCandidate(S, *Curr, *Cand, Loc, Kind)) { in BestViableFunction()
10015 PendingBest.push_back(Cand); in BestViableFunction()
10016 Cand->Best = true; in BestViableFunction()
10018 if (S.isEquivalentInternalLinkageDeclaration(Cand->Function, in BestViableFunction()
10020 EquivalentCands.push_back(Cand->Function); in BestViableFunction()
10368 static void DiagnoseBadConversion(Sema &S, OverloadCandidate *Cand, in DiagnoseBadConversion() argument
10370 const ImplicitConversionSequence &Conv = Cand->Conversions[I]; in DiagnoseBadConversion()
10372 assert(Cand->Function && "for now, candidate must be a function"); in DiagnoseBadConversion()
10373 FunctionDecl *Fn = Cand->Function; in DiagnoseBadConversion()
10388 ClassifyOverloadCandidate(S, Cand->FoundDecl, Fn, Cand->getRewriteKind(), in DiagnoseBadConversion()
10406 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10442 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10452 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10462 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10471 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10489 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10500 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10511 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10527 << (unsigned)(Cand->Fix.Kind); in DiagnoseBadConversion()
10529 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10569 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10582 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10588 !checkAddressOfCandidateIsAvailable(S, Cand->Function)) in DiagnoseBadConversion()
10596 << (unsigned)(Cand->Fix.Kind); in DiagnoseBadConversion()
10599 for (std::vector<FixItHint>::iterator HI = Cand->Fix.Hints.begin(), in DiagnoseBadConversion()
10600 HE = Cand->Fix.Hints.end(); HI != HE; ++HI) in DiagnoseBadConversion()
10604 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10610 static bool CheckArityMismatch(Sema &S, OverloadCandidate *Cand, in CheckArityMismatch() argument
10612 FunctionDecl *Fn = Cand->Function; in CheckArityMismatch()
10625 assert((Cand->FailureKind == ovl_fail_too_few_arguments) || in CheckArityMismatch()
10626 (Cand->FailureKind == ovl_fail_bad_deduction && in CheckArityMismatch()
10627 Cand->DeductionFailure.Result == Sema::TDK_TooFewArguments)); in CheckArityMismatch()
10629 assert((Cand->FailureKind == ovl_fail_too_many_arguments) || in CheckArityMismatch()
10630 (Cand->FailureKind == ovl_fail_bad_deduction && in CheckArityMismatch()
10631 Cand->DeductionFailure.Result == Sema::TDK_TooManyArguments)); in CheckArityMismatch()
10685 static void DiagnoseArityMismatch(Sema &S, OverloadCandidate *Cand, in DiagnoseArityMismatch() argument
10687 if (!CheckArityMismatch(S, Cand, NumFormalArgs)) in DiagnoseArityMismatch()
10688 DiagnoseArityMismatch(S, Cand->FoundDecl, Cand->Function, NumFormalArgs); in DiagnoseArityMismatch()
10976 static void DiagnoseBadDeduction(Sema &S, OverloadCandidate *Cand, in DiagnoseBadDeduction() argument
10979 unsigned TDK = Cand->DeductionFailure.Result; in DiagnoseBadDeduction()
10981 if (CheckArityMismatch(S, Cand, NumArgs)) in DiagnoseBadDeduction()
10984 DiagnoseBadDeduction(S, Cand->FoundDecl, Cand->Function, // pattern in DiagnoseBadDeduction()
10985 Cand->DeductionFailure, NumArgs, TakingCandidateAddress); in DiagnoseBadDeduction()
10989 static void DiagnoseBadTarget(Sema &S, OverloadCandidate *Cand) { in DiagnoseBadTarget() argument
10991 FunctionDecl *Callee = Cand->Function; in DiagnoseBadTarget()
10998 ClassifyOverloadCandidate(S, Cand->FoundDecl, Callee, in DiagnoseBadTarget()
10999 Cand->getRewriteKind(), FnDesc); in DiagnoseBadTarget()
11047 static void DiagnoseFailedEnableIfAttr(Sema &S, OverloadCandidate *Cand) { in DiagnoseFailedEnableIfAttr() argument
11048 FunctionDecl *Callee = Cand->Function; in DiagnoseFailedEnableIfAttr()
11049 EnableIfAttr *Attr = static_cast<EnableIfAttr*>(Cand->DeductionFailure.Data); in DiagnoseFailedEnableIfAttr()
11056 static void DiagnoseFailedExplicitSpec(Sema &S, OverloadCandidate *Cand) { in DiagnoseFailedExplicitSpec() argument
11057 ExplicitSpecifier ES = ExplicitSpecifier::getFromDecl(Cand->Function); in DiagnoseFailedExplicitSpec()
11061 switch (Cand->Function->getDeclKind()) { in DiagnoseFailedExplicitSpec()
11069 Kind = Cand->Function->isImplicit() ? 0 : 2; in DiagnoseFailedExplicitSpec()
11079 FunctionDecl *First = Cand->Function->getFirstDecl(); in DiagnoseFailedExplicitSpec()
11104 static void NoteFunctionCandidate(Sema &S, OverloadCandidate *Cand, in NoteFunctionCandidate() argument
11108 FunctionDecl *Fn = Cand->Function; in NoteFunctionCandidate()
11113 if (Cand->Viable) { in NoteFunctionCandidate()
11117 ClassifyOverloadCandidate(S, Cand->FoundDecl, Fn, in NoteFunctionCandidate()
11118 Cand->getRewriteKind(), FnDesc); in NoteFunctionCandidate()
11123 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in NoteFunctionCandidate()
11128 S.NoteOverloadCandidate(Cand->FoundDecl, Fn, Cand->getRewriteKind()); in NoteFunctionCandidate()
11132 switch (Cand->FailureKind) { in NoteFunctionCandidate()
11135 return DiagnoseArityMismatch(S, Cand, NumArgs); in NoteFunctionCandidate()
11138 return DiagnoseBadDeduction(S, Cand, NumArgs, in NoteFunctionCandidate()
11144 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in NoteFunctionCandidate()
11154 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in NoteFunctionCandidate()
11161 return S.NoteOverloadCandidate(Cand->FoundDecl, Fn, Cand->getRewriteKind()); in NoteFunctionCandidate()
11164 unsigned I = (Cand->IgnoreObjectArgument ? 1 : 0); in NoteFunctionCandidate()
11165 for (unsigned N = Cand->Conversions.size(); I != N; ++I) in NoteFunctionCandidate()
11166 if (Cand->Conversions[I].isBad()) in NoteFunctionCandidate()
11167 return DiagnoseBadConversion(S, Cand, I, TakingCandidateAddress); in NoteFunctionCandidate()
11172 return S.NoteOverloadCandidate(Cand->FoundDecl, Fn, Cand->getRewriteKind()); in NoteFunctionCandidate()
11176 return DiagnoseBadTarget(S, Cand); in NoteFunctionCandidate()
11179 return DiagnoseFailedEnableIfAttr(S, Cand); in NoteFunctionCandidate()
11182 return DiagnoseFailedExplicitSpec(S, Cand); in NoteFunctionCandidate()
11192 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in NoteFunctionCandidate()
11196 bool Available = checkAddressOfCandidateIsAvailable(S, Cand->Function); in NoteFunctionCandidate()
11208 ClassifyOverloadCandidate(S, Cand->FoundDecl, Fn, in NoteFunctionCandidate()
11209 Cand->getRewriteKind(), FnDesc); in NoteFunctionCandidate()
11223 static void NoteSurrogateCandidate(Sema &S, OverloadCandidate *Cand) { in NoteSurrogateCandidate() argument
11224 if (shouldSkipNotingLambdaConversionDecl(Cand->Surrogate)) in NoteSurrogateCandidate()
11230 QualType FnType = Cand->Surrogate->getConversionType(); in NoteSurrogateCandidate()
11254 S.Diag(Cand->Surrogate->getLocation(), diag::note_ovl_surrogate_cand) in NoteSurrogateCandidate()
11260 OverloadCandidate *Cand) { in NoteBuiltinOperatorCandidate() argument
11261 assert(Cand->Conversions.size() <= 2 && "builtin operator is not binary"); in NoteBuiltinOperatorCandidate()
11265 TypeStr += Cand->BuiltinParamTypes[0].getAsString(); in NoteBuiltinOperatorCandidate()
11266 if (Cand->Conversions.size() == 1) { in NoteBuiltinOperatorCandidate()
11271 TypeStr += Cand->BuiltinParamTypes[1].getAsString(); in NoteBuiltinOperatorCandidate()
11278 OverloadCandidate *Cand) { in NoteAmbiguousUserConversions() argument
11279 for (const ImplicitConversionSequence &ICS : Cand->Conversions) { in NoteAmbiguousUserConversions()
11288 static SourceLocation GetLocationForCandidate(const OverloadCandidate *Cand) { in GetLocationForCandidate() argument
11289 if (Cand->Function) in GetLocationForCandidate()
11290 return Cand->Function->getLocation(); in GetLocationForCandidate()
11291 if (Cand->IsSurrogate) in GetLocationForCandidate()
11292 return Cand->Surrogate->getLocation(); in GetLocationForCandidate()
11486 CompleteNonViableCandidate(Sema &S, OverloadCandidate *Cand, in CompleteNonViableCandidate() argument
11489 assert(!Cand->Viable); in CompleteNonViableCandidate()
11492 if (Cand->FailureKind != ovl_fail_bad_conversion) in CompleteNonViableCandidate()
11498 Cand->Fix.setConversionChecker(TryCopyInitialization); in CompleteNonViableCandidate()
11501 unsigned ConvCount = Cand->Conversions.size(); in CompleteNonViableCandidate()
11502 for (unsigned ConvIdx = (Cand->IgnoreObjectArgument ? 1 : 0); /**/; in CompleteNonViableCandidate()
11505 if (Cand->Conversions[ConvIdx].isInitialized() && in CompleteNonViableCandidate()
11506 Cand->Conversions[ConvIdx].isBad()) { in CompleteNonViableCandidate()
11507 Unfixable = !Cand->TryToFixBadConversion(ConvIdx, S); in CompleteNonViableCandidate()
11519 bool Reversed = Cand->isReversed(); in CompleteNonViableCandidate()
11521 if (Cand->IsSurrogate) { in CompleteNonViableCandidate()
11523 = Cand->Surrogate->getConversionType().getNonReferenceType(); in CompleteNonViableCandidate()
11529 } else if (Cand->Function) { in CompleteNonViableCandidate()
11531 Cand->Function->getType()->castAs<FunctionProtoType>()->getParamTypes(); in CompleteNonViableCandidate()
11532 if (isa<CXXMethodDecl>(Cand->Function) && in CompleteNonViableCandidate()
11533 !isa<CXXConstructorDecl>(Cand->Function) && !Reversed) { in CompleteNonViableCandidate()
11537 Cand->Function->getDeclName().getCXXOverloadedOperator() != OO_Call) in CompleteNonViableCandidate()
11544 ParamTypes = Cand->BuiltinParamTypes; in CompleteNonViableCandidate()
11552 if (Cand->Conversions[ConvIdx].isInitialized()) { in CompleteNonViableCandidate()
11556 Cand->Conversions[ConvIdx].setAsIdentityConversion( in CompleteNonViableCandidate()
11559 Cand->Conversions[ConvIdx] = in CompleteNonViableCandidate()
11566 if (!Unfixable && Cand->Conversions[ConvIdx].isBad()) in CompleteNonViableCandidate()
11567 Unfixable = !Cand->TryToFixBadConversion(ConvIdx, S); in CompleteNonViableCandidate()
11570 Cand->Conversions[ConvIdx].setEllipsis(); in CompleteNonViableCandidate()
11582 for (iterator Cand = begin(), LastCand = end(); Cand != LastCand; ++Cand) { in CompleteCandidates() local
11583 if (!Filter(*Cand)) in CompleteCandidates()
11587 if (!Cand->Viable) { in CompleteCandidates()
11588 if (!Cand->Function && !Cand->IsSurrogate) { in CompleteCandidates()
11593 CompleteNonViableCandidate(S, Cand, Args, Kind); in CompleteCandidates()
11598 if (!Cand->Viable) in CompleteCandidates()
11603 if (!Cand->Best) in CompleteCandidates()
11608 Cands.push_back(Cand); in CompleteCandidates()
11624 CompleteCandidates(S, OCD_AllCandidates, Args, OpLoc, [](auto &Cand) { in shouldDeferDiags() argument
11625 return (Cand.Viable == false && in shouldDeferDiags()
11626 Cand.FailureKind == ovl_fail_bad_target) || in shouldDeferDiags()
11627 (Cand.Function->template hasAttr<CUDAHostAttr>() && in shouldDeferDiags()
11628 Cand.Function->template hasAttr<CUDADeviceAttr>()); in shouldDeferDiags()
11661 OverloadCandidate *Cand = *I; in NoteCandidates() local
11669 if (Cand->Function) in NoteCandidates()
11670 NoteFunctionCandidate(S, Cand, Args.size(), in NoteCandidates()
11672 else if (Cand->IsSurrogate) in NoteCandidates()
11673 NoteSurrogateCandidate(S, Cand); in NoteCandidates()
11675 assert(Cand->Viable && in NoteCandidates()
11684 NoteAmbiguousUserConversions(S, OpLoc, Cand); in NoteCandidates()
11689 NoteBuiltinOperatorCandidate(S, Opc, OpLoc, Cand); in NoteCandidates()
11704 GetLocationForCandidate(const TemplateSpecCandidate *Cand) { in GetLocationForCandidate() argument
11705 return Cand->Specialization ? Cand->Specialization->getLocation() in GetLocationForCandidate()
11773 for (iterator Cand = begin(), LastCand = end(); Cand != LastCand; ++Cand) { in NoteCandidates() local
11774 if (Cand->Specialization) in NoteCandidates()
11775 Cands.push_back(Cand); in NoteCandidates()
11789 TemplateSpecCandidate *Cand = *I; in NoteCandidates() local
11798 assert(Cand->Specialization && in NoteCandidates()
11800 Cand->NoteDeductionFailure(S, ForTakingAddress); in NoteCandidates()
13596 for (OverloadCandidate &Cand : CandidateSet) { in CreateOverloadedBinOp()
13597 if (Cand.Viable && Cand.Function && Cand.isReversed() && in CreateOverloadedBinOp()
13598 haveSameParameterTypes(Context, Cand.Function, FnDecl, 2)) { in CreateOverloadedBinOp()
13601 *this, OpLoc, Cand.Conversions[ArgIdx], in CreateOverloadedBinOp()
13604 AmbiguousWith.push_back(Cand.Function); in CreateOverloadedBinOp()