}
}
+#[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 {
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
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
+ }
}
}
}
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,