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)()