Lines Matching full:conversions
110 OverloadCandidateSet& Conversions,
259 /// implicit conversions.
279 // array-to-pointer or function-to-pointer implicit conversions, so in isPointerConversionToBool()
359 /// \param IgnoreFloatToIntegralConversion If true type-narrowing conversions
515 // Such conversions on variables are always narrowing. in getNarrowingKind()
573 // Other kinds of conversions are not narrowings. in getNarrowingKind()
613 OS << "No conversions required"; in dump()
665 new (&conversions()) ConversionSet(); in construct()
669 conversions().~ConversionSet(); in destruct()
676 new (&conversions()) ConversionSet(O.conversions()); in copyFrom()
1085 for (auto &C : i->Conversions) in destroyCandidates()
1604 OverloadCandidateSet Conversions(From->getExprLoc(), in TryUserDefinedConversion() local
1607 Conversions, AllowExplicit, in TryUserDefinedConversion()
1647 for (OverloadCandidateSet::iterator Cand = Conversions.begin(); in TryUserDefinedConversion()
1648 Cand != Conversions.end(); ++Cand) in TryUserDefinedConversion()
1681 /// If @p SuppressUserConversions, then user-defined conversions are
1683 /// If @p AllowExplicit, then explicit user-defined conversions are
1902 // FIXME: disable conversions between long double, __ibm128 and __float128 in IsFloatingPointConversion()
1906 // Conversions between bfloat16 and float16 are currently not supported. in IsFloatingPointConversion()
1913 // Conversions between IEEE-quad and IBM-extended semantics are not in IsFloatingPointConversion()
1981 // Identical types require no conversions. in IsVectorConversion()
1985 // There are no conversions between extended vector types, only identity. in IsVectorConversion()
2005 // There are no conversions between extended vector types other than the in IsVectorConversion()
2040 // 2)lax vector conversions are permitted and the vector types are of the in IsVectorConversion()
2073 /// only consider non-class types; for conversions that involve class
2085 // Standard conversions (C++ [conv]) in IsStandardConversion()
2091 // There are no standard conversions for class types in C++, so in IsStandardConversion()
2218 // We don't require any conversions for the first step. in IsStandardConversion()
2253 // Boolean conversions (C++ 4.12). in IsStandardConversion()
2258 // Integral conversions (C++ 4.7). in IsStandardConversion()
2262 // Complex conversions (C99 6.3.1.6) in IsStandardConversion()
2267 // Complex-real conversions (C99 6.3.1.7) in IsStandardConversion()
2271 // Floating point conversions (C++ 4.8). in IsStandardConversion()
2279 // Floating-integral conversions (C++ 4.9). in IsStandardConversion()
2289 // Pointer conversions (C++ 4.10). in IsStandardConversion()
2295 // Pointer to member conversions (4.11). in IsStandardConversion()
2304 // Compatible conversions (Clang extension for C function overloading) in IsStandardConversion()
2346 // Function pointer conversions (removing 'noexcept') including removal of in IsStandardConversion()
2675 /// Conversions to 'id' subsume cv-qualifier conversions. in BuildSimilarlyQualifiedPointerType()
2880 // First, we handle all conversions on ObjC object pointer types. in isObjCPointerConversion()
2978 // pointer conversions. If so, we permit the conversion (but in isObjCPointerConversion()
3059 // pointer conversions. If so, we permit the conversion. in IsBlockPointerConversion()
3366 // Objective-C++ conversions are always okay. in CheckPointerConversion()
3367 // FIXME: We should have a different class of conversions for the in CheckPointerConversion()
3368 // Objective-C++ implicit conversions. in CheckPointerConversion()
3514 // Check Objective-C lifetime conversions. in isQualificationConversionStep()
3522 // Qualification conversions cannot cast between different in isQualificationConversionStep()
3543 // conversions between overlapping address spaces. in isQualificationConversionStep()
3689 // Initializer lists don't have conversions as such. in IsInitializerListConstructorConversion()
3831 const auto &Conversions = FromRecordDecl->getVisibleConversionFunctions(); in IsUserDefinedConversion() local
3832 for (auto I = Conversions.begin(), E = Conversions.end(); I != E; ++I) { in IsUserDefinedConversion()
3876 // Initializer lists don't have conversions as such. in IsUserDefinedConversion()
3879 if (Best->Conversions[0].isEllipsis()) in IsUserDefinedConversion()
3882 User.Before = Best->Conversions[0].Standard; in IsUserDefinedConversion()
3902 User.Before = Best->Conversions[0].Standard; in IsUserDefinedConversion()
3994 // If both conversion functions are implicitly-declared conversions from in compareConversionFunctions()
4011 // defining ALL of the possible conversions in regards to calling-convention. in compareConversionFunctions()
4359 // their derived-to-base conversions. in CompareStandardConversionSequences()
4365 // Both conversion sequences are conversions to void in CompareStandardConversionSequences()
4412 // Compare based on qualification conversions (C++ 13.3.3.2p3, in CompareStandardConversionSequences()
4532 /// qualification conversions (C++ 13.3.3.2p3 bullet 3).
4572 // Prefer qualification conversions not involving a change in lifetime in CompareQualificationConversions()
4573 // to qualification conversions that do change lifetime. in CompareQualificationConversions()
4585 // FIXME: In Objective-C ARC, we can have qualification conversions in both in CompareQualificationConversions()
4599 /// various kinds of derived-to-base conversions (C++
4601 /// conversions between Objective-C interface types.
4629 // Compare based on pointer conversions. in CompareDerivedToBaseConversions()
4632 /*FIXME: Remove if Objective-C id conversions get their own rank*/ in CompareDerivedToBaseConversions()
4842 // Check for standard conversions we can apply to pointers: derived-to-base in CompareReferenceRelationship()
4843 // conversions, ObjC pointer conversions, and function pointer conversions. in CompareReferenceRelationship()
4844 // (Qualification conversions are checked last.) in CompareReferenceRelationship()
4916 assert(T2->isRecordType() && "Can only find conversions of record types."); in FindConversionForRefInit()
4921 const auto &Conversions = T2RecordDecl->getVisibleConversionFunctions(); in FindConversionForRefInit() local
4922 for (auto I = Conversions.begin(), E = Conversions.end(); I != E; ++I) { in FindConversionForRefInit()
4997 ICS.UserDefined.Before = Best->Conversions[0].Standard; in FindConversionForRefInit()
5115 // derived-to-base conversions is suppressed when we're in TryReferenceInit()
5225 // related, and we aren't allowed any user conversions, the in TryReferenceInit()
5727 // are not allowed to perform user-defined conversions in TryObjectArgumentInitialization()
5920 // conversion to bool in which explicit conversions are permitted. in TryContextuallyConvertToBool()
5923 AllowedExplicit::Conversions, in TryContextuallyConvertToBool()
5951 // conversions are fine. in CheckConvertedConstantConversions()
5955 case ICK_Integral_Conversion: // Narrowing conversions are checked elsewhere. in CheckConvertedConstantConversions()
5972 // C++1z: null pointer conversions and null member pointer conversions are in CheckConvertedConstantConversions()
6034 // sequence contains only [... list of conversions ...]. in BuildConvertedConstantExpression()
6067 // Check that we would only use permitted conversions. in BuildConvertedConstantExpression()
6268 /// involves any pointer conversions, remove them. This may change
6289 AllowedExplicit::Conversions, in TryContextuallyConvertToObjCPointer()
6295 // Strip off any final conversions to 'id'. in TryContextuallyConvertToObjCPointer()
6568 // We can only perform contextual implicit conversions on objects of class in PerformContextualImplicitConversion()
6598 const auto &Conversions = in PerformContextualImplicitConversion() local
6602 (std::distance(Conversions.begin(), Conversions.end()) > 1); in PerformContextualImplicitConversion()
6608 // Collect explicit or viable (potentially in C++1y) conversions. in PerformContextualImplicitConversion()
6609 for (auto I = Conversions.begin(), E = Conversions.end(); I != E; ++I) { in PerformContextualImplicitConversion()
6672 // potentially viable conversions. in PerformContextualImplicitConversion()
7000 if (Candidate.Conversions[ConvIdx].isInitialized()) { in AddOverloadCandidate()
7009 Candidate.Conversions[ConvIdx] = TryCopyInitialization( in AddOverloadCandidate()
7014 if (Candidate.Conversions[ConvIdx].isBad()) { in AddOverloadCandidate()
7023 Candidate.Conversions[ConvIdx].setEllipsis(); in AddOverloadCandidate()
7084 // incompatible pointer conversions to be a failure here. in SelectBestMethod()
7483 Candidate.Conversions[FirstConvIdx].setStaticObjectArgument(); in AddMethodCandidate()
7487 Candidate.Conversions[FirstConvIdx] = TryObjectArgumentInitialization( in AddMethodCandidate()
7490 if (Candidate.Conversions[FirstConvIdx].isBad()) { in AddMethodCandidate()
7522 if (Candidate.Conversions[ConvIdx].isInitialized()) { in AddMethodCandidate()
7538 Candidate.Conversions[ConvIdx] in AddMethodCandidate()
7544 if (Candidate.Conversions[ConvIdx].isBad()) { in AddMethodCandidate()
7553 Candidate.Conversions[ConvIdx].setEllipsis(); in AddMethodCandidate()
7592 ConversionSequenceList Conversions; in AddMethodTemplateCandidate() local
7599 MethodTmpl, ParamTypes, Args, CandidateSet, Conversions, in AddMethodTemplateCandidate()
7605 CandidateSet.addCandidate(Conversions.size(), Conversions); in AddMethodTemplateCandidate()
7634 Conversions, PO); in AddMethodTemplateCandidate()
7676 ConversionSequenceList Conversions; in AddTemplateOverloadCandidate() local
7684 FunctionTemplate, ParamTypes, Args, CandidateSet, Conversions, in AddTemplateOverloadCandidate()
7689 CandidateSet.addCandidate(Conversions.size(), Conversions); in AddTemplateOverloadCandidate()
7719 /*AllowExplicitConversions=*/false, IsADLCandidate, Conversions, PO, in AddTemplateOverloadCandidate()
7726 ConversionSequenceList &Conversions, bool SuppressUserConversions, in CheckNonDependentConversions() argument
7729 // FIXME: The cases in which we allow explicit conversions for constructor in CheckNonDependentConversions()
7739 Conversions = in CheckNonDependentConversions()
7754 Conversions[ConvIdx] = TryObjectArgumentInitialization( in CheckNonDependentConversions()
7759 if (Conversions[ConvIdx].isBad()) in CheckNonDependentConversions()
7784 Conversions[ConvIdx] in CheckNonDependentConversions()
7791 if (Conversions[ConvIdx].isBad()) in CheckNonDependentConversions()
7820 // Allow qualification conversions. in isAllowableExplicitConversion()
7826 // If we're not allowed to consider Objective-C pointer conversions, in isAllowableExplicitConversion()
7914 Candidate.Conversions[0] = TryObjectArgumentInitialization( in AddConversionCandidate()
7920 if (Candidate.Conversions[0].isBad()) { in AddConversionCandidate()
7937 // derived to base as such conversions are given Conversion Rank. They only in AddConversionCandidate()
8130 Candidate.Conversions[0] = ObjectInit; in AddSurrogateCandidate()
8137 Candidate.Conversions[0].setUserDefined(); in AddSurrogateCandidate()
8138 Candidate.Conversions[0].UserDefined.Before = ObjectInit.Standard; in AddSurrogateCandidate()
8139 Candidate.Conversions[0].UserDefined.EllipsisConversion = false; in AddSurrogateCandidate()
8140 Candidate.Conversions[0].UserDefined.HadMultipleCandidates = false; in AddSurrogateCandidate()
8141 Candidate.Conversions[0].UserDefined.ConversionFunction = Conversion; in AddSurrogateCandidate()
8142 Candidate.Conversions[0].UserDefined.FoundConversionFunction = FoundDecl; in AddSurrogateCandidate()
8143 Candidate.Conversions[0].UserDefined.After in AddSurrogateCandidate()
8144 = Candidate.Conversions[0].UserDefined.Before; in AddSurrogateCandidate()
8145 Candidate.Conversions[0].UserDefined.After.setAsIdentityConversion(); in AddSurrogateCandidate()
8177 Candidate.Conversions[ArgIdx + 1] in AddSurrogateCandidate()
8183 if (Candidate.Conversions[ArgIdx + 1].isBad()) { in AddSurrogateCandidate()
8192 Candidate.Conversions[ArgIdx + 1].setEllipsis(); in AddSurrogateCandidate()
8324 // For the built-in assignment operators, conversions of the in AddBuiltinCandidate()
8327 // -- no user-defined conversions are applied to the left in AddBuiltinCandidate()
8331 // We block these conversions by turning off user-defined in AddBuiltinCandidate()
8332 // conversions, since that is the only way that initialization of in AddBuiltinCandidate()
8338 Candidate.Conversions[ArgIdx] in AddBuiltinCandidate()
8341 Candidate.Conversions[ArgIdx] in AddBuiltinCandidate()
8348 if (Candidate.Conversions[ArgIdx].isBad()) { in AddBuiltinCandidate()
8576 // expression for the purposes of conversions. in AddTypesConvertedFrom()
8888 // add volatile version only if there are conversions to a volatile type. in addPlusPlusMinusMinusStyleOverloads()
8896 // Add restrict version only if there are conversions to a restrict type in addPlusPlusMinusMinusStyleOverloads()
9266 // where LR is the result of the usual arithmetic conversions
9276 // where LR is the result of the usual arithmetic conversions
9370 // where LR is the result of the usual arithmetic conversions
9683 // Add volatile/restrict version only if there are conversions to a in addArrowStarOverloads()
10322 // We don't allow incompatible pointer conversions in C++. in isBetterOverloadCandidate()
10333 // Define functions that don't require ill-formed conversions for a given in isBetterOverloadCandidate()
10335 unsigned NumArgs = Cand1.Conversions.size(); in isBetterOverloadCandidate()
10336 assert(Cand2.Conversions.size() == NumArgs && "Overload candidate mismatch"); in isBetterOverloadCandidate()
10339 bool Cand1Bad = IsIllFormedConversion(Cand1.Conversions[ArgIdx]); in isBetterOverloadCandidate()
10340 bool Cand2Bad = IsIllFormedConversion(Cand2.Conversions[ArgIdx]); in isBetterOverloadCandidate()
10358 Cand1.Conversions[ArgIdx], in isBetterOverloadCandidate()
10359 Cand2.Conversions[ArgIdx])) { in isBetterOverloadCandidate()
11122 const ImplicitConversionSequence &Conv = Cand->Conversions[I]; in DiagnoseBadConversion()
11281 // Diagnose base -> derived pointer conversions. in DiagnoseBadConversion()
11928 // Except for failed conversions, the notes are identical for each candidate, in NoteFunctionCandidate()
12005 for (unsigned N = Cand->Conversions.size(); I != N; ++I) in NoteFunctionCandidate()
12006 if (Cand->Conversions[I].isInitialized() && Cand->Conversions[I].isBad()) in NoteFunctionCandidate()
12111 assert(Cand->Conversions.size() <= 2 && "builtin operator is not binary"); in NoteBuiltinOperatorCandidate()
12116 if (Cand->Conversions.size() == 1) { in NoteBuiltinOperatorCandidate()
12129 for (const ImplicitConversionSequence &ICS : Cand->Conversions) { in NoteAmbiguousUserConversions()
12260 // 2. Bad conversions come first and are ordered by the number in operator ()()
12261 // of bad conversions and quality of good conversions. in operator ()()
12276 // If there's any ordering between the defined conversions... in operator ()()
12339 // Returns -1 if conversions in L are considered better.
12341 // 1 if conversions in R are better.
12347 assert(L.Conversions.size() == R.Conversions.size()); in CompareConversions()
12348 for (unsigned I = 0, N = L.Conversions.size(); I != N; ++I) { in CompareConversions()
12351 : ConversionSignals::ForSequence(L.Conversions[I]); in CompareConversions()
12354 : ConversionSignals::ForSequence(R.Conversions[I]); in CompareConversions()
12386 unsigned ConvCount = Cand->Conversions.size(); in CompleteNonViableCandidate()
12390 if (Cand->Conversions[ConvIdx].isInitialized() && in CompleteNonViableCandidate()
12391 Cand->Conversions[ConvIdx].isBad()) { in CompleteNonViableCandidate()
12434 // Fill in the rest of the conversions. in CompleteNonViableCandidate()
12439 if (Cand->Conversions[ConvIdx].isInitialized()) { in CompleteNonViableCandidate()
12443 Cand->Conversions[ConvIdx].setAsIdentityConversion( in CompleteNonViableCandidate()
12446 Cand->Conversions[ConvIdx] = in CompleteNonViableCandidate()
12453 if (!Unfixable && Cand->Conversions[ConvIdx].isBad()) in CompleteNonViableCandidate()
12457 Cand->Conversions[ConvIdx].setEllipsis(); in CompleteNonViableCandidate()
12578 // FIXME: It's quite possible for different conversions to see in NoteCandidates()
14307 Input, Best->BuiltinParamTypes[0], Best->Conversions[0], AA_Passing, in CreateOverloadedUnaryOp()
14487 // Always do placeholder-like conversions on the RHS. in CreateOverloadedBinOp()
14567 *this, OpLoc, Cand.Conversions[ArgIdx], in CreateOverloadedBinOp()
14568 Best->Conversions[ArgIdx]) == in CreateOverloadedBinOp()
14768 Args[0], Best->BuiltinParamTypes[0], Best->Conversions[0], in CreateOverloadedBinOp()
14775 Args[1], Best->BuiltinParamTypes[1], Best->Conversions[1], in CreateOverloadedBinOp()
15146 Args[0], Best->BuiltinParamTypes[0], Best->Conversions[0], in CreateOverloadedArraySubscriptExpr()
15153 Args[1], Best->BuiltinParamTypes[1], Best->Conversions[1], in CreateOverloadedArraySubscriptExpr()
15612 const auto &Conversions = in BuildCallToObjectOfClassType() local
15614 for (auto I = Conversions.begin(), E = Conversions.end(); in BuildCallToObjectOfClassType()
15702 Best->Conversions[0].UserDefined.ConversionFunction); in BuildCallToObjectOfClassType()