Lines Matching refs:TemplateArgument
144 ArrayRef<TemplateArgument> Ps,
145 ArrayRef<TemplateArgument> As,
151 const TemplateArgument &TemplateArg,
238 case TemplateArgument::Null: in checkDeducedTemplateArguments()
241 case TemplateArgument::Type: { in checkDeducedTemplateArguments()
244 if (Y.getKind() == TemplateArgument::Type && Context.hasSameType(TX, TY)) in checkDeducedTemplateArguments()
258 case TemplateArgument::Integral: in checkDeducedTemplateArguments()
262 if (Y.getKind() == TemplateArgument::Expression || in checkDeducedTemplateArguments()
263 Y.getKind() == TemplateArgument::Declaration || in checkDeducedTemplateArguments()
264 (Y.getKind() == TemplateArgument::Integral && in checkDeducedTemplateArguments()
271 case TemplateArgument::StructuralValue: in checkDeducedTemplateArguments()
273 if (Y.getKind() == TemplateArgument::Expression || in checkDeducedTemplateArguments()
274 (Y.getKind() == TemplateArgument::StructuralValue && in checkDeducedTemplateArguments()
281 case TemplateArgument::Template: in checkDeducedTemplateArguments()
282 if (Y.getKind() == TemplateArgument::Template && in checkDeducedTemplateArguments()
289 case TemplateArgument::TemplateExpansion: in checkDeducedTemplateArguments()
290 if (Y.getKind() == TemplateArgument::TemplateExpansion && in checkDeducedTemplateArguments()
298 case TemplateArgument::Expression: { in checkDeducedTemplateArguments()
299 if (Y.getKind() != TemplateArgument::Expression) in checkDeducedTemplateArguments()
313 case TemplateArgument::Declaration: in checkDeducedTemplateArguments()
318 if (Y.getKind() == TemplateArgument::Expression) in checkDeducedTemplateArguments()
324 if (Y.getKind() == TemplateArgument::Integral) { in checkDeducedTemplateArguments()
326 return TemplateArgument(Context, Y.getAsIntegral(), in checkDeducedTemplateArguments()
333 if (Y.getKind() == TemplateArgument::Declaration && in checkDeducedTemplateArguments()
340 case TemplateArgument::NullPtr: in checkDeducedTemplateArguments()
343 if (Y.getKind() == TemplateArgument::Expression) in checkDeducedTemplateArguments()
344 return TemplateArgument(Context.getCommonSugaredType( in checkDeducedTemplateArguments()
350 if (Y.getKind() == TemplateArgument::Integral) in checkDeducedTemplateArguments()
354 if (Y.getKind() == TemplateArgument::NullPtr) in checkDeducedTemplateArguments()
355 return TemplateArgument( in checkDeducedTemplateArguments()
362 case TemplateArgument::Pack: { in checkDeducedTemplateArguments()
363 if (Y.getKind() != TemplateArgument::Pack || in checkDeducedTemplateArguments()
367 llvm::SmallVector<TemplateArgument, 8> NewPack; in checkDeducedTemplateArguments()
368 for (TemplateArgument::pack_iterator in checkDeducedTemplateArguments()
373 TemplateArgument Merged = checkDeducedTemplateArguments( in checkDeducedTemplateArguments()
385 TemplateArgument::CreatePackCopy(Context, NewPack), in checkDeducedTemplateArguments()
503 TemplateArgument New(D, T); in DeduceNonTypeTemplateArgument()
548 Info.FirstArg = TemplateArgument(Param); in DeduceTemplateArguments()
549 Info.SecondArg = TemplateArgument(Arg); in DeduceTemplateArguments()
588 ArrayRef<TemplateArgument> PResolved = TP->template_arguments(); in DeduceTemplateSpecArguments()
624 Info.FirstArg = TemplateArgument(P); in DeduceTemplateSpecArguments()
625 Info.SecondArg = TemplateArgument(A); in DeduceTemplateSpecArguments()
712 TemplateDeductionInfo &Info, TemplateArgument Pattern, in PackDeductionScope()
735 Deduced[Index] = TemplateArgument(); in addPack()
747 unsigned addPacks(TemplateArgument Pattern) { in addPacks()
751 llvm::SmallVector<TemplateArgument, 4> ExtraDeductions; in addPacks()
773 auto Collect = [&](TemplateArgument Pattern) { in addPacks()
800 const TemplateArgument *PartialPackArgs = nullptr; in finishConstruction()
928 NewPack = DeducedTemplateArgument(TemplateArgument::getEmptyPack()); in finish()
930 TemplateArgument *ArgumentPack = in finish()
931 new (S.Context) TemplateArgument[Pack.New.size()]; in finish()
934 TemplateArgument(llvm::ArrayRef(ArgumentPack, Pack.New.size())), in finish()
963 OldPack.getKind() == TemplateArgument::Pack && in finish()
964 NewPack.getKind() == TemplateArgument::Pack && in finish()
1440 Info.FirstArg = TemplateArgument(P); in DeduceTemplateArgumentsByTypeMatch()
1441 Info.SecondArg = TemplateArgument(A); in DeduceTemplateArgumentsByTypeMatch()
1514 Info.FirstArg = TemplateArgument(P); in DeduceTemplateArgumentsByTypeMatch()
1515 Info.SecondArg = TemplateArgument(A); in DeduceTemplateArgumentsByTypeMatch()
1548 Info.FirstArg = TemplateArgument(P); in DeduceTemplateArgumentsByTypeMatch()
1549 Info.SecondArg = TemplateArgument(A); in DeduceTemplateArgumentsByTypeMatch()
1578 Info.FirstArg = TemplateArgument(P); in DeduceTemplateArgumentsByTypeMatch()
1579 Info.SecondArg = TemplateArgument(A); in DeduceTemplateArgumentsByTypeMatch()
2254 const TemplateArgument &P, TemplateArgument A, in DeduceTemplateArguments()
2264 case TemplateArgument::Null: in DeduceTemplateArguments()
2267 case TemplateArgument::Type: in DeduceTemplateArguments()
2268 if (A.getKind() == TemplateArgument::Type) in DeduceTemplateArguments()
2275 case TemplateArgument::Template: in DeduceTemplateArguments()
2276 if (A.getKind() == TemplateArgument::Template) in DeduceTemplateArguments()
2283 case TemplateArgument::TemplateExpansion: in DeduceTemplateArguments()
2286 case TemplateArgument::Declaration: in DeduceTemplateArguments()
2287 if (A.getKind() == TemplateArgument::Declaration && in DeduceTemplateArguments()
2295 case TemplateArgument::NullPtr: in DeduceTemplateArguments()
2296 if (A.getKind() == TemplateArgument::NullPtr && in DeduceTemplateArguments()
2304 case TemplateArgument::Integral: in DeduceTemplateArguments()
2305 if (A.getKind() == TemplateArgument::Integral) { in DeduceTemplateArguments()
2313 case TemplateArgument::StructuralValue: in DeduceTemplateArguments()
2314 if (A.getKind() == TemplateArgument::StructuralValue && in DeduceTemplateArguments()
2322 case TemplateArgument::Expression: in DeduceTemplateArguments()
2326 case TemplateArgument::Integral: in DeduceTemplateArguments()
2327 case TemplateArgument::Expression: in DeduceTemplateArguments()
2328 case TemplateArgument::StructuralValue: in DeduceTemplateArguments()
2333 case TemplateArgument::NullPtr: in DeduceTemplateArguments()
2337 case TemplateArgument::Declaration: in DeduceTemplateArguments()
2342 case TemplateArgument::Null: in DeduceTemplateArguments()
2343 case TemplateArgument::Type: in DeduceTemplateArguments()
2344 case TemplateArgument::Template: in DeduceTemplateArguments()
2345 case TemplateArgument::TemplateExpansion: in DeduceTemplateArguments()
2346 case TemplateArgument::Pack: in DeduceTemplateArguments()
2356 case TemplateArgument::Pack: in DeduceTemplateArguments()
2371 static bool hasTemplateArgumentForDeduction(ArrayRef<TemplateArgument> &Args, in hasTemplateArgumentForDeduction()
2376 const TemplateArgument &Arg = Args[ArgIdx]; in hasTemplateArgumentForDeduction()
2377 if (Arg.getKind() != TemplateArgument::Pack) in hasTemplateArgumentForDeduction()
2388 static bool hasPackExpansionBeforeEnd(ArrayRef<TemplateArgument> Args) { in hasPackExpansionBeforeEnd()
2394 if (A.getKind() == TemplateArgument::Pack) in hasPackExpansionBeforeEnd()
2408 ArrayRef<TemplateArgument> Ps, in DeduceTemplateArguments()
2409 ArrayRef<TemplateArgument> As, in DeduceTemplateArguments()
2426 const TemplateArgument &P = Ps[ParamIdx]; in DeduceTemplateArguments()
2459 TemplateArgument Pattern = P.getPackExpansionPattern(); in DeduceTemplateArguments()
2500 TemplateArgument X, in isSameTemplateArg()
2501 const TemplateArgument &Y, in isSameTemplateArg()
2513 case TemplateArgument::Null: in isSameTemplateArg()
2516 case TemplateArgument::Type: in isSameTemplateArg()
2520 case TemplateArgument::Declaration: in isSameTemplateArg()
2523 case TemplateArgument::NullPtr: in isSameTemplateArg()
2526 case TemplateArgument::Template: in isSameTemplateArg()
2527 case TemplateArgument::TemplateExpansion: in isSameTemplateArg()
2533 case TemplateArgument::Integral: in isSameTemplateArg()
2536 case TemplateArgument::StructuralValue: in isSameTemplateArg()
2539 case TemplateArgument::Expression: { in isSameTemplateArg()
2546 case TemplateArgument::Pack: { in isSameTemplateArg()
2565 ArrayRef<TemplateArgument> XP = X.pack_elements(); in isSameTemplateArg()
2566 ArrayRef<TemplateArgument> YP = Y.pack_elements(); in isSameTemplateArg()
2592 Sema::getTrivialTemplateArgumentLoc(const TemplateArgument &Arg, in getTrivialTemplateArgumentLoc()
2595 case TemplateArgument::Null: in getTrivialTemplateArgumentLoc()
2598 case TemplateArgument::Type: in getTrivialTemplateArgumentLoc()
2602 case TemplateArgument::Declaration: { in getTrivialTemplateArgumentLoc()
2607 return TemplateArgumentLoc(TemplateArgument(E), E); in getTrivialTemplateArgumentLoc()
2610 case TemplateArgument::NullPtr: { in getTrivialTemplateArgumentLoc()
2615 return TemplateArgumentLoc(TemplateArgument(NTTPType, /*isNullPtr*/true), in getTrivialTemplateArgumentLoc()
2619 case TemplateArgument::Integral: in getTrivialTemplateArgumentLoc()
2620 case TemplateArgument::StructuralValue: { in getTrivialTemplateArgumentLoc()
2622 return TemplateArgumentLoc(TemplateArgument(E), E); in getTrivialTemplateArgumentLoc()
2625 case TemplateArgument::Template: in getTrivialTemplateArgumentLoc()
2626 case TemplateArgument::TemplateExpansion: { in getTrivialTemplateArgumentLoc()
2635 if (Arg.getKind() == TemplateArgument::Template) in getTrivialTemplateArgumentLoc()
2643 case TemplateArgument::Expression: in getTrivialTemplateArgumentLoc()
2646 case TemplateArgument::Pack: in getTrivialTemplateArgumentLoc()
2665 SmallVectorImpl<TemplateArgument> &SugaredOutput, in ConvertDeducedTemplateArgument()
2666 SmallVectorImpl<TemplateArgument> &CanonicalOutput) { in ConvertDeducedTemplateArgument()
2686 if (Arg.getKind() == TemplateArgument::Pack) { in ConvertDeducedTemplateArgument()
2689 SmallVector<TemplateArgument, 2> SugaredPackedArgsBuilder, in ConvertDeducedTemplateArgument()
2697 assert(InnerArg.getKind() != TemplateArgument::Pack && in ConvertDeducedTemplateArgument()
2744 TemplateArgument::CreatePackCopy(S.Context, SugaredPackedArgsBuilder)); in ConvertDeducedTemplateArgument()
2745 CanonicalOutput.push_back(TemplateArgument::CreatePackCopy( in ConvertDeducedTemplateArgument()
2761 SmallVectorImpl<TemplateArgument> &SugaredBuilder, in ConvertDeducedTemplateArguments()
2762 SmallVectorImpl<TemplateArgument> &CanonicalBuilder, in ConvertDeducedTemplateArguments()
2912 ArrayRef<TemplateArgument> SugaredDeducedArgs, in CheckDeducedArgumentConstraints()
2913 ArrayRef<TemplateArgument> CanonicalDeducedArgs, in CheckDeducedArgumentConstraints()
2966 SmallVector<TemplateArgument, 4> SugaredBuilder, CanonicalBuilder; in FinishTemplateArgumentDeduction()
3010 SmallVector<TemplateArgument, 4> SugaredConvertedInstArgs, in FinishTemplateArgumentDeduction()
3021 TemplateArgument InstArg = SugaredConvertedInstArgs.data()[I]; in FinishTemplateArgumentDeduction()
3059 SmallVector<TemplateArgument, 4> SugaredBuilder, CanonicalBuilder; in FinishTemplateArgumentDeduction()
3070 TemplateArgument InstArg = CanonicalBuilder[I]; in FinishTemplateArgumentDeduction()
3124 SmallVector<TemplateArgument, 4> DeducedArgs(Deduced.begin(), Deduced.end()); in DeduceTemplateArguments()
3174 SmallVector<TemplateArgument, 4> DeducedArgs(Deduced.begin(), Deduced.end()); in DeduceTemplateArguments()
3267 SmallVector<TemplateArgument, 4> SugaredBuilder, CanonicalBuilder; in SubstituteExplicitTemplateArguments()
3272 SmallVector<TemplateArgument, 4> DeducedArgs; in SubstituteExplicitTemplateArguments()
3312 const TemplateArgument &Arg = CanonicalBuilder.back(); in SubstituteExplicitTemplateArguments()
3313 if (Arg.getKind() == TemplateArgument::Pack) { in SubstituteExplicitTemplateArguments()
3431 const TemplateArgument &Arg = SugaredExplicitArgumentList->get(I); in SubstituteExplicitTemplateArguments()
3450 Info.FirstArg = TemplateArgument(DeducedA); in CheckOriginalCallArgDeduction()
3451 Info.SecondArg = TemplateArgument(OriginalArg.OriginalArgType); in CheckOriginalCallArgDeduction()
3594 ArrayRef<TemplateArgument> DeducedArgs) { in instantiateExplicitSpecifierDeferred()
3649 SmallVector<TemplateArgument, 4> DeducedArgs(Deduced.begin(), Deduced.end()); in FinishTemplateArgumentDeduction()
3661 SmallVector<TemplateArgument, 4> SugaredBuilder, CanonicalBuilder; in FinishTemplateArgumentDeduction()
4585 Info.FirstArg = TemplateArgument(SpecializationType); in DeduceTemplateArguments()
4586 Info.SecondArg = TemplateArgument(ArgFunctionType); in DeduceTemplateArguments()
4862 TemplateArgumentLoc(TemplateArgument(Deduced), in CheckDeducedPlaceholderConstraints()
4868 llvm::SmallVector<TemplateArgument, 4> SugaredConverted, CanonicalConverted; in CheckDeducedPlaceholderConstraints()
5038 Deduced[0].getKind() != TemplateArgument::Null) in DeduceAutoType()
5059 if (Deduced[0].getKind() != TemplateArgument::Type) in DeduceAutoType()
5504 const TemplateArgument &TA1 = TST1->template_arguments().back(); in getMoreSpecializedTemplate()
5505 if (TA1.getKind() == TemplateArgument::Pack) { in getMoreSpecializedTemplate()
5508 const TemplateArgument &TA2 = TST2->template_arguments().back(); in getMoreSpecializedTemplate()
5509 assert(TA2.getKind() == TemplateArgument::Pack); in getMoreSpecializedTemplate()
5736 SmallVector<TemplateArgument, 4> DeducedArgs(Deduced.begin(), in isAtLeastAsSpecializedAs()
5779 ArrayRef<TemplateArgument> Args1 = PS1->getTemplateArgs().asArray(), in operator ()()
5798 ArrayRef<TemplateArgument> Args1 = Spec->getTemplateArgs().asArray(), in operator ()()
5868 const TemplateArgument &TA1 = TST1->template_arguments().back(); in getMoreSpecialized()
5869 if (TA1.getKind() == TemplateArgument::Pack) { in getMoreSpecialized()
5872 const TemplateArgument &TA2 = TST2->template_arguments().back(); in getMoreSpecialized()
5873 assert(TA2.getKind() == TemplateArgument::Pack); in getMoreSpecialized()
6020 SmallVector<TemplateArgument, 8> AArgs; in isTemplateTemplateParameterAtLeastAsSpecializedAs()
6027 SmallVector<TemplateArgument, 4> PArgs; in isTemplateTemplateParameterAtLeastAsSpecializedAs()
6037 TemplateArgument Arg = PArgs[I]; in isTemplateTemplateParameterAtLeastAsSpecializedAs()
6038 if (Arg.getKind() == TemplateArgument::Pack) { in isTemplateTemplateParameterAtLeastAsSpecializedAs()
6050 SmallVector<TemplateArgument, 4> SugaredPArgs; in isTemplateTemplateParameterAtLeastAsSpecializedAs()
6475 const TemplateArgument &TemplateArg, in MarkUsedTemplateParameters()
6480 case TemplateArgument::Null: in MarkUsedTemplateParameters()
6481 case TemplateArgument::Integral: in MarkUsedTemplateParameters()
6482 case TemplateArgument::Declaration: in MarkUsedTemplateParameters()
6483 case TemplateArgument::NullPtr: in MarkUsedTemplateParameters()
6484 case TemplateArgument::StructuralValue: in MarkUsedTemplateParameters()
6487 case TemplateArgument::Type: in MarkUsedTemplateParameters()
6492 case TemplateArgument::Template: in MarkUsedTemplateParameters()
6493 case TemplateArgument::TemplateExpansion: in MarkUsedTemplateParameters()
6499 case TemplateArgument::Expression: in MarkUsedTemplateParameters()
6504 case TemplateArgument::Pack: in MarkUsedTemplateParameters()