]> git.lizzy.rs Git - rust.git/commitdiff
rustdoc: Fix missing type parameters on impls
authorOliver Middleton <olliemail27@gmail.com>
Thu, 12 May 2016 17:23:11 +0000 (18:23 +0100)
committerOliver Middleton <olliemail27@gmail.com>
Thu, 12 May 2016 19:08:33 +0000 (20:08 +0100)
src/librustdoc/clean/mod.rs
src/librustdoc/html/format.rs
src/test/rustdoc/issue-33592.rs [new file with mode: 0644]

index a89609fad6b6ecaf5bc7564193b35f3108db0af5..7305b0f1fb8bc69fb6e450cbab7f05b8b1f0764f 100644 (file)
@@ -1534,13 +1534,6 @@ pub fn primitive_type(&self) -> Option<PrimitiveType> {
         }
     }
 
-    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,
index 7af5322e7bdf16ea73449e4e5b94e775a1602db5..4514106cece25dcb0bed21988289ac0e21fb6321 100644 (file)
@@ -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 (file)
index 0000000..c0de4cc
--- /dev/null
@@ -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 {}