diff --git a/astprinter.d b/astprinter.d
index 33c2165..6a7523f 100644
--- a/astprinter.d
+++ b/astprinter.d
@@ -479,7 +479,7 @@ class XMLPrinter : ASTVisitor
override void visit(const ForStatement forStatement)
{
output.writeln("");
- if (forStatement.declarationOrStatement !is null)
+ if (forStatement.initialization !is null)
{
output.writeln("");
visit(forStatement.initialization);
@@ -497,7 +497,8 @@ class XMLPrinter : ASTVisitor
visit(forStatement.increment);
output.writeln("");
}
- visit(forStatement.declarationOrStatement);
+ if (forStatement.declarationOrStatement !is null)
+ visit(forStatement.declarationOrStatement);
output.writeln("");
}
@@ -780,7 +781,7 @@ class XMLPrinter : ASTVisitor
output.writeln("");
output.writeln("");
visit(keyValuePair.value);
- output.writeln("");
+ output.writeln("");
output.writeln("");
}
diff --git a/build.sh b/build.sh
index 08548b7..1a4c7de 100755
--- a/build.sh
+++ b/build.sh
@@ -12,7 +12,7 @@ dmd\
analysis/*.d\
-version=DIP61\
-ofdscanner\
- -m64 -g\
+ -g\
-O -release
#gdc\
diff --git a/std/d/parser.d b/std/d/parser.d
index 25cc416..952d20e 100644
--- a/std/d/parser.d
+++ b/std/d/parser.d
@@ -325,7 +325,7 @@ alias core.sys.posix.stdio.fileno fileno;
* Parses an ArrayLiteral
*
* $(GRAMMAR $(RULEDEF arrayLiteral):
- * $(LITERAL '[') ($(RULE assignExpression) ($(LITERAL ',') $(RULE assignExpression))*)? $(LITERAL ']')
+ * $(LITERAL '[') $(RULE argumentList)? $(LITERAL ']')
* ;)
*/
ArrayLiteral parseArrayLiteral()
@@ -6263,8 +6263,7 @@ protected:
auto b = setBookmark();
scope(exit) goToBookmark(b);
advance();
- Expression e = parseExpression();
- return e !is null && currentIs(tok!":");
+ return !currentIs(tok!"]") && parseExpression() !is null && currentIs(tok!":");
}
bool hasMagicDelimiter(alias L, alias T)()