about summary refs log tree commit diff
path: root/src/librustdoc/html
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2014-02-16 14:35:13 -0800
committerAlex Crichton <alex@alexcrichton.com>2014-02-19 01:10:31 -0800
commitf0cb0ebc669ade875c05cdef7da341a220d1b522 (patch)
tree8fa1056b93c2be49b1adfa73396b991bd72e4c45 /src/librustdoc/html
parent74f3e0474b382160a6b0aec6e27fe239025519a0 (diff)
downloadrust-f0cb0ebc669ade875c05cdef7da341a220d1b522.tar.gz
rust-f0cb0ebc669ade875c05cdef7da341a220d1b522.zip
rustdoc: Fixup links to enum variants
Pages aren't emitted for enum variants, so whenever we're linking to an enum
variant instead link to the parent enum instead.

Closes #12289
Diffstat (limited to 'src/librustdoc/html')
-rw-r--r--src/librustdoc/html/render.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs
index 11f80155085..7b67868680f 100644
--- a/src/librustdoc/html/render.rs
+++ b/src/librustdoc/html/render.rs
@@ -565,9 +565,16 @@ impl DocFolder for Cache {
             clean::StructItem(..) | clean::EnumItem(..) |
             clean::TypedefItem(..) | clean::TraitItem(..) |
             clean::FunctionItem(..) | clean::ModuleItem(..) |
-            clean::ForeignFunctionItem(..) | clean::VariantItem(..) => {
+            clean::ForeignFunctionItem(..) => {
                 self.paths.insert(item.id, (self.stack.clone(), shortty(&item)));
             }
+            // link variants to their parent enum because pages aren't emitted
+            // for each variant
+            clean::VariantItem(..) => {
+                let mut stack = self.stack.clone();
+                stack.pop();
+                self.paths.insert(item.id, (stack, "enum"));
+            }
             _ => {}
         }