Skip to content

Commit a393f10

Browse files
committed
---
yaml --- r: 13811 b: refs/heads/try c: 74e8b11 h: refs/heads/master i: 13809: eb1bd4e 13807: cab0f6c v: v3
1 parent b95e2c7 commit a393f10

File tree

3 files changed

+94
-1
lines changed

3 files changed

+94
-1
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
refs/heads/master: 61b1875c16de39c166b0f4d54bba19f9c6777d1a
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
5-
refs/heads/try: d6ce20973a8c467c234d877aa4cbde5f73be20f0
5+
refs/heads/try: 74e8b111946d21c331e6d3581c2486c6780fc0cd
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105

branches/try/src/rustdoc/markdown_pass.rs

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ fn write_mod_contents(
8585
write_const(ctxt, constdoc);
8686
}
8787

88+
for enumdoc in *doc.enums {
89+
write_enum(ctxt, enumdoc);
90+
}
91+
8892
for fndoc in *doc.fns {
8993
write_fn(ctxt, fndoc);
9094
}
@@ -348,6 +352,91 @@ fn should_write_const_description() {
348352
assert str::contains(markdown, "\n\na\n\nb\n\n");
349353
}
350354

355+
fn write_enum(
356+
ctxt: ctxt,
357+
doc: doc::enumdoc
358+
) {
359+
write_header(ctxt, h3, #fmt("Enum `%s`", doc.name));
360+
write_brief(ctxt, doc.brief);
361+
write_desc(ctxt, doc.desc);
362+
write_variants(ctxt, doc.variants);
363+
}
364+
365+
#[test]
366+
fn should_write_enum_header() {
367+
let markdown = test::render("enum a { b }");
368+
assert str::contains(markdown, "### Enum `a`\n\n");
369+
}
370+
371+
#[test]
372+
fn should_write_enum_description() {
373+
let markdown = test::render(
374+
"#[doc(brief = \"a\", desc = \"b\")] enum a { b }");
375+
assert str::contains(markdown, "\n\na\n\nb\n\n");
376+
}
377+
378+
fn write_variants(
379+
ctxt: ctxt,
380+
docs: [doc::variantdoc]
381+
) {
382+
if vec::is_empty(docs) {
383+
ret;
384+
}
385+
386+
ctxt.w.write_line("Variants:");
387+
ctxt.w.write_line("");
388+
389+
vec::iter(docs, {|variant| write_variant(ctxt, variant) });
390+
391+
ctxt.w.write_line("");
392+
}
393+
394+
fn write_variant(ctxt: ctxt, doc: doc::variantdoc) {
395+
assert option::is_some(doc.sig);
396+
let sig = option::get(doc.sig);
397+
alt doc.desc {
398+
some(desc) {
399+
ctxt.w.write_line(#fmt("* `%s` - %s", sig, desc));
400+
}
401+
none {
402+
ctxt.w.write_line(#fmt("* `%s`", sig));
403+
}
404+
}
405+
}
406+
407+
#[test]
408+
fn should_write_variant_list() {
409+
let markdown = test::render(
410+
"enum a { \
411+
#[doc = \"test\"] b, \
412+
#[doc = \"test\"] c }");
413+
assert str::contains(
414+
markdown,
415+
"\n\nVariants:\n\
416+
\n* `b` - test\
417+
\n* `c` - test\n\n");
418+
}
419+
420+
#[test]
421+
fn should_write_variant_list_without_descs() {
422+
let markdown = test::render("enum a { b, c }");
423+
assert str::contains(
424+
markdown,
425+
"\n\nVariants:\n\
426+
\n* `b`\
427+
\n* `c`\n\n");
428+
}
429+
430+
#[test]
431+
fn should_write_variant_list_with_signatures() {
432+
let markdown = test::render("enum a { b(int), #[doc = \"a\"] c(int) }");
433+
assert str::contains(
434+
markdown,
435+
"\n\nVariants:\n\
436+
\n* `b(int)`\
437+
\n* `c(int)` - a\n\n");
438+
}
439+
351440
#[cfg(test)]
352441
mod test {
353442
fn render(source: str) -> str {

branches/try/src/rustdoc/rustdoc.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ fn run_passes(
2727
original through each pass"
2828
)];
2929

30+
let passno = 0;
3031
vec::foldl(doc, passes) {|doc, pass|
32+
log(debug, #fmt("pass #%d", passno));
33+
passno += 1;
34+
log(debug, doc);
3135
pass(srv, doc)
3236
}
3337
}

0 commit comments

Comments
 (0)