diff options
Diffstat (limited to 'clang/include/clang/Parse')
| -rw-r--r-- | clang/include/clang/Parse/Action.h | 29 | ||||
| -rw-r--r-- | clang/include/clang/Parse/DeclSpec.h | 17 | ||||
| -rw-r--r-- | clang/include/clang/Parse/Parser.h | 14 | 
3 files changed, 54 insertions, 6 deletions
| diff --git a/clang/include/clang/Parse/Action.h b/clang/include/clang/Parse/Action.h index ec9a4d0dd26..20845ad9d63 100644 --- a/clang/include/clang/Parse/Action.h +++ b/clang/include/clang/Parse/Action.h @@ -21,6 +21,7 @@ namespace clang {    // Semantic.    class DeclSpec;    class Declarator; +  class ObjcKeywordInfo;    class AttributeList;    // Parse.    class Scope; @@ -430,7 +431,35 @@ public:                                           tok::TokenKind Kind) {      return 0;    } +  //===----------------------- Obj-C Declarations -------------------------===// +  virtual DeclTy *ObjcStartClassInterface(SourceLocation AtInterafceLoc, +                    IdentifierInfo *ClassName, SourceLocation ClassLoc, +                    IdentifierInfo *SuperName, SourceLocation SuperLoc, +                    IdentifierInfo **ProtocolNames, unsigned NumProtocols, +                    AttributeList *AttrList) { +    return 0; +  } +  virtual void ObjCContinueClassInterface(SourceLocation InterfaceLoc) { +    return; +  } +  virtual void ObjCStartCategoryInterface() { +    return; +  } +  virtual void ObjCFinishInterface() { +    return; +  } +  virtual DeclTy *ObjcBuildMethodDeclaration( +    SourceLocation MethodLoc, tok::TokenKind MethodType, TypeTy *ReturnType, +    ObjcKeywordInfo *Keywords, unsigned NumKeywords, AttributeList *attrs) { +    return 0; +  } +  virtual DeclTy *ObjcBuildMethodDeclaration( +    SourceLocation MethodLoc, tok::TokenKind MethodType, TypeTy *ReturnType, +    IdentifierInfo *SelectorName, AttributeList *attrs) { +    return 0; +  } +        //===----------------------- Obj-C Expressions --------------------------===//    virtual ExprResult ParseObjCStringLiteral(ExprTy *string) {      return 0; diff --git a/clang/include/clang/Parse/DeclSpec.h b/clang/include/clang/Parse/DeclSpec.h index 6a15290072e..de22360120e 100644 --- a/clang/include/clang/Parse/DeclSpec.h +++ b/clang/include/clang/Parse/DeclSpec.h @@ -562,7 +562,24 @@ public:    bool getInvalidType() { return InvalidType; }  }; +struct ObjcKeywordInfo { +  IdentifierInfo *SelectorName; // optional +  SourceLocation SelectorLoc; +  SourceLocation ColonLoc; +  Action::TypeTy *TypeInfo; // optional +  bool InvalidType; +  IdentifierInfo *ArgumentName; +  AttributeList *AttrList; +  ObjcKeywordInfo() {} +  ObjcKeywordInfo(IdentifierInfo *selName, SourceLocation sLoc,  +                  SourceLocation cLoc, Action::TypeTy *tInfo, +                  IdentifierInfo *argName, AttributeList *aList) +    : SelectorName(selName), SelectorLoc(sLoc), ColonLoc(cLoc), TypeInfo(tInfo),  +      ArgumentName(argName), AttrList(aList) { +  } +}; +  }  // end namespace clang  #endif diff --git a/clang/include/clang/Parse/Parser.h b/clang/include/clang/Parse/Parser.h index f05a2ec5b56..c49d242ab53 100644 --- a/clang/include/clang/Parse/Parser.h +++ b/clang/include/clang/Parse/Parser.h @@ -258,9 +258,11 @@ private:    DeclTy *ParseObjCAtClassDeclaration(SourceLocation atLoc);    DeclTy *ParseObjCAtInterfaceDeclaration(SourceLocation atLoc,                                             AttributeList *prefixAttrs = 0); -  void ParseObjCClassInstanceVariables(DeclTy *interfaceDecl); -  bool ParseObjCProtocolReferences(); -  void ParseObjCInterfaceDeclList(DeclTy *interfaceDecl); +  void ParseObjCClassInstanceVariables(DeclTy *interfaceDecl, +                              llvm::SmallVectorImpl<DeclTy*> &IvarDecls); +  bool ParseObjCProtocolReferences(llvm::SmallVectorImpl<IdentifierInfo*> &); +  void ParseObjCInterfaceDeclList(DeclTy *interfaceDecl, +                                  llvm::SmallVectorImpl<DeclTy*> &MethodDecls);    DeclTy *ParseObjCAtProtocolDeclaration(SourceLocation atLoc);    DeclTy *ParseObjCAtImplementationDeclaration(SourceLocation atLoc);    DeclTy *ParseObjCAtEndDeclaration(SourceLocation atLoc); @@ -284,10 +286,10 @@ private:    IdentifierInfo *ObjcPropertyAttrs[objc_NumAttrs];    bool isObjCPropertyAttribute(); -  void ParseObjCTypeName(); +  TypeTy *ParseObjCTypeName();    void ParseObjCMethodRequirement(); -  void ParseObjCMethodPrototype(bool decl); -  void ParseObjCMethodDecl(tok::TokenKind mType, SourceLocation mLoc); +  DeclTy *ParseObjCMethodPrototype(bool decl); +  DeclTy *ParseObjCMethodDecl(tok::TokenKind mType, SourceLocation mLoc);    void ParseObjCPropertyAttribute(DeclTy *interfaceDecl);    void ParseObjCPropertyDecl(DeclTy *interfaceDecl); | 

