This commit is contained in:
Hackerpilot 2014-03-19 14:43:02 -07:00
parent 77d12c769e
commit 335c445912
2 changed files with 14 additions and 3 deletions

View File

@ -7,14 +7,19 @@ module imports;
import stdx.d.ast; import stdx.d.ast;
import std.stdio; import std.stdio;
import std.container;
class ImportPrinter : ASTVisitor class ImportPrinter : ASTVisitor
{ {
this()
{
imports = new RedBlackTree!string;
}
override void visit(const SingleImport singleImport) override void visit(const SingleImport singleImport)
{ {
ignore = false; ignore = false;
singleImport.accept(this); singleImport.accept(this);
writeln();
ignore = true; ignore = true;
} }
@ -22,15 +27,19 @@ class ImportPrinter : ASTVisitor
{ {
if (ignore) return; if (ignore) return;
bool first = true; bool first = true;
string s;
foreach (ident; identifierChain.identifiers) foreach (ident; identifierChain.identifiers)
{ {
if (!first) if (!first)
write("."); s ~= ".";
write(ident.text); s ~= ident.text;
first = false; first = false;
} }
imports.insert(s);
} }
RedBlackTree!string imports;
alias visit = ASTVisitor.visit; alias visit = ASTVisitor.visit;
bool ignore = true; bool ignore = true;

2
main.d
View File

@ -175,6 +175,8 @@ int main(string[] args)
{ {
auto visitor = new ImportPrinter; auto visitor = new ImportPrinter;
visitor.visit(mod); visitor.visit(mod);
foreach (imp; visitor.imports[])
writeln(imp);
} }
else if (ast) else if (ast)
{ {