Lines Matching refs:Cand
1487 for (OverloadCandidateSet::iterator Cand = Conversions.begin(); in TryUserDefinedConversion() local
1488 Cand != Conversions.end(); ++Cand) in TryUserDefinedConversion()
1489 if (Cand->Best) in TryUserDefinedConversion()
1490 ICS.Ambiguous.addConversion(Cand->FoundDecl, Cand->Function); in TryUserDefinedConversion()
4814 for (OverloadCandidateSet::iterator Cand = CandidateSet.begin(); in FindConversionForRefInit() local
4815 Cand != CandidateSet.end(); ++Cand) in FindConversionForRefInit()
4816 if (Cand->Best) in FindConversionForRefInit()
4817 ICS.Ambiguous.addConversion(Cand->FoundDecl, Cand->Function); in FindConversionForRefInit()
9587 for (OverloadCandidateSet::iterator Cand = CandidateSet.begin(), in AddArgumentDependentLookupCandidates() local
9589 Cand != CandEnd; ++Cand) in AddArgumentDependentLookupCandidates()
9590 if (Cand->Function) { in AddArgumentDependentLookupCandidates()
9591 Fns.erase(Cand->Function); in AddArgumentDependentLookupCandidates()
9592 if (FunctionTemplateDecl *FunTmpl = Cand->Function->getPrimaryTemplate()) in AddArgumentDependentLookupCandidates()
10253 [](OverloadCandidate &Cand) { return &Cand; }); in BestViableFunction() argument
10269 llvm::any_of(Candidates, [&](OverloadCandidate *Cand) { in BestViableFunction() argument
10271 return Cand->Viable && Cand->Function && in BestViableFunction()
10272 S.IdentifyCUDAPreference(Caller, Cand->Function) == in BestViableFunction()
10276 auto IsWrongSideCandidate = [&](OverloadCandidate *Cand) { in BestViableFunction() argument
10278 return Cand->Viable && Cand->Function && in BestViableFunction()
10279 S.IdentifyCUDAPreference(Caller, Cand->Function) == in BestViableFunction()
10288 for (auto *Cand : Candidates) { in BestViableFunction() local
10289 Cand->Best = false; in BestViableFunction()
10290 if (Cand->Viable) { in BestViableFunction()
10292 isBetterOverloadCandidate(S, *Cand, *Best, Loc, Kind)) in BestViableFunction()
10293 Best = Cand; in BestViableFunction()
10294 } else if (Cand->NotValidBecauseConstraintExprHasError()) { in BestViableFunction()
10318 for (auto *Cand : Candidates) { in BestViableFunction() local
10319 if (Cand->Viable && !Cand->Best && in BestViableFunction()
10320 !isBetterOverloadCandidate(S, *Curr, *Cand, Loc, Kind)) { in BestViableFunction()
10321 PendingBest.push_back(Cand); in BestViableFunction()
10322 Cand->Best = true; in BestViableFunction()
10324 if (S.isEquivalentInternalLinkageDeclaration(Cand->Function, in BestViableFunction()
10326 EquivalentCands.push_back(Cand->Function); in BestViableFunction()
10686 static void DiagnoseBadConversion(Sema &S, OverloadCandidate *Cand, in DiagnoseBadConversion() argument
10688 const ImplicitConversionSequence &Conv = Cand->Conversions[I]; in DiagnoseBadConversion()
10690 assert(Cand->Function && "for now, candidate must be a function"); in DiagnoseBadConversion()
10691 FunctionDecl *Fn = Cand->Function; in DiagnoseBadConversion()
10706 ClassifyOverloadCandidate(S, Cand->FoundDecl, Fn, Cand->getRewriteKind(), in DiagnoseBadConversion()
10724 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10760 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10770 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10780 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10789 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10807 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10818 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10833 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10849 << (unsigned)(Cand->Fix.Kind); in DiagnoseBadConversion()
10851 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10891 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10904 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10910 !checkAddressOfCandidateIsAvailable(S, Cand->Function)) in DiagnoseBadConversion()
10918 << (unsigned)(Cand->Fix.Kind); in DiagnoseBadConversion()
10923 for (const FixItHint &HI : Cand->Fix.Hints) in DiagnoseBadConversion()
10929 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in DiagnoseBadConversion()
10935 static bool CheckArityMismatch(Sema &S, OverloadCandidate *Cand, in CheckArityMismatch() argument
10937 FunctionDecl *Fn = Cand->Function; in CheckArityMismatch()
10950 assert((Cand->FailureKind == ovl_fail_too_few_arguments) || in CheckArityMismatch()
10951 (Cand->FailureKind == ovl_fail_bad_deduction && in CheckArityMismatch()
10952 Cand->DeductionFailure.Result == Sema::TDK_TooFewArguments)); in CheckArityMismatch()
10954 assert((Cand->FailureKind == ovl_fail_too_many_arguments) || in CheckArityMismatch()
10955 (Cand->FailureKind == ovl_fail_bad_deduction && in CheckArityMismatch()
10956 Cand->DeductionFailure.Result == Sema::TDK_TooManyArguments)); in CheckArityMismatch()
11010 static void DiagnoseArityMismatch(Sema &S, OverloadCandidate *Cand, in DiagnoseArityMismatch() argument
11012 if (!CheckArityMismatch(S, Cand, NumFormalArgs)) in DiagnoseArityMismatch()
11013 DiagnoseArityMismatch(S, Cand->FoundDecl, Cand->Function, NumFormalArgs); in DiagnoseArityMismatch()
11301 static void DiagnoseBadDeduction(Sema &S, OverloadCandidate *Cand, in DiagnoseBadDeduction() argument
11304 unsigned TDK = Cand->DeductionFailure.Result; in DiagnoseBadDeduction()
11306 if (CheckArityMismatch(S, Cand, NumArgs)) in DiagnoseBadDeduction()
11309 DiagnoseBadDeduction(S, Cand->FoundDecl, Cand->Function, // pattern in DiagnoseBadDeduction()
11310 Cand->DeductionFailure, NumArgs, TakingCandidateAddress); in DiagnoseBadDeduction()
11314 static void DiagnoseBadTarget(Sema &S, OverloadCandidate *Cand) { in DiagnoseBadTarget() argument
11316 FunctionDecl *Callee = Cand->Function; in DiagnoseBadTarget()
11323 ClassifyOverloadCandidate(S, Cand->FoundDecl, Callee, in DiagnoseBadTarget()
11324 Cand->getRewriteKind(), FnDesc); in DiagnoseBadTarget()
11372 static void DiagnoseFailedEnableIfAttr(Sema &S, OverloadCandidate *Cand) { in DiagnoseFailedEnableIfAttr() argument
11373 FunctionDecl *Callee = Cand->Function; in DiagnoseFailedEnableIfAttr()
11374 EnableIfAttr *Attr = static_cast<EnableIfAttr*>(Cand->DeductionFailure.Data); in DiagnoseFailedEnableIfAttr()
11381 static void DiagnoseFailedExplicitSpec(Sema &S, OverloadCandidate *Cand) { in DiagnoseFailedExplicitSpec() argument
11382 ExplicitSpecifier ES = ExplicitSpecifier::getFromDecl(Cand->Function); in DiagnoseFailedExplicitSpec()
11386 switch (Cand->Function->getDeclKind()) { in DiagnoseFailedExplicitSpec()
11394 Kind = Cand->Function->isImplicit() ? 0 : 2; in DiagnoseFailedExplicitSpec()
11404 FunctionDecl *First = Cand->Function->getFirstDecl(); in DiagnoseFailedExplicitSpec()
11429 static void NoteFunctionCandidate(Sema &S, OverloadCandidate *Cand, in NoteFunctionCandidate() argument
11433 FunctionDecl *Fn = Cand->Function; in NoteFunctionCandidate()
11441 Cand->FailureKind != ovl_fail_bad_conversion) in NoteFunctionCandidate()
11445 if (Cand->Viable) { in NoteFunctionCandidate()
11449 ClassifyOverloadCandidate(S, Cand->FoundDecl, Fn, in NoteFunctionCandidate()
11450 Cand->getRewriteKind(), FnDesc); in NoteFunctionCandidate()
11455 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in NoteFunctionCandidate()
11460 S.NoteOverloadCandidate(Cand->FoundDecl, Fn, Cand->getRewriteKind()); in NoteFunctionCandidate()
11464 switch (Cand->FailureKind) { in NoteFunctionCandidate()
11467 return DiagnoseArityMismatch(S, Cand, NumArgs); in NoteFunctionCandidate()
11470 return DiagnoseBadDeduction(S, Cand, NumArgs, in NoteFunctionCandidate()
11476 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in NoteFunctionCandidate()
11486 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in NoteFunctionCandidate()
11493 return S.NoteOverloadCandidate(Cand->FoundDecl, Fn, Cand->getRewriteKind()); in NoteFunctionCandidate()
11496 unsigned I = (Cand->IgnoreObjectArgument ? 1 : 0); in NoteFunctionCandidate()
11497 for (unsigned N = Cand->Conversions.size(); I != N; ++I) in NoteFunctionCandidate()
11498 if (Cand->Conversions[I].isBad()) in NoteFunctionCandidate()
11499 return DiagnoseBadConversion(S, Cand, I, TakingCandidateAddress); in NoteFunctionCandidate()
11504 return S.NoteOverloadCandidate(Cand->FoundDecl, Fn, Cand->getRewriteKind()); in NoteFunctionCandidate()
11508 return DiagnoseBadTarget(S, Cand); in NoteFunctionCandidate()
11511 return DiagnoseFailedEnableIfAttr(S, Cand); in NoteFunctionCandidate()
11514 return DiagnoseFailedExplicitSpec(S, Cand); in NoteFunctionCandidate()
11524 MaybeEmitInheritedConstructorNote(S, Cand->FoundDecl); in NoteFunctionCandidate()
11528 bool Available = checkAddressOfCandidateIsAvailable(S, Cand->Function); in NoteFunctionCandidate()
11540 ClassifyOverloadCandidate(S, Cand->FoundDecl, Fn, in NoteFunctionCandidate()
11541 Cand->getRewriteKind(), FnDesc); in NoteFunctionCandidate()
11555 static void NoteSurrogateCandidate(Sema &S, OverloadCandidate *Cand) { in NoteSurrogateCandidate() argument
11556 if (shouldSkipNotingLambdaConversionDecl(Cand->Surrogate)) in NoteSurrogateCandidate()
11562 QualType FnType = Cand->Surrogate->getConversionType(); in NoteSurrogateCandidate()
11586 S.Diag(Cand->Surrogate->getLocation(), diag::note_ovl_surrogate_cand) in NoteSurrogateCandidate()
11592 OverloadCandidate *Cand) { in NoteBuiltinOperatorCandidate() argument
11593 assert(Cand->Conversions.size() <= 2 && "builtin operator is not binary"); in NoteBuiltinOperatorCandidate()
11597 TypeStr += Cand->BuiltinParamTypes[0].getAsString(); in NoteBuiltinOperatorCandidate()
11598 if (Cand->Conversions.size() == 1) { in NoteBuiltinOperatorCandidate()
11603 TypeStr += Cand->BuiltinParamTypes[1].getAsString(); in NoteBuiltinOperatorCandidate()
11610 OverloadCandidate *Cand) { in NoteAmbiguousUserConversions() argument
11611 for (const ImplicitConversionSequence &ICS : Cand->Conversions) { in NoteAmbiguousUserConversions()
11620 static SourceLocation GetLocationForCandidate(const OverloadCandidate *Cand) { in GetLocationForCandidate() argument
11621 if (Cand->Function) in GetLocationForCandidate()
11622 return Cand->Function->getLocation(); in GetLocationForCandidate()
11623 if (Cand->IsSurrogate) in GetLocationForCandidate()
11624 return Cand->Surrogate->getLocation(); in GetLocationForCandidate()
11819 CompleteNonViableCandidate(Sema &S, OverloadCandidate *Cand, in CompleteNonViableCandidate() argument
11822 assert(!Cand->Viable); in CompleteNonViableCandidate()
11825 if (Cand->FailureKind != ovl_fail_bad_conversion) in CompleteNonViableCandidate()
11831 Cand->Fix.setConversionChecker(TryCopyInitialization); in CompleteNonViableCandidate()
11834 unsigned ConvCount = Cand->Conversions.size(); in CompleteNonViableCandidate()
11835 for (unsigned ConvIdx = (Cand->IgnoreObjectArgument ? 1 : 0); /**/; in CompleteNonViableCandidate()
11838 if (Cand->Conversions[ConvIdx].isInitialized() && in CompleteNonViableCandidate()
11839 Cand->Conversions[ConvIdx].isBad()) { in CompleteNonViableCandidate()
11840 Unfixable = !Cand->TryToFixBadConversion(ConvIdx, S); in CompleteNonViableCandidate()
11852 bool Reversed = Cand->isReversed(); in CompleteNonViableCandidate()
11854 if (Cand->IsSurrogate) { in CompleteNonViableCandidate()
11856 = Cand->Surrogate->getConversionType().getNonReferenceType(); in CompleteNonViableCandidate()
11862 } else if (Cand->Function) { in CompleteNonViableCandidate()
11864 Cand->Function->getType()->castAs<FunctionProtoType>()->getParamTypes(); in CompleteNonViableCandidate()
11865 if (isa<CXXMethodDecl>(Cand->Function) && in CompleteNonViableCandidate()
11866 !isa<CXXConstructorDecl>(Cand->Function) && !Reversed) { in CompleteNonViableCandidate()
11870 Cand->Function->getDeclName().getCXXOverloadedOperator() != OO_Call && in CompleteNonViableCandidate()
11871 Cand->Function->getDeclName().getCXXOverloadedOperator() != in CompleteNonViableCandidate()
11879 ParamTypes = Cand->BuiltinParamTypes; in CompleteNonViableCandidate()
11887 if (Cand->Conversions[ConvIdx].isInitialized()) { in CompleteNonViableCandidate()
11891 Cand->Conversions[ConvIdx].setAsIdentityConversion( in CompleteNonViableCandidate()
11894 Cand->Conversions[ConvIdx] = in CompleteNonViableCandidate()
11901 if (!Unfixable && Cand->Conversions[ConvIdx].isBad()) in CompleteNonViableCandidate()
11902 Unfixable = !Cand->TryToFixBadConversion(ConvIdx, S); in CompleteNonViableCandidate()
11905 Cand->Conversions[ConvIdx].setEllipsis(); in CompleteNonViableCandidate()
11917 for (iterator Cand = begin(), LastCand = end(); Cand != LastCand; ++Cand) { in CompleteCandidates() local
11918 if (!Filter(*Cand)) in CompleteCandidates()
11922 if (!Cand->Viable) { in CompleteCandidates()
11923 if (!Cand->Function && !Cand->IsSurrogate) { in CompleteCandidates()
11928 CompleteNonViableCandidate(S, Cand, Args, Kind); in CompleteCandidates()
11933 if (!Cand->Viable) in CompleteCandidates()
11938 if (!Cand->Best) in CompleteCandidates()
11943 Cands.push_back(Cand); in CompleteCandidates()
11959 CompleteCandidates(S, OCD_AllCandidates, Args, OpLoc, [](auto &Cand) { in shouldDeferDiags() argument
11960 return (Cand.Viable == false && in shouldDeferDiags()
11961 Cand.FailureKind == ovl_fail_bad_target) || in shouldDeferDiags()
11962 (Cand.Function && in shouldDeferDiags()
11963 Cand.Function->template hasAttr<CUDAHostAttr>() && in shouldDeferDiags()
11964 Cand.Function->template hasAttr<CUDADeviceAttr>()); in shouldDeferDiags()
11997 OverloadCandidate *Cand = *I; in NoteCandidates() local
12005 if (Cand->Function) in NoteCandidates()
12006 NoteFunctionCandidate(S, Cand, Args.size(), in NoteCandidates()
12008 else if (Cand->IsSurrogate) in NoteCandidates()
12009 NoteSurrogateCandidate(S, Cand); in NoteCandidates()
12011 assert(Cand->Viable && in NoteCandidates()
12020 NoteAmbiguousUserConversions(S, OpLoc, Cand); in NoteCandidates()
12025 NoteBuiltinOperatorCandidate(S, Opc, OpLoc, Cand); in NoteCandidates()
12040 GetLocationForCandidate(const TemplateSpecCandidate *Cand) { in GetLocationForCandidate() argument
12041 return Cand->Specialization ? Cand->Specialization->getLocation() in GetLocationForCandidate()
12109 for (iterator Cand = begin(), LastCand = end(); Cand != LastCand; ++Cand) { in NoteCandidates() local
12110 if (Cand->Specialization) in NoteCandidates()
12111 Cands.push_back(Cand); in NoteCandidates()
12125 TemplateSpecCandidate *Cand = *I; in NoteCandidates() local
12134 assert(Cand->Specialization && in NoteCandidates()
12136 Cand->NoteDeductionFailure(S, ForTakingAddress); in NoteCandidates()
13938 for (OverloadCandidate &Cand : CandidateSet) { in CreateOverloadedBinOp()
13939 if (Cand.Viable && Cand.Function && Cand.isReversed() && in CreateOverloadedBinOp()
13940 haveSameParameterTypes(Context, Cand.Function, FnDecl, 2)) { in CreateOverloadedBinOp()
13943 *this, OpLoc, Cand.Conversions[ArgIdx], in CreateOverloadedBinOp()
13946 AmbiguousWith.push_back(Cand.Function); in CreateOverloadedBinOp()