This patch introduces the ObjcCategoryImplDecl class and does the checking related to 
unimplemented methods in category implementation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42531 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Sema/Sema.h b/Sema/Sema.h
index 488d105..74f79d4 100644
--- a/Sema/Sema.h
+++ b/Sema/Sema.h
@@ -49,6 +49,8 @@
   class ObjcInterfaceDecl;
   class ObjcProtocolDecl;
   class ObjcImplementationDecl;
+  class ObjcCategoryImplDecl;
+  class ObjcCategoryDecl;
 
 /// Sema - This implements semantic analysis and AST building for C.
 class Sema : public Action {
@@ -219,6 +221,11 @@
   void ImplMethodsVsClassMethods(ObjcImplementationDecl* IMPDecl, 
                                  ObjcInterfaceDecl* IDecl);
   
+  /// ImplCategoryMethodsVsIntfMethods - Checks that methods declared in the
+  /// category interface is implemented in the category @implementation.
+  void ImplCategoryMethodsVsIntfMethods(ObjcCategoryImplDecl *CatImplDecl,
+                                         ObjcCategoryDecl *CatClassDecl);
+  
   //===--------------------------------------------------------------------===//
   // Statement Parsing Callbacks: SemaStmt.cpp.
 public:
@@ -395,6 +402,13 @@
                     IdentifierInfo *SuperClassname, 
                     SourceLocation SuperClassLoc);
   
+  virtual DeclTy *ObjcStartCategoryImplementation(Scope* S,
+                                                  SourceLocation AtCatImplLoc,
+                                                  IdentifierInfo *ClassName, 
+                                                  SourceLocation ClassLoc,
+                                                  IdentifierInfo *CatName,
+                                                  SourceLocation CatLoc);
+  
   virtual DeclTy *ObjcClassDeclaration(Scope *S, SourceLocation AtClassLoc,
                                        IdentifierInfo **IdentList,
                                        unsigned NumElts);