about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/rustdoc/attr_pass.rs6
-rw-r--r--src/rustdoc/gen.rs14
-rw-r--r--src/rustdoc/prune_undoc_pass.rs6
-rwxr-xr-xsrc/rustdoc/rustdoc.rs10
-rw-r--r--src/rustdoc/tystr_pass.rs6
5 files changed, 33 insertions, 9 deletions
diff --git a/src/rustdoc/attr_pass.rs b/src/rustdoc/attr_pass.rs
index 96cca34ea12..53304341778 100644
--- a/src/rustdoc/attr_pass.rs
+++ b/src/rustdoc/attr_pass.rs
@@ -1,7 +1,11 @@
 import rustc::syntax::ast;
 import rustc::middle::ast_map;
 
-export run;
+export mk_pass;
+
+fn mk_pass() -> pass {
+    run
+}
 
 fn run(
     srv: astsrv::srv,
diff --git a/src/rustdoc/gen.rs b/src/rustdoc/gen.rs
index fecfbed8e36..2366f818246 100644
--- a/src/rustdoc/gen.rs
+++ b/src/rustdoc/gen.rs
@@ -1,7 +1,19 @@
 import std::io;
 import std::io::writer_util;
 
-export write_markdown;
+export mk_pass;
+
+fn mk_pass(
+    writer: fn~() -> io::writer
+) -> pass {
+    ret fn~(
+        _srv: astsrv::srv,
+        doc: doc::cratedoc
+    ) -> doc::cratedoc {
+        write_markdown(doc, writer());
+        doc
+    };
+}
 
 type ctxt = {
     w: io::writer,
diff --git a/src/rustdoc/prune_undoc_pass.rs b/src/rustdoc/prune_undoc_pass.rs
index af9ab970823..527c8828033 100644
--- a/src/rustdoc/prune_undoc_pass.rs
+++ b/src/rustdoc/prune_undoc_pass.rs
@@ -1,4 +1,8 @@
-export run;
+export mk_pass;
+
+fn mk_pass() -> pass {
+    run
+}
 
 type ctxt = {
     mutable have_docs: bool
diff --git a/src/rustdoc/rustdoc.rs b/src/rustdoc/rustdoc.rs
index c89a221f0f7..afcacbd5556 100755
--- a/src/rustdoc/rustdoc.rs
+++ b/src/rustdoc/rustdoc.rs
@@ -74,11 +74,11 @@ fn run(source_file: str) {
     let default_name = source_file;
     let srv = astsrv::mk_srv_from_file(source_file);
     let doc = extract::from_srv(srv, default_name);
-    let doc = run_passes(srv, doc, [
-        attr_pass::run,
+    run_passes(srv, doc, [
+        attr_pass::mk_pass(),
         // FIXME: This pass should be optional
-        prune_undoc_pass::run,
-        tystr_pass::run
+        prune_undoc_pass::mk_pass(),
+        tystr_pass::mk_pass(),
+        gen::mk_pass {|| std::io:: stdout()}
     ]);
-    gen::write_markdown(doc, std::io::stdout());
 }
\ No newline at end of file
diff --git a/src/rustdoc/tystr_pass.rs b/src/rustdoc/tystr_pass.rs
index 4a06aec5b24..e31a208d1d1 100644
--- a/src/rustdoc/tystr_pass.rs
+++ b/src/rustdoc/tystr_pass.rs
@@ -2,7 +2,11 @@ import rustc::syntax::ast;
 import rustc::syntax::print::pprust;
 import rustc::middle::ast_map;
 
-export run;
+export mk_pass;
+
+fn mk_pass() -> pass {
+    run
+}
 
 fn run(
     srv: astsrv::srv,