Skip to content

Commit a28a84b

Browse files
committed
---
yaml --- r: 11005 b: refs/heads/master c: a57c15b h: refs/heads/master i: 11003: c3183ff v: v3
1 parent b23e7d0 commit a28a84b

File tree

5 files changed

+72
-2
lines changed

5 files changed

+72
-2
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: c976b7c623e242ab2400d3c641cb082c814690fe
2+
refs/heads/master: a57c15bf88cfa8a684947af5d28c8154ef2f6456
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
55
refs/heads/try: 2898dcc5d97da9427ac367542382b6239d9c0bbf

trunk/src/rustdoc/rustdoc.rc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,6 @@ mod unindent_pass;
3030
mod trim_pass;
3131
mod astsrv;
3232
mod demo;
33-
mod sort_pass;
33+
mod sort_pass;
34+
mod sort_item_name_pass;
35+
mod sort_item_type_pass;

trunk/src/rustdoc/rustdoc.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ fn run(source_file: str) {
106106
desc_to_brief_pass::mk_pass(),
107107
trim_pass::mk_pass(),
108108
unindent_pass::mk_pass(),
109+
sort_item_name_pass::mk_pass(),
110+
sort_item_type_pass::mk_pass(),
109111
markdown_pass::mk_pass {|f| f(std::io:: stdout()) }
110112
]);
111113
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#[doc = "Sorts items by name"];
2+
3+
export mk_pass;
4+
5+
fn mk_pass() -> pass {
6+
sort_pass::mk_pass { |item1, item2|
7+
str::le(item1.name(), item2.name())
8+
}
9+
}
10+
11+
#[test]
12+
fn test() {
13+
let source = "mod z { } fn y() { }";
14+
let srv = astsrv::mk_srv_from_str(source);
15+
let doc = extract::from_srv(srv, "");
16+
let doc = mk_pass()(srv, doc);
17+
assert doc.topmod.items[0].name() == "y";
18+
assert doc.topmod.items[1].name() == "z";
19+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#[doc = "Sorts items by type"];
2+
3+
export mk_pass;
4+
5+
fn mk_pass() -> pass {
6+
sort_pass::mk_pass { |item1, item2|
7+
fn score(item: doc::itemtag) -> int {
8+
alt item {
9+
doc::consttag(_) { 0 }
10+
doc::tytag(_) { 1 }
11+
doc::enumtag(_) { 2 }
12+
doc::restag(_) { 3 }
13+
doc::ifacetag(_) { 4 }
14+
doc::impltag(_) { 5 }
15+
doc::fntag(_) { 6 }
16+
doc::modtag(_) { 7 }
17+
_ { fail }
18+
}
19+
}
20+
21+
score(item1) <= score(item2)
22+
}
23+
}
24+
25+
#[test]
26+
fn test() {
27+
let source =
28+
"mod imod { } \
29+
const iconst: int = 0; \
30+
fn ifn() { } \
31+
enum ienum { ivar } \
32+
resource ires(a: bool) { } \
33+
iface iiface { fn a(); } \
34+
impl iimpl for int { fn a() { } } \
35+
type itype = int;";
36+
let srv = astsrv::mk_srv_from_str(source);
37+
let doc = extract::from_srv(srv, "");
38+
let doc = mk_pass()(srv, doc);
39+
assert doc.topmod.items[0].name() == "iconst";
40+
assert doc.topmod.items[1].name() == "itype";
41+
assert doc.topmod.items[2].name() == "ienum";
42+
assert doc.topmod.items[3].name() == "ires";
43+
assert doc.topmod.items[4].name() == "iiface";
44+
assert doc.topmod.items[5].name() == "iimpl";
45+
assert doc.topmod.items[6].name() == "ifn";
46+
assert doc.topmod.items[7].name() == "imod";
47+
}

0 commit comments

Comments
 (0)