[cfe-commits] r45601 - in /cfe/trunk/Parse: ParseDecl.cpp ParseStmt.cpp

Fariborz Jahanian fjahanian at apple.com
Fri Jan 4 15:23:46 PST 2008


Author: fjahanian
Date: Fri Jan  4 17:23:46 2008
New Revision: 45601

URL: http://llvm.org/viewvc/llvm-project?rev=45601&view=rev
Log:
Added a comment, minor refactoring of foreach parsing code per Chris's suggestion.

Modified:
    cfe/trunk/Parse/ParseDecl.cpp
    cfe/trunk/Parse/ParseStmt.cpp

Modified: cfe/trunk/Parse/ParseDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Parse/ParseDecl.cpp?rev=45601&r1=45600&r2=45601&view=diff

==============================================================================
--- cfe/trunk/Parse/ParseDecl.cpp (original)
+++ cfe/trunk/Parse/ParseDecl.cpp Fri Jan  4 17:23:46 2008
@@ -296,6 +296,9 @@
     ConsumeToken();
     return Actions.FinalizeDeclaratorGroup(CurScope, LastDeclInGroup);
   }
+  // If this is an ObjC2 for-each loop, this is a successful declarator
+  // parse.  The syntax for these looks like:
+  // 'for' '(' declaration 'in' expr ')' statement
   if (D.getContext()  == Declarator::ForContext && isTokIdentifier_in()) {
     return Actions.FinalizeDeclaratorGroup(CurScope, LastDeclInGroup);
   }

Modified: cfe/trunk/Parse/ParseStmt.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Parse/ParseStmt.cpp?rev=45601&r1=45600&r2=45601&view=diff

==============================================================================
--- cfe/trunk/Parse/ParseStmt.cpp (original)
+++ cfe/trunk/Parse/ParseStmt.cpp Fri Jan  4 17:23:46 2008
@@ -746,7 +746,7 @@
   StmtTy *FirstPart = 0;
   ExprTy *SecondPart = 0;
   StmtTy *ThirdPart = 0;
-  bool foreach = false;
+  bool ForEach = false;
   
   // Parse the first part of the for specifier.
   if (Tok.is(tok::semi)) {  // for (;
@@ -759,7 +759,7 @@
     DeclTy *aBlockVarDecl = ParseDeclaration(Declarator::ForContext);
     StmtResult stmtResult = Actions.ActOnDeclStmt(aBlockVarDecl);
     FirstPart = stmtResult.isInvalid ? 0 : stmtResult.Val;
-    if ((foreach = isTokIdentifier_in())) {
+    if ((ForEach = isTokIdentifier_in())) {
       ConsumeToken(); // consume 'in'
       Value = ParseExpression();
       if (!Value.isInvalid)
@@ -778,7 +778,7 @@
     if (Tok.is(tok::semi)) {
       ConsumeToken();
     }
-    else if ((foreach = isTokIdentifier_in())) {
+    else if ((ForEach = isTokIdentifier_in())) {
       ConsumeToken(); // consume 'in'
       Value = ParseExpression();
       if (!Value.isInvalid)
@@ -789,7 +789,7 @@
       SkipUntil(tok::semi);
     }
   }
-  if (!foreach) {
+  if (!ForEach) {
     // Parse the second part of the for specifier.
     if (Tok.is(tok::semi)) {  // for (...;;
       // no second part.
@@ -842,12 +842,12 @@
   if (Body.isInvalid)
     return Body;
   
-  return !foreach ? Actions.ActOnForStmt(ForLoc, LParenLoc, FirstPart, 
-                                         SecondPart, ThirdPart, RParenLoc, 
-                                         Body.Val)
-                  : Actions.ActOnObjcForCollectionStmt(ForLoc, LParenLoc, 
-                                                       FirstPart, SecondPart, 
-                                                       RParenLoc, Body.Val);
+  if (!ForEach) 
+    return Actions.ActOnForStmt(ForLoc, LParenLoc, FirstPart, 
+                                SecondPart, ThirdPart, RParenLoc, Body.Val);
+  else
+    return Actions.ActOnObjcForCollectionStmt(ForLoc, LParenLoc, FirstPart, 
+                                              SecondPart, RParenLoc, Body.Val);
 }
 
 /// ParseGotoStatement





More information about the cfe-commits mailing list