Lines Matching +full:dc +full:- +full:id
1 //===- DeclTemplate.cpp - Template Declaration AST Node Implementation ----===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
11 //===----------------------------------------------------------------------===//
43 //===----------------------------------------------------------------------===//
45 //===----------------------------------------------------------------------===//
62 bool IsPack = P->isTemplateParameterPack(); in TemplateParameterList()
64 if (!IsPack && NTTP->getType()->containsUnexpandedParameterPack()) in TemplateParameterList()
66 if (NTTP->hasPlaceholderTypeConstraint()) in TemplateParameterList()
70 TTP->getTemplateParameters()->containsUnexpandedParameterPack()) in TemplateParameterList()
73 if (const TypeConstraint *TC = TTP->getTypeConstraint()) { in TemplateParameterList()
74 if (TC->getImmediatelyDeclaredConstraint() in TemplateParameterList()
75 ->containsUnexpandedParameterPack()) in TemplateParameterList()
78 if (TTP->hasTypeConstraint()) in TemplateParameterList()
88 if (RequiresClause->containsUnexpandedParameterPack()) in TemplateParameterList()
104 if (!Param->isImplicit()) in containsUnexpandedParameterPack()
108 const auto *TC = TTP->getTypeConstraint(); in containsUnexpandedParameterPack()
109 if (TC && TC->getImmediatelyDeclaredConstraint() in containsUnexpandedParameterPack()
110 ->containsUnexpandedParameterPack()) in containsUnexpandedParameterPack()
130 void TemplateParameterList::Profile(llvm::FoldingSetNodeID &ID, in Profile() argument
133 ID.AddBoolean(RC != nullptr); in Profile()
135 RC->Profile(ID, C, /*Canonical=*/true); in Profile()
136 ID.AddInteger(size()); in Profile()
139 ID.AddInteger(0); in Profile()
140 ID.AddBoolean(NTTP->isParameterPack()); in Profile()
141 NTTP->getType().getCanonicalType().Profile(ID); in Profile()
142 ID.AddBoolean(NTTP->hasPlaceholderTypeConstraint()); in Profile()
143 if (const Expr *E = NTTP->getPlaceholderTypeConstraint()) in Profile()
144 E->Profile(ID, C, /*Canonical=*/true); in Profile()
148 ID.AddInteger(1); in Profile()
149 ID.AddBoolean(TTP->isParameterPack()); in Profile()
150 ID.AddBoolean(TTP->hasTypeConstraint()); in Profile()
151 if (const TypeConstraint *TC = TTP->getTypeConstraint()) in Profile()
152 TC->getImmediatelyDeclaredConstraint()->Profile(ID, C, in Profile()
157 ID.AddInteger(2); in Profile()
158 ID.AddBoolean(TTP->isParameterPack()); in Profile()
159 TTP->getTemplateParameters()->Profile(ID, C); in Profile()
166 if (P->isTemplateParameterPack()) { in getMinRequiredArguments()
175 if (TTP->hasDefaultArgument()) in getMinRequiredArguments()
178 if (NTTP->hasDefaultArgument()) in getMinRequiredArguments()
180 } else if (cast<TemplateTemplateParmDecl>(P)->hasDefaultArgument()) in getMinRequiredArguments()
195 return TTP->getDepth(); in getDepth()
197 return NTTP->getDepth(); in getDepth()
199 return cast<TemplateTemplateParmDecl>(FirstParm)->getDepth(); in getDepth()
206 P->setDeclContext(Owner); in AdoptTemplateParameterList()
209 if (AdoptTemplateParameterList(TTP->getTemplateParameters(), Owner)) in AdoptTemplateParameterList()
212 if (P->isInvalidDecl()) in AdoptTemplateParameterList()
223 if (const auto *TC = TTP->getTypeConstraint()) in getAssociatedConstraints()
224 AC.push_back(TC->getImmediatelyDeclaredConstraint()); in getAssociatedConstraints()
226 if (const Expr *E = NTTP->getPlaceholderTypeConstraint()) in getAssociatedConstraints()
241 if (!TPL || Idx >= TPL->size() || Policy.AlwaysIncludeTypeForTemplateArgument) in shouldIncludeTypeForArgument()
243 const NamedDecl *TemplParam = TPL->getParam(Idx); in shouldIncludeTypeForArgument()
246 if (ParamValueDecl->getType()->getContainedDeducedType()) in shouldIncludeTypeForArgument()
259 //===----------------------------------------------------------------------===//
261 //===----------------------------------------------------------------------===//
263 TemplateDecl::TemplateDecl(Kind DK, DeclContext *DC, SourceLocation L, in TemplateDecl() argument
266 : NamedDecl(DK, DC, L, Name), TemplatedDecl(Decl), TemplateParams(Params) {} in TemplateDecl()
272 TemplateParams->getAssociatedConstraints(AC); in getAssociatedConstraints()
274 if (const Expr *TRC = FD->getTrailingRequiresClause()) in getAssociatedConstraints()
279 if (TemplateParams->hasAssociatedConstraints()) in hasAssociatedConstraints()
282 return FD->getTrailingRequiresClause(); in hasAssociatedConstraints()
296 //===----------------------------------------------------------------------===//
298 //===----------------------------------------------------------------------===//
306 // Walk the previous-declaration chain until we either find a declaration in getCommonPtr()
310 Prev = Prev->getPreviousDecl()) { in getCommonPtr()
311 if (Prev->Common) { in getCommonPtr()
312 Common = Prev->Common; in getCommonPtr()
329 Prev->Common = Common; in getCommonPtr()
337 CommonBase *CommonBasePtr = getMostRecentDecl()->getCommonPtr(); in loadLazySpecializationsImpl()
338 if (CommonBasePtr->LazySpecializations) { in loadLazySpecializationsImpl()
340 GlobalDeclID *Specs = CommonBasePtr->LazySpecializations; in loadLazySpecializationsImpl()
341 CommonBasePtr->LazySpecializations = nullptr; in loadLazySpecializationsImpl()
344 (void)Context.getExternalSource()->GetExternalDecl(Specs[I]); in loadLazySpecializationsImpl()
355 llvm::FoldingSetNodeID ID; in findSpecializationImpl() local
356 EntryType::Profile(ID, std::forward<ProfileArguments>(ProfileArgs)..., in findSpecializationImpl()
358 EntryType *Entry = Specs.FindNodeOrInsertPos(ID, InsertPos); in findSpecializationImpl()
359 return Entry ? SETraits::getDecl(Entry)->getMostRecentDecl() : nullptr; in findSpecializationImpl()
381 assert(SETraits::getDecl(Existing)->isCanonicalDecl() && in addSpecializationImpl()
382 "non-canonical specialization?"); in addSpecializationImpl()
386 L->AddedCXXTemplateSpecialization(cast<Derived>(this), in addSpecializationImpl()
393 if (!CommonPtr->InjectedArgs) { in getInjectedTemplateArgs()
397 CommonPtr->InjectedArgs = in getInjectedTemplateArgs()
400 CommonPtr->InjectedArgs); in getInjectedTemplateArgs()
403 return llvm::ArrayRef(CommonPtr->InjectedArgs, Params->size()); in getInjectedTemplateArgs()
406 //===----------------------------------------------------------------------===//
408 //===----------------------------------------------------------------------===//
411 FunctionTemplateDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation L, in Create() argument
415 auto *TD = new (C, DC) FunctionTemplateDecl(C, DC, L, Name, Params, Decl); in Create()
417 TD->setInvalidDecl(); in Create()
422 FunctionTemplateDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) { in CreateDeserialized() argument
423 return new (C, ID) FunctionTemplateDecl(C, nullptr, SourceLocation(), in CreateDeserialized()
441 return getCommonPtr()->Specializations; in getSpecializations()
467 for (; Prev; Prev = Prev->getPreviousDecl()) { in mergePrevDecl()
468 if (Prev->Base::Common) { in mergePrevDecl()
469 PrevCommon = static_cast<Common *>(Prev->Base::Common); in mergePrevDecl()
479 D->Base::Common = ThisCommon; in mergePrevDecl()
484 assert(ThisCommon->Specializations.size() == 0 && in mergePrevDecl()
490 //===----------------------------------------------------------------------===//
492 //===----------------------------------------------------------------------===//
494 ClassTemplateDecl *ClassTemplateDecl::Create(ASTContext &C, DeclContext *DC, in Create() argument
500 auto *TD = new (C, DC) ClassTemplateDecl(C, DC, L, Name, Params, Decl); in Create()
502 TD->setInvalidDecl(); in Create()
507 GlobalDeclID ID) { in CreateDeserialized() argument
508 return new (C, ID) ClassTemplateDecl(C, nullptr, SourceLocation(), in CreateDeserialized()
519 return getCommonPtr()->Specializations; in getSpecializations()
525 return getCommonPtr()->PartialSpecializations; in getPartialSpecializations()
555 llvm::FoldingSetNodeID &ID, ArrayRef<TemplateArgument> TemplateArgs, in Profile() argument
557 ID.AddInteger(TemplateArgs.size()); in Profile()
559 TemplateArg.Profile(ID, Context); in Profile()
560 TPL->Profile(ID, Context); in Profile()
572 assert(Existing->isCanonicalDecl() && "Non-canonical specialization?"); in AddPartialSpecialization()
576 L->AddedCXXTemplateSpecialization(this, D); in AddPartialSpecialization()
604 Decl *DCanon = D->getCanonicalDecl(); in findPartialSpecInstantiatedFromMember()
606 if (P.getInstantiatedFromMember()->getCanonicalDecl() == DCanon) in findPartialSpecInstantiatedFromMember()
616 if (!CommonPtr->InjectedClassNameType.isNull()) in getInjectedClassNameSpecialization()
617 return CommonPtr->InjectedClassNameType; in getInjectedClassNameSpecialization()
632 CommonPtr->InjectedClassNameType = in getInjectedClassNameSpecialization()
634 return CommonPtr->InjectedClassNameType; in getInjectedClassNameSpecialization()
637 //===----------------------------------------------------------------------===//
639 //===----------------------------------------------------------------------===//
642 const ASTContext &C, DeclContext *DC, SourceLocation KeyLoc, in Create() argument
643 SourceLocation NameLoc, unsigned D, unsigned P, IdentifierInfo *Id, in Create() argument
647 new (C, DC, in Create()
649 TemplateTypeParmDecl(DC, KeyLoc, NameLoc, Id, Typename, in Create()
652 TTPDecl->setTypeForDecl(TTPType.getTypePtr()); in Create()
657 TemplateTypeParmDecl::CreateDeserialized(const ASTContext &C, GlobalDeclID ID) { in CreateDeserialized() argument
658 return new (C, ID) in CreateDeserialized()
664 TemplateTypeParmDecl::CreateDeserialized(const ASTContext &C, GlobalDeclID ID, in CreateDeserialized() argument
666 return new (C, ID, in CreateDeserialized()
698 return getTypeForDecl()->castAs<TemplateTypeParmType>()->getDepth(); in getDepth()
702 return getTypeForDecl()->castAs<TemplateTypeParmType>()->getIndex(); in getIndex()
706 return getTypeForDecl()->castAs<TemplateTypeParmType>()->isParameterPack(); in isParameterPack()
721 //===----------------------------------------------------------------------===//
723 //===----------------------------------------------------------------------===//
726 DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, unsigned D, in NonTypeTemplateParmDecl() argument
727 unsigned P, const IdentifierInfo *Id, QualType T, TypeSourceInfo *TInfo, in NonTypeTemplateParmDecl() argument
729 : DeclaratorDecl(NonTypeTemplateParm, DC, IdLoc, Id, T, TInfo, StartLoc), in NonTypeTemplateParmDecl()
743 const ASTContext &C, DeclContext *DC, SourceLocation StartLoc, in Create() argument
744 SourceLocation IdLoc, unsigned D, unsigned P, const IdentifierInfo *Id, in Create() argument
747 C.getLangOpts().CPlusPlus20 ? T->getContainedAutoType() : nullptr; in Create()
748 return new (C, DC, in Create()
751 AT && AT->isConstrained() ? 1 : 0)) in Create()
752 NonTypeTemplateParmDecl(DC, StartLoc, IdLoc, D, P, Id, T, ParameterPack, in Create()
757 const ASTContext &C, DeclContext *DC, SourceLocation StartLoc, in Create() argument
758 SourceLocation IdLoc, unsigned D, unsigned P, const IdentifierInfo *Id, in Create() argument
761 AutoType *AT = TInfo->getType()->getContainedAutoType(); in Create()
762 return new (C, DC, in Create()
765 ExpandedTypes.size(), AT && AT->isConstrained() ? 1 : 0)) in Create()
766 NonTypeTemplateParmDecl(DC, StartLoc, IdLoc, D, P, Id, T, TInfo, in Create()
771 NonTypeTemplateParmDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID, in CreateDeserialized() argument
773 return new (C, ID, additionalSizeToAlloc<std::pair<QualType, in CreateDeserialized()
782 NonTypeTemplateParmDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID, in CreateDeserialized() argument
786 new (C, ID, in CreateDeserialized()
792 NTTP->NumExpandedTypes = NumExpandedTypes; in CreateDeserialized()
816 //===----------------------------------------------------------------------===//
818 //===----------------------------------------------------------------------===//
823 DeclContext *DC, SourceLocation L, unsigned D, unsigned P, in TemplateTemplateParmDecl() argument
824 IdentifierInfo *Id, bool Typename, TemplateParameterList *Params, in TemplateTemplateParmDecl() argument
826 : TemplateDecl(TemplateTemplateParm, DC, L, Id, Params), in TemplateTemplateParmDecl()
835 TemplateTemplateParmDecl::Create(const ASTContext &C, DeclContext *DC, in Create() argument
837 bool ParameterPack, IdentifierInfo *Id, in Create() argument
839 return new (C, DC) TemplateTemplateParmDecl(DC, L, D, P, ParameterPack, Id, in Create()
844 TemplateTemplateParmDecl::Create(const ASTContext &C, DeclContext *DC, in Create() argument
846 IdentifierInfo *Id, bool Typename, in Create() argument
849 return new (C, DC, in Create()
851 TemplateTemplateParmDecl(DC, L, D, P, Id, Typename, Params, Expansions); in Create()
855 TemplateTemplateParmDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) { in CreateDeserialized() argument
856 return new (C, ID) TemplateTemplateParmDecl(nullptr, SourceLocation(), 0, 0, in CreateDeserialized()
861 TemplateTemplateParmDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID, in CreateDeserialized() argument
864 new (C, ID, additionalSizeToAlloc<TemplateParameterList *>(NumExpansions)) in CreateDeserialized()
867 TTP->NumExpandedParams = NumExpansions; in CreateDeserialized()
884 //===----------------------------------------------------------------------===//
886 //===----------------------------------------------------------------------===//
916 //===----------------------------------------------------------------------===//
918 //===----------------------------------------------------------------------===//
922 DeclContext *DC, SourceLocation StartLoc, in ClassTemplateSpecializationDecl() argument
927 : CXXRecordDecl(DK, TK, Context, DC, StartLoc, IdLoc, in ClassTemplateSpecializationDecl()
928 SpecializedTemplate->getIdentifier(), PrevDecl), in ClassTemplateSpecializationDecl()
942 DeclContext *DC, in Create() argument
949 new (Context, DC) ClassTemplateSpecializationDecl( in Create()
950 Context, ClassTemplateSpecialization, TK, DC, StartLoc, IdLoc, in Create()
952 Result->setMayHaveOutOfDateDef(false); in Create()
958 if (!SpecializedTemplate->getTemplatedDecl()->isCompleteDefinition()) in Create()
959 Result->setHasExternalLexicalStorage( in Create()
960 SpecializedTemplate->getTemplatedDecl()->hasExternalLexicalStorage()); in Create()
968 GlobalDeclID ID) { in CreateDeserialized() argument
970 new (C, ID) ClassTemplateSpecializationDecl(C, ClassTemplateSpecialization); in CreateDeserialized()
971 Result->setMayHaveOutOfDateDef(false); in CreateDeserialized()
981 PS ? PS->getTemplateArgsAsWritten() : nullptr) { in getNameForDiagnostic()
983 OS, ArgsAsWritten->arguments(), Policy, in getNameForDiagnostic()
984 getSpecializedTemplate()->getTemplateParameters()); in getNameForDiagnostic()
989 getSpecializedTemplate()->getTemplateParameters()); in getNameForDiagnostic()
997 return PartialSpec->PartialSpecialization->getSpecializedTemplate(); in getSpecializedTemplate()
1013 return CTPSD->getSourceRange(); in getSourceRange()
1014 return Pattern.get<ClassTemplateDecl *>()->getSourceRange(); in getSourceRange()
1020 Range.setEnd(Args->getRAngleLoc()); in getSourceRange()
1032 Range.setEnd(Args->getRAngleLoc()); in getSourceRange()
1046 Info->TemplateArgsAsWritten = getTemplateArgsAsWritten(); in setExternKeywordLoc()
1049 Info->ExternKeywordLoc = Loc; in setExternKeywordLoc()
1060 Info->TemplateArgsAsWritten = getTemplateArgsAsWritten(); in setTemplateKeywordLoc()
1063 Info->TemplateKeywordLoc = Loc; in setTemplateKeywordLoc()
1066 //===----------------------------------------------------------------------===//
1068 //===----------------------------------------------------------------------===//
1069 ConceptDecl *ConceptDecl::Create(ASTContext &C, DeclContext *DC, in Create() argument
1073 bool Invalid = AdoptTemplateParameterList(Params, DC); in Create()
1074 auto *TD = new (C, DC) ConceptDecl(DC, L, Name, Params, ConstraintExpr); in Create()
1076 TD->setInvalidDecl(); in Create()
1080 ConceptDecl *ConceptDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) { in CreateDeserialized() argument
1081 ConceptDecl *Result = new (C, ID) ConceptDecl(nullptr, SourceLocation(), in CreateDeserialized()
1088 //===----------------------------------------------------------------------===//
1090 //===----------------------------------------------------------------------===//
1092 DeclContext *DC, SourceLocation SL, in ImplicitConceptSpecializationDecl() argument
1094 : Decl(ImplicitConceptSpecialization, DC, SL), in ImplicitConceptSpecializationDecl()
1105 const ASTContext &C, DeclContext *DC, SourceLocation SL, in Create() argument
1107 return new (C, DC, in Create()
1109 ImplicitConceptSpecializationDecl(DC, SL, ConvertedArgs); in Create()
1114 const ASTContext &C, GlobalDeclID ID, unsigned NumTemplateArgs) { in CreateDeserialized() argument
1115 return new (C, ID, additionalSizeToAlloc<TemplateArgument>(NumTemplateArgs)) in CreateDeserialized()
1126 //===----------------------------------------------------------------------===//
1128 //===----------------------------------------------------------------------===//
1132 ASTContext &Context, TagKind TK, DeclContext *DC, SourceLocation StartLoc, in ClassTemplatePartialSpecializationDecl() argument
1137 Context, ClassTemplatePartialSpecialization, TK, DC, StartLoc, IdLoc, in ClassTemplatePartialSpecializationDecl()
1146 ASTContext &Context, TagKind TK, DeclContext *DC, SourceLocation StartLoc, in Create() argument
1151 auto *Result = new (Context, DC) ClassTemplatePartialSpecializationDecl( in Create()
1152 Context, TK, DC, StartLoc, IdLoc, Params, SpecializedTemplate, Args, in Create()
1154 Result->setSpecializationKind(TSK_ExplicitSpecialization); in Create()
1155 Result->setMayHaveOutOfDateDef(false); in Create()
1163 GlobalDeclID ID) { in CreateDeserialized() argument
1164 auto *Result = new (C, ID) ClassTemplatePartialSpecializationDecl(C); in CreateDeserialized()
1165 Result->setMayHaveOutOfDateDef(false); in CreateDeserialized()
1173 return MT->getSourceRange(); in getSourceRange()
1177 Range.setBegin(TPL->getTemplateLoc()); in getSourceRange()
1181 //===----------------------------------------------------------------------===//
1183 //===----------------------------------------------------------------------===//
1188 FriendTemplateDecl::Create(ASTContext &Context, DeclContext *DC, in Create() argument
1197 return new (Context, DC) in Create()
1198 FriendTemplateDecl(DC, L, TPL, Params.size(), Friend, FLoc); in Create()
1202 GlobalDeclID ID) { in CreateDeserialized() argument
1203 return new (C, ID) FriendTemplateDecl(EmptyShell()); in CreateDeserialized()
1206 //===----------------------------------------------------------------------===//
1208 //===----------------------------------------------------------------------===//
1211 TypeAliasTemplateDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation L, in Create() argument
1214 bool Invalid = AdoptTemplateParameterList(Params, DC); in Create()
1215 auto *TD = new (C, DC) TypeAliasTemplateDecl(C, DC, L, Name, Params, Decl); in Create()
1217 TD->setInvalidDecl(); in Create()
1222 TypeAliasTemplateDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) { in CreateDeserialized() argument
1223 return new (C, ID) TypeAliasTemplateDecl(C, nullptr, SourceLocation(), in CreateDeserialized()
1234 //===----------------------------------------------------------------------===//
1236 //===----------------------------------------------------------------------===//
1241 if (CurD->isThisDeclarationADefinition()) in getDefinition()
1243 CurD = CurD->getPreviousDecl(); in getDefinition()
1248 VarTemplateDecl *VarTemplateDecl::Create(ASTContext &C, DeclContext *DC, in Create() argument
1252 bool Invalid = AdoptTemplateParameterList(Params, DC); in Create()
1253 auto *TD = new (C, DC) VarTemplateDecl(C, DC, L, Name, Params, Decl); in Create()
1255 TD->setInvalidDecl(); in Create()
1260 GlobalDeclID ID) { in CreateDeserialized() argument
1261 return new (C, ID) VarTemplateDecl(C, nullptr, SourceLocation(), in CreateDeserialized()
1272 return getCommonPtr()->Specializations; in getSpecializations()
1278 return getCommonPtr()->PartialSpecializations; in getPartialSpecializations()
1307 llvm::FoldingSetNodeID &ID, ArrayRef<TemplateArgument> TemplateArgs, in Profile() argument
1309 ID.AddInteger(TemplateArgs.size()); in Profile()
1311 TemplateArg.Profile(ID, Context); in Profile()
1312 TPL->Profile(ID, Context); in Profile()
1323 assert(Existing->isCanonicalDecl() && "Non-canonical specialization?"); in AddPartialSpecialization()
1327 L->AddedCXXTemplateSpecialization(this, D); in AddPartialSpecialization()
1343 Decl *DCanon = D->getCanonicalDecl(); in findPartialSpecInstantiatedFromMember()
1345 if (P.getInstantiatedFromMember()->getCanonicalDecl() == DCanon) in findPartialSpecInstantiatedFromMember()
1352 //===----------------------------------------------------------------------===//
1354 //===----------------------------------------------------------------------===//
1357 Kind DK, ASTContext &Context, DeclContext *DC, SourceLocation StartLoc, in VarTemplateSpecializationDecl() argument
1360 : VarDecl(DK, Context, DC, StartLoc, IdLoc, in VarTemplateSpecializationDecl()
1361 SpecializedTemplate->getIdentifier(), T, TInfo, S), in VarTemplateSpecializationDecl()
1373 ASTContext &Context, DeclContext *DC, SourceLocation StartLoc, in Create() argument
1376 return new (Context, DC) VarTemplateSpecializationDecl( in Create()
1377 VarTemplateSpecialization, Context, DC, StartLoc, IdLoc, in Create()
1383 GlobalDeclID ID) { in CreateDeserialized() argument
1384 return new (C, ID) in CreateDeserialized()
1394 PS ? PS->getTemplateArgsAsWritten() : nullptr) { in getNameForDiagnostic()
1396 OS, ArgsAsWritten->arguments(), Policy, in getNameForDiagnostic()
1397 getSpecializedTemplate()->getTemplateParameters()); in getNameForDiagnostic()
1402 getSpecializedTemplate()->getTemplateParameters()); in getNameForDiagnostic()
1409 return PartialSpec->PartialSpecialization->getSpecializedTemplate(); in getSpecializedTemplate()
1424 return VTPSD->getSourceRange(); in getSourceRange()
1427 if (VarTemplateDecl *Definition = VTD->getDefinition()) in getSourceRange()
1428 return Definition->getSourceRange(); in getSourceRange()
1430 return VTD->getCanonicalDecl()->getSourceRange(); in getSourceRange()
1436 Range.setEnd(Args->getRAngleLoc()); in getSourceRange()
1448 Range.setEnd(Args->getRAngleLoc()); in getSourceRange()
1462 Info->TemplateArgsAsWritten = getTemplateArgsAsWritten(); in setExternKeywordLoc()
1465 Info->ExternKeywordLoc = Loc; in setExternKeywordLoc()
1475 Info->TemplateArgsAsWritten = getTemplateArgsAsWritten(); in setTemplateKeywordLoc()
1478 Info->TemplateKeywordLoc = Loc; in setTemplateKeywordLoc()
1481 //===----------------------------------------------------------------------===//
1483 //===----------------------------------------------------------------------===//
1488 ASTContext &Context, DeclContext *DC, SourceLocation StartLoc, in VarTemplatePartialSpecializationDecl() argument
1493 DC, StartLoc, IdLoc, SpecializedTemplate, T, in VarTemplatePartialSpecializationDecl()
1496 if (AdoptTemplateParameterList(Params, DC)) in VarTemplatePartialSpecializationDecl()
1502 ASTContext &Context, DeclContext *DC, SourceLocation StartLoc, in Create() argument
1506 auto *Result = new (Context, DC) VarTemplatePartialSpecializationDecl( in Create()
1507 Context, DC, StartLoc, IdLoc, Params, SpecializedTemplate, T, TInfo, S, in Create()
1509 Result->setSpecializationKind(TSK_ExplicitSpecialization); in Create()
1515 GlobalDeclID ID) { in CreateDeserialized() argument
1516 return new (C, ID) VarTemplatePartialSpecializationDecl(C); in CreateDeserialized()
1523 return MT->getSourceRange(); in getSourceRange()
1527 Range.setBegin(TPL->getTemplateLoc()); in getSourceRange()
1532 createMakeIntegerSeqParameterList(const ASTContext &C, DeclContext *DC) { in createMakeIntegerSeqParameterList() argument
1535 C, DC, SourceLocation(), SourceLocation(), /*Depth=*/1, /*Position=*/0, in createMakeIntegerSeqParameterList()
1536 /*Id=*/nullptr, /*Typename=*/true, /*ParameterPack=*/false, in createMakeIntegerSeqParameterList()
1538 T->setImplicit(true); in createMakeIntegerSeqParameterList()
1542 C.getTrivialTypeSourceInfo(QualType(T->getTypeForDecl(), 0)); in createMakeIntegerSeqParameterList()
1544 C, DC, SourceLocation(), SourceLocation(), /*Depth=*/0, /*Position=*/1, in createMakeIntegerSeqParameterList()
1545 /*Id=*/nullptr, TI->getType(), /*ParameterPack=*/true, TI); in createMakeIntegerSeqParameterList()
1546 N->setImplicit(true); in createMakeIntegerSeqParameterList()
1555 C, DC, SourceLocation(), /*Depth=*/0, /*Position=*/0, in createMakeIntegerSeqParameterList()
1556 /*ParameterPack=*/false, /*Id=*/nullptr, /*Typename=*/false, TPL); in createMakeIntegerSeqParameterList()
1557 TemplateTemplateParm->setImplicit(true); in createMakeIntegerSeqParameterList()
1561 C, DC, SourceLocation(), SourceLocation(), /*Depth=*/0, /*Position=*/1, in createMakeIntegerSeqParameterList()
1562 /*Id=*/nullptr, /*Typename=*/true, /*ParameterPack=*/false, in createMakeIntegerSeqParameterList()
1564 TemplateTypeParm->setImplicit(true); in createMakeIntegerSeqParameterList()
1568 QualType(TemplateTypeParm->getTypeForDecl(), 0)); in createMakeIntegerSeqParameterList()
1570 C, DC, SourceLocation(), SourceLocation(), /*Depth=*/0, /*Position=*/2, in createMakeIntegerSeqParameterList()
1571 /*Id=*/nullptr, TInfo->getType(), /*ParameterPack=*/false, TInfo); in createMakeIntegerSeqParameterList()
1581 createTypePackElementParameterList(const ASTContext &C, DeclContext *DC) { in createTypePackElementParameterList() argument
1585 C, DC, SourceLocation(), SourceLocation(), /*Depth=*/0, /*Position=*/0, in createTypePackElementParameterList()
1586 /*Id=*/nullptr, TInfo->getType(), /*ParameterPack=*/false, TInfo); in createTypePackElementParameterList()
1590 C, DC, SourceLocation(), SourceLocation(), /*Depth=*/0, /*Position=*/1, in createTypePackElementParameterList()
1591 /*Id=*/nullptr, /*Typename=*/true, /*ParameterPack=*/true, in createTypePackElementParameterList()
1593 Ts->setImplicit(true); in createTypePackElementParameterList()
1603 const ASTContext &C, DeclContext *DC, BuiltinTemplateKind BTK) { in createBuiltinTemplateParameterList() argument
1606 return createMakeIntegerSeqParameterList(C, DC); in createBuiltinTemplateParameterList()
1608 return createTypePackElementParameterList(C, DC); in createBuiltinTemplateParameterList()
1616 BuiltinTemplateDecl::BuiltinTemplateDecl(const ASTContext &C, DeclContext *DC, in BuiltinTemplateDecl() argument
1619 : TemplateDecl(BuiltinTemplate, DC, SourceLocation(), Name, in BuiltinTemplateDecl()
1620 createBuiltinTemplateParameterList(C, DC, BTK)), in BuiltinTemplateDecl()
1626 DeclContext *DC = C.getTranslationUnitDecl(); in Create() local
1627 auto *TPOD = new (C, DC) TemplateParamObjectDecl(DC, T, V); in Create()
1628 C.addDestruction(&TPOD->Value); in Create()
1633 TemplateParamObjectDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) { in CreateDeserialized() argument
1634 auto *TPOD = new (C, ID) TemplateParamObjectDecl(nullptr, QualType(), APValue()); in CreateDeserialized()
1635 C.addDestruction(&TPOD->Value); in CreateDeserialized()
1666 switch (D->getKind()) { in getReplacedTemplateParameterList()
1669 ->getDescribedTemplate() in getReplacedTemplateParameterList()
1670 ->getTemplateParameters(); in getReplacedTemplateParameterList()
1672 return cast<ClassTemplateDecl>(D)->getTemplateParameters(); in getReplacedTemplateParameterList()
1675 auto P = CTSD->getSpecializedTemplateOrPartial(); in getReplacedTemplateParameterList()
1678 return CTPSD->getTemplateParameters(); in getReplacedTemplateParameterList()
1679 return cast<ClassTemplateDecl *>(P)->getTemplateParameters(); in getReplacedTemplateParameterList()
1683 ->getTemplateParameters(); in getReplacedTemplateParameterList()
1685 return cast<TypeAliasTemplateDecl>(D)->getTemplateParameters(); in getReplacedTemplateParameterList()
1687 return cast<BuiltinTemplateDecl>(D)->getTemplateParameters(); in getReplacedTemplateParameterList()
1695 ->getTemplateSpecializationInfo() in getReplacedTemplateParameterList()
1696 ->getTemplate() in getReplacedTemplateParameterList()
1697 ->getTemplateParameters(); in getReplacedTemplateParameterList()
1699 return cast<FunctionTemplateDecl>(D)->getTemplateParameters(); in getReplacedTemplateParameterList()
1701 return cast<VarTemplateDecl>(D)->getTemplateParameters(); in getReplacedTemplateParameterList()
1704 auto P = VTSD->getSpecializedTemplateOrPartial(); in getReplacedTemplateParameterList()
1707 return VTPSD->getTemplateParameters(); in getReplacedTemplateParameterList()
1708 return cast<VarTemplateDecl *>(P)->getTemplateParameters(); in getReplacedTemplateParameterList()
1712 ->getTemplateParameters(); in getReplacedTemplateParameterList()
1714 return cast<TemplateTemplateParmDecl>(D)->getTemplateParameters(); in getReplacedTemplateParameterList()
1716 return cast<ConceptDecl>(D)->getTemplateParameters(); in getReplacedTemplateParameterList()