On May 3, 2013, at 11:12 AM, Jordan Rose <[email protected]> wrote:
> Why is this in @implementation? It's not legal to provide a superclass name > there, only in @interface, right? > > Jordan This is legal: @interface S @end @interface I : S @end @implementation I : S @end > > > On May 3, 2013, at 11:05 , Argyrios Kyrtzidis <[email protected]> wrote: > >> Author: akirtzidis >> Date: Fri May 3 13:05:44 2013 >> New Revision: 181039 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=181039&view=rev >> Log: >> Keep track of an @implementation's super class name location, if one was >> provided. >> >> Modified: >> cfe/trunk/include/clang/AST/DeclObjC.h >> cfe/trunk/lib/AST/ASTImporter.cpp >> cfe/trunk/lib/AST/DeclObjC.cpp >> cfe/trunk/lib/Sema/SemaDeclObjC.cpp >> cfe/trunk/lib/Serialization/ASTReaderDecl.cpp >> cfe/trunk/lib/Serialization/ASTWriterDecl.cpp >> >> Modified: cfe/trunk/include/clang/AST/DeclObjC.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclObjC.h?rev=181039&r1=181038&r2=181039&view=diff >> ============================================================================== >> --- cfe/trunk/include/clang/AST/DeclObjC.h (original) >> +++ cfe/trunk/include/clang/AST/DeclObjC.h Fri May 3 13:05:44 2013 >> @@ -1798,6 +1798,8 @@ class ObjCImplementationDecl : public Ob >> virtual void anchor(); >> /// Implementation Class's super class. >> ObjCInterfaceDecl *SuperClass; >> + SourceLocation SuperLoc; >> + >> /// \@implementation may have private ivars. >> SourceLocation IvarLBraceLoc; >> SourceLocation IvarRBraceLoc; >> @@ -1818,10 +1820,11 @@ class ObjCImplementationDecl : public Ob >> ObjCInterfaceDecl *classInterface, >> ObjCInterfaceDecl *superDecl, >> SourceLocation nameLoc, SourceLocation atStartLoc, >> + SourceLocation superLoc = SourceLocation(), >> SourceLocation IvarLBraceLoc=SourceLocation(), >> SourceLocation IvarRBraceLoc=SourceLocation()) >> : ObjCImplDecl(ObjCImplementation, DC, classInterface, nameLoc, >> atStartLoc), >> - SuperClass(superDecl), IvarLBraceLoc(IvarLBraceLoc), >> + SuperClass(superDecl), SuperLoc(superLoc), >> IvarLBraceLoc(IvarLBraceLoc), >> IvarRBraceLoc(IvarRBraceLoc), >> IvarInitializers(0), NumIvarInitializers(0), >> HasNonZeroConstructors(false), HasDestructors(false) {} >> @@ -1831,6 +1834,7 @@ public: >> ObjCInterfaceDecl *superDecl, >> SourceLocation nameLoc, >> SourceLocation atStartLoc, >> + SourceLocation superLoc = >> SourceLocation(), >> SourceLocation >> IvarLBraceLoc=SourceLocation(), >> SourceLocation >> IvarRBraceLoc=SourceLocation()); >> >> @@ -1903,6 +1907,7 @@ public: >> >> const ObjCInterfaceDecl *getSuperClass() const { return SuperClass; } >> ObjCInterfaceDecl *getSuperClass() { return SuperClass; } >> + SourceLocation getSuperLoc() const { return SuperLoc; } >> >> void setSuperClass(ObjCInterfaceDecl * superCls) { SuperClass = superCls; } >> >> >> Modified: cfe/trunk/lib/AST/ASTImporter.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTImporter.cpp?rev=181039&r1=181038&r2=181039&view=diff >> ============================================================================== >> --- cfe/trunk/lib/AST/ASTImporter.cpp (original) >> +++ cfe/trunk/lib/AST/ASTImporter.cpp Fri May 3 13:05:44 2013 >> @@ -3650,6 +3650,7 @@ Decl *ASTNodeImporter::VisitObjCImplemen >> Iface, Super, >> Importer.Import(D->getLocation()), >> >> Importer.Import(D->getAtStartLoc()), >> + Importer.Import(D->getSuperLoc()), >> >> Importer.Import(D->getIvarLBraceLoc()), >> >> Importer.Import(D->getIvarRBraceLoc())); >> >> >> Modified: cfe/trunk/lib/AST/DeclObjC.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclObjC.cpp?rev=181039&r1=181038&r2=181039&view=diff >> ============================================================================== >> --- cfe/trunk/lib/AST/DeclObjC.cpp (original) >> +++ cfe/trunk/lib/AST/DeclObjC.cpp Fri May 3 13:05:44 2013 >> @@ -1648,12 +1648,13 @@ ObjCImplementationDecl::Create(ASTContex >> ObjCInterfaceDecl *SuperDecl, >> SourceLocation nameLoc, >> SourceLocation atStartLoc, >> + SourceLocation superLoc, >> SourceLocation IvarLBraceLoc, >> SourceLocation IvarRBraceLoc) { >> if (ClassInterface && ClassInterface->hasDefinition()) >> ClassInterface = ClassInterface->getDefinition(); >> return new (C) ObjCImplementationDecl(DC, ClassInterface, SuperDecl, >> - nameLoc, atStartLoc, >> + nameLoc, atStartLoc, superLoc, >> IvarLBraceLoc, IvarRBraceLoc); >> } >> >> >> Modified: cfe/trunk/lib/Sema/SemaDeclObjC.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclObjC.cpp?rev=181039&r1=181038&r2=181039&view=diff >> ============================================================================== >> --- cfe/trunk/lib/Sema/SemaDeclObjC.cpp (original) >> +++ cfe/trunk/lib/Sema/SemaDeclObjC.cpp Fri May 3 13:05:44 2013 >> @@ -1045,7 +1045,7 @@ Decl *Sema::ActOnStartClassImplementatio >> >> ObjCImplementationDecl* IMPDecl = >> ObjCImplementationDecl::Create(Context, CurContext, IDecl, SDecl, >> - ClassLoc, AtClassImplLoc); >> + ClassLoc, AtClassImplLoc, SuperClassLoc); >> >> if (CheckObjCDeclScope(IMPDecl)) >> return ActOnObjCContainerStartDefinition(IMPDecl); >> >> Modified: cfe/trunk/lib/Serialization/ASTReaderDecl.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReaderDecl.cpp?rev=181039&r1=181038&r2=181039&view=diff >> ============================================================================== >> --- cfe/trunk/lib/Serialization/ASTReaderDecl.cpp (original) >> +++ cfe/trunk/lib/Serialization/ASTReaderDecl.cpp Fri May 3 13:05:44 2013 >> @@ -849,6 +849,7 @@ void ASTDeclReader::VisitObjCCategoryImp >> void ASTDeclReader::VisitObjCImplementationDecl(ObjCImplementationDecl *D) { >> VisitObjCImplDecl(D); >> D->setSuperClass(ReadDeclAs<ObjCInterfaceDecl>(Record, Idx)); >> + D->SuperLoc = ReadSourceLocation(Record, Idx); >> D->setIvarLBraceLoc(ReadSourceLocation(Record, Idx)); >> D->setIvarRBraceLoc(ReadSourceLocation(Record, Idx)); >> D->setHasNonZeroConstructors(Record[Idx++]); >> >> Modified: cfe/trunk/lib/Serialization/ASTWriterDecl.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriterDecl.cpp?rev=181039&r1=181038&r2=181039&view=diff >> ============================================================================== >> --- cfe/trunk/lib/Serialization/ASTWriterDecl.cpp (original) >> +++ cfe/trunk/lib/Serialization/ASTWriterDecl.cpp Fri May 3 13:05:44 2013 >> @@ -613,6 +613,7 @@ void ASTDeclWriter::VisitObjCCategoryImp >> void ASTDeclWriter::VisitObjCImplementationDecl(ObjCImplementationDecl *D) { >> VisitObjCImplDecl(D); >> Writer.AddDeclRef(D->getSuperClass(), Record); >> + Writer.AddSourceLocation(D->getSuperLoc(), Record); >> Writer.AddSourceLocation(D->getIvarLBraceLoc(), Record); >> Writer.AddSourceLocation(D->getIvarRBraceLoc(), Record); >> Record.push_back(D->hasNonZeroConstructors()); >> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
