From: Douglas Gregor Date: Sun, 1 Jan 2012 22:06:18 +0000 (+0000) Subject: Eliminate the ForwardDecl/InitiallyForwardDecl bits from ObjCProtocolDecl. They are... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c9d3c7edb513e9b8a6ab65b04133653e71d7a72b;p=clang Eliminate the ForwardDecl/InitiallyForwardDecl bits from ObjCProtocolDecl. They are no longer needed git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147419 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/DeclObjC.h b/include/clang/AST/DeclObjC.h index 157544ff86..5f6bdec1cf 100644 --- a/include/clang/AST/DeclObjC.h +++ b/include/clang/AST/DeclObjC.h @@ -1077,9 +1077,6 @@ class ObjCProtocolDecl : public ObjCContainerDecl, DefinitionData *Data; - bool InitiallyForwardDecl : 1; - bool isForwardProtoDecl : 1; // declared with @protocol. - SourceLocation EndLoc; // marks the '>' or identifier. DefinitionData &data() const { @@ -1089,8 +1086,7 @@ class ObjCProtocolDecl : public ObjCContainerDecl, ObjCProtocolDecl(DeclContext *DC, IdentifierInfo *Id, SourceLocation nameLoc, SourceLocation atStartLoc, - ObjCProtocolDecl *PrevDecl, - bool isForwardDecl); + ObjCProtocolDecl *PrevDecl); void allocateDefinitionData(); @@ -1104,8 +1100,7 @@ public: IdentifierInfo *Id, SourceLocation nameLoc, SourceLocation atStartLoc, - ObjCProtocolDecl *PrevDecl, - bool isForwardDecl); + ObjCProtocolDecl *PrevDecl); const ObjCProtocolList &getReferencedProtocols() const { assert(hasDefinition() && "No definition available!"); @@ -1186,11 +1181,6 @@ public: /// \brief Starts the definition of this Objective-C protocol. void startDefinition(); - /// \brief True if it was initially a forward reference. - /// Differs with \see isForwardDecl in that \see isForwardDecl will change to - /// false when we see the definition, but this will remain true. - bool isInitiallyForwardDecl() const { return InitiallyForwardDecl; } - // Location information, modeled after the Stmt API. SourceLocation getLocStart() const { return getAtStartLoc(); } // '@'protocol SourceLocation getLocEnd() const { return EndLoc; } diff --git a/lib/AST/ASTImporter.cpp b/lib/AST/ASTImporter.cpp index 6ee8ba3a5f..82307e8e98 100644 --- a/lib/AST/ASTImporter.cpp +++ b/lib/AST/ASTImporter.cpp @@ -3123,8 +3123,7 @@ Decl *ASTNodeImporter::VisitObjCProtocolDecl(ObjCProtocolDecl *D) { ToProto = ObjCProtocolDecl::Create(Importer.getToContext(), DC, Name.getAsIdentifierInfo(), Loc, Importer.Import(D->getAtStartLoc()), - /*PrevDecl=*/0, - D->isInitiallyForwardDecl()); + /*PrevDecl=*/0); ToProto->setLexicalDeclContext(LexicalDC); LexicalDC->addDeclInternal(ToProto); } diff --git a/lib/AST/DeclObjC.cpp b/lib/AST/DeclObjC.cpp index aabea0434c..59bfdc6b6e 100644 --- a/lib/AST/DeclObjC.cpp +++ b/lib/AST/DeclObjC.cpp @@ -970,12 +970,8 @@ void ObjCProtocolDecl::anchor() { } ObjCProtocolDecl::ObjCProtocolDecl(DeclContext *DC, IdentifierInfo *Id, SourceLocation nameLoc, SourceLocation atStartLoc, - ObjCProtocolDecl *PrevDecl, - bool isForwardDecl) - : ObjCContainerDecl(ObjCProtocol, DC, Id, nameLoc, atStartLoc), - Data(0), - InitiallyForwardDecl(isForwardDecl), - isForwardProtoDecl(isForwardDecl) + ObjCProtocolDecl *PrevDecl) + : ObjCContainerDecl(ObjCProtocol, DC, Id, nameLoc, atStartLoc), Data() { setPreviousDeclaration(PrevDecl); if (PrevDecl) @@ -986,11 +982,9 @@ ObjCProtocolDecl *ObjCProtocolDecl::Create(ASTContext &C, DeclContext *DC, IdentifierInfo *Id, SourceLocation nameLoc, SourceLocation atStartLoc, - ObjCProtocolDecl *PrevDecl, - bool isForwardDecl) { + ObjCProtocolDecl *PrevDecl) { ObjCProtocolDecl *Result - = new (C) ObjCProtocolDecl(DC, Id, nameLoc, atStartLoc, PrevDecl, - isForwardDecl); + = new (C) ObjCProtocolDecl(DC, Id, nameLoc, atStartLoc, PrevDecl); return Result; } diff --git a/lib/Sema/SemaDeclObjC.cpp b/lib/Sema/SemaDeclObjC.cpp index 51d282a546..e76971188f 100644 --- a/lib/Sema/SemaDeclObjC.cpp +++ b/lib/Sema/SemaDeclObjC.cpp @@ -583,8 +583,7 @@ Sema::ActOnStartProtocolInterface(SourceLocation AtProtoInterfaceLoc, // FIXME: Can we turn this into an error? PDecl = ObjCProtocolDecl::Create(Context, CurContext, ProtocolName, ProtocolLoc, AtProtoInterfaceLoc, - /*PrevDecl=*/0, - /*isForwardDecl=*/false); + /*PrevDecl=*/0); PDecl->startDefinition(); } else { if (PrevDecl) { @@ -599,8 +598,7 @@ Sema::ActOnStartProtocolInterface(SourceLocation AtProtoInterfaceLoc, // Create the new declaration. PDecl = ObjCProtocolDecl::Create(Context, CurContext, ProtocolName, ProtocolLoc, AtProtoInterfaceLoc, - /*PrevDecl=*/PrevDecl, - /*isForwardDecl=*/false); + /*PrevDecl=*/PrevDecl); PushOnScopeChains(PDecl, TUScope); PDecl->startDefinition(); @@ -707,7 +705,7 @@ Sema::ActOnForwardProtocolDeclaration(SourceLocation AtProtocolLoc, ObjCProtocolDecl *PDecl = ObjCProtocolDecl::Create(Context, CurContext, Ident, IdentList[i].second, AtProtocolLoc, - PrevDecl, /*isForwardDecl=*/true); + PrevDecl); PushOnScopeChains(PDecl, TUScope); CheckObjCDeclScope(PDecl); diff --git a/lib/Serialization/ASTReaderDecl.cpp b/lib/Serialization/ASTReaderDecl.cpp index 12436c5c4f..46dcc8757d 100644 --- a/lib/Serialization/ASTReaderDecl.cpp +++ b/lib/Serialization/ASTReaderDecl.cpp @@ -764,8 +764,6 @@ void ASTDeclReader::VisitObjCProtocolDecl(ObjCProtocolDecl *PD) { RedeclarableResult Redecl = VisitRedeclarable(PD); VisitObjCContainerDecl(PD); - PD->InitiallyForwardDecl = Record[Idx++]; - PD->isForwardProtoDecl = Record[Idx++]; PD->setLocEnd(ReadSourceLocation(Record, Idx)); // Determine whether we need to merge this declaration with another @protocol @@ -1976,7 +1974,7 @@ Decl *ASTReader::ReadDeclRecord(DeclID ID) { break; case DECL_OBJC_PROTOCOL: D = ObjCProtocolDecl::Create(Context, 0, 0, SourceLocation(), - SourceLocation(), 0, false); + SourceLocation(), 0); break; case DECL_OBJC_AT_DEFS_FIELD: D = ObjCAtDefsFieldDecl::Create(Context, 0, SourceLocation(), diff --git a/lib/Serialization/ASTWriterDecl.cpp b/lib/Serialization/ASTWriterDecl.cpp index b0c54e391b..4701b8fc38 100644 --- a/lib/Serialization/ASTWriterDecl.cpp +++ b/lib/Serialization/ASTWriterDecl.cpp @@ -518,8 +518,6 @@ void ASTDeclWriter::VisitObjCIvarDecl(ObjCIvarDecl *D) { void ASTDeclWriter::VisitObjCProtocolDecl(ObjCProtocolDecl *D) { VisitRedeclarable(D); VisitObjCContainerDecl(D); - Record.push_back(D->isInitiallyForwardDecl()); - Record.push_back(D->isForwardProtoDecl); Writer.AddSourceLocation(D->getLocEnd(), Record); ObjCProtocolDecl *Def = D->getDefinition(); diff --git a/tools/libclang/IndexingContext.h b/tools/libclang/IndexingContext.h index 0091fd1f8c..b58e3b690e 100644 --- a/tools/libclang/IndexingContext.h +++ b/tools/libclang/IndexingContext.h @@ -142,7 +142,7 @@ struct ObjCProtocolDeclInfo : public ObjCContainerDeclInfo { ObjCProtocolDeclInfo(const ObjCProtocolDecl *D) : ObjCContainerDeclInfo(Info_ObjCProtocol, /*isForwardRef=*/false, - /*isRedeclaration=*/D->isInitiallyForwardDecl(), + /*isRedeclaration=*/D->getPreviousDeclaration(), /*isImplementation=*/false) { } static bool classof(const DeclInfo *D) {