]> git.lizzy.rs Git - rust.git/commitdiff
rustdoc: Ignore nil-typed return values
authorBrian Anderson <banderson@mozilla.com>
Thu, 19 Jan 2012 05:50:35 +0000 (21:50 -0800)
committerBrian Anderson <banderson@mozilla.com>
Thu, 19 Jan 2012 05:50:35 +0000 (21:50 -0800)
src/rustdoc/gen.rs
src/rustdoc/tystr_pass.rs

index 2c3cb0ea9032bc6cfdd9484247a6e8a60f117fba..26325e6ffbb42e1a809d9bd0e98d78c30c1d7214 100644 (file)
@@ -204,6 +204,27 @@ fn write_return(
     }
 }
 
+#[test]
+fn should_write_return_type_on_new_line() {
+    let markdown = test::render("fn a() -> int { }");
+    assert str::contains(markdown, "\nReturns `int`");
+}
+
+#[test]
+fn should_write_blank_line_between_return_type_and_next_header() {
+    let markdown = test::render(
+        "fn a() -> int { } \
+         fn b() -> int { }"
+    );
+    assert str::contains(markdown, "Returns `int`\n\n##");
+}
+
+#[test]
+fn should_not_write_return_type_when_there_is_none() {
+    let markdown = test::render("fn a() { }");
+    assert !str::contains(markdown, "Returns");
+}
+
 #[cfg(test)]
 mod test {
     fn render(source: str) -> str {
@@ -272,18 +293,4 @@ fn should_leave_blank_line_between_brief_and_desc() {
         assert str::contains(markdown, "brief\n\ndesc");
     }
 
-    #[test]
-    fn should_write_return_type_on_new_line() {
-        let markdown = render("fn a() -> int { }");
-        assert str::contains(markdown, "\nReturns `int`");
-    }
-
-    #[test]
-    fn should_write_blank_line_between_return_type_and_next_header() {
-        let markdown = render(
-            "fn a() -> int { } \
-             fn b() -> int { }"
-        );
-        assert str::contains(markdown, "Returns `int`\n\n##");
-    }
 }
\ No newline at end of file
index 7a1f5e1036e556268fa56e0a92c373a679ccb756..cc0594d47fdc2b291266035b2f7c5716f2f1fab2 100644 (file)
@@ -46,27 +46,36 @@ fn merge_ret_ty(
     fn_id: doc::ast_id,
     doc: option<doc::retdoc>
 ) -> option<doc::retdoc> {
-    let ty = get_ret_ty(srv, fn_id);
     alt doc {
       some(doc) {
         fail "unimplemented";
       }
       none. {
-        some({
-            desc: none,
-            ty: some(ty)
-        })
+        alt get_ret_ty(srv, fn_id) {
+          some(ty) {
+            some({
+                desc: none,
+                ty: some(ty)
+            })
+          }
+          none. { none }
+        }
       }
     }
 }
 
-fn get_ret_ty(srv: astsrv::srv, id: doc::ast_id) -> str {
+fn get_ret_ty(srv: astsrv::srv, id: doc::ast_id) -> option<str> {
     astsrv::exec(srv) {|ctxt|
         alt ctxt.map.get(id) {
           ast_map::node_item(@{
             node: ast::item_fn(decl, _, _), _
           }) {
-            pprust::ty_to_str(decl.output)
+            if decl.output.node != ast::ty_nil {
+                some(pprust::ty_to_str(decl.output))
+            } else {
+                // Nil-typed return values are not interesting
+                none
+            }
           }
         }
     }
@@ -81,6 +90,15 @@ fn should_add_fn_ret_types() {
     assert option::get(doc.topmod.fns[0].return).ty == some("int");
 }
 
+#[test]
+fn should_not_add_nil_ret_type() {
+    let source = "fn a() { }";
+    let srv = astsrv::mk_srv_from_str(source);
+    let doc = extract::from_srv(srv, "");
+    let doc = run(srv, doc);
+    assert doc.topmod.fns[0].return == none;
+}
+
 fn merge_arg_tys(
     srv: astsrv::srv,
     fn_id: doc::ast_id,