Lines Matching refs:D
193 FindExistingResult findExisting(NamedDecl *D);
204 static void attachPreviousDecl(Decl *D, Decl *previous);
205 static void attachLatestDecl(Decl *D, Decl *latest);
207 void Visit(Decl *D);
209 void UpdateDecl(Decl *D, ModuleFile &ModuleFile,
217 void VisitDecl(Decl *D);
221 void VisitNamespaceDecl(NamespaceDecl *D);
222 void VisitUsingDirectiveDecl(UsingDirectiveDecl *D);
223 void VisitNamespaceAliasDecl(NamespaceAliasDecl *D);
228 void VisitUnresolvedUsingTypenameDecl(UnresolvedUsingTypenameDecl *D);
232 void VisitCXXRecordDecl(CXXRecordDecl *D);
234 ClassTemplateSpecializationDecl *D);
236 ClassTemplatePartialSpecializationDecl *D);
238 ClassScopeFunctionSpecializationDecl *D);
239 void VisitTemplateTypeParmDecl(TemplateTypeParmDecl *D);
242 void VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D);
245 void VisitCXXMethodDecl(CXXMethodDecl *D);
246 void VisitCXXConstructorDecl(CXXConstructorDecl *D);
247 void VisitCXXDestructorDecl(CXXDestructorDecl *D);
248 void VisitCXXConversionDecl(CXXConversionDecl *D);
254 void VisitNonTypeTemplateParmDecl(NonTypeTemplateParmDecl *D);
255 void VisitTemplateDecl(TemplateDecl *D);
256 RedeclarableResult VisitRedeclarableTemplateDecl(RedeclarableTemplateDecl *D);
257 void VisitClassTemplateDecl(ClassTemplateDecl *D);
258 void VisitFunctionTemplateDecl(FunctionTemplateDecl *D);
259 void VisitTemplateTemplateParmDecl(TemplateTemplateParmDecl *D);
260 void VisitTypeAliasTemplateDecl(TypeAliasTemplateDecl *D);
261 void VisitUsingDecl(UsingDecl *D);
262 void VisitUsingShadowDecl(UsingShadowDecl *D);
263 void VisitLinkageSpecDecl(LinkageSpecDecl *D);
265 void VisitImportDecl(ImportDecl *D);
266 void VisitAccessSpecDecl(AccessSpecDecl *D);
267 void VisitFriendDecl(FriendDecl *D);
268 void VisitFriendTemplateDecl(FriendTemplateDecl *D);
269 void VisitStaticAssertDecl(StaticAssertDecl *D);
275 RedeclarableResult VisitRedeclarable(Redeclarable<T> *D);
278 void mergeRedeclarable(Redeclarable<T> *D, RedeclarableResult &Redecl);
281 void VisitObjCMethodDecl(ObjCMethodDecl *D);
282 void VisitObjCContainerDecl(ObjCContainerDecl *D);
283 void VisitObjCInterfaceDecl(ObjCInterfaceDecl *D);
284 void VisitObjCIvarDecl(ObjCIvarDecl *D);
285 void VisitObjCProtocolDecl(ObjCProtocolDecl *D);
286 void VisitObjCAtDefsFieldDecl(ObjCAtDefsFieldDecl *D);
287 void VisitObjCCategoryDecl(ObjCCategoryDecl *D);
288 void VisitObjCImplDecl(ObjCImplDecl *D);
289 void VisitObjCCategoryImplDecl(ObjCCategoryImplDecl *D);
290 void VisitObjCImplementationDecl(ObjCImplementationDecl *D);
291 void VisitObjCCompatibleAliasDecl(ObjCCompatibleAliasDecl *D);
292 void VisitObjCPropertyDecl(ObjCPropertyDecl *D);
293 void VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *D);
301 void ASTDeclReader::Visit(Decl *D) { in Visit() argument
302 DeclVisitor<ASTDeclReader, void>::Visit(D); in Visit()
304 if (DeclaratorDecl *DD = dyn_cast<DeclaratorDecl>(D)) { in Visit()
316 if (TypeDecl *TD = dyn_cast<TypeDecl>(D)) { in Visit()
319 } else if (ObjCInterfaceDecl *ID = dyn_cast<ObjCInterfaceDecl>(D)) { in Visit()
322 } else if (FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) { in Visit()
326 } else if (D->isTemplateParameter()) { in Visit()
333 D->setDeclContextsImpl(SemaDC, LexicalDC, Reader.getContext()); in Visit()
337 void ASTDeclReader::VisitDecl(Decl *D) { in VisitDecl() argument
338 if (D->isTemplateParameter()) { in VisitDecl()
345 D->setDeclContext(Reader.getContext().getTranslationUnitDecl()); in VisitDecl()
351 D->setDeclContextsImpl(SemaDC, LexicalDC, Reader.getContext()); in VisitDecl()
353 D->setLocation(Reader.ReadSourceLocation(F, RawLocation)); in VisitDecl()
354 D->setInvalidDecl(Record[Idx++]); in VisitDecl()
360 D->setAttrsImpl(Attrs, Reader.getContext()); in VisitDecl()
362 D->setImplicit(Record[Idx++]); in VisitDecl()
363 D->setUsed(Record[Idx++]); in VisitDecl()
364 D->setReferenced(Record[Idx++]); in VisitDecl()
365 D->setTopLevelDeclInObjCContainer(Record[Idx++]); in VisitDecl()
366 D->setAccess((AccessSpecifier)Record[Idx++]); in VisitDecl()
367 D->FromASTFile = true; in VisitDecl()
368 D->setModulePrivate(Record[Idx++]); in VisitDecl()
369 D->Hidden = D->isModulePrivate(); in VisitDecl()
375 D->setOwningModuleID(SubmoduleID); in VisitDecl()
378 if (!D->isModulePrivate()) { in VisitDecl()
382 D->Hidden = true; in VisitDecl()
386 Reader.HiddenNamesMap[Owner].push_back(D); in VisitDecl()
813 void ASTDeclReader::VisitObjCPropertyDecl(ObjCPropertyDecl *D) { in VisitObjCPropertyDecl() argument
814 VisitNamedDecl(D); in VisitObjCPropertyDecl()
815 D->setAtLoc(ReadSourceLocation(Record, Idx)); in VisitObjCPropertyDecl()
816 D->setLParenLoc(ReadSourceLocation(Record, Idx)); in VisitObjCPropertyDecl()
817 D->setType(GetTypeSourceInfo(Record, Idx)); in VisitObjCPropertyDecl()
819 D->setPropertyAttributes( in VisitObjCPropertyDecl()
821 D->setPropertyAttributesAsWritten( in VisitObjCPropertyDecl()
824 D->setPropertyImplementation( in VisitObjCPropertyDecl()
826 D->setGetterName(Reader.ReadDeclarationName(F,Record, Idx).getObjCSelector()); in VisitObjCPropertyDecl()
827 D->setSetterName(Reader.ReadDeclarationName(F,Record, Idx).getObjCSelector()); in VisitObjCPropertyDecl()
828 D->setGetterMethodDecl(ReadDeclAs<ObjCMethodDecl>(Record, Idx)); in VisitObjCPropertyDecl()
829 D->setSetterMethodDecl(ReadDeclAs<ObjCMethodDecl>(Record, Idx)); in VisitObjCPropertyDecl()
830 D->setPropertyIvarDecl(ReadDeclAs<ObjCIvarDecl>(Record, Idx)); in VisitObjCPropertyDecl()
833 void ASTDeclReader::VisitObjCImplDecl(ObjCImplDecl *D) { in VisitObjCImplDecl() argument
834 VisitObjCContainerDecl(D); in VisitObjCImplDecl()
835 D->setClassInterface(ReadDeclAs<ObjCInterfaceDecl>(Record, Idx)); in VisitObjCImplDecl()
838 void ASTDeclReader::VisitObjCCategoryImplDecl(ObjCCategoryImplDecl *D) { in VisitObjCCategoryImplDecl() argument
839 VisitObjCImplDecl(D); in VisitObjCCategoryImplDecl()
840 D->setIdentifier(Reader.GetIdentifierInfo(F, Record, Idx)); in VisitObjCCategoryImplDecl()
841 D->CategoryNameLoc = ReadSourceLocation(Record, Idx); in VisitObjCCategoryImplDecl()
844 void ASTDeclReader::VisitObjCImplementationDecl(ObjCImplementationDecl *D) { in VisitObjCImplementationDecl() argument
845 VisitObjCImplDecl(D); in VisitObjCImplementationDecl()
846 D->setSuperClass(ReadDeclAs<ObjCInterfaceDecl>(Record, Idx)); in VisitObjCImplementationDecl()
847 D->setIvarLBraceLoc(ReadSourceLocation(Record, Idx)); in VisitObjCImplementationDecl()
848 D->setIvarRBraceLoc(ReadSourceLocation(Record, Idx)); in VisitObjCImplementationDecl()
849 llvm::tie(D->IvarInitializers, D->NumIvarInitializers) in VisitObjCImplementationDecl()
854 void ASTDeclReader::VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *D) { in VisitObjCPropertyImplDecl() argument
855 VisitDecl(D); in VisitObjCPropertyImplDecl()
856 D->setAtLoc(ReadSourceLocation(Record, Idx)); in VisitObjCPropertyImplDecl()
857 D->setPropertyDecl(ReadDeclAs<ObjCPropertyDecl>(Record, Idx)); in VisitObjCPropertyImplDecl()
858 D->PropertyIvarDecl = ReadDeclAs<ObjCIvarDecl>(Record, Idx); in VisitObjCPropertyImplDecl()
859 D->IvarLoc = ReadSourceLocation(Record, Idx); in VisitObjCPropertyImplDecl()
860 D->setGetterCXXConstructor(Reader.ReadExpr(F)); in VisitObjCPropertyImplDecl()
861 D->setSetterCXXAssignment(Reader.ReadExpr(F)); in VisitObjCPropertyImplDecl()
983 void ASTDeclReader::VisitLinkageSpecDecl(LinkageSpecDecl *D) { in VisitLinkageSpecDecl() argument
984 VisitDecl(D); in VisitLinkageSpecDecl()
985 D->setLanguage((LinkageSpecDecl::LanguageIDs)Record[Idx++]); in VisitLinkageSpecDecl()
986 D->setExternLoc(ReadSourceLocation(Record, Idx)); in VisitLinkageSpecDecl()
987 D->setRBraceLoc(ReadSourceLocation(Record, Idx)); in VisitLinkageSpecDecl()
990 void ASTDeclReader::VisitLabelDecl(LabelDecl *D) { in VisitLabelDecl() argument
991 VisitNamedDecl(D); in VisitLabelDecl()
992 D->setLocStart(ReadSourceLocation(Record, Idx)); in VisitLabelDecl()
996 void ASTDeclReader::VisitNamespaceDecl(NamespaceDecl *D) { in VisitNamespaceDecl() argument
997 RedeclarableResult Redecl = VisitRedeclarable(D); in VisitNamespaceDecl()
998 VisitNamedDecl(D); in VisitNamespaceDecl()
999 D->setInline(Record[Idx++]); in VisitNamespaceDecl()
1000 D->LocStart = ReadSourceLocation(Record, Idx); in VisitNamespaceDecl()
1001 D->RBraceLoc = ReadSourceLocation(Record, Idx); in VisitNamespaceDecl()
1002 mergeRedeclarable(D, Redecl); in VisitNamespaceDecl()
1010 D->setAnonymousNamespace(Anon); in VisitNamespaceDecl()
1014 D->AnonOrFirstNamespaceAndInline.setPointer(D->getFirstDeclaration()); in VisitNamespaceDecl()
1018 void ASTDeclReader::VisitNamespaceAliasDecl(NamespaceAliasDecl *D) { in VisitNamespaceAliasDecl() argument
1019 VisitNamedDecl(D); in VisitNamespaceAliasDecl()
1020 D->NamespaceLoc = ReadSourceLocation(Record, Idx); in VisitNamespaceAliasDecl()
1021 D->IdentLoc = ReadSourceLocation(Record, Idx); in VisitNamespaceAliasDecl()
1022 D->QualifierLoc = Reader.ReadNestedNameSpecifierLoc(F, Record, Idx); in VisitNamespaceAliasDecl()
1023 D->Namespace = ReadDeclAs<NamedDecl>(Record, Idx); in VisitNamespaceAliasDecl()
1026 void ASTDeclReader::VisitUsingDecl(UsingDecl *D) { in VisitUsingDecl() argument
1027 VisitNamedDecl(D); in VisitUsingDecl()
1028 D->setUsingLocation(ReadSourceLocation(Record, Idx)); in VisitUsingDecl()
1029 D->QualifierLoc = Reader.ReadNestedNameSpecifierLoc(F, Record, Idx); in VisitUsingDecl()
1030 ReadDeclarationNameLoc(D->DNLoc, D->getDeclName(), Record, Idx); in VisitUsingDecl()
1031 D->FirstUsingShadow.setPointer(ReadDeclAs<UsingShadowDecl>(Record, Idx)); in VisitUsingDecl()
1032 D->setTypeName(Record[Idx++]); in VisitUsingDecl()
1034 Reader.getContext().setInstantiatedFromUsingDecl(D, Pattern); in VisitUsingDecl()
1037 void ASTDeclReader::VisitUsingShadowDecl(UsingShadowDecl *D) { in VisitUsingShadowDecl() argument
1038 VisitNamedDecl(D); in VisitUsingShadowDecl()
1039 D->setTargetDecl(ReadDeclAs<NamedDecl>(Record, Idx)); in VisitUsingShadowDecl()
1040 D->UsingOrNextShadow = ReadDeclAs<NamedDecl>(Record, Idx); in VisitUsingShadowDecl()
1043 Reader.getContext().setInstantiatedFromUsingShadowDecl(D, Pattern); in VisitUsingShadowDecl()
1046 void ASTDeclReader::VisitUsingDirectiveDecl(UsingDirectiveDecl *D) { in VisitUsingDirectiveDecl() argument
1047 VisitNamedDecl(D); in VisitUsingDirectiveDecl()
1048 D->UsingLoc = ReadSourceLocation(Record, Idx); in VisitUsingDirectiveDecl()
1049 D->NamespaceLoc = ReadSourceLocation(Record, Idx); in VisitUsingDirectiveDecl()
1050 D->QualifierLoc = Reader.ReadNestedNameSpecifierLoc(F, Record, Idx); in VisitUsingDirectiveDecl()
1051 D->NominatedNamespace = ReadDeclAs<NamedDecl>(Record, Idx); in VisitUsingDirectiveDecl()
1052 D->CommonAncestor = ReadDeclAs<DeclContext>(Record, Idx); in VisitUsingDirectiveDecl()
1055 void ASTDeclReader::VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D) { in VisitUnresolvedUsingValueDecl() argument
1056 VisitValueDecl(D); in VisitUnresolvedUsingValueDecl()
1057 D->setUsingLoc(ReadSourceLocation(Record, Idx)); in VisitUnresolvedUsingValueDecl()
1058 D->QualifierLoc = Reader.ReadNestedNameSpecifierLoc(F, Record, Idx); in VisitUnresolvedUsingValueDecl()
1059 ReadDeclarationNameLoc(D->DNLoc, D->getDeclName(), Record, Idx); in VisitUnresolvedUsingValueDecl()
1063 UnresolvedUsingTypenameDecl *D) { in VisitUnresolvedUsingTypenameDecl() argument
1064 VisitTypeDecl(D); in VisitUnresolvedUsingTypenameDecl()
1065 D->TypenameLocation = ReadSourceLocation(Record, Idx); in VisitUnresolvedUsingTypenameDecl()
1066 D->QualifierLoc = Reader.ReadNestedNameSpecifierLoc(F, Record, Idx); in VisitUnresolvedUsingTypenameDecl()
1149 void ASTDeclReader::VisitCXXRecordDecl(CXXRecordDecl *D) { in VisitCXXRecordDecl() argument
1150 VisitRecordDecl(D); in VisitCXXRecordDecl()
1158 D->DefinitionData = new (C) CXXRecordDecl::LambdaDefinitionData(D, false); in VisitCXXRecordDecl()
1160 D->DefinitionData = new (C) struct CXXRecordDecl::DefinitionData(D); in VisitCXXRecordDecl()
1165 D->getCanonicalDecl()->DefinitionData = D->DefinitionData; in VisitCXXRecordDecl()
1167 ReadCXXDefinitionData(*D->DefinitionData, Record, Idx); in VisitCXXRecordDecl()
1172 Reader.PendingDefinitions.insert(D); in VisitCXXRecordDecl()
1175 D->DefinitionData = D->getCanonicalDecl()->DefinitionData; in VisitCXXRecordDecl()
1185 D->TemplateOrInstantiation = ReadDeclAs<ClassTemplateDecl>(Record, Idx); in VisitCXXRecordDecl()
1193 D->TemplateOrInstantiation = MSI; in VisitCXXRecordDecl()
1200 if (D->IsCompleteDefinition) { in VisitCXXRecordDecl()
1202 C.KeyFunctions[D] = Key; in VisitCXXRecordDecl()
1206 void ASTDeclReader::VisitCXXMethodDecl(CXXMethodDecl *D) { in VisitCXXMethodDecl() argument
1207 VisitFunctionDecl(D); in VisitCXXMethodDecl()
1213 Reader.getContext().addOverriddenMethod(D, MD); in VisitCXXMethodDecl()
1217 void ASTDeclReader::VisitCXXConstructorDecl(CXXConstructorDecl *D) { in VisitCXXConstructorDecl() argument
1218 VisitCXXMethodDecl(D); in VisitCXXConstructorDecl()
1220 D->IsExplicitSpecified = Record[Idx++]; in VisitCXXConstructorDecl()
1221 D->ImplicitlyDefined = Record[Idx++]; in VisitCXXConstructorDecl()
1222 llvm::tie(D->CtorInitializers, D->NumCtorInitializers) in VisitCXXConstructorDecl()
1226 void ASTDeclReader::VisitCXXDestructorDecl(CXXDestructorDecl *D) { in VisitCXXDestructorDecl() argument
1227 VisitCXXMethodDecl(D); in VisitCXXDestructorDecl()
1229 D->ImplicitlyDefined = Record[Idx++]; in VisitCXXDestructorDecl()
1230 D->OperatorDelete = ReadDeclAs<FunctionDecl>(Record, Idx); in VisitCXXDestructorDecl()
1233 void ASTDeclReader::VisitCXXConversionDecl(CXXConversionDecl *D) { in VisitCXXConversionDecl() argument
1234 VisitCXXMethodDecl(D); in VisitCXXConversionDecl()
1235 D->IsExplicitSpecified = Record[Idx++]; in VisitCXXConversionDecl()
1238 void ASTDeclReader::VisitImportDecl(ImportDecl *D) { in VisitImportDecl() argument
1239 VisitDecl(D); in VisitImportDecl()
1240 D->ImportedAndComplete.setPointer(readModule(Record, Idx)); in VisitImportDecl()
1241 D->ImportedAndComplete.setInt(Record[Idx++]); in VisitImportDecl()
1242 SourceLocation *StoredLocs = reinterpret_cast<SourceLocation *>(D + 1); in VisitImportDecl()
1247 void ASTDeclReader::VisitAccessSpecDecl(AccessSpecDecl *D) { in VisitAccessSpecDecl() argument
1248 VisitDecl(D); in VisitAccessSpecDecl()
1249 D->setColonLoc(ReadSourceLocation(Record, Idx)); in VisitAccessSpecDecl()
1252 void ASTDeclReader::VisitFriendDecl(FriendDecl *D) { in VisitFriendDecl() argument
1253 VisitDecl(D); in VisitFriendDecl()
1255 D->Friend = GetTypeSourceInfo(Record, Idx); in VisitFriendDecl()
1257 D->Friend = ReadDeclAs<NamedDecl>(Record, Idx); in VisitFriendDecl()
1258 D->NextFriend = Record[Idx++]; in VisitFriendDecl()
1259 D->UnsupportedFriend = (Record[Idx++] != 0); in VisitFriendDecl()
1260 D->FriendLoc = ReadSourceLocation(Record, Idx); in VisitFriendDecl()
1263 void ASTDeclReader::VisitFriendTemplateDecl(FriendTemplateDecl *D) { in VisitFriendTemplateDecl() argument
1264 VisitDecl(D); in VisitFriendTemplateDecl()
1266 D->NumParams = NumParams; in VisitFriendTemplateDecl()
1267 D->Params = new TemplateParameterList*[NumParams]; in VisitFriendTemplateDecl()
1269 D->Params[i] = Reader.ReadTemplateParameterList(F, Record, Idx); in VisitFriendTemplateDecl()
1271 D->Friend = ReadDeclAs<NamedDecl>(Record, Idx); in VisitFriendTemplateDecl()
1273 D->Friend = GetTypeSourceInfo(Record, Idx); in VisitFriendTemplateDecl()
1274 D->FriendLoc = ReadSourceLocation(Record, Idx); in VisitFriendTemplateDecl()
1277 void ASTDeclReader::VisitTemplateDecl(TemplateDecl *D) { in VisitTemplateDecl() argument
1278 VisitNamedDecl(D); in VisitTemplateDecl()
1283 D->init(TemplatedDecl, TemplateParams); in VisitTemplateDecl()
1287 ASTDeclReader::VisitRedeclarableTemplateDecl(RedeclarableTemplateDecl *D) { in VisitRedeclarableTemplateDecl() argument
1288 RedeclarableResult Redecl = VisitRedeclarable(D); in VisitRedeclarableTemplateDecl()
1292 RedeclarableTemplateDecl *CanonD = D->getCanonicalDecl(); in VisitRedeclarableTemplateDecl()
1297 D->Common = CanonD->Common; in VisitRedeclarableTemplateDecl()
1304 assert(RTD->getKind() == D->getKind() && in VisitRedeclarableTemplateDecl()
1306 D->setInstantiatedFromMemberTemplate(RTD); in VisitRedeclarableTemplateDecl()
1308 D->setMemberSpecialization(); in VisitRedeclarableTemplateDecl()
1312 VisitTemplateDecl(D); in VisitRedeclarableTemplateDecl()
1313 D->IdentifierNamespace = Record[Idx++]; in VisitRedeclarableTemplateDecl()
1318 void ASTDeclReader::VisitClassTemplateDecl(ClassTemplateDecl *D) { in VisitClassTemplateDecl() argument
1319 RedeclarableResult Redecl = VisitRedeclarableTemplateDecl(D); in VisitClassTemplateDecl()
1342 ClassTemplateDecl::Common *CommonPtr = D->getCommonPtr(); in VisitClassTemplateDecl()
1355 ClassTemplateSpecializationDecl *D) { in VisitClassTemplateSpecializationDecl() argument
1356 VisitCXXRecordDecl(D); in VisitClassTemplateSpecializationDecl()
1361 D->SpecializedTemplate = CTD; in VisitClassTemplateSpecializationDecl()
1374 D->SpecializedTemplate = PS; in VisitClassTemplateSpecializationDecl()
1385 D->ExplicitInfo = ExplicitInfo; in VisitClassTemplateSpecializationDecl()
1390 D->TemplateArgs = TemplateArgumentList::CreateCopy(C, TemplArgs.data(), in VisitClassTemplateSpecializationDecl()
1392 D->PointOfInstantiation = ReadSourceLocation(Record, Idx); in VisitClassTemplateSpecializationDecl()
1393 D->SpecializationKind = (TemplateSpecializationKind)Record[Idx++]; in VisitClassTemplateSpecializationDecl()
1395 if (D->isCanonicalDecl()) { // It's kept in the folding set. in VisitClassTemplateSpecializationDecl()
1398 = dyn_cast<ClassTemplatePartialSpecializationDecl>(D)) { in VisitClassTemplateSpecializationDecl()
1401 CanonPattern->getCommonPtr()->Specializations.InsertNode(D); in VisitClassTemplateSpecializationDecl()
1407 ClassTemplatePartialSpecializationDecl *D) { in VisitClassTemplatePartialSpecializationDecl() argument
1408 VisitClassTemplateSpecializationDecl(D); in VisitClassTemplatePartialSpecializationDecl()
1411 D->TemplateParams = Reader.ReadTemplateParameterList(F, Record, Idx); in VisitClassTemplatePartialSpecializationDecl()
1415 D->NumArgsAsWritten = NumArgs; in VisitClassTemplatePartialSpecializationDecl()
1416 D->ArgsAsWritten = new (C) TemplateArgumentLoc[NumArgs]; in VisitClassTemplatePartialSpecializationDecl()
1418 D->ArgsAsWritten[i] = Reader.ReadTemplateArgumentLoc(F, Record, Idx); in VisitClassTemplatePartialSpecializationDecl()
1421 D->SequenceNumber = Record[Idx++]; in VisitClassTemplatePartialSpecializationDecl()
1424 if (D->getPreviousDecl() == 0) { in VisitClassTemplatePartialSpecializationDecl()
1425 D->InstantiatedFromMember.setPointer( in VisitClassTemplatePartialSpecializationDecl()
1427 D->InstantiatedFromMember.setInt(Record[Idx++]); in VisitClassTemplatePartialSpecializationDecl()
1432 ClassScopeFunctionSpecializationDecl *D) { in VisitClassScopeFunctionSpecializationDecl() argument
1433 VisitDecl(D); in VisitClassScopeFunctionSpecializationDecl()
1434 D->Specialization = ReadDeclAs<CXXMethodDecl>(Record, Idx); in VisitClassScopeFunctionSpecializationDecl()
1437 void ASTDeclReader::VisitFunctionTemplateDecl(FunctionTemplateDecl *D) { in VisitFunctionTemplateDecl() argument
1438 RedeclarableResult Redecl = VisitRedeclarableTemplateDecl(D); in VisitFunctionTemplateDecl()
1452 void ASTDeclReader::VisitTemplateTypeParmDecl(TemplateTypeParmDecl *D) { in VisitTemplateTypeParmDecl() argument
1453 VisitTypeDecl(D); in VisitTemplateTypeParmDecl()
1455 D->setDeclaredWithTypename(Record[Idx++]); in VisitTemplateTypeParmDecl()
1459 D->setDefaultArgument(DefArg, Inherited); in VisitTemplateTypeParmDecl()
1462 void ASTDeclReader::VisitNonTypeTemplateParmDecl(NonTypeTemplateParmDecl *D) { in VisitNonTypeTemplateParmDecl() argument
1463 VisitDeclaratorDecl(D); in VisitNonTypeTemplateParmDecl()
1465 D->setDepth(Record[Idx++]); in VisitNonTypeTemplateParmDecl()
1466 D->setPosition(Record[Idx++]); in VisitNonTypeTemplateParmDecl()
1467 if (D->isExpandedParameterPack()) { in VisitNonTypeTemplateParmDecl()
1468 void **Data = reinterpret_cast<void **>(D + 1); in VisitNonTypeTemplateParmDecl()
1469 for (unsigned I = 0, N = D->getNumExpansionTypes(); I != N; ++I) { in VisitNonTypeTemplateParmDecl()
1475 D->ParameterPack = Record[Idx++]; in VisitNonTypeTemplateParmDecl()
1479 D->setDefaultArgument(DefArg, Inherited); in VisitNonTypeTemplateParmDecl()
1484 void ASTDeclReader::VisitTemplateTemplateParmDecl(TemplateTemplateParmDecl *D) { in VisitTemplateTemplateParmDecl() argument
1485 VisitTemplateDecl(D); in VisitTemplateTemplateParmDecl()
1487 D->setDepth(Record[Idx++]); in VisitTemplateTemplateParmDecl()
1488 D->setPosition(Record[Idx++]); in VisitTemplateTemplateParmDecl()
1489 if (D->isExpandedParameterPack()) { in VisitTemplateTemplateParmDecl()
1490 void **Data = reinterpret_cast<void **>(D + 1); in VisitTemplateTemplateParmDecl()
1491 for (unsigned I = 0, N = D->getNumExpansionTemplateParameters(); in VisitTemplateTemplateParmDecl()
1498 D->setDefaultArgument(Arg, IsInherited); in VisitTemplateTemplateParmDecl()
1499 D->ParameterPack = Record[Idx++]; in VisitTemplateTemplateParmDecl()
1503 void ASTDeclReader::VisitTypeAliasTemplateDecl(TypeAliasTemplateDecl *D) { in VisitTypeAliasTemplateDecl() argument
1504 VisitRedeclarableTemplateDecl(D); in VisitTypeAliasTemplateDecl()
1507 void ASTDeclReader::VisitStaticAssertDecl(StaticAssertDecl *D) { in VisitStaticAssertDecl() argument
1508 VisitDecl(D); in VisitStaticAssertDecl()
1509 D->AssertExprAndFailed.setPointer(Reader.ReadExpr(F)); in VisitStaticAssertDecl()
1510 D->AssertExprAndFailed.setInt(Record[Idx++]); in VisitStaticAssertDecl()
1511 D->Message = cast<StringLiteral>(Reader.ReadExpr(F)); in VisitStaticAssertDecl()
1512 D->RParenLoc = ReadSourceLocation(Record, Idx); in VisitStaticAssertDecl()
1524 ASTDeclReader::VisitRedeclarable(Redeclarable<T> *D) { in VisitRedeclarable() argument
1533 if (FirstDecl != D) { in VisitRedeclarable()
1538 D->RedeclLink = Redeclarable<T>::PreviousDeclLink(FirstDecl); in VisitRedeclarable()
1542 Reader.RedeclsDeserialized.insert(static_cast<T *>(D)); in VisitRedeclarable()
1552 void ASTDeclReader::mergeRedeclarable(Redeclarable<T> *D, in mergeRedeclarable() argument
1558 if (FindExistingResult ExistingRes = findExisting(static_cast<T*>(D))) { in mergeRedeclarable()
1561 T *DCanon = static_cast<T*>(D)->getCanonicalDecl(); in mergeRedeclarable()
1566 D->RedeclLink = Redeclarable<T>::PreviousDeclLink(ExistingCanon); in mergeRedeclarable()
1570 = dyn_cast<NamespaceDecl>(static_cast<T*>(D))) { in mergeRedeclarable()
1590 if (DCanon == static_cast<T*>(D)) { in mergeRedeclarable()
1638 inline void ASTReader::LoadedDecl(unsigned Index, Decl *D) { in LoadedDecl() argument
1640 DeclsLoaded[Index] = D; in LoadedDecl()
1650 static bool isConsumerInterestedIn(Decl *D) { in isConsumerInterestedIn() argument
1654 if (isa<FileScopeAsmDecl>(D) || in isConsumerInterestedIn()
1655 isa<ObjCProtocolDecl>(D) || in isConsumerInterestedIn()
1656 isa<ObjCImplDecl>(D)) in isConsumerInterestedIn()
1658 if (VarDecl *Var = dyn_cast<VarDecl>(D)) in isConsumerInterestedIn()
1661 if (FunctionDecl *Func = dyn_cast<FunctionDecl>(D)) in isConsumerInterestedIn()
1773 ASTDeclReader::FindExistingResult ASTDeclReader::findExisting(NamedDecl *D) { in findExisting() argument
1774 DeclarationName Name = D->getDeclName(); in findExisting()
1777 FindExistingResult Result(Reader, D, /*Existing=*/0); in findExisting()
1782 DeclContext *DC = D->getDeclContext()->getRedeclContext(); in findExisting()
1791 if (isSameEntity(*I, D)) in findExisting()
1792 return FindExistingResult(Reader, D, *I); in findExisting()
1799 if (isSameEntity(*R.first, D)) in findExisting()
1800 return FindExistingResult(Reader, D, *R.first); in findExisting()
1804 return FindExistingResult(Reader, D, /*Existing=*/0); in findExisting()
1807 void ASTDeclReader::attachPreviousDecl(Decl *D, Decl *previous) { in attachPreviousDecl() argument
1808 assert(D && previous); in attachPreviousDecl()
1809 if (TagDecl *TD = dyn_cast<TagDecl>(D)) { in attachPreviousDecl()
1811 } else if (FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) { in attachPreviousDecl()
1813 } else if (VarDecl *VD = dyn_cast<VarDecl>(D)) { in attachPreviousDecl()
1815 } else if (TypedefNameDecl *TD = dyn_cast<TypedefNameDecl>(D)) { in attachPreviousDecl()
1817 } else if (ObjCInterfaceDecl *ID = dyn_cast<ObjCInterfaceDecl>(D)) { in attachPreviousDecl()
1819 } else if (ObjCProtocolDecl *PD = dyn_cast<ObjCProtocolDecl>(D)) { in attachPreviousDecl()
1821 } else if (NamespaceDecl *ND = dyn_cast<NamespaceDecl>(D)) { in attachPreviousDecl()
1824 RedeclarableTemplateDecl *TD = cast<RedeclarableTemplateDecl>(D); in attachPreviousDecl()
1829 void ASTDeclReader::attachLatestDecl(Decl *D, Decl *Latest) { in attachLatestDecl() argument
1830 assert(D && Latest); in attachLatestDecl()
1831 if (TagDecl *TD = dyn_cast<TagDecl>(D)) { in attachLatestDecl()
1834 } else if (FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) { in attachLatestDecl()
1837 } else if (VarDecl *VD = dyn_cast<VarDecl>(D)) { in attachLatestDecl()
1840 } else if (TypedefNameDecl *TD = dyn_cast<TypedefNameDecl>(D)) { in attachLatestDecl()
1844 } else if (ObjCInterfaceDecl *ID = dyn_cast<ObjCInterfaceDecl>(D)) { in attachLatestDecl()
1848 } else if (ObjCProtocolDecl *PD = dyn_cast<ObjCProtocolDecl>(D)) { in attachLatestDecl()
1852 } else if (NamespaceDecl *ND = dyn_cast<NamespaceDecl>(D)) { in attachLatestDecl()
1857 RedeclarableTemplateDecl *TD = cast<RedeclarableTemplateDecl>(D); in attachLatestDecl()
1887 void ASTReader::loadAndAttachPreviousDecl(Decl *D, serialization::DeclID ID) { in loadAndAttachPreviousDecl() argument
1889 ASTDeclReader::attachPreviousDecl(D, previous); in loadAndAttachPreviousDecl()
1913 Decl *D = 0; in ReadDeclRecord() local
1919 D = TypedefDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1922 D = TypeAliasDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1925 D = EnumDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1928 D = RecordDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1931 D = EnumConstantDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1934 D = FunctionDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1937 D = LinkageSpecDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1940 D = LabelDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1943 D = NamespaceDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1946 D = NamespaceAliasDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1949 D = UsingDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1952 D = UsingShadowDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1955 D = UsingDirectiveDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1958 D = UnresolvedUsingValueDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1961 D = UnresolvedUsingTypenameDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1964 D = CXXRecordDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1967 D = CXXMethodDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1970 D = CXXConstructorDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1973 D = CXXDestructorDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1976 D = CXXConversionDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1979 D = AccessSpecDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1982 D = FriendDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1985 D = FriendTemplateDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1988 D = ClassTemplateDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1991 D = ClassTemplateSpecializationDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1994 D = ClassTemplatePartialSpecializationDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
1997 D = ClassScopeFunctionSpecializationDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2000 D = FunctionTemplateDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2003 D = TemplateTypeParmDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2006 D = NonTypeTemplateParmDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2009 D = NonTypeTemplateParmDecl::CreateDeserialized(Context, ID, Record[Idx++]); in ReadDeclRecord()
2012 D = TemplateTemplateParmDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2015 D = TemplateTemplateParmDecl::CreateDeserialized(Context, ID, in ReadDeclRecord()
2019 D = TypeAliasTemplateDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2022 D = StaticAssertDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2025 D = ObjCMethodDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2028 D = ObjCInterfaceDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2031 D = ObjCIvarDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2034 D = ObjCProtocolDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2037 D = ObjCAtDefsFieldDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2040 D = ObjCCategoryDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2043 D = ObjCCategoryImplDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2046 D = ObjCImplementationDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2049 D = ObjCCompatibleAliasDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2052 D = ObjCPropertyDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2055 D = ObjCPropertyImplDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2058 D = FieldDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2061 D = IndirectFieldDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2064 D = VarDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2067 D = ImplicitParamDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2070 D = ParmVarDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2073 D = FileScopeAsmDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2076 D = BlockDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
2084 D = ImportDecl::CreateDeserialized(Context, ID, Record.back()); in ReadDeclRecord()
2088 assert(D && "Unknown declaration reading AST file"); in ReadDeclRecord()
2089 LoadedDecl(Index, D); in ReadDeclRecord()
2093 D->setDeclContext(Context.getTranslationUnitDecl()); in ReadDeclRecord()
2094 Reader.Visit(D); in ReadDeclRecord()
2098 if (DeclContext *DC = dyn_cast<DeclContext>(D)) { in ReadDeclRecord()
2130 loadDeclUpdateRecords(ID, D); in ReadDeclRecord()
2133 if (ObjCInterfaceDecl *Class = dyn_cast<ObjCInterfaceDecl>(D)) in ReadDeclRecord()
2141 if (isConsumerInterestedIn(D)) in ReadDeclRecord()
2142 InterestingDecls.push_back(D); in ReadDeclRecord()
2144 return D; in ReadDeclRecord()
2147 void ASTReader::loadDeclUpdateRecords(serialization::DeclID ID, Decl *D) { in loadDeclUpdateRecords() argument
2169 Reader.UpdateDecl(D, *F, Record); in loadDeclUpdateRecords()
2219 void addToChain(Decl *D) { in addToChain() argument
2220 if (!D) in addToChain()
2223 if (Deserialized.erase(D)) in addToChain()
2224 Chain.push_back(D); in addToChain()
2277 Decl *D = GetDecl(ID); in loadPendingDeclChain() local
2278 Decl *CanonDecl = D->getCanonicalDecl(); in loadPendingDeclChain()
2283 if (D == CanonDecl) { in loadPendingDeclChain()
2447 ObjCInterfaceDecl *D, in loadObjCCategories() argument
2449 ObjCCategoriesVisitor Visitor(*this, ID, D, CategoriesDeserialized, in loadObjCCategories()
2454 void ASTDeclReader::UpdateDecl(Decl *D, ModuleFile &ModuleFile, in UpdateDecl() argument
2460 cast<CXXRecordDecl>(D)->addedMember(Reader.ReadDecl(ModuleFile, Record, Idx)); in UpdateDecl()
2476 if (TranslationUnitDecl *TU = dyn_cast<TranslationUnitDecl>(D)) in UpdateDecl()
2479 cast<NamespaceDecl>(D)->setAnonymousNamespace(Anon); in UpdateDecl()
2485 cast<VarDecl>(D)->getMemberSpecializationInfo()->setPointOfInstantiation( in UpdateDecl()