about summary refs log tree commit diff
path: root/src/librustdoc/html
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2017-11-20 21:50:05 +0100
committerGuillaume Gomez <guillaume1.gomez@gmail.com>2017-11-20 21:53:19 +0100
commit09dcc5f361bb6d68251ff2cbc4a76b13f173ec7b (patch)
tree70b98526262647b822ba0af2bd365cbd48ab0109 /src/librustdoc/html
parente06138338f78cd2695f857855e685e9e50a2486b (diff)
downloadrust-09dcc5f361bb6d68251ff2cbc4a76b13f173ec7b.tar.gz
rust-09dcc5f361bb6d68251ff2cbc4a76b13f173ec7b.zip
Display negative traits implementation
Diffstat (limited to 'src/librustdoc/html')
-rw-r--r--src/librustdoc/html/render.rs28
1 files changed, 19 insertions, 9 deletions
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs
index e79a63fb8d8..c1402e00272 100644
--- a/src/librustdoc/html/render.rs
+++ b/src/librustdoc/html/render.rs
@@ -3613,18 +3613,24 @@ fn sidebar_assoc_items(it: &clean::Item) -> String {
             }
             let mut links = HashSet::new();
             let ret = v.iter()
-                       .filter_map(|i| if let Some(ref i) = i.inner_impl().trait_ {
-                           let i_display = format!("{:#}", i);
-                           let out = Escape(&i_display);
-                           let encoded = small_url_encode(&format!("{:#}", i));
-                           let generated = format!("<a href=\"#impl-{}\">{}</a>", encoded, out);
-                           if !links.contains(&generated) && links.insert(generated.clone()) {
-                               Some(generated)
+                       .filter_map(|i| {
+                           let is_negative_impl = is_negative_impl(i.inner_impl());
+                           if let Some(ref i) = i.inner_impl().trait_ {
+                               let i_display = format!("{:#}", i);
+                               let out = Escape(&i_display);
+                               let encoded = small_url_encode(&format!("{:#}", i));
+                               let generated = format!("<a href=\"#impl-{}\">{}{}</a>",
+                                                       encoded,
+                                                       if is_negative_impl { "!" } else { "" },
+                                                       out);
+                               if !links.contains(&generated) && links.insert(generated.clone()) {
+                                   Some(generated)
+                               } else {
+                                   None
+                               }
                            } else {
                                None
                            }
-                       } else {
-                           None
                        })
                        .collect::<String>();
             if !ret.is_empty() {
@@ -3671,6 +3677,10 @@ fn extract_for_impl_name(item: &clean::Item) -> Option<(String, String)> {
     }
 }
 
+fn is_negative_impl(i: &clean::Impl) -> bool {
+    i.polarity == Some(clean::ImplPolarity::Negative)
+}
+
 fn sidebar_trait(fmt: &mut fmt::Formatter, it: &clean::Item,
                  t: &clean::Trait) -> fmt::Result {
     let mut sidebar = String::new();