From: Oliver Middleton Date: Thu, 12 May 2016 17:23:11 +0000 (+0100) Subject: rustdoc: Fix missing type parameters on impls X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=538de73f5b90eb831b7cc64e78f3aaac57d1378f;p=rust.git rustdoc: Fix missing type parameters on impls --- 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 @@ pub fn primitive_type(&self) -> Option { } } - pub fn trait_name(&self) -> Option { - 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![crate_name = "foo"] + +pub trait Foo {} + +pub struct Bar; + +pub struct Baz; + +// @has foo/trait.Foo.html '//code' 'impl Foo for Bar' +impl Foo for Bar {} + +// @has foo/trait.Foo.html '//code' 'impl Foo for Baz' +impl Foo for Baz {}