diff options
| author | kennytm <kennytm@gmail.com> | 2017-12-22 02:50:52 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-12-22 02:50:52 +0800 |
| commit | 256bf2be62cd1d124fbfe6c6a0fb9c43f4cb3e91 (patch) | |
| tree | 5c365824158db0b5161523226c0f00d475686709 | |
| parent | 614e285fa944dda3e147bb2b3f0d706ff10f7e4f (diff) | |
| parent | d4424d84fbe442fbf0dbad43ca1862544a6a5ec5 (diff) | |
| download | rust-256bf2be62cd1d124fbfe6c6a0fb9c43f4cb3e91.tar.gz rust-256bf2be62cd1d124fbfe6c6a0fb9c43f4cb3e91.zip | |
Rollup merge of #46847 - GuillaumeGomez:more-sidebar-escape, r=QuietMisdreavus
Escape more items in the sidebar when needed Fixes #46724. r? @QuietMisdreavus
| -rw-r--r-- | src/librustdoc/html/render.rs | 7 | ||||
| -rw-r--r-- | src/test/rustdoc/escape-deref-methods.rs | 45 |
2 files changed, 49 insertions, 3 deletions
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 9f981e97a76..fd6865469df 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -3718,9 +3718,10 @@ fn sidebar_assoc_items(it: &clean::Item) -> String { })).and_then(|did| c.impls.get(&did)); if let Some(impls) = inner_impl { out.push_str("<a class=\"sidebar-title\" href=\"#deref-methods\">"); - out.push_str(&format!("Methods from {:#}<Target={:#}>", - impl_.inner_impl().trait_.as_ref().unwrap(), - target)); + out.push_str(&format!("Methods from {}<Target={}>", + Escape(&format!("{:#}", + impl_.inner_impl().trait_.as_ref().unwrap())), + Escape(&format!("{:#}", target)))); out.push_str("</a>"); let ret = impls.iter() .filter(|i| i.inner_impl().trait_.is_none()) diff --git a/src/test/rustdoc/escape-deref-methods.rs b/src/test/rustdoc/escape-deref-methods.rs new file mode 100644 index 00000000000..f31b0ddca9a --- /dev/null +++ b/src/test/rustdoc/escape-deref-methods.rs @@ -0,0 +1,45 @@ +// Copyright 2017 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"] + +use std::ops::{Deref, DerefMut}; + +#[derive(Debug, Clone)] +pub struct Title { + name: String, +} + +#[derive(Debug, Clone)] +pub struct TitleList { + pub members: Vec<Title>, +} + +impl TitleList { + pub fn new() -> Self { + TitleList { members: Vec::new() } + } +} + +impl Deref for TitleList { + type Target = Vec<Title>; + + fn deref(&self) -> &Self::Target { + &self.members + } +} + +// @has foo/struct.TitleList.html +// @has - '//*[@class="sidebar-title"]' 'Methods from Deref<Target=Vec<Title>>' +impl DerefMut for TitleList { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.members + } +} |
