]> granicus.if.org Git - clang/commitdiff
Uses more description name for method implementation kind argument.
authorFariborz Jahanian <fjahanian@apple.com>
Tue, 18 Sep 2007 00:25:23 +0000 (00:25 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Tue, 18 Sep 2007 00:25:23 +0000 (00:25 +0000)
Moves such argument as the last argument and uses defaul value.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42073 91177308-0d34-0410-b5e6-96231b3b80d8

Parse/ParseObjc.cpp
Sema/Sema.h
Sema/SemaDecl.cpp
include/clang/Parse/Action.h
include/clang/Parse/Parser.h

index c4a785eed89a6f043117cb7f2a911d49e402b363..dd9ab2e152ee05b07b9df54730e028fd2825d2d8 100644 (file)
@@ -216,7 +216,7 @@ Parser::DeclTy *Parser::ParseObjCAtInterfaceDeclaration(
 void Parser::ParseObjCInterfaceDeclList(DeclTy *interfaceDecl,
                                        tok::ObjCKeywordKind contextKey) {
   llvm::SmallVector<DeclTy*, 32>  allMethods;
-  tok::ObjCKeywordKind pi = tok::objc_not_keyword;
+  tok::ObjCKeywordKind MethodImplKind = tok::objc_not_keyword;
   while (1) {
     if (Tok.getKind() == tok::at) {
       SourceLocation AtLoc = ConsumeToken(); // the "@"
@@ -226,12 +226,12 @@ void Parser::ParseObjCInterfaceDeclList(DeclTy *interfaceDecl,
         break;
       } else if (ocKind == tok::objc_required) { // protocols only
         ConsumeToken();
-       pi = ocKind;
+       MethodImplKind = ocKind;
        if (contextKey != tok::objc_protocol)
          Diag(AtLoc, diag::err_objc_protocol_required);
       } else if (ocKind == tok::objc_optional) { // protocols only
         ConsumeToken();
-       pi = ocKind;
+       MethodImplKind = ocKind;
        if (contextKey != tok::objc_protocol)
          Diag(AtLoc, diag::err_objc_protocol_optional);
       } else if (ocKind == tok::objc_property) {
@@ -243,7 +243,7 @@ void Parser::ParseObjCInterfaceDeclList(DeclTy *interfaceDecl,
       }
     }
     if (Tok.getKind() == tok::minus || Tok.getKind() == tok::plus) {
-      DeclTy *methodPrototype = ParseObjCMethodPrototype(interfaceDecl, pi);
+      DeclTy *methodPrototype = ParseObjCMethodPrototype(interfaceDecl, MethodImplKind);
       allMethods.push_back(methodPrototype);
       // Consume the ';' here, since ParseObjCMethodPrototype() is re-used for
       // method definitions.
@@ -367,15 +367,15 @@ void Parser::ParseObjCPropertyDecl(DeclTy *interfaceDecl) {
 ///   objc-method-attributes:         [OBJC2]
 ///     __attribute__((deprecated))
 ///
-Parser::DeclTy *Parser::ParseObjCMethodPrototype(DeclTy *IDecl,
-                          tok::ObjCKeywordKind& pi) {
+Parser::DeclTy *Parser::ParseObjCMethodPrototype(DeclTy *IDecl, 
+                         tok::ObjCKeywordKind MethodImplKind) {
   assert((Tok.getKind() == tok::minus || Tok.getKind() == tok::plus) && 
          "expected +/-");
 
   tok::TokenKind methodType = Tok.getKind();  
   SourceLocation methodLoc = ConsumeToken();
   
-  DeclTy *MDecl = ParseObjCMethodDecl(pi, methodType, methodLoc);
+  DeclTy *MDecl = ParseObjCMethodDecl(methodType, methodLoc, MethodImplKind);
   // Since this rule is used for both method declarations and definitions,
   // the caller is (optionally) responsible for consuming the ';'.
   return MDecl;
@@ -484,8 +484,8 @@ Parser::TypeTy *Parser::ParseObjCTypeName() {
 ///   objc-keyword-attributes:         [OBJC2]
 ///     __attribute__((unused))
 ///
-Parser::DeclTy *Parser::ParseObjCMethodDecl(tok::ObjCKeywordKind& pi, 
-                         tok::TokenKind mType, SourceLocation mLoc) {
+Parser::DeclTy *Parser::ParseObjCMethodDecl(tok::TokenKind mType, SourceLocation mLoc,
+                                           tok::ObjCKeywordKind MethodImplKind) {
 
   TypeTy *ReturnType = 0;
   AttributeList *methodAttrs = 0;
@@ -551,10 +551,10 @@ Parser::DeclTy *Parser::ParseObjCMethodDecl(tok::ObjCKeywordKind& pi,
     // If attributes exist after the method, parse them.
     if (getLang().ObjC2 && Tok.getKind() == tok::kw___attribute) 
       methodAttrs = ParseAttributes();
-    return Actions.ObjcBuildMethodDeclaration(pi, mLoc, mType, 
+    return Actions.ObjcBuildMethodDeclaration(mLoc, mType, 
                                               ReturnType, 
                                               &KeyInfo[0], KeyInfo.size(), 
-                                             methodAttrs);
+                                             methodAttrs, MethodImplKind);
   } else if (!selIdent) {
     Diag(Tok, diag::err_expected_ident); // missing selector name.
   }
@@ -562,9 +562,9 @@ Parser::DeclTy *Parser::ParseObjCMethodDecl(tok::ObjCKeywordKind& pi,
   if (getLang().ObjC2 && Tok.getKind() == tok::kw___attribute) 
     methodAttrs = ParseAttributes();
 
-  return Actions.ObjcBuildMethodDeclaration(pi,
-                                            mLoc, mType, ReturnType, 
-                                            selIdent, methodAttrs);
+  return Actions.ObjcBuildMethodDeclaration(mLoc, mType, ReturnType, 
+                                            selIdent, methodAttrs,
+                                           MethodImplKind);
 }
 
 ///   objc-protocol-refs:
@@ -917,8 +917,7 @@ void Parser::ParseObjCInstanceMethodDefinition() {
   assert(Tok.getKind() == tok::minus &&
          "ParseObjCInstanceMethodDefinition(): Expected '-'");
   // FIXME: @optional/@protocol??
-  tok::ObjCKeywordKind pi = tok::objc_not_keyword;
-  ParseObjCMethodPrototype(ObjcImpDecl, pi);
+  ParseObjCMethodPrototype(ObjcImpDecl);
   // parse optional ';'
   if (Tok.getKind() == tok::semi)
     ConsumeToken();
@@ -937,8 +936,7 @@ void Parser::ParseObjCClassMethodDefinition() {
   assert(Tok.getKind() == tok::plus &&
          "ParseObjCClassMethodDefinition(): Expected '+'");
   // FIXME: @optional/@protocol??
-  tok::ObjCKeywordKind pi = tok::objc_not_keyword;
-  ParseObjCMethodPrototype(ObjcImpDecl, pi);
+  ParseObjCMethodPrototype(ObjcImpDecl);
   // parse optional ';'
   if (Tok.getKind() == tok::semi)
     ConsumeToken();
index 1b1aa781d1e23e8247d59ff811dfdb9fc9868624..4c50bf67ebce53ca121a96e809ac58bebb3bab34 100644 (file)
@@ -368,15 +368,15 @@ public:
 
   virtual void ObjcAddMethodsToClass(DeclTy *ClassDecl, 
                                     DeclTy **allMethods, unsigned allNum);
-  virtual DeclTy *ObjcBuildMethodDeclaration(tok::ObjCKeywordKind& pi, 
-                   SourceLocation MethodLoc, 
+  virtual DeclTy *ObjcBuildMethodDeclaration(SourceLocation MethodLoc, 
                    tok::TokenKind MethodType, TypeTy *ReturnType,
                    ObjcKeywordDecl *Keywords, unsigned NumKeywords, 
-                   AttributeList *AttrList);
-  virtual DeclTy *ObjcBuildMethodDeclaration(tok::ObjCKeywordKind& pi, 
-                   SourceLocation MethodLoc, 
+                   AttributeList *AttrList,
+                   tok::ObjCKeywordKind MethodImplKind);
+  virtual DeclTy *ObjcBuildMethodDeclaration(SourceLocation MethodLoc, 
                    tok::TokenKind MethodType, TypeTy *ReturnType,
-                   IdentifierInfo *SelectorName, AttributeList *AttrList);
+                   IdentifierInfo *SelectorName, AttributeList *AttrList,
+                   tok::ObjCKeywordKind MethodImplKind);
                     
   // This actions handles keyword message to classes.
   virtual ExprResult ActOnKeywordMessage(IdentifierInfo *receivingClassName, 
index 53efacfd0ab6ed6ede7974ba727acd38640cc44d..b9ac2b7ab0b7ea0e15eca8df13383ee16397def3 100644 (file)
@@ -1264,11 +1264,11 @@ void Sema::ObjcAddMethodsToClass(DeclTy *ClassDecl,
   return;
 }
 
-Sema::DeclTy *Sema::ObjcBuildMethodDeclaration(tok::ObjCKeywordKind& pi,
-                     SourceLocation MethodLoc, 
+Sema::DeclTy *Sema::ObjcBuildMethodDeclaration(SourceLocation MethodLoc, 
                       tok::TokenKind MethodType, TypeTy *ReturnType,
                       ObjcKeywordDecl *Keywords, unsigned NumKeywords,
-                      AttributeList *AttrList) {
+                      AttributeList *AttrList,
+                     tok::ObjCKeywordKind MethodDeclKind) {
   assert(NumKeywords && "Selector must be specified");
 
   // Derive the selector name from the keyword declarations.
@@ -1306,17 +1306,17 @@ Sema::DeclTy *Sema::ObjcBuildMethodDeclaration(tok::ObjCKeywordKind& pi,
                                      SelName, resultDeclType,
                                      0, -1, AttrList, MethodType == tok::minus);
   ObjcMethod->setMethodParams(&Params[0], NumKeywords);
-  if (pi == tok::objc_optional)
+  if (MethodDeclKind == tok::objc_optional)
       ObjcMethod->setDeclImplementation(ObjcMethodDecl::Optional);
   else
        ObjcMethod->setDeclImplementation(ObjcMethodDecl::Required);
   return ObjcMethod;
 }
 
-Sema::DeclTy *Sema::ObjcBuildMethodDeclaration(tok::ObjCKeywordKind& pi,
-                     SourceLocation MethodLoc,  
+Sema::DeclTy *Sema::ObjcBuildMethodDeclaration(SourceLocation MethodLoc,  
                       tok::TokenKind MethodType, TypeTy *ReturnType,
-                      IdentifierInfo *SelectorName, AttributeList *AttrList) {
+                      IdentifierInfo *SelectorName, AttributeList *AttrList,
+                     tok::ObjCKeywordKind MethodDeclKind) {
   const char *methodName = SelectorName->getName();
   SelectorInfo &SelName = Context.getSelectorInfo(methodName, 
                                                   methodName+strlen(methodName));
@@ -1324,7 +1324,7 @@ Sema::DeclTy *Sema::ObjcBuildMethodDeclaration(tok::ObjCKeywordKind& pi,
   ObjcMethodDecl* ObjcMethod = new ObjcMethodDecl(MethodLoc, 
                                     SelName, resultDeclType, 0, -1,
                                      AttrList, MethodType == tok::minus);
-  if (pi == tok::objc_optional)
+  if (MethodDeclKind == tok::objc_optional)
       ObjcMethod->setDeclImplementation(ObjcMethodDecl::Optional);
   else
        ObjcMethod->setDeclImplementation(ObjcMethodDecl::Required);
index 50c437dd414d355d94a2dffefa9da361adbeda8f..c644e75b6e08cae4eae36f5d18776654980f89c9 100644 (file)
@@ -453,15 +453,17 @@ public:
                     IdentifierInfo **ProtoRefNames, unsigned NumProtoRefs) {
     return 0;
   }
-  virtual DeclTy *ObjcBuildMethodDeclaration(tok::ObjCKeywordKind& pi
-    SourceLocation MethodLoc, tok::TokenKind MethodType, TypeTy *ReturnType,
+  virtual DeclTy *ObjcBuildMethodDeclaration(SourceLocation MethodLoc
+    tok::TokenKind MethodType, TypeTy *ReturnType,
     ObjcKeywordDecl *Keywords, unsigned NumKeywords, 
-    AttributeList *AttrList) {
+    AttributeList *AttrList,
+    tok::ObjCKeywordKind MethodImplKind) {
     return 0;
   }
-  virtual DeclTy *ObjcBuildMethodDeclaration(tok::ObjCKeywordKind& pi, 
-    SourceLocation MethodLoc, tok::TokenKind MethodType, TypeTy *ReturnType,
-    IdentifierInfo *SelectorName, AttributeList *AttrList) {
+  virtual DeclTy *ObjcBuildMethodDeclaration(SourceLocation MethodLoc, 
+    tok::TokenKind MethodType, TypeTy *ReturnType,
+    IdentifierInfo *SelectorName, AttributeList *AttrList,
+    tok::ObjCKeywordKind MethodImplKind) {
     return 0;
   }
   // This actions handles keyword message to classes.
index 1e51fe7f4b33a33390da57be95f2c8364a5d7b74..9f57b137808849da81b766f1fb1f7cd6dc8f7f08 100644 (file)
@@ -290,10 +290,9 @@ private:
   TypeTy *ParseObjCTypeName();
   void ParseObjCMethodRequirement();
   DeclTy *ParseObjCMethodPrototype(DeclTy *classOrCat,
-                                  tok::ObjCKeywordKind& pi);
-  DeclTy *ParseObjCMethodDecl(tok::ObjCKeywordKind& pi,
-                             tok::TokenKind mType, 
-                             SourceLocation mLoc);
+           tok::ObjCKeywordKind MethodImplKind = tok::objc_not_keyword);
+  DeclTy *ParseObjCMethodDecl(tok::TokenKind mType, SourceLocation mLoc,
+            tok::ObjCKeywordKind MethodImplKind = tok::objc_not_keyword);
   void ParseObjCPropertyAttribute(DeclTy *interfaceDecl);
   void ParseObjCPropertyDecl(DeclTy *interfaceDecl);