about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOliver Middleton <olliemail27@gmail.com>2016-05-12 18:23:11 +0100
committerOliver Middleton <olliemail27@gmail.com>2016-05-12 20:08:33 +0100
commit538de73f5b90eb831b7cc64e78f3aaac57d1378f (patch)
tree15ce111bd777baa0c61bf23285218003e1c2c44b
parente88defe71806ad190588e168e513bc1098f7c9fb (diff)
downloadrust-538de73f5b90eb831b7cc64e78f3aaac57d1378f.tar.gz
rust-538de73f5b90eb831b7cc64e78f3aaac57d1378f.zip
rustdoc: Fix missing type parameters on impls
-rw-r--r--src/librustdoc/clean/mod.rs7
-rw-r--r--src/librustdoc/html/format.rs8
-rw-r--r--src/test/rustdoc/issue-33592.rs23
3 files changed, 30 insertions, 8 deletions
diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs
index a89609fad6b..7305b0f1fb8 100644
--- a/src/librustdoc/clean/mod.rs
+++ b/src/librustdoc/clean/mod.rs
@@ -1534,13 +1534,6 @@ impl Type {
         }
     }
 
-    pub fn trait_name(&self) -> Option<String> {
-        match *self {
-            ResolvedPath { ref path, .. } => Some(path.last_name()),
-            _ => None,
-        }
-    }
-
     pub fn is_generic(&self) -> bool {
         match *self {
             ResolvedPath { is_generic, .. } => is_generic,
diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs
index 7af5322e7bd..4514106cece 100644
--- a/src/librustdoc/html/format.rs
+++ b/src/librustdoc/html/format.rs
@@ -587,7 +587,13 @@ fn fmt_impl(i: &clean::Impl, f: &mut fmt::Formatter, link_trait: bool) -> fmt::R
         if link_trait {
             write!(f, "{}", *ty)?;
         } else {
-            write!(f, "{}", ty.trait_name().unwrap())?;
+            match *ty {
+                clean::ResolvedPath{ typarams: None, ref path, is_generic: false, .. } => {
+                    let last = path.segments.last().unwrap();
+                    write!(f, "{}{}", last.name, last.params)?;
+                }
+                _ => unreachable!(),
+            }
         }
         write!(f, " for ")?;
     }
diff --git a/src/test/rustdoc/issue-33592.rs b/src/test/rustdoc/issue-33592.rs
new file mode 100644
index 00000000000..c0de4cc38e4
--- /dev/null
+++ b/src/test/rustdoc/issue-33592.rs
@@ -0,0 +1,23 @@
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![crate_name = "foo"]
+
+pub trait Foo<T> {}
+
+pub struct Bar;
+
+pub struct Baz;
+
+// @has foo/trait.Foo.html '//code' 'impl Foo<i32> for Bar'
+impl Foo<i32> for Bar {}
+
+// @has foo/trait.Foo.html '//code' 'impl<T> Foo<T> for Baz'
+impl<T> Foo<T> for Baz {}