• Home
  • Raw
  • Download

Lines Matching refs:D

111 TemplateDeclInstantiator::VisitTranslationUnitDecl(TranslationUnitDecl *D) {  in VisitTranslationUnitDecl()  argument
116 TemplateDeclInstantiator::VisitLabelDecl(LabelDecl *D) { in VisitLabelDecl() argument
117 LabelDecl *Inst = LabelDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitLabelDecl()
118 D->getIdentifier()); in VisitLabelDecl()
124 TemplateDeclInstantiator::VisitNamespaceDecl(NamespaceDecl *D) { in VisitNamespaceDecl() argument
129 TemplateDeclInstantiator::VisitNamespaceAliasDecl(NamespaceAliasDecl *D) { in VisitNamespaceAliasDecl() argument
132 D->getNamespaceLoc(), in VisitNamespaceAliasDecl()
133 D->getAliasLoc(), in VisitNamespaceAliasDecl()
134 D->getIdentifier(), in VisitNamespaceAliasDecl()
135 D->getQualifierLoc(), in VisitNamespaceAliasDecl()
136 D->getTargetNameLoc(), in VisitNamespaceAliasDecl()
137 D->getNamespace()); in VisitNamespaceAliasDecl()
142 Decl *TemplateDeclInstantiator::InstantiateTypedefNameDecl(TypedefNameDecl *D, in InstantiateTypedefNameDecl() argument
145 TypeSourceInfo *DI = D->getTypeSourceInfo(); in InstantiateTypedefNameDecl()
149 D->getLocation(), D->getDeclName()); in InstantiateTypedefNameDecl()
155 SemaRef.MarkDeclarationsReferencedInType(D->getLocation(), DI->getType()); in InstantiateTypedefNameDecl()
161 Typedef = TypeAliasDecl::Create(SemaRef.Context, Owner, D->getLocStart(), in InstantiateTypedefNameDecl()
162 D->getLocation(), D->getIdentifier(), DI); in InstantiateTypedefNameDecl()
164 Typedef = TypedefDecl::Create(SemaRef.Context, Owner, D->getLocStart(), in InstantiateTypedefNameDecl()
165 D->getLocation(), D->getIdentifier(), DI); in InstantiateTypedefNameDecl()
171 if (const TagType *oldTagType = D->getUnderlyingType()->getAs<TagType>()) { in InstantiateTypedefNameDecl()
173 if (oldTag->getTypedefNameForAnonDecl() == D) { in InstantiateTypedefNameDecl()
180 if (TypedefNameDecl *Prev = D->getPreviousDecl()) { in InstantiateTypedefNameDecl()
181 NamedDecl *InstPrev = SemaRef.FindInstantiatedDecl(D->getLocation(), Prev, in InstantiateTypedefNameDecl()
194 SemaRef.InstantiateAttrs(TemplateArgs, D, Typedef); in InstantiateTypedefNameDecl()
196 Typedef->setAccess(D->getAccess()); in InstantiateTypedefNameDecl()
201 Decl *TemplateDeclInstantiator::VisitTypedefDecl(TypedefDecl *D) { in VisitTypedefDecl() argument
202 Decl *Typedef = InstantiateTypedefNameDecl(D, /*IsTypeAlias=*/false); in VisitTypedefDecl()
207 Decl *TemplateDeclInstantiator::VisitTypeAliasDecl(TypeAliasDecl *D) { in VisitTypeAliasDecl() argument
208 Decl *Typedef = InstantiateTypedefNameDecl(D, /*IsTypeAlias=*/true); in VisitTypeAliasDecl()
214 TemplateDeclInstantiator::VisitTypeAliasTemplateDecl(TypeAliasTemplateDecl *D) { in VisitTypeAliasTemplateDecl() argument
219 TemplateParameterList *TempParams = D->getTemplateParameters(); in VisitTypeAliasTemplateDecl()
224 TypeAliasDecl *Pattern = D->getTemplatedDecl(); in VisitTypeAliasTemplateDecl()
240 = TypeAliasTemplateDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitTypeAliasTemplateDecl()
241 D->getDeclName(), InstParams, AliasInst); in VisitTypeAliasTemplateDecl()
245 Inst->setAccess(D->getAccess()); in VisitTypeAliasTemplateDecl()
248 Inst->setInstantiatedFromMemberTemplate(D); in VisitTypeAliasTemplateDecl()
255 Decl *TemplateDeclInstantiator::VisitVarDecl(VarDecl *D) { in VisitVarDecl() argument
258 if (const RecordType *RecordTy = D->getType()->getAs<RecordType>()) in VisitVarDecl()
264 TypeSourceInfo *DI = SemaRef.SubstType(D->getTypeSourceInfo(), in VisitVarDecl()
266 D->getTypeSpecStartLoc(), in VisitVarDecl()
267 D->getDeclName()); in VisitVarDecl()
272 SemaRef.Diag(D->getLocation(), diag::err_variable_instantiates_to_function) in VisitVarDecl()
273 << D->isStaticDataMember() << DI->getType(); in VisitVarDecl()
279 D->getInnerLocStart(), in VisitVarDecl()
280 D->getLocation(), D->getIdentifier(), in VisitVarDecl()
282 D->getStorageClass(), in VisitVarDecl()
283 D->getStorageClassAsWritten()); in VisitVarDecl()
284 Var->setThreadSpecified(D->isThreadSpecified()); in VisitVarDecl()
285 Var->setInitStyle(D->getInitStyle()); in VisitVarDecl()
286 Var->setCXXForRangeDecl(D->isCXXForRangeDecl()); in VisitVarDecl()
287 Var->setConstexpr(D->isConstexpr()); in VisitVarDecl()
290 if (SubstQualifier(D, Var)) in VisitVarDecl()
296 if (D->isOutOfLine()) in VisitVarDecl()
297 Var->setLexicalDeclContext(D->getLexicalDeclContext()); in VisitVarDecl()
299 Var->setAccess(D->getAccess()); in VisitVarDecl()
301 if (!D->isStaticDataMember()) { in VisitVarDecl()
302 Var->setUsed(D->isUsed(false)); in VisitVarDecl()
303 Var->setReferenced(D->isReferenced()); in VisitVarDecl()
311 if (D->isStaticDataMember()) in VisitVarDecl()
321 if (D->isOutOfLine()) { in VisitVarDecl()
322 D->getLexicalDeclContext()->addDecl(Var); in VisitVarDecl()
327 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Var); in VisitVarDecl()
329 SemaRef.InstantiateAttrs(TemplateArgs, D, Var, LateAttrs, StartingScope); in VisitVarDecl()
334 SemaRef.Context.setInstantiatedFromStaticDataMember(Var, D, in VisitVarDecl()
339 } else if (D->getInit()) { in VisitVarDecl()
340 if (Var->isStaticDataMember() && !D->isOutOfLine()) in VisitVarDecl()
346 ExprResult Init = SemaRef.SubstInitializer(D->getInit(), TemplateArgs, in VisitVarDecl()
347 D->getInitStyle() == VarDecl::CallInit); in VisitVarDecl()
351 bool DirectInit = D->isDirectInit(); in VisitVarDecl()
370 D->getType()->isDependentType()) in VisitVarDecl()
376 Decl *TemplateDeclInstantiator::VisitAccessSpecDecl(AccessSpecDecl *D) { in VisitAccessSpecDecl() argument
378 = AccessSpecDecl::Create(SemaRef.Context, D->getAccess(), Owner, in VisitAccessSpecDecl()
379 D->getAccessSpecifierLoc(), D->getColonLoc()); in VisitAccessSpecDecl()
384 Decl *TemplateDeclInstantiator::VisitFieldDecl(FieldDecl *D) { in VisitFieldDecl() argument
386 TypeSourceInfo *DI = D->getTypeSourceInfo(); in VisitFieldDecl()
390 D->getLocation(), D->getDeclName()); in VisitFieldDecl()
392 DI = D->getTypeSourceInfo(); in VisitFieldDecl()
401 SemaRef.Diag(D->getLocation(), diag::err_field_instantiates_to_function) in VisitFieldDecl()
406 SemaRef.MarkDeclarationsReferencedInType(D->getLocation(), DI->getType()); in VisitFieldDecl()
409 Expr *BitWidth = D->getBitWidth(); in VisitFieldDecl()
426 FieldDecl *Field = SemaRef.CheckFieldDecl(D->getDeclName(), in VisitFieldDecl()
429 D->getLocation(), in VisitFieldDecl()
430 D->isMutable(), in VisitFieldDecl()
432 D->hasInClassInitializer(), in VisitFieldDecl()
433 D->getTypeSpecStartLoc(), in VisitFieldDecl()
434 D->getAccess(), in VisitFieldDecl()
441 SemaRef.InstantiateAttrs(TemplateArgs, D, Field, LateAttrs, StartingScope); in VisitFieldDecl()
448 SemaRef.Context.setInstantiatedFromUnnamedFieldDecl(Field, D); in VisitFieldDecl()
453 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Field); in VisitFieldDecl()
456 Field->setImplicit(D->isImplicit()); in VisitFieldDecl()
457 Field->setAccess(D->getAccess()); in VisitFieldDecl()
463 Decl *TemplateDeclInstantiator::VisitIndirectFieldDecl(IndirectFieldDecl *D) { in VisitIndirectFieldDecl() argument
465 new (SemaRef.Context)NamedDecl*[D->getChainingSize()]; in VisitIndirectFieldDecl()
469 D->chain_begin(), PE = D->chain_end(); in VisitIndirectFieldDecl()
471 NamedDecl *Next = SemaRef.FindInstantiatedDecl(D->getLocation(), *PI, in VisitIndirectFieldDecl()
481 = IndirectFieldDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitIndirectFieldDecl()
482 D->getIdentifier(), T, in VisitIndirectFieldDecl()
483 NamedChain, D->getChainingSize()); in VisitIndirectFieldDecl()
486 IndirectField->setImplicit(D->isImplicit()); in VisitIndirectFieldDecl()
487 IndirectField->setAccess(D->getAccess()); in VisitIndirectFieldDecl()
492 Decl *TemplateDeclInstantiator::VisitFriendDecl(FriendDecl *D) { in VisitFriendDecl() argument
495 if (TypeSourceInfo *Ty = D->getFriendType()) { in VisitFriendDecl()
501 if (D->isUnsupportedFriend()) { in VisitFriendDecl()
505 D->getLocation(), DeclarationName()); in VisitFriendDecl()
510 FriendDecl *FD = SemaRef.CheckFriendTypeDecl(D->getLocation(), in VisitFriendDecl()
511 D->getFriendLoc(), InstTy); in VisitFriendDecl()
516 FD->setUnsupportedFriend(D->isUnsupportedFriend()); in VisitFriendDecl()
521 NamedDecl *ND = D->getFriendDecl(); in VisitFriendDecl()
532 FriendDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitFriendDecl()
533 cast<NamedDecl>(NewND), D->getFriendLoc()); in VisitFriendDecl()
535 FD->setUnsupportedFriend(D->isUnsupportedFriend()); in VisitFriendDecl()
540 Decl *TemplateDeclInstantiator::VisitStaticAssertDecl(StaticAssertDecl *D) { in VisitStaticAssertDecl() argument
541 Expr *AssertExpr = D->getAssertExpr(); in VisitStaticAssertDecl()
552 ExprResult Message(D->getMessage()); in VisitStaticAssertDecl()
553 D->getMessage(); in VisitStaticAssertDecl()
554 return SemaRef.ActOnStaticAssertDeclaration(D->getLocation(), in VisitStaticAssertDecl()
557 D->getRParenLoc()); in VisitStaticAssertDecl()
560 Decl *TemplateDeclInstantiator::VisitEnumDecl(EnumDecl *D) { in VisitEnumDecl() argument
562 if (D->getPreviousDecl()) { in VisitEnumDecl()
563 NamedDecl *Prev = SemaRef.FindInstantiatedDecl(D->getLocation(), in VisitEnumDecl()
564 D->getPreviousDecl(), in VisitEnumDecl()
570 EnumDecl *Enum = EnumDecl::Create(SemaRef.Context, Owner, D->getLocStart(), in VisitEnumDecl()
571 D->getLocation(), D->getIdentifier(), in VisitEnumDecl()
572 PrevDecl, D->isScoped(), in VisitEnumDecl()
573 D->isScopedUsingClassTag(), D->isFixed()); in VisitEnumDecl()
574 if (D->isFixed()) { in VisitEnumDecl()
575 if (TypeSourceInfo *TI = D->getIntegerTypeSourceInfo()) { in VisitEnumDecl()
587 assert(!D->getIntegerType()->isDependentType() in VisitEnumDecl()
589 Enum->setIntegerType(D->getIntegerType()); in VisitEnumDecl()
593 SemaRef.InstantiateAttrs(TemplateArgs, D, Enum); in VisitEnumDecl()
595 Enum->setInstantiationOfMemberEnum(D, TSK_ImplicitInstantiation); in VisitEnumDecl()
596 Enum->setAccess(D->getAccess()); in VisitEnumDecl()
597 if (SubstQualifier(D, Enum)) return 0; in VisitEnumDecl()
600 EnumDecl *Def = D->getDefinition(); in VisitEnumDecl()
601 if (Def && Def != D) { in VisitEnumDecl()
615 if (D->getDeclContext()->isFunctionOrMethod()) in VisitEnumDecl()
616 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Enum); in VisitEnumDecl()
626 (!D->getDeclContext()->isFunctionOrMethod() || D->isCompleteDefinition())) in VisitEnumDecl()
697 Decl *TemplateDeclInstantiator::VisitEnumConstantDecl(EnumConstantDecl *D) { in VisitEnumConstantDecl() argument
701 Decl *TemplateDeclInstantiator::VisitClassTemplateDecl(ClassTemplateDecl *D) { in VisitClassTemplateDecl() argument
702 bool isFriend = (D->getFriendObjectKind() != Decl::FOK_None); in VisitClassTemplateDecl()
707 TemplateParameterList *TempParams = D->getTemplateParameters(); in VisitClassTemplateDecl()
712 CXXRecordDecl *Pattern = D->getTemplatedDecl(); in VisitClassTemplateDecl()
768 << D->getTemplatedDecl()->getTagKind() << Pattern->getDeclName() << DC in VisitClassTemplateDecl()
834 = ClassTemplateDecl::Create(SemaRef.Context, DC, D->getLocation(), in VisitClassTemplateDecl()
835 D->getIdentifier(), InstParams, RecordInst, in VisitClassTemplateDecl()
843 Inst->setAccess(D->getAccess()); in VisitClassTemplateDecl()
849 Inst->setAccess(D->getAccess()); in VisitClassTemplateDecl()
851 Inst->setInstantiatedFromMemberTemplate(D); in VisitClassTemplateDecl()
866 if (D->isOutOfLine()) { in VisitClassTemplateDecl()
867 Inst->setLexicalDeclContext(D->getLexicalDeclContext()); in VisitClassTemplateDecl()
868 RecordInst->setLexicalDeclContext(D->getLexicalDeclContext()); in VisitClassTemplateDecl()
878 D->getPartialSpecializations(PartialSpecs); in VisitClassTemplateDecl()
889 ClassTemplatePartialSpecializationDecl *D) { in VisitClassTemplatePartialSpecializationDecl() argument
890 ClassTemplateDecl *ClassTemplate = D->getSpecializedTemplate(); in VisitClassTemplatePartialSpecializationDecl()
905 = InstClassTemplate->findPartialSpecInstantiatedFromMember(D)) in VisitClassTemplatePartialSpecializationDecl()
908 return InstantiateClassTemplatePartialSpecialization(InstClassTemplate, D); in VisitClassTemplatePartialSpecializationDecl()
912 TemplateDeclInstantiator::VisitFunctionTemplateDecl(FunctionTemplateDecl *D) { in VisitFunctionTemplateDecl() argument
919 TemplateParameterList *TempParams = D->getTemplateParameters(); in VisitFunctionTemplateDecl()
925 if (CXXMethodDecl *DMethod = dyn_cast<CXXMethodDecl>(D->getTemplatedDecl())) in VisitFunctionTemplateDecl()
930 D->getTemplatedDecl(), in VisitFunctionTemplateDecl()
936 Instantiated->setAccess(D->getAccess()); in VisitFunctionTemplateDecl()
942 InstTemplate->setAccess(D->getAccess()); in VisitFunctionTemplateDecl()
951 !(isFriend && !D->getTemplatedDecl()->isThisDeclarationADefinition())) in VisitFunctionTemplateDecl()
952 InstTemplate->setInstantiatedFromMemberTemplate(D); in VisitFunctionTemplateDecl()
961 Decl *TemplateDeclInstantiator::VisitCXXRecordDecl(CXXRecordDecl *D) { in VisitCXXRecordDecl() argument
963 if (D->isInjectedClassName()) in VisitCXXRecordDecl()
965 else if (D->getPreviousDecl()) { in VisitCXXRecordDecl()
966 NamedDecl *Prev = SemaRef.FindInstantiatedDecl(D->getLocation(), in VisitCXXRecordDecl()
967 D->getPreviousDecl(), in VisitCXXRecordDecl()
974 = CXXRecordDecl::Create(SemaRef.Context, D->getTagKind(), Owner, in VisitCXXRecordDecl()
975 D->getLocStart(), D->getLocation(), in VisitCXXRecordDecl()
976 D->getIdentifier(), PrevDecl); in VisitCXXRecordDecl()
979 if (SubstQualifier(D, Record)) in VisitCXXRecordDecl()
982 Record->setImplicit(D->isImplicit()); in VisitCXXRecordDecl()
986 if (D->getAccess() != AS_none) in VisitCXXRecordDecl()
987 Record->setAccess(D->getAccess()); in VisitCXXRecordDecl()
988 if (!D->isInjectedClassName()) in VisitCXXRecordDecl()
989 Record->setInstantiationOfMemberClass(D, TSK_ImplicitInstantiation); in VisitCXXRecordDecl()
993 if (Decl::FriendObjectKind FOK = D->getFriendObjectKind()) in VisitCXXRecordDecl()
997 if (D->isAnonymousStructOrUnion()) { in VisitCXXRecordDecl()
1000 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Record); in VisitCXXRecordDecl()
1012 Decl *TemplateDeclInstantiator::VisitFunctionDecl(FunctionDecl *D, in VisitFunctionDecl() argument
1016 FunctionTemplateDecl *FunctionTemplate = D->getDescribedFunctionTemplate(); in VisitFunctionDecl()
1035 isFriend = (D->getFriendObjectKind() != Decl::FOK_None); in VisitFunctionDecl()
1044 TypeSourceInfo *TInfo = SubstFunctionType(D, Params); in VisitFunctionDecl()
1049 NestedNameSpecifierLoc QualifierLoc = D->getQualifierLoc(); in VisitFunctionDecl()
1060 if (D->getDeclContext()->isFunctionOrMethod()) in VisitFunctionDecl()
1068 DC = SemaRef.FindInstantiatedContext(D->getLocation(), D->getDeclContext(), in VisitFunctionDecl()
1073 FunctionDecl::Create(SemaRef.Context, DC, D->getInnerLocStart(), in VisitFunctionDecl()
1074 D->getLocation(), D->getDeclName(), T, TInfo, in VisitFunctionDecl()
1075 D->getStorageClass(), D->getStorageClassAsWritten(), in VisitFunctionDecl()
1076 D->isInlineSpecified(), D->hasWrittenPrototype(), in VisitFunctionDecl()
1077 D->isConstexpr()); in VisitFunctionDecl()
1083 if (!isFriend && D->isOutOfLine()) { in VisitFunctionDecl()
1084 assert(D->getDeclContext()->isFileContext()); in VisitFunctionDecl()
1085 LexicalDC = D->getDeclContext(); in VisitFunctionDecl()
1137 if (isFriend && D->isThisDeclarationADefinition()) { in VisitFunctionDecl()
1141 D->getDescribedFunctionTemplate()); in VisitFunctionDecl()
1159 Function->setInstantiationOfMemberFunction(D, TSK_ImplicitInstantiation); in VisitFunctionDecl()
1162 if (InitFunctionInstantiation(Function, D)) in VisitFunctionDecl()
1171 = D->getDependentSpecializationInfo()) { in VisitFunctionDecl()
1186 Decl *Temp = SemaRef.FindInstantiatedDecl(D->getLocation(), in VisitFunctionDecl()
1251 D->isThisDeclarationADefinition()) { in VisitFunctionDecl()
1310 assert(!D->isDefaulted() && "only methods should be defaulted"); in VisitFunctionDecl()
1315 TemplateDeclInstantiator::VisitCXXMethodDecl(CXXMethodDecl *D, in VisitCXXMethodDecl() argument
1318 FunctionTemplateDecl *FunctionTemplate = D->getDescribedFunctionTemplate(); in VisitCXXMethodDecl()
1340 isFriend = (D->getFriendObjectKind() != Decl::FOK_None); in VisitCXXMethodDecl()
1350 if (isFriend && (NumTempParamLists = D->getNumTemplateParameterLists())) { in VisitCXXMethodDecl()
1353 TemplateParameterList *TempParams = D->getTemplateParameterList(I); in VisitCXXMethodDecl()
1362 TypeSourceInfo *TInfo = SubstFunctionType(D, Params); in VisitCXXMethodDecl()
1379 if (SemaRef.SubstParmTypes(D->getLocation(), D->param_begin(), in VisitCXXMethodDecl()
1380 D->getNumParams(), TemplateArgs, ParamTypes, in VisitCXXMethodDecl()
1385 NestedNameSpecifierLoc QualifierLoc = D->getQualifierLoc(); in VisitCXXMethodDecl()
1403 DC = SemaRef.FindInstantiatedContext(D->getLocation(), in VisitCXXMethodDecl()
1404 D->getDeclContext(), in VisitCXXMethodDecl()
1414 SourceLocation StartLoc = D->getInnerLocStart(); in VisitCXXMethodDecl()
1416 = SemaRef.SubstDeclarationNameInfo(D->getNameInfo(), TemplateArgs); in VisitCXXMethodDecl()
1417 if (CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(D)) { in VisitCXXMethodDecl()
1423 } else if (CXXDestructorDecl *Destructor = dyn_cast<CXXDestructorDecl>(D)) { in VisitCXXMethodDecl()
1428 } else if (CXXConversionDecl *Conversion = dyn_cast<CXXConversionDecl>(D)) { in VisitCXXMethodDecl()
1438 D->isStatic(), in VisitCXXMethodDecl()
1439 D->getStorageClassAsWritten(), in VisitCXXMethodDecl()
1440 D->isInlineSpecified(), in VisitCXXMethodDecl()
1441 D->isConstexpr(), D->getLocEnd()); in VisitCXXMethodDecl()
1468 } else if (D->isOutOfLine()) in VisitCXXMethodDecl()
1469 FunctionTemplate->setLexicalDeclContext(D->getLexicalDeclContext()); in VisitCXXMethodDecl()
1482 Method->setInstantiationOfMemberFunction(D, TSK_ImplicitInstantiation); in VisitCXXMethodDecl()
1496 } else if (D->isOutOfLine()) in VisitCXXMethodDecl()
1497 Method->setLexicalDeclContext(D->getLexicalDeclContext()); in VisitCXXMethodDecl()
1504 if (InitMethodInstantiation(Method, D)) in VisitCXXMethodDecl()
1524 if (D->isPure()) in VisitCXXMethodDecl()
1527 Method->setAccess(D->getAccess()); in VisitCXXMethodDecl()
1532 if (D->isDefaulted()) in VisitCXXMethodDecl()
1534 if (D->isDeletedAsWritten()) in VisitCXXMethodDecl()
1551 if (D->isExplicitlyDefaulted()) { in VisitCXXMethodDecl()
1554 assert(!D->isDefaulted() && in VisitCXXMethodDecl()
1561 Decl *TemplateDeclInstantiator::VisitCXXConstructorDecl(CXXConstructorDecl *D) { in VisitCXXConstructorDecl() argument
1562 return VisitCXXMethodDecl(D); in VisitCXXConstructorDecl()
1565 Decl *TemplateDeclInstantiator::VisitCXXDestructorDecl(CXXDestructorDecl *D) { in VisitCXXDestructorDecl() argument
1566 return VisitCXXMethodDecl(D); in VisitCXXDestructorDecl()
1569 Decl *TemplateDeclInstantiator::VisitCXXConversionDecl(CXXConversionDecl *D) { in VisitCXXConversionDecl() argument
1570 return VisitCXXMethodDecl(D); in VisitCXXConversionDecl()
1573 ParmVarDecl *TemplateDeclInstantiator::VisitParmVarDecl(ParmVarDecl *D) { in VisitParmVarDecl() argument
1574 return SemaRef.SubstParmVarDecl(D, TemplateArgs, /*indexAdjustment*/ 0, in VisitParmVarDecl()
1580 TemplateTypeParmDecl *D) { in VisitTemplateTypeParmDecl() argument
1582 assert(D->getTypeForDecl()->isTemplateTypeParmType()); in VisitTemplateTypeParmDecl()
1586 D->getLocStart(), D->getLocation(), in VisitTemplateTypeParmDecl()
1587 D->getDepth() - TemplateArgs.getNumLevels(), in VisitTemplateTypeParmDecl()
1588 D->getIndex(), D->getIdentifier(), in VisitTemplateTypeParmDecl()
1589 D->wasDeclaredWithTypename(), in VisitTemplateTypeParmDecl()
1590 D->isParameterPack()); in VisitTemplateTypeParmDecl()
1593 if (D->hasDefaultArgument()) in VisitTemplateTypeParmDecl()
1594 Inst->setDefaultArgument(D->getDefaultArgumentInfo(), false); in VisitTemplateTypeParmDecl()
1598 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Inst); in VisitTemplateTypeParmDecl()
1604 NonTypeTemplateParmDecl *D) { in VisitNonTypeTemplateParmDecl() argument
1606 TypeLoc TL = D->getTypeSourceInfo()->getTypeLoc(); in VisitNonTypeTemplateParmDecl()
1614 if (D->isExpandedParameterPack()) { in VisitNonTypeTemplateParmDecl()
1617 ExpandedParameterPackTypes.reserve(D->getNumExpansionTypes()); in VisitNonTypeTemplateParmDecl()
1618 ExpandedParameterPackTypesAsWritten.reserve(D->getNumExpansionTypes()); in VisitNonTypeTemplateParmDecl()
1619 for (unsigned I = 0, N = D->getNumExpansionTypes(); I != N; ++I) { in VisitNonTypeTemplateParmDecl()
1620 TypeSourceInfo *NewDI =SemaRef.SubstType(D->getExpansionTypeSourceInfo(I), in VisitNonTypeTemplateParmDecl()
1622 D->getLocation(), in VisitNonTypeTemplateParmDecl()
1623 D->getDeclName()); in VisitNonTypeTemplateParmDecl()
1629 D->getLocation()); in VisitNonTypeTemplateParmDecl()
1636 DI = D->getTypeSourceInfo(); in VisitNonTypeTemplateParmDecl()
1666 D->getLocation(), in VisitNonTypeTemplateParmDecl()
1667 D->getDeclName()); in VisitNonTypeTemplateParmDecl()
1674 D->getLocation()); in VisitNonTypeTemplateParmDecl()
1684 DI = D->getTypeSourceInfo(); in VisitNonTypeTemplateParmDecl()
1691 D->getLocation(), in VisitNonTypeTemplateParmDecl()
1692 D->getDeclName()); in VisitNonTypeTemplateParmDecl()
1705 DI = SemaRef.SubstType(D->getTypeSourceInfo(), TemplateArgs, in VisitNonTypeTemplateParmDecl()
1706 D->getLocation(), D->getDeclName()); in VisitNonTypeTemplateParmDecl()
1712 D->getLocation()); in VisitNonTypeTemplateParmDecl()
1722 D->getInnerLocStart(), in VisitNonTypeTemplateParmDecl()
1723 D->getLocation(), in VisitNonTypeTemplateParmDecl()
1724 D->getDepth() - TemplateArgs.getNumLevels(), in VisitNonTypeTemplateParmDecl()
1725 D->getPosition(), in VisitNonTypeTemplateParmDecl()
1726 D->getIdentifier(), T, in VisitNonTypeTemplateParmDecl()
1733 D->getInnerLocStart(), in VisitNonTypeTemplateParmDecl()
1734 D->getLocation(), in VisitNonTypeTemplateParmDecl()
1735 D->getDepth() - TemplateArgs.getNumLevels(), in VisitNonTypeTemplateParmDecl()
1736 D->getPosition(), in VisitNonTypeTemplateParmDecl()
1737 D->getIdentifier(), T, in VisitNonTypeTemplateParmDecl()
1738 D->isParameterPack(), DI); in VisitNonTypeTemplateParmDecl()
1744 Param->setDefaultArgument(D->getDefaultArgument(), false); in VisitNonTypeTemplateParmDecl()
1748 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Param); in VisitNonTypeTemplateParmDecl()
1754 TemplateTemplateParmDecl *D) { in VisitTemplateTemplateParmDecl() argument
1756 TemplateParameterList *TempParams = D->getTemplateParameters(); in VisitTemplateTemplateParmDecl()
1769 = TemplateTemplateParmDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitTemplateTemplateParmDecl()
1770 D->getDepth() - TemplateArgs.getNumLevels(), in VisitTemplateTemplateParmDecl()
1771 D->getPosition(), D->isParameterPack(), in VisitTemplateTemplateParmDecl()
1772 D->getIdentifier(), InstParams); in VisitTemplateTemplateParmDecl()
1773 Param->setDefaultArgument(D->getDefaultArgument(), false); in VisitTemplateTemplateParmDecl()
1778 SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Param); in VisitTemplateTemplateParmDecl()
1783 Decl *TemplateDeclInstantiator::VisitUsingDirectiveDecl(UsingDirectiveDecl *D) { in VisitUsingDirectiveDecl() argument
1788 = UsingDirectiveDecl::Create(SemaRef.Context, Owner, D->getLocation(), in VisitUsingDirectiveDecl()
1789 D->getNamespaceKeyLocation(), in VisitUsingDirectiveDecl()
1790 D->getQualifierLoc(), in VisitUsingDirectiveDecl()
1791 D->getIdentLocation(), in VisitUsingDirectiveDecl()
1792 D->getNominatedNamespace(), in VisitUsingDirectiveDecl()
1793 D->getCommonAncestor()); in VisitUsingDirectiveDecl()
1798 Decl *TemplateDeclInstantiator::VisitUsingDecl(UsingDecl *D) { in VisitUsingDecl() argument
1809 = SemaRef.SubstNestedNameSpecifierLoc(D->getQualifierLoc(), in VisitUsingDecl()
1816 DeclarationNameInfo NameInfo = D->getNameInfo(); in VisitUsingDecl()
1827 D->getUsingLocation(), in VisitUsingDecl()
1830 D->isTypeName()); in VisitUsingDecl()
1839 if (SemaRef.CheckUsingDeclRedeclaration(D->getUsingLocation(), in VisitUsingDecl()
1840 D->isTypeName(), SS, in VisitUsingDecl()
1841 D->getLocation(), Prev)) in VisitUsingDecl()
1847 SemaRef.CheckUsingDeclQualifier(D->getUsingLocation(), SS, in VisitUsingDecl()
1848 D->getLocation())) in VisitUsingDecl()
1851 SemaRef.Context.setInstantiatedFromUsingDecl(NewUD, D); in VisitUsingDecl()
1852 NewUD->setAccess(D->getAccess()); in VisitUsingDecl()
1868 for (UsingDecl::shadow_iterator I = D->shadow_begin(), E = D->shadow_end(); in VisitUsingDecl()
1894 Decl *TemplateDeclInstantiator::VisitUsingShadowDecl(UsingShadowDecl *D) { in VisitUsingShadowDecl() argument
1900 ::VisitUnresolvedUsingTypenameDecl(UnresolvedUsingTypenameDecl *D) { in VisitUnresolvedUsingTypenameDecl() argument
1902 = SemaRef.SubstNestedNameSpecifierLoc(D->getQualifierLoc(), in VisitUnresolvedUsingTypenameDecl()
1912 DeclarationNameInfo NameInfo(D->getDeclName(), D->getLocation()); in VisitUnresolvedUsingTypenameDecl()
1914 SemaRef.BuildUsingDeclaration(/*Scope*/ 0, D->getAccess(), in VisitUnresolvedUsingTypenameDecl()
1915 D->getUsingLoc(), SS, NameInfo, 0, in VisitUnresolvedUsingTypenameDecl()
1917 /*typename*/ true, D->getTypenameLoc()); in VisitUnresolvedUsingTypenameDecl()
1919 SemaRef.Context.setInstantiatedFromUsingDecl(cast<UsingDecl>(UD), D); in VisitUnresolvedUsingTypenameDecl()
1925 ::VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D) { in VisitUnresolvedUsingValueDecl() argument
1927 = SemaRef.SubstNestedNameSpecifierLoc(D->getQualifierLoc(), TemplateArgs); in VisitUnresolvedUsingValueDecl()
1935 = SemaRef.SubstDeclarationNameInfo(D->getNameInfo(), TemplateArgs); in VisitUnresolvedUsingValueDecl()
1938 SemaRef.BuildUsingDeclaration(/*Scope*/ 0, D->getAccess(), in VisitUnresolvedUsingValueDecl()
1939 D->getUsingLoc(), SS, NameInfo, 0, in VisitUnresolvedUsingValueDecl()
1943 SemaRef.Context.setInstantiatedFromUsingDecl(cast<UsingDecl>(UD), D); in VisitUnresolvedUsingValueDecl()
1971 Decl *Sema::SubstDecl(Decl *D, DeclContext *Owner, in SubstDecl() argument
1974 if (D->isInvalidDecl()) in SubstDecl()
1977 return Instantiator.Visit(D); in SubstDecl()
1997 NamedDecl *D = cast_or_null<NamedDecl>(Visit(*PI)); in SubstTemplateParams() local
1998 Params.push_back(D); in SubstTemplateParams()
1999 Invalid = Invalid || !D || D->isInvalidDecl(); in SubstTemplateParams()
2139 TemplateDeclInstantiator::SubstFunctionType(FunctionDecl *D, in SubstFunctionType() argument
2141 TypeSourceInfo *OldTInfo = D->getTypeSourceInfo(); in SubstFunctionType()
2147 if (CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(D)) { in SubstFunctionType()
2154 D->getTypeSpecStartLoc(), in SubstFunctionType()
2155 D->getDeclName(), in SubstFunctionType()
3133 static bool isInstantiationOf(ASTContext &Ctx, NamedDecl *D, Decl *Other) { in isInstantiationOf() argument
3134 if (D->getKind() != Other->getKind()) { in isInstantiationOf()
3136 = dyn_cast<UnresolvedUsingTypenameDecl>(D)) { in isInstantiationOf()
3143 = dyn_cast<UnresolvedUsingValueDecl>(D)) { in isInstantiationOf()
3153 return isInstantiationOf(cast<CXXRecordDecl>(D), Record); in isInstantiationOf()
3156 return isInstantiationOf(cast<FunctionDecl>(D), Function); in isInstantiationOf()
3159 return isInstantiationOf(cast<EnumDecl>(D), Enum); in isInstantiationOf()
3163 return isInstantiationOfStaticDataMember(cast<VarDecl>(D), Var); in isInstantiationOf()
3166 return isInstantiationOf(cast<ClassTemplateDecl>(D), Temp); in isInstantiationOf()
3169 return isInstantiationOf(cast<FunctionTemplateDecl>(D), Temp); in isInstantiationOf()
3173 return isInstantiationOf(cast<ClassTemplatePartialSpecializationDecl>(D), in isInstantiationOf()
3180 cast<FieldDecl>(D); in isInstantiationOf()
3185 return isInstantiationOf(cast<UsingDecl>(D), Using, Ctx); in isInstantiationOf()
3188 return isInstantiationOf(cast<UsingShadowDecl>(D), Shadow, Ctx); in isInstantiationOf()
3190 return D->getDeclName() && isa<NamedDecl>(Other) && in isInstantiationOf()
3191 D->getDeclName() == cast<NamedDecl>(Other)->getDeclName(); in isInstantiationOf()
3196 NamedDecl *D, in findInstantiationOf() argument
3200 if (isInstantiationOf(Ctx, D, *first)) in findInstantiationOf()
3212 if (NamedDecl *D = dyn_cast<NamedDecl>(DC)) { in FindInstantiatedContext() local
3213 Decl* ID = FindInstantiatedDecl(Loc, D, TemplateArgs); in FindInstantiatedContext()
3244 NamedDecl *Sema::FindInstantiatedDecl(SourceLocation Loc, NamedDecl *D, in FindInstantiatedDecl() argument
3246 DeclContext *ParentDC = D->getDeclContext(); in FindInstantiatedDecl()
3247 if (isa<ParmVarDecl>(D) || isa<NonTypeTemplateParmDecl>(D) || in FindInstantiatedDecl()
3248 isa<TemplateTypeParmDecl>(D) || isa<TemplateTemplateParmDecl>(D) || in FindInstantiatedDecl()
3250 (isa<CXXRecordDecl>(D) && cast<CXXRecordDecl>(D)->isLambda())) { in FindInstantiatedDecl()
3255 = CurrentInstantiationScope->findInstantiationOf(D); in FindInstantiatedDecl()
3267 assert(isa<LabelDecl>(D)); in FindInstantiatedDecl()
3269 Decl *Inst = SubstDecl(D, CurContext, TemplateArgs); in FindInstantiatedDecl()
3272 CurrentInstantiationScope->InstantiatedLocal(D, Inst); in FindInstantiatedDecl()
3276 if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(D)) { in FindInstantiatedDecl()
3278 return D; in FindInstantiatedDecl()
3330 return D; in FindInstantiatedDecl()
3336 if (ParentDC != D->getDeclContext()) { in FindInstantiatedDecl()
3360 if (D->getDeclName()) { in FindInstantiatedDecl()
3361 DeclContext::lookup_result Found = ParentDC->lookup(D->getDeclName()); in FindInstantiatedDecl()
3362 Result = findInstantiationOf(Context, D, Found.first, Found.second); in FindInstantiatedDecl()
3372 Result = findInstantiationOf(Context, D, in FindInstantiatedDecl()
3378 if (isa<UsingShadowDecl>(D)) { in FindInstantiatedDecl()
3391 << D->getDeclName() in FindInstantiatedDecl()
3393 Diag(D->getLocation(), diag::note_non_instantiated_member_here); in FindInstantiatedDecl()
3394 } else if (EnumConstantDecl *ED = dyn_cast<EnumConstantDecl>(D)) { in FindInstantiatedDecl()
3404 << D->getDeclName() in FindInstantiatedDecl()
3414 D = Result; in FindInstantiatedDecl()
3417 return D; in FindInstantiatedDecl()