]> git.lizzy.rs Git - rust.git/commitdiff
Add attributes for trait and methods as well
authorGuillaume Gomez <guillaume1.gomez@gmail.com>
Mon, 21 May 2018 22:31:45 +0000 (00:31 +0200)
committerGuillaume Gomez <guillaume1.gomez@gmail.com>
Sat, 2 Jun 2018 21:26:46 +0000 (23:26 +0200)
src/librustdoc/html/render.rs
src/librustdoc/html/static/main.js
src/librustdoc/html/static/rustdoc.css
src/test/rustdoc/trait-attributes.rs [new file with mode: 0644]

index 109765b6711979899ac0513fe7a0990609101249..5377cd9a39143a4faeb40298897cc5b595aa6c34 100644 (file)
@@ -3055,6 +3055,7 @@ fn method(w: &mut fmt::Formatter,
         } else {
             (0, true)
         };
+        render_attributes(w, meth)?;
         write!(w, "{}{}{}{}fn <a href='{href}' class='fnname'>{name}</a>\
                    {generics}{decl}{where_clause}",
                VisSpace(&meth.visibility),
index bb9a7e472324882059ad14b805efbdd37c0bfb1d..0c937759120ef47e39df76218cffe5b6ab9cb6fd 100644 (file)
 
     autoCollapseAllImpls(getPageId());
 
-    function createToggleWrapper() {
+    function createToggleWrapper(tog) {
         var span = document.createElement('span');
         span.className = 'toggle-label';
         span.style.display = 'none';
         span.innerHTML = '&nbsp;Expand&nbsp;attributes';
-        toggle.appendChild(span);
+        tog.appendChild(span);
 
         var wrapper = document.createElement('div');
         wrapper.className = 'toggle-wrapper toggle-attributes';
-        wrapper.appendChild(toggle);
+        wrapper.appendChild(tog);
         return wrapper;
     }
 
         });
     }
 
-    onEach(document.getElementById('main').getElementsByTagName('pre'), function(e) {
-        onEach(e.getElementsByClassName('attributes'), function(i_e) {
-            i_e.parentNode.insertBefore(createToggleWrapper(), i_e);
-            if (getCurrentValue("rustdoc-item-attributes") !== "false") {
-                collapseDocs(i_e.previousSibling.childNodes[0], "toggle");
-            }
-        });
+    onEach(document.getElementById('main').getElementsByClassName('attributes'), function(i_e) {
+        i_e.parentNode.insertBefore(createToggleWrapper(toggle.cloneNode(true)), i_e);
+        if (getCurrentValue("rustdoc-item-attributes") !== "false") {
+            collapseDocs(i_e.previousSibling.childNodes[0], "toggle");
+        }
     });
 
     onEach(document.getElementsByClassName('rust-example-rendered'), function(e) {
index 83abf35c85484babb7e44ced2ceaf9af236f56f5..867b1e86aa2ca62cab970bb167201b515bce4553 100644 (file)
@@ -771,7 +771,7 @@ h3 > .collapse-toggle, h4 > .collapse-toggle {
 
 .toggle-wrapper {
        position: relative;
-       margin-top: 5px;
+       margin-top: 0;
 }
 
 .toggle-wrapper.collapsed {
@@ -854,10 +854,19 @@ span.since {
 
 .attributes {
        display: block;
-       margin: 0px 0px 0px 30px !important;
+       margin-top: 0px !important;
+       margin-right: 0px;
+       margin-bottom: 0px !important;
+       margin-left: 30px;
 }
 .toggle-attributes.collapsed {
-       margin-bottom: 5px;
+       margin-bottom: 0;
+}
+.impl-items > .toggle-attributes {
+       margin-left: 20px;
+}
+.impl-items .attributes {
+       font-weight: 500;
 }
 
 :target > code {
diff --git a/src/test/rustdoc/trait-attributes.rs b/src/test/rustdoc/trait-attributes.rs
new file mode 100644 (file)
index 0000000..00d1040
--- /dev/null
@@ -0,0 +1,32 @@
+// Copyright 2018 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"]
+
+// ignore-tidy-linelength
+
+pub trait Foo {
+    // @has foo/trait.Foo.html '//h3[@id="tymethod.foo"]//div[@class="docblock attributes"]' '#[must_use]'
+    #[must_use]
+    fn foo();
+}
+
+#[must_use]
+pub struct Bar;
+
+impl Bar {
+    // @has foo/struct.Bar.html '//h4[@id="method.bar"]//div[@class="docblock attributes"]' '#[must_use]'
+    #[must_use]
+    pub fn bar() {}
+
+    // @has foo/struct.Bar.html '//h4[@id="method.bar2"]//div[@class="docblock attributes"]' '#[must_use]'
+    #[must_use]
+    pub fn bar2() {}
+}