diff options
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/AST/DeclObjC.cpp | 6 | ||||
| -rw-r--r-- | clang/lib/Frontend/PCHReader.cpp | 5 | ||||
| -rw-r--r-- | clang/lib/Frontend/PCHWriter.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 7 |
4 files changed, 10 insertions, 10 deletions
diff --git a/clang/lib/AST/DeclObjC.cpp b/clang/lib/AST/DeclObjC.cpp index 49ff6d53c00..bcd2e08f6d6 100644 --- a/clang/lib/AST/DeclObjC.cpp +++ b/clang/lib/AST/DeclObjC.cpp @@ -637,12 +637,6 @@ ObjCImplementationDecl::Create(ASTContext &C, DeclContext *DC, return new (C) ObjCImplementationDecl(DC, L, ClassInterface, SuperDecl); } -/// Destroy - Call destructors and release memory. -void ObjCImplementationDecl::Destroy(ASTContext &C) { - IVars.Destroy(C); - Decl::Destroy(C); -} - //===----------------------------------------------------------------------===// // ObjCCompatibleAliasDecl //===----------------------------------------------------------------------===// diff --git a/clang/lib/Frontend/PCHReader.cpp b/clang/lib/Frontend/PCHReader.cpp index 0ad93dc65cc..481f14855cb 100644 --- a/clang/lib/Frontend/PCHReader.cpp +++ b/clang/lib/Frontend/PCHReader.cpp @@ -334,7 +334,8 @@ void PCHDeclReader::VisitObjCCategoryImplDecl(ObjCCategoryImplDecl *D) { void PCHDeclReader::VisitObjCImplementationDecl(ObjCImplementationDecl *D) { VisitObjCImplDecl(D); - // FIXME: Implement. + D->setSuperClass( + cast_or_null<ObjCInterfaceDecl>(Reader.GetDecl(Record[Idx++]))); } @@ -2270,7 +2271,7 @@ Decl *PCHReader::ReadDeclRecord(uint64_t Offset, unsigned Index) { } case pch::DECL_OBJC_IMPLEMENTATION: { - // FIXME: Implement. + D = ObjCImplementationDecl::Create(Context, 0, SourceLocation(), 0, 0); break; } diff --git a/clang/lib/Frontend/PCHWriter.cpp b/clang/lib/Frontend/PCHWriter.cpp index 0a0a38d8740..6961eb6a13d 100644 --- a/clang/lib/Frontend/PCHWriter.cpp +++ b/clang/lib/Frontend/PCHWriter.cpp @@ -506,7 +506,7 @@ void PCHDeclWriter::VisitObjCCategoryImplDecl(ObjCCategoryImplDecl *D) { void PCHDeclWriter::VisitObjCImplementationDecl(ObjCImplementationDecl *D) { VisitObjCImplDecl(D); - // FIXME: Implement. + Writer.AddDeclRef(D->getSuperClass(), Record); Code = pch::DECL_OBJC_IMPLEMENTATION; } diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 040c5467ac5..c7a45dc9d70 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -3952,7 +3952,12 @@ void Sema::ActOnFields(Scope* S, } else if (ObjCImplementationDecl *IMPDecl = dyn_cast<ObjCImplementationDecl>(EnclosingDecl)) { assert(IMPDecl && "ActOnFields - missing ObjCImplementationDecl"); - IMPDecl->setIVarList(ClsFields, RecFields.size(), Context); + for (unsigned I = 0, N = RecFields.size(); I != N; ++I) { + // FIXME: Set the DeclContext correctly when we build the + // declarations. + ClsFields[I]->setLexicalDeclContext(IMPDecl); + IMPDecl->addDecl(Context, ClsFields[I]); + } CheckImplementationIvars(IMPDecl, ClsFields, RecFields.size(), RBrac); } } |

