diff --git a/dsymbol b/dsymbol
index 50d813e..021df81 160000
--- a/dsymbol
+++ b/dsymbol
@@ -1 +1 @@
-Subproject commit 50d813eda2b2068cc3e681fec19ddbaef92cccf1
+Subproject commit 021df81dd8e23da2b76e8cb9c1b27a3c15efb5e7
diff --git a/dub.json b/dub.json
index aaf5fe5..0e3f899 100644
--- a/dub.json
+++ b/dub.json
@@ -7,9 +7,9 @@
"targetType": "executable",
"versions": ["built_with_dub"],
"dependencies": {
- "libdparse": "0.7.0-alpha.15",
- "dsymbol": "0.2.0-alpha.10",
+ "libdparse": "0.7.0-beta.1",
+ "dsymbol": "0.2.0-beta.1",
"inifiled": ">=0.0.6",
- "emsi_containers": "0.5.0"
+ "emsi_containers": "0.5.2"
},
}
diff --git a/libdparse b/libdparse
index 1e811d2..bbc9916 160000
--- a/libdparse
+++ b/libdparse
@@ -1 +1 @@
-Subproject commit 1e811d2b5da79ae44dd79b68d1379f67d1250cb9
+Subproject commit bbc9916182dc5c13950b25b48b2a6df944d52ab7
diff --git a/src/analysis/builtin_property_names.d b/src/analysis/builtin_property_names.d
index 792f07d..1cfec82 100644
--- a/src/analysis/builtin_property_names.d
+++ b/src/analysis/builtin_property_names.d
@@ -12,6 +12,7 @@ import dparse.lexer;
import analysis.base;
import analysis.helpers;
import dsymbol.scope_;
+import std.algorithm : map;
/**
* The following code should be killed with fire:
@@ -56,7 +57,7 @@ class BuiltinPropertyNameCheck : BaseAnalyzer
override void visit(const AutoDeclaration ad)
{
if (depth > 0)
- foreach (i; ad.identifiers)
+ foreach (i; ad.parts.map!(a => a.identifier))
{
if (isBuiltinProperty(i.text))
addErrorMessage(i.line, i.column, KEY, generateErrorMessage(i.text));
diff --git a/src/analysis/enumarrayliteral.d b/src/analysis/enumarrayliteral.d
index 87dc13f..e31a660 100644
--- a/src/analysis/enumarrayliteral.d
+++ b/src/analysis/enumarrayliteral.d
@@ -8,7 +8,7 @@ module analysis.enumarrayliteral;
import dparse.ast;
import dparse.lexer;
import analysis.base;
-import std.algorithm : canFind;
+import std.algorithm : canFind, map;
import dsymbol.scope_ : Scope;
void doNothing(string, size_t, size_t, string, bool)
@@ -35,19 +35,19 @@ class EnumArrayLiteralCheck : BaseAnalyzer
{
if (autoDec.storageClasses.canFind!(a => a.token == tok!"enum"))
{
- foreach (i, initializer; autoDec.initializers)
+ foreach (part; autoDec.parts)
{
- if (initializer is null)
+ if (part.initializer is null)
continue;
- if (initializer.nonVoidInitializer is null)
+ if (part.initializer.nonVoidInitializer is null)
continue;
- if (initializer.nonVoidInitializer.arrayInitializer is null)
+ if (part.initializer.nonVoidInitializer.arrayInitializer is null)
continue;
- addErrorMessage(autoDec.identifiers[i].line, autoDec.identifiers[i].column,
+ addErrorMessage(part.identifier.line, part.identifier.column,
"dscanner.performance.enum_array_literal",
"This enum may lead to unnecessary allocation at run-time."
~ " Use 'static immutable "
- ~ autoDec.identifiers[i].text ~ " = [ ...' instead.");
+ ~ part.identifier.text ~ " = [ ...' instead.");
}
}
autoDec.accept(this);
diff --git a/src/analysis/undocumented.d b/src/analysis/undocumented.d
index ca10b37..6b901df 100644
--- a/src/analysis/undocumented.d
+++ b/src/analysis/undocumented.d
@@ -98,9 +98,9 @@ class UndocumentedDeclarationCheck : BaseAnalyzer
return;
if (variable.autoDeclaration !is null)
{
- addMessage(variable.autoDeclaration.identifiers[0].line,
- variable.autoDeclaration.identifiers[0].column,
- variable.autoDeclaration.identifiers[0].text);
+ addMessage(variable.autoDeclaration.parts[0].identifier.line,
+ variable.autoDeclaration.parts[0].identifier.column,
+ variable.autoDeclaration.parts[0].identifier.text);
return;
}
foreach (dec; variable.declarators)
diff --git a/src/analysis/unmodified.d b/src/analysis/unmodified.d
index aa36144..fe9005d 100644
--- a/src/analysis/unmodified.d
+++ b/src/analysis/unmodified.d
@@ -73,11 +73,12 @@ class UnmodifiedFinder : BaseAnalyzer
&& (!autoDeclaration.storageClasses.canFind!(a => a.token == tok!"const"
|| a.token == tok!"enum" || a.token == tok!"immutable")))
{
- foreach (size_t i, id; autoDeclaration.identifiers)
+ foreach (part; autoDeclaration.parts)
{
- if (initializedFromCast(autoDeclaration.initializers[i]))
+ if (initializedFromCast(part.initializer))
continue;
- tree[$ - 1].insert(new VariableInfo(id.text, id.line, id.column));
+ tree[$ - 1].insert(new VariableInfo(part.identifier.text,
+ part.identifier.line, part.identifier.column));
}
}
autoDeclaration.accept(this);
diff --git a/src/analysis/unused.d b/src/analysis/unused.d
index d170dc4..fe3fb15 100644
--- a/src/analysis/unused.d
+++ b/src/analysis/unused.d
@@ -10,6 +10,7 @@ import analysis.base;
import std.container;
import std.regex : Regex, regex, matchAll;
import dsymbol.scope_ : Scope;
+import std.algorithm : map;
/**
* Checks for unused variables.
@@ -259,7 +260,7 @@ class UnusedVariableCheck : BaseAnalyzer
override void visit(const AutoDeclaration autoDeclaration)
{
- foreach (t; autoDeclaration.identifiers)
+ foreach (t; autoDeclaration.parts.map!(a => a.identifier))
this.variableDeclared(t.text, t.line, t.column, false, false);
autoDeclaration.accept(this);
}
diff --git a/src/astprinter.d b/src/astprinter.d
index e0d309d..9253c9d 100644
--- a/src/astprinter.d
+++ b/src/astprinter.d
@@ -165,17 +165,22 @@ class XMLPrinter : ASTVisitor
visit(sc);
output.writeln("");
- for (size_t i = 0; i < autoDec.identifiers.length; i++)
- {
- output.writeln("- ");
- output.writeln("",
- autoDec.identifiers[i].text, "");
- visit(autoDec.initializers[i]);
- output.writeln("
");
- }
+ foreach (part; autoDec.parts)
+ visit(part);
output.writeln("");
}
+ override void visit(const AutoDeclarationPart part)
+ {
+ output.writeln("");
+
+ output.writeln("- ");
+ output.writeln("", part.identifier.text, "");
+ visit(part.initializer);
+ output.writeln("
");
+ output.writeln("");
+ }
+
override void visit(const BreakStatement breakStatement)
{
if (breakStatement.label.type == tok!"")
diff --git a/src/ctags.d b/src/ctags.d
index 39c0364..3d00708 100644
--- a/src/ctags.d
+++ b/src/ctags.d
@@ -213,7 +213,7 @@ final class CTagsPrinter : ASTVisitor
override void visit(const AutoDeclaration dec)
{
- foreach (i; dec.identifiers)
+ foreach (i; dec.parts.map!(a => a.identifier))
{
tagLines.insert("%s\t%s\t%d;\"\tv\tline:%d%s%s\n".format(i.text,
fileName, i.line, i.line, context.c, context.access));
diff --git a/src/etags.d b/src/etags.d
index f8b462a..91fea50 100644
--- a/src/etags.d
+++ b/src/etags.d
@@ -234,9 +234,9 @@ final class EtagsPrinter : ASTVisitor
override void visit(const AutoDeclaration dec)
{
- foreach (i; dec.identifiers)
+ foreach (part; dec.parts)
{
- maketag(i);
+ maketag(part.identifier);
}
dec.accept(this);
}
diff --git a/src/symbol_finder.d b/src/symbol_finder.d
index 8d48368..0d759a7 100644
--- a/src/symbol_finder.d
+++ b/src/symbol_finder.d
@@ -102,10 +102,10 @@ class FinderVisitor : ASTVisitor
override void visit(const AutoDeclaration ad)
{
- foreach (id; ad.identifiers)
+ foreach (part; ad.parts)
{
- if (id.text == symbolName)
- output.writefln("%s(%d:%d)", fileName, id.line, id.column);
+ if (part.identifier.text == symbolName)
+ output.writefln("%s(%d:%d)", fileName, part.identifier.line, part.identifier.column);
}
}