From 335c44591246081a7347fdee2ba4dbdf5b55a1e0 Mon Sep 17 00:00:00 2001 From: Hackerpilot Date: Wed, 19 Mar 2014 14:43:02 -0700 Subject: [PATCH] Fix #149 --- imports.d | 15 ++++++++++++--- main.d | 2 ++ 2 files changed, 14 insertions(+), 3 deletions(-) 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) {