about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-04-15 18:23:47 +0200
committerGitHub <noreply@github.com>2019-04-15 18:23:47 +0200
commitfb2ce84f1daa66304bdb42b2192005585b47208b (patch)
tree4fca70e386e31ca679819ec93dbe86c18a577833
parentc712d386345b5edf060f2413dca542031ee39a42 (diff)
parent1db76c1bff60584e46f75fad99a78dd9ad7e9fd6 (diff)
downloadrust-fb2ce84f1daa66304bdb42b2192005585b47208b.tar.gz
rust-fb2ce84f1daa66304bdb42b2192005585b47208b.zip
Rollup merge of #59978 - ollie27:rustdoc_default, r=QuietMisdreavus
rustdoc: Remove default keyword from re-exported trait methods

Fixes #59977

r? @QuietMisdreavus

As this fixes a stable to beta regression, could it be backported?
-rw-r--r--src/librustdoc/clean/mod.rs6
-rw-r--r--src/test/rustdoc/default-trait-method.rs26
-rw-r--r--src/test/rustdoc/default_trait_method.rs15
-rw-r--r--src/test/rustdoc/inline_cross/auxiliary/default-trait-method.rs16
-rw-r--r--src/test/rustdoc/inline_cross/default-trait-method.rs20
5 files changed, 67 insertions, 16 deletions
diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs
index e994c661fdc..80e796b0af7 100644
--- a/src/librustdoc/clean/mod.rs
+++ b/src/librustdoc/clean/mod.rs
@@ -2325,6 +2325,10 @@ impl<'tcx> Clean<Item> for ty::AssociatedItem {
                     } else {
                         hir::Constness::NotConst
                     };
+                    let defaultness = match self.container {
+                        ty::ImplContainer(_) => Some(self.defaultness),
+                        ty::TraitContainer(_) => None,
+                    };
                     MethodItem(Method {
                         generics,
                         decl,
@@ -2334,7 +2338,7 @@ impl<'tcx> Clean<Item> for ty::AssociatedItem {
                             constness,
                             asyncness: hir::IsAsync::NotAsync,
                         },
-                        defaultness: Some(self.defaultness),
+                        defaultness,
                         all_types,
                         ret_types,
                     })
diff --git a/src/test/rustdoc/default-trait-method.rs b/src/test/rustdoc/default-trait-method.rs
new file mode 100644
index 00000000000..3d6ebef5a1d
--- /dev/null
+++ b/src/test/rustdoc/default-trait-method.rs
@@ -0,0 +1,26 @@
+#![feature(specialization)]
+
+// @has default_trait_method/trait.Item.html
+// @has - '//*[@id="tymethod.foo"]' 'fn foo()'
+// @!has - '//*[@id="tymethod.foo"]' 'default fn foo()'
+// @has - '//*[@id="tymethod.bar"]' 'fn bar()'
+// @!has - '//*[@id="tymethod.bar"]' 'default fn bar()'
+// @has - '//*[@id="method.baz"]' 'fn baz()'
+// @!has - '//*[@id="method.baz"]' 'default fn baz()'
+pub trait Item {
+    fn foo();
+    fn bar();
+    fn baz() {}
+}
+
+// @has default_trait_method/struct.Foo.html
+// @has - '//*[@id="method.foo"]' 'default fn foo()'
+// @has - '//*[@id="method.bar"]' 'fn bar()'
+// @!has - '//*[@id="method.bar"]' 'default fn bar()'
+// @has - '//*[@id="method.baz"]' 'fn baz()'
+// @!has - '//*[@id="method.baz"]' 'default fn baz()'
+pub struct Foo;
+impl Item for Foo {
+    default fn foo() {}
+    fn bar() {}
+}
diff --git a/src/test/rustdoc/default_trait_method.rs b/src/test/rustdoc/default_trait_method.rs
deleted file mode 100644
index dfbd8f2210f..00000000000
--- a/src/test/rustdoc/default_trait_method.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-#![feature(specialization)]
-
-pub trait Item {
-    fn foo();
-    fn bar();
-}
-
-// @has default_trait_method/trait.Item.html
-// @has - '//*[@id="method.foo"]' 'default fn foo()'
-// @has - '//*[@id="method.bar"]' 'fn bar()'
-// @!has - '//*[@id="method.bar"]' 'default fn bar()'
-impl<T: ?Sized> Item for T {
-    default fn foo() {}
-    fn bar() {}
-}
diff --git a/src/test/rustdoc/inline_cross/auxiliary/default-trait-method.rs b/src/test/rustdoc/inline_cross/auxiliary/default-trait-method.rs
new file mode 100644
index 00000000000..ce60bbfb4b0
--- /dev/null
+++ b/src/test/rustdoc/inline_cross/auxiliary/default-trait-method.rs
@@ -0,0 +1,16 @@
+#![feature(specialization)]
+
+#![crate_name = "foo"]
+
+pub trait Item {
+    fn foo();
+    fn bar();
+    fn baz() {}
+}
+
+pub struct Foo;
+
+impl Item for Foo {
+    default fn foo() {}
+    fn bar() {}
+}
diff --git a/src/test/rustdoc/inline_cross/default-trait-method.rs b/src/test/rustdoc/inline_cross/default-trait-method.rs
new file mode 100644
index 00000000000..a4ec73a127d
--- /dev/null
+++ b/src/test/rustdoc/inline_cross/default-trait-method.rs
@@ -0,0 +1,20 @@
+// aux-build:default-trait-method.rs
+
+extern crate foo;
+
+// @has default_trait_method/trait.Item.html
+// @has - '//*[@id="tymethod.foo"]' 'fn foo()'
+// @!has - '//*[@id="tymethod.foo"]' 'default fn foo()'
+// @has - '//*[@id="tymethod.bar"]' 'fn bar()'
+// @!has - '//*[@id="tymethod.bar"]' 'default fn bar()'
+// @has - '//*[@id="method.baz"]' 'fn baz()'
+// @!has - '//*[@id="method.baz"]' 'default fn baz()'
+pub use foo::Item;
+
+// @has default_trait_method/struct.Foo.html
+// @has - '//*[@id="method.foo"]' 'default fn foo()'
+// @has - '//*[@id="method.bar"]' 'fn bar()'
+// @!has - '//*[@id="method.bar"]' 'default fn bar()'
+// @has - '//*[@id="method.baz"]' 'fn baz()'
+// @!has - '//*[@id="method.baz"]' 'default fn baz()'
+pub use foo::Foo;