From aadc059d19e552f7354b0cf6627b7b8cb9699937 Mon Sep 17 00:00:00 2001 From: Hackerpilot Date: Thu, 18 Sep 2014 14:16:49 -0700 Subject: [PATCH] Removed array initializers. See issue 13496 --- libdparse | 2 +- src/analysis/enumarrayliteral.d | 35 +++++++++++++++++++++++++++------ src/astprinter.d | 10 ++++------ 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/libdparse b/libdparse index 50f0e83..0ed3773 160000 --- a/libdparse +++ b/libdparse @@ -1 +1 @@ -Subproject commit 50f0e833ce664ebb46ada342a2e14c1e1eff0c71 +Subproject commit 0ed37730cfe0036b700d8a96fea849a4ac227638 diff --git a/src/analysis/enumarrayliteral.d b/src/analysis/enumarrayliteral.d index 545851a..0564767 100644 --- a/src/analysis/enumarrayliteral.d +++ b/src/analysis/enumarrayliteral.d @@ -49,15 +49,38 @@ class EnumArrayLiteralCheck : BaseAnalyzer { if (initializer is null) continue; if (initializer.nonVoidInitializer is null) continue; - if (initializer.nonVoidInitializer.arrayInitializer is null) continue; - addErrorMessage(autoDec.identifiers[i].line, - autoDec.identifiers[i].column, "dscanner.performance.enum_array_literal", - "This enum may lead to unnecessary allocation at run-time." - ~ " Use 'static immutable " ~ autoDec.identifiers[i].text - ~ " = [ ...' instead."); + if (initializer.nonVoidInitializer.assignExpression is null) continue; + line = autoDec.identifiers[i].line; + column = autoDec.identifiers[i].column; + text = autoDec.identifiers[i].text; +// visit(initializer.nonVoidInitializer.assignExpression); } } autoDec.accept(this); } + + override void visit(const ArrayLiteral arrayLiteral) + { + if (!looking) + return; + addErrorMessage(line, column, "dscanner.performance.enum_array_literal", + "This enum may lead to unnecessary allocation at run-time." + ~ " Use 'static immutable " ~ text ~ " = [ ...' instead."); + } + + override void visit(const AssocArrayLiteral assocArrayLiteral) + { + if (!looking) + return; + addErrorMessage(line, column, "dscanner.performance.enum_array_literal", + "This enum may lead to unnecessary allocation at run-time." + ~ " Use 'static immutable " ~ text ~ " = [ ...' instead."); + } + +private: + + string text; + size_t line; + size_t column; } diff --git a/src/astprinter.d b/src/astprinter.d index 8302510..6cf7e1d 100644 --- a/src/astprinter.d +++ b/src/astprinter.d @@ -960,10 +960,10 @@ class XMLPrinter : ASTVisitor override void visit(const VariableDeclaration variableDeclaration) { - output.writeln(""); - writeDdoc(variableDeclaration.comment); - variableDeclaration.accept(this); - output.writeln(""); + output.writeln(""); + writeDdoc(variableDeclaration.comment); + variableDeclaration.accept(this); + output.writeln(""); } override void visit(const XorExpression xorExpression) @@ -985,9 +985,7 @@ class XMLPrinter : ASTVisitor override void visit(const AliasThisDeclaration aliasThisDeclaration) { mixin (tagAndAccept!"aliasThisDeclaration"); } override void visit(const ArgumentList argumentList) { mixin (tagAndAccept!"argumentList"); } override void visit(const Arguments arguments) { mixin (tagAndAccept!"arguments"); } - override void visit(const ArrayInitializer arrayInitializer) { mixin (tagAndAccept!"arrayInitializer"); } override void visit(const ArrayLiteral arrayLiteral) { mixin (tagAndAccept!"arrayLiteral"); } - override void visit(const ArrayMemberInitialization arrayMemberInitialization) { mixin (tagAndAccept!"arrayMemberInitialization"); } override void visit(const AsmAddExp asmAddExp) { mixin (tagAndAccept!"asmAddExp"); } override void visit(const AsmAndExp asmAndExp) { mixin (tagAndAccept!"asmAndExp"); } override void visit(const AsmBrExp asmBrExp) { mixin (tagAndAccept!"asmBrExp"); }