Revert "Removed array initializers. See issue 13496"

This reverts commit aadc059d19.
This commit is contained in:
Hackerpilot 2014-09-18 15:15:14 -07:00
parent aadc059d19
commit 33767f2d5c
3 changed files with 13 additions and 34 deletions

@ -1 +1 @@
Subproject commit 0ed37730cfe0036b700d8a96fea849a4ac227638 Subproject commit 50f0e833ce664ebb46ada342a2e14c1e1eff0c71

View File

@ -49,38 +49,15 @@ class EnumArrayLiteralCheck : BaseAnalyzer
{ {
if (initializer is null) continue; if (initializer is null) continue;
if (initializer.nonVoidInitializer is null) continue; if (initializer.nonVoidInitializer is null) continue;
if (initializer.nonVoidInitializer.assignExpression is null) continue; if (initializer.nonVoidInitializer.arrayInitializer is null) continue;
line = autoDec.identifiers[i].line; addErrorMessage(autoDec.identifiers[i].line,
column = autoDec.identifiers[i].column; autoDec.identifiers[i].column, "dscanner.performance.enum_array_literal",
text = autoDec.identifiers[i].text; "This enum may lead to unnecessary allocation at run-time."
// visit(initializer.nonVoidInitializer.assignExpression); ~ " Use 'static immutable " ~ autoDec.identifiers[i].text
~ " = [ ...' instead.");
} }
} }
autoDec.accept(this); 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;
} }

View File

@ -960,10 +960,10 @@ class XMLPrinter : ASTVisitor
override void visit(const VariableDeclaration variableDeclaration) override void visit(const VariableDeclaration variableDeclaration)
{ {
output.writeln("<variableDeclaration>"); output.writeln("<variableDeclaration>");
writeDdoc(variableDeclaration.comment); writeDdoc(variableDeclaration.comment);
variableDeclaration.accept(this); variableDeclaration.accept(this);
output.writeln("</variableDeclaration>"); output.writeln("</variableDeclaration>");
} }
override void visit(const XorExpression xorExpression) override void visit(const XorExpression xorExpression)
@ -985,7 +985,9 @@ class XMLPrinter : ASTVisitor
override void visit(const AliasThisDeclaration aliasThisDeclaration) { mixin (tagAndAccept!"aliasThisDeclaration"); } override void visit(const AliasThisDeclaration aliasThisDeclaration) { mixin (tagAndAccept!"aliasThisDeclaration"); }
override void visit(const ArgumentList argumentList) { mixin (tagAndAccept!"argumentList"); } override void visit(const ArgumentList argumentList) { mixin (tagAndAccept!"argumentList"); }
override void visit(const Arguments arguments) { mixin (tagAndAccept!"arguments"); } 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 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 AsmAddExp asmAddExp) { mixin (tagAndAccept!"asmAddExp"); }
override void visit(const AsmAndExp asmAndExp) { mixin (tagAndAccept!"asmAndExp"); } override void visit(const AsmAndExp asmAndExp) { mixin (tagAndAccept!"asmAndExp"); }
override void visit(const AsmBrExp asmBrExp) { mixin (tagAndAccept!"asmBrExp"); } override void visit(const AsmBrExp asmBrExp) { mixin (tagAndAccept!"asmBrExp"); }