From 0a07ae58621fe71b7a8ef3ef735fc5b72b57126d Mon Sep 17 00:00:00 2001 From: Hackerpilot Date: Mon, 29 Jul 2013 13:34:34 -0700 Subject: [PATCH] Fixes issue #41 --- astprinter.d | 7 +------ std/d/ast.d | 16 ++-------------- std/d/parser.d | 22 ++-------------------- 3 files changed, 5 insertions(+), 40 deletions(-) diff --git a/astprinter.d b/astprinter.d index 158f2af..ebb9da3 100644 --- a/astprinter.d +++ b/astprinter.d @@ -195,7 +195,7 @@ class XMLPrinter : ASTVisitor override void visit(BreakStatement breakStatement) { if (breakStatement.label.type == TokenType.invalid) - output.writeln(""); + output.writeln(""); else output.writeln(""); } @@ -1098,11 +1098,6 @@ class XMLPrinter : ASTVisitor mixin (tagAndAccept!"structMemberInitializers"); } - override void visit(SwitchBody switchBody) - { - mixin (tagAndAccept!"switchBody"); - } - override void visit(SwitchStatement switchStatement) { mixin (tagAndAccept!"switchStatement"); diff --git a/std/d/ast.d b/std/d/ast.d index d5334b3..f535eae 100644 --- a/std/d/ast.d +++ b/std/d/ast.d @@ -186,7 +186,6 @@ public: /** */ void visit(StructInitializer structInitializer) { structInitializer.accept(this); } /** */ void visit(StructMemberInitializer structMemberInitializer) { structMemberInitializer.accept(this); } /** */ void visit(StructMemberInitializers structMemberInitializers) { structMemberInitializers.accept(this); } - /** */ void visit(SwitchBody switchBody) { switchBody.accept(this); } /** */ void visit(SwitchStatement switchStatement) { switchStatement.accept(this); } /** */ void visit(Symbol symbol) { symbol.accept(this); } /** */ void visit(SynchronizedStatement synchronizedStatement) { synchronizedStatement.accept(this); } @@ -2254,27 +2253,16 @@ public: /** */ StructMemberInitializer[] structMemberInitializers; } -/// -class SwitchBody : ASTNode -{ -public: - override void accept(ASTVisitor visitor) - { - mixin (visitIfNotNull!(statements)); - } - /** */ Statement[] statements; -} - /// class SwitchStatement : ASTNode { public: override void accept(ASTVisitor visitor) { - mixin (visitIfNotNull!(expression, switchBody)); + mixin (visitIfNotNull!(expression, statement)); } /** */ Expression expression; - /** */ SwitchBody switchBody; + /** */ Statement statement; } /// diff --git a/std/d/parser.d b/std/d/parser.d index 8ceb484..f2e52ad 100644 --- a/std/d/parser.d +++ b/std/d/parser.d @@ -4640,29 +4640,11 @@ q{(int a, ...) return node; } - /** - * Parses a SwitchBody - * - * $(GRAMMAR $(RULEDEF switchBody): - * $(LITERAL '{') $(RULE statement)+ $(LITERAL '}') - * ;) - */ - SwitchBody parseSwitchBody() - { - mixin(traceEnterAndExit!(__FUNCTION__)); - auto node = new SwitchBody; - expect(TokenType.lBrace); - while (moreTokens() && tokens[index] != TokenType.rBrace) - node.statements ~= parseStatement(); - expect(TokenType.rBrace); - return node; - } - /** * Parses a SwitchStatement * * $(GRAMMAR $(RULEDEF switchStatement): - * $(LITERAL 'switch') $(LITERAL '$(LPAREN)') $(RULE expression) $(LITERAL '$(RPAREN)') $(RULE switchBody) + * $(LITERAL 'switch') $(LITERAL '$(LPAREN)') $(RULE expression) $(LITERAL '$(RPAREN)') $(RULE statement) * ;) */ SwitchStatement parseSwitchStatement() @@ -4673,7 +4655,7 @@ q{(int a, ...) expect(TokenType.lParen); node.expression = parseExpression(); expect(TokenType.rParen); - node.switchBody = parseSwitchBody(); + node.statement = parseStatement(); return node; }