[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