Fix #80
This commit is contained in:
parent
84969961ea
commit
a1ac849141
|
@ -485,7 +485,7 @@ class XMLPrinter : ASTVisitor
|
||||||
visit(forStatement.increment);
|
visit(forStatement.increment);
|
||||||
output.writeln("</increment>");
|
output.writeln("</increment>");
|
||||||
}
|
}
|
||||||
visit(forStatement.statementNoCaseNoDefault);
|
visit(forStatement.declarationOrStatement);
|
||||||
output.writeln("</forStatement>");
|
output.writeln("</forStatement>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
12
stdx/d/ast.d
12
stdx/d/ast.d
|
@ -1203,13 +1203,13 @@ class ForStatement : ASTNode
|
||||||
public:
|
public:
|
||||||
override void accept(ASTVisitor visitor)
|
override void accept(ASTVisitor visitor)
|
||||||
{
|
{
|
||||||
mixin (visitIfNotNull!(declarationOrStatement, test, increment,
|
mixin (visitIfNotNull!(initialization, test, increment,
|
||||||
statementNoCaseNoDefault));
|
declarationOrStatement));
|
||||||
}
|
}
|
||||||
/** */ DeclarationOrStatement declarationOrStatement;
|
/** */ DeclarationOrStatement initialization;
|
||||||
/** */ ExpressionStatement test;
|
/** */ ExpressionStatement test;
|
||||||
/** */ Expression increment;
|
/** */ Expression increment;
|
||||||
/** */ StatementNoCaseNoDefault statementNoCaseNoDefault;
|
/** */ DeclarationOrStatement declarationOrStatement;
|
||||||
/** */ size_t startIndex;
|
/** */ size_t startIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2760,11 +2760,11 @@ class WhileStatement : ASTNode
|
||||||
public:
|
public:
|
||||||
override void accept(ASTVisitor visitor)
|
override void accept(ASTVisitor visitor)
|
||||||
{
|
{
|
||||||
mixin (visitIfNotNull!(expression, statementNoCaseNoDefault));
|
mixin (visitIfNotNull!(expression, declarationOrStatement));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** */ Expression expression;
|
/** */ Expression expression;
|
||||||
/** */ StatementNoCaseNoDefault statementNoCaseNoDefault;
|
/** */ DeclarationOrStatement declarationOrStatement;
|
||||||
/** */ size_t startIndex;
|
/** */ size_t startIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2166,7 +2166,7 @@ class ClassFour(A, B) if (someTest()) : Super {}}c;
|
||||||
* Parses a ForStatement
|
* Parses a ForStatement
|
||||||
*
|
*
|
||||||
* $(GRAMMAR $(RULEDEF forStatement):
|
* $(GRAMMAR $(RULEDEF forStatement):
|
||||||
* $(LITERAL 'for') $(LITERAL '$(LPAREN)') $(RULE declarationOrStatement) $(RULE expression)? $(LITERAL ';') $(RULE expression)? $(LITERAL '$(RPAREN)') $(RULE statementNoCaseNoDefault)
|
* $(LITERAL 'for') $(LITERAL '$(LPAREN)') $(RULE declarationOrStatement) $(RULE expression)? $(LITERAL ';') $(RULE expression)? $(LITERAL '$(RPAREN)') $(RULE declarationOrStatement)
|
||||||
* ;)
|
* ;)
|
||||||
*/
|
*/
|
||||||
ForStatement parseForStatement()
|
ForStatement parseForStatement()
|
||||||
|
@ -2180,7 +2180,7 @@ class ClassFour(A, B) if (someTest()) : Super {}}c;
|
||||||
if (currentIs(TokenType.semicolon))
|
if (currentIs(TokenType.semicolon))
|
||||||
advance();
|
advance();
|
||||||
else
|
else
|
||||||
node.declarationOrStatement = parseDeclarationOrStatement();
|
node.initialization = parseDeclarationOrStatement();
|
||||||
|
|
||||||
if (currentIs(TokenType.semicolon))
|
if (currentIs(TokenType.semicolon))
|
||||||
advance();
|
advance();
|
||||||
|
@ -2196,8 +2196,8 @@ class ClassFour(A, B) if (someTest()) : Super {}}c;
|
||||||
error("Statement expected", false);
|
error("Statement expected", false);
|
||||||
return node; // this line makes DCD better
|
return node; // this line makes DCD better
|
||||||
}
|
}
|
||||||
node.statementNoCaseNoDefault = parseStatementNoCaseNoDefault();
|
node.declarationOrStatement = parseDeclarationOrStatement();
|
||||||
if (node.statementNoCaseNoDefault is null) return null;
|
if (node.declarationOrStatement is null) return null;
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2205,8 +2205,8 @@ class ClassFour(A, B) if (someTest()) : Super {}}c;
|
||||||
* Parses a ForeachStatement
|
* Parses a ForeachStatement
|
||||||
*
|
*
|
||||||
* $(GRAMMAR $(RULEDEF foreachStatement):
|
* $(GRAMMAR $(RULEDEF foreachStatement):
|
||||||
* ($(LITERAL 'foreach') | $(LITERAL 'foreach_reverse')) $(LITERAL '$(LPAREN)') $(RULE foreachTypeList) $(LITERAL ';') $(RULE expression) $(LITERAL '$(RPAREN)') $(RULE statementNoCaseNoDefault)
|
* ($(LITERAL 'foreach') | $(LITERAL 'foreach_reverse')) $(LITERAL '$(LPAREN)') $(RULE foreachTypeList) $(LITERAL ';') $(RULE expression) $(LITERAL '$(RPAREN)') $(RULE declarationOrStatement)
|
||||||
* | ($(LITERAL 'foreach') | $(LITERAL 'foreach_reverse')) $(LITERAL '$(LPAREN)') $(RULE foreachType) $(LITERAL ';') $(RULE expression) $(LITERAL '..') $(RULE expression) $(LITERAL '$(RPAREN)') $(RULE statementNoCaseNoDefault)
|
* | ($(LITERAL 'foreach') | $(LITERAL 'foreach_reverse')) $(LITERAL '$(LPAREN)') $(RULE foreachType) $(LITERAL ';') $(RULE expression) $(LITERAL '..') $(RULE expression) $(LITERAL '$(RPAREN)') $(RULE declarationOrStatement)
|
||||||
* ;)
|
* ;)
|
||||||
*/
|
*/
|
||||||
ForeachStatement parseForeachStatement()
|
ForeachStatement parseForeachStatement()
|
||||||
|
@ -5948,7 +5948,7 @@ q{doStuff(5)}c;
|
||||||
* Parses a WhileStatement
|
* Parses a WhileStatement
|
||||||
*
|
*
|
||||||
* $(GRAMMAR $(RULEDEF whileStatement):
|
* $(GRAMMAR $(RULEDEF whileStatement):
|
||||||
* $(LITERAL 'while') $(LITERAL '$(LPAREN)') $(RULE expression) $(LITERAL '$(RPAREN)') $(RULE statementNoCaseNoDefault)
|
* $(LITERAL 'while') $(LITERAL '$(LPAREN)') $(RULE expression) $(LITERAL '$(RPAREN)') $(RULE declarationOrStatement)
|
||||||
* ;)
|
* ;)
|
||||||
*/
|
*/
|
||||||
WhileStatement parseWhileStatement()
|
WhileStatement parseWhileStatement()
|
||||||
|
@ -5960,12 +5960,12 @@ q{doStuff(5)}c;
|
||||||
expect(TokenType.lParen);
|
expect(TokenType.lParen);
|
||||||
node.expression = parseExpression();
|
node.expression = parseExpression();
|
||||||
expect(TokenType.rParen);
|
expect(TokenType.rParen);
|
||||||
if (currentIs(TokenType.rBrace))
|
if (currentIs(TokenType.rBrace))
|
||||||
{
|
{
|
||||||
error("Statement expected", false);
|
error("Statement expected", false);
|
||||||
return node; // this line makes DCD better
|
return node; // this line makes DCD better
|
||||||
}
|
}
|
||||||
node.statementNoCaseNoDefault = parseStatementNoCaseNoDefault();
|
node.declarationOrStatement = parseDeclarationOrStatement();
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue