Home | History | Annotate | Download | only in Sema

Lines Matching refs:ICS

1134   ImplicitConversionSequence ICS;
1139 ICS.setBad(BadConversionSequence::no_conversion, From, ToType);
1140 return ICS;
1146 switch (IsUserDefinedConversion(S, From, ToType, ICS.UserDefined,
1151 ICS.setUserDefined();
1152 ICS.UserDefined.Before.setAsIdentityConversion();
1153 // C++ [over.ics.user]p4:
1161 = dyn_cast<CXXConstructorDecl>(ICS.UserDefined.ConversionFunction)) {
1171 ICS.setStandard();
1172 ICS.Standard.setAsIdentityConversion();
1173 ICS.Standard.setFromType(From->getType());
1174 ICS.Standard.setAllToTypes(ToType);
1175 ICS.Standard.CopyConstructor = Constructor;
1177 ICS.Standard.Second = ICK_Derived_To_Base;
1183 ICS.setAmbiguous();
1184 ICS.Ambiguous.setFromType(From->getType());
1185 ICS.Ambiguous.setToType(ToType);
1189 ICS.Ambiguous.addConversion(Cand->Function);
1194 ICS.setBad(BadConversionSequence::no_conversion, From, ToType);
1198 return ICS;
1236 ImplicitConversionSequence ICS;
1238 ICS.Standard, CStyle, AllowObjCWritebackConversion)){
1239 ICS.setStandard();
1240 return ICS;
1244 ICS.setBad(BadConversionSequence::no_conversion, From, ToType);
1245 return ICS;
1248 // C++ [over.ics.user]p4:
1259 ICS.setStandard();
1260 ICS.Standard.setAsIdentityConversion();
1261 ICS.Standard.setFromType(FromType);
1262 ICS.Standard.setAllToTypes(ToType);
1268 ICS.Standard.CopyConstructor = nullptr;
1272 ICS.Standard.Second = ICK_Derived_To_Base;
1274 return ICS;
1305 ImplicitConversionSequence ICS;
1306 return PerformImplicitConversion(From, ToType, Action, AllowExplicit, ICS);
1312 ImplicitConversionSequence& ICS) {
1323 ICS = ::TryImplicitConversion(*this, From, ToType,
1330 return PerformImplicitConversion(From, ToType, ICS, Action);
1432 /// conversion sequence (C++ [conv], C++ [over.ics.scs]) from the
1696 // C++ [over.best.ics]p6:
3048 /// (C++ [over.ics.user]) that converts expression From to the type
3209 // C++ [over.ics.user]p1:
3237 // C++ [over.ics.user]p1:
3249 // C++ [over.ics.user]p2:
3275 ImplicitConversionSequence ICS;
3279 IsUserDefinedConversion(*this, From, ToType, ICS.UserDefined,
3331 const ImplicitConversionSequence &ICS) {
3332 return (ICS.isStandard() && ICS.Standard.DeprecatedStringLiteralToCharPtr) ||
3333 (ICS.isUserDefined() &&
3334 ICS.UserDefined.Before.DeprecatedStringLiteralToCharPtr);
3354 // C++0x [over.best.ics]p10:
3503 // C++0x [over.ics.rank]p3b4:
3567 // C++ [over.ics.rank]p4b2:
3642 // C++ [over.ics.rank]p3b4:
3813 /// [over.ics.rank]p4b3). As part of these checks, we also look at
3837 // C++ [over.ics.rank]p4b3:
4103 FindConversionForRefInit(Sema &S, ImplicitConversionSequence &ICS,
4183 // C++ [over.ics.ref]p1:
4196 ICS.setUserDefined();
4197 ICS.UserDefined.Before = Best->Conversions[0].Standard;
4198 ICS.UserDefined.After = Best->FinalConversion;
4199 ICS.UserDefined.HadMultipleCandidates = HadMultipleCandidates;
4200 ICS.UserDefined.ConversionFunction = Best->Function;
4201 ICS.UserDefined.FoundConversionFunction = Best->FoundDecl;
4202 ICS.UserDefined.EllipsisConversion = false;
4203 assert(ICS.UserDefined.After.ReferenceBinding &&
4204 ICS.UserDefined.After.DirectBinding &&
4209 ICS.setAmbiguous();
4213 ICS.Ambiguous.addConversion(Cand->Function);
4236 ImplicitConversionSequence ICS;
4237 ICS.setBad(BadConversionSequence::no_conversion, Init, DeclType);
4272 // Per C++ [over.ics.ref]p4, we don't check the bit-field property here.
4275 // C++ [over.ics.ref]p1:
4282 ICS.setStandard();
4283 ICS.Standard.First = ICK_Identity;
4284 ICS.Standard.Second = DerivedToBase? ICK_Derived_To_Base
4287 ICS.Standard.Third = ICK_Identity;
4288 ICS.Standard.FromTypePtr = T2.getAsOpaquePtr();
4289 ICS.Standard.setToType(0, T2);
4290 ICS.Standard.setToType(1, T1);
4291 ICS.Standard.setToType(2, T1);
4292 ICS.Standard.ReferenceBinding = true;
4293 ICS.Standard.DirectBinding = true;
4294 ICS.Standard.IsLvalueReference = !isRValRef;
4295 ICS.Standard.BindsToFunctionLvalue = T2->isFunctionType();
4296 ICS.Standard.BindsToRvalue = false;
4297 ICS.Standard.BindsImplicitObjectArgumentWithoutRefQualifier = false;
4298 ICS.Standard.ObjCLifetimeConversionBinding = ObjCLifetimeConversion;
4299 ICS.Standard.CopyConstructor = nullptr;
4300 ICS.Standard.DeprecatedStringLiteralToCharPtr = false;
4305 // [over.best.ics]p2).
4306 return ICS;
4319 if (FindConversionForRefInit(S, ICS, DeclType, DeclLoc,
4322 return ICS;
4330 return ICS;
4340 ICS.setStandard();
4341 ICS.Standard.First = ICK_Identity;
4342 ICS.Standard.Second = DerivedToBase? ICK_Derived_To_Base
4345 ICS.Standard.Third = ICK_Identity;
4346 ICS.Standard.FromTypePtr = T2.getAsOpaquePtr();
4347 ICS.Standard.setToType(0, T2);
4348 ICS.Standard.setToType(1, T1);
4349 ICS.Standard.setToType(2, T1);
4350 ICS.Standard.ReferenceBinding = true;
4356 ICS.Standard.DirectBinding =
4359 ICS.Standard.IsLvalueReference = !isRValRef;
4360 ICS.Standard.BindsToFunctionLvalue = T2->isFunctionType();
4361 ICS.Standard.BindsToRvalue = InitCategory.isRValue();
4362 ICS.Standard.BindsImplicitObjectArgumentWithoutRefQualifier = false;
4363 ICS.Standard.ObjCLifetimeConversionBinding = ObjCLifetimeConversion;
4364 ICS.Standard.CopyConstructor = nullptr;
4365 ICS.Standard.DeprecatedStringLiteralToCharPtr = false;
4366 return ICS;
4381 FindConversionForRefInit(S, ICS, DeclType, DeclLoc,
4388 if (ICS.isUserDefined() && isRValRef &&
4389 ICS.UserDefined.After.First == ICK_Lvalue_To_Rvalue)
4390 ICS.setBad(BadConversionSequence::no_conversion, Init, DeclType);
4392 return ICS;
4397 return ICS;
4421 return ICS;
4431 return ICS;
4437 return ICS;
4439 // C++ [over.ics.ref]p2:
4449 ICS = TryImplicitConversion(S, Init, T1, SuppressUserConversions,
4457 if (ICS.isStandard()) {
4458 ICS.Standard.ReferenceBinding = true;
4459 ICS.Standard.IsLvalueReference = !isRValRef;
4460 ICS.Standard.BindsToFunctionLvalue = false;
4461 ICS.Standard.BindsToRvalue = true;
4462 ICS.Standard.BindsImplicitObjectArgumentWithoutRefQualifier = false;
4463 ICS.Standard.ObjCLifetimeConversionBinding = false;
4464 } else if (ICS.isUserDefined()) {
4466 ICS.UserDefined.ConversionFunction->getReturnType()
4469 // C++ [over.ics.ref]p3:
4479 ICS.setBad(BadConversionSequence::lvalue_ref_to_rvalue, Init, DeclType);
4480 return ICS;
4483 ICS.UserDefined.Before.setAsIdentityConversion();
4484 ICS.UserDefined.After.ReferenceBinding = true;
4485 ICS.UserDefined.After.IsLvalueReference = !isRValRef;
4486 ICS.UserDefined.After.BindsToFunctionLvalue = false;
4487 ICS.UserDefined.After.BindsToRvalue = !LValRefType;
4488 ICS.UserDefined.After.BindsImplicitObjectArgumentWithoutRefQualifier = false;
4489 ICS.UserDefined.After.ObjCLifetimeConversionBinding = false;
4492 return ICS;
4509 // C++11 [over.ics.list]p1:
4557 // C++14 [over.ics.list]p2: Otherwise, if the parameter type [...] (below).
4558 // C++11 [over.ics.list]p2:
4564 // C++14 [over.ics.list]p3:
4581 ImplicitConversionSequence ICS =
4586 if (ICS.isBad()) {
4587 Result = ICS;
4592 CompareImplicitConversionSequences(S, From->getLocStart(), ICS,
4595 Result = ICS;
4611 // C++14 [over.ics.list]p4:
4612 // C++11 [over.ics.list]p3:
4627 // C++14 [over.ics.list]p5:
4628 // C++11 [over.ics.list]p4:
4654 // C++14 [over.ics.list]p6:
4655 // C++11 [over.ics.list]p5:
4723 // C++14 [over.ics.list]p7:
4724 // C++11 [over.ics.list]p6:
4747 // C++14 [over.ics.list]p8:
4748 // C++11 [over.ics.list]p7:
4790 ImplicitConversionSequence ICS =
4793 return !ICS.isBad();
4813 ImplicitConversionSequence ICS;
4849 ICS.setBad(BadConversionSequence::bad_qualifiers,
4851 return ICS;
4863 ICS.setBad(BadConversionSequence::unrelated_class,
4865 return ICS;
4877 ICS.setBad(BadConversionSequence::lvalue_ref_to_rvalue, FromType,
4879 return ICS;
4886 ICS.setBad(BadConversionSequence::rvalue_ref_to_lvalue, FromType,
4888 return ICS;
4894 ICS.setStandard();
4895 ICS.Standard.setAsIdentityConversion();
4896 ICS.Standard.Second = SecondKind;
4897 ICS.Standard.setFromType(FromType);
4898 ICS.Standard.setAllToTypes(ImplicitParamType);
4899 ICS.Standard.ReferenceBinding = true;
4900 ICS.Standard.DirectBinding = true;
4901 ICS.Standard.IsLvalueReference = Method->getRefQualifier() != RQ_RValue;
4902 ICS.Standard.BindsToFunctionLvalue = false;
4903 ICS.Standard.BindsToRvalue = FromClassification.isRValue();
4904 ICS.Standard.BindsImplicitObjectArgumentWithoutRefQualifier
4906 return ICS;
4934 ImplicitConversionSequence ICS = TryObjectArgumentInitialization(
4937 if (ICS.isBad()) {
4938 if (ICS.Bad.Kind == BadConversionSequence::bad_qualifiers) {
4958 if (ICS.Standard.Second == ICK_Derived_To_Base) {
4991 ImplicitConversionSequence ICS = TryContextuallyConvertToBool(*this, From);
4992 if (!ICS.isBad())
4993 return PerformImplicitConversion(From, Context.BoolTy, ICS, AA_Converting);
5084 ImplicitConversionSequence ICS =
5091 switch (ICS.getKind()) {
5093 SCS = &ICS.Standard;
5098 SCS = &ICS.UserDefined.After;
5126 S.PerformImplicitConversion(From, T, ICS, Sema::AA_Converting);
5222 ImplicitConversionSequence ICS
5233 switch (ICS.getKind()) {
5240 dropPointerConversion(ICS.UserDefined.After);
5244 dropPointerConversion(ICS.Standard);
5248 return ICS;
5258 ImplicitConversionSequence ICS =
5260 if (!ICS.isBad())
5261 return PerformImplicitConversion(From, Ty, ICS, AA_Converting);
6409 // go through a copy constructor. 13.3.3.1.2-p4 [over.ics.user]
6450 ImplicitConversionSequence ICS =
6456 switch (ICS.getKind()) {
6458 Candidate.FinalConversion = ICS.Standard;
6460 // C++ [over.ics.user]p3:
6465 GetConversionRank(ICS.Standard.Second) != ICR_Exact_Match) {
6477 ICS.Standard.First == ICK_Lvalue_To_Rvalue) {
9658 const ImplicitConversionSequence &ICS = Cand->Conversions[ArgIdx];
9659 if (ICS.isBad()) break; // all meaningless after first invalid
9660 if (!ICS.isAmbiguous()) continue;
9662 ICS.DiagnoseAmbiguousConversion(S, OpLoc,
10277 // compatible pointer-to-function arguments that would be adjusted by ICS.