[cfe-commits] r44636 - /cfe/trunk/Parse/ParseObjc.cpp

Steve Naroff snaroff at apple.com
Wed Dec 5 14:21:29 PST 2007


Author: snaroff
Date: Wed Dec  5 16:21:29 2007
New Revision: 44636

URL: http://llvm.org/viewvc/llvm-project?rev=44636&view=rev
Log:

Make sure Parser::ParseObjCSelectorExpression() handles unary selectors (with no arguments) properly.

Modified:
    cfe/trunk/Parse/ParseObjc.cpp

Modified: cfe/trunk/Parse/ParseObjc.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Parse/ParseObjc.cpp?rev=44636&r1=44635&r2=44636&view=diff

==============================================================================
--- cfe/trunk/Parse/ParseObjc.cpp (original)
+++ cfe/trunk/Parse/ParseObjc.cpp Wed Dec  5 16:21:29 2007
@@ -1401,17 +1401,18 @@
   SourceLocation sLoc;
   IdentifierInfo *SelIdent = ParseObjCSelector(sLoc);
   if (!SelIdent && Tok.isNot(tok::colon)) {
-    
     Diag(Tok, diag::err_expected_ident); // missing selector name.
     return 0;
   }
   KeyIdents.push_back(SelIdent);
-  if (Tok.isNot(tok::r_paren))
+  unsigned nColons = 0;
+  if (Tok.isNot(tok::r_paren)) {
     while (1) {
       if (Tok.isNot(tok::colon)) {
         Diag(Tok, diag::err_expected_colon);
         break;
       }
+	  nColons++;
       ConsumeToken(); // Eat the ':'.
       if (Tok.is(tok::r_paren))
         break;
@@ -1422,9 +1423,9 @@
       if (!SelIdent && Tok.isNot(tok::colon))
         break;
     }
+  }
   SourceLocation RParenLoc = MatchRHSPunctuation(tok::r_paren, LParenLoc);
-  Selector Sel = PP.getSelectorTable().getSelector(KeyIdents.size(),
-                                                   &KeyIdents[0]);
+  Selector Sel = PP.getSelectorTable().getSelector(nColons, &KeyIdents[0]);
   return Actions.ParseObjCSelectorExpression(Sel, AtLoc, SelectorLoc, LParenLoc, 
                                              RParenLoc);
  }





More information about the cfe-commits mailing list