about summary refs log tree commit diff
path: root/src/rustdoc/doc.rs
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-07-11 15:00:40 -0700
committerPatrick Walton <pcwalton@mimiga.net>2012-07-17 15:46:43 -0700
commitdb020ab63cd51dd4a25cba2d00117f016128762b (patch)
tree2b6f1e99ba4356f3e3bf5338332c278d2a85109b /src/rustdoc/doc.rs
parentb5729bd60095fb5ca884936775e031cf19900760 (diff)
downloadrust-db020ab63cd51dd4a25cba2d00117f016128762b.tar.gz
rust-db020ab63cd51dd4a25cba2d00117f016128762b.zip
rustc: Implement and enforce instance coherence
Diffstat (limited to 'src/rustdoc/doc.rs')
-rw-r--r--src/rustdoc/doc.rs36
1 files changed, 32 insertions, 4 deletions
diff --git a/src/rustdoc/doc.rs b/src/rustdoc/doc.rs
index d6b78095a15..efbd9c7cd60 100644
--- a/src/rustdoc/doc.rs
+++ b/src/rustdoc/doc.rs
@@ -2,10 +2,14 @@
 
 type ast_id = int;
 
-type doc = {
+type doc_ = {
     pages: ~[page]
 };
 
+enum doc {
+    doc_(doc_)
+}
+
 enum page {
     cratepage(cratedoc),
     itempage(itemtag)
@@ -59,12 +63,16 @@ type simpleitemdoc = {
     sig: option<~str>
 };
 
-type moddoc = {
+type moddoc_ = {
     item: itemdoc,
     items: ~[itemtag],
     index: option<index>
 };
 
+enum moddoc {
+    moddoc_(moddoc_)
+}
+
 type nmoddoc = {
     item: itemdoc,
     fns: ~[fndoc],
@@ -221,7 +229,18 @@ impl util for moddoc {
     }
 }
 
-impl util for ~[page] {
+trait page_utils {
+    fn mods() -> ~[moddoc];
+    fn nmods() -> ~[nmoddoc];
+    fn fns() -> ~[fndoc];
+    fn consts() -> ~[constdoc];
+    fn enums() -> ~[enumdoc];
+    fn traits() -> ~[traitdoc];
+    fn impls() -> ~[impldoc];
+    fn types() -> ~[tydoc];
+}
+
+impl util of page_utils for ~[page] {
 
     fn mods() -> ~[moddoc] {
         do vec::filter_map(self) |page| {
@@ -339,7 +358,16 @@ impl of item for impldoc {
     fn item() -> itemdoc { self.item }
 }
 
-impl util<A:item> for A {
+trait item_utils {
+    fn id() -> ast_id;
+    fn name() -> ~str;
+    fn path() -> ~[~str];
+    fn brief() -> option<~str>;
+    fn desc() -> option<~str>;
+    fn sections() -> ~[section];
+}
+
+impl util<A:item> of item_utils for A {
     fn id() -> ast_id {
         self.item().id
     }