diff --git a/imports.d b/imports.d index bc13d66..7fce205 100644 --- a/imports.d +++ b/imports.d @@ -7,14 +7,19 @@ module imports; import stdx.d.ast; import std.stdio; +import std.container; class ImportPrinter : ASTVisitor { + this() + { + imports = new RedBlackTree!string; + } + override void visit(const SingleImport singleImport) { ignore = false; singleImport.accept(this); - writeln(); ignore = true; } @@ -22,15 +27,19 @@ class ImportPrinter : ASTVisitor { if (ignore) return; bool first = true; + string s; foreach (ident; identifierChain.identifiers) { if (!first) - write("."); - write(ident.text); + s ~= "."; + s ~= ident.text; first = false; } + imports.insert(s); } + RedBlackTree!string imports; + alias visit = ASTVisitor.visit; bool ignore = true; diff --git a/main.d b/main.d index 17d0fea..2d0eb7c 100644 --- a/main.d +++ b/main.d @@ -175,6 +175,8 @@ int main(string[] args) { auto visitor = new ImportPrinter; visitor.visit(mod); + foreach (imp; visitor.imports[]) + writeln(imp); } else if (ast) {