aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/parser/qqmljs.g
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/parser/qqmljs.g')
-rw-r--r--src/qml/parser/qqmljs.g31
1 files changed, 21 insertions, 10 deletions
diff --git a/src/qml/parser/qqmljs.g b/src/qml/parser/qqmljs.g
index c25f3395e2..8e71b8a42b 100644
--- a/src/qml/parser/qqmljs.g
+++ b/src/qml/parser/qqmljs.g
@@ -262,6 +262,7 @@ public:
int ival;
double dval;
AST::VariableScope scope;
+ AST::ForEachType forEachType;
AST::ArgumentList *ArgumentList;
AST::CaseBlock *CaseBlock;
AST::CaseClause *CaseClause;
@@ -3125,37 +3126,47 @@ IterationStatement: T_FOR T_LPAREN LexicalDeclaration T_SEMICOLON ExpressionOpt_
} break;
./
-IterationStatement: T_FOR T_LPAREN LeftHandSideExpression T_IN Expression_In T_RPAREN Statement;
+InOrOf: T_IN;
+/.
+ case $rule_number: {
+ sym(1).forEachType = AST::ForEachType::In;
+ } break;
+./
+
+InOrOf: T_OF;
+/.
+ case $rule_number: {
+ sym(1).forEachType = AST::ForEachType::Of;
+ } break;
+./
+
+IterationStatement: T_FOR T_LPAREN LeftHandSideExpression InOrOf Expression_In T_RPAREN Statement;
/.
case $rule_number: {
AST::ForEachStatement *node = new (pool) AST::ForEachStatement(sym(3).Expression, sym(5).Expression, sym(7).Statement);
node->forToken = loc(1);
node->lparenToken = loc(2);
- node->inToken = loc(4);
+ node->inOfToken = loc(4);
node->rparenToken = loc(6);
+ node->type = sym(4).forEachType;
sym(1).Node = node;
} break;
./
-IterationStatement: T_FOR T_LPAREN ForDeclaration T_IN Expression_In T_RPAREN Statement;
+IterationStatement: T_FOR T_LPAREN ForDeclaration InOrOf Expression_In T_RPAREN Statement;
/.
case $rule_number: {
AST::LocalForEachStatement *node = new (pool) AST::LocalForEachStatement(sym(3).PatternElement, sym(5).Expression, sym(7).Statement);
node->forToken = loc(1);
node->lparenToken = loc(2);
node->varToken = loc(3);
- node->inToken = loc(4);
+ node->inOfToken = loc(4);
node->rparenToken = loc(6);
+ node->type = sym(4).forEachType;
sym(1).Node = node;
} break;
./
-
-IterationStatement: T_FOR T_LPAREN LeftHandSideExpression T_OF AssignmentExpression_In T_RPAREN Statement; -- [lookahead ≠ let]
-/. case $rule_number: { UNIMPLEMENTED; } ./
-IterationStatement: T_FOR T_LPAREN ForDeclaration T_OF Expression_In T_RPAREN Statement;
-/. case $rule_number: { UNIMPLEMENTED; } ./
-
ForDeclaration: LetOrConst ForBinding;
/. case $rule_number: Q_FALLTHROUGH(); ./
ForDeclaration: Var ForBinding;