From ff48ccfeabc4fa6d46b24b97cd56ab9bb3b949db Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Wed, 12 Sep 2018 22:18:00 +0200 Subject: [PATCH 01/10] Improve stability messages display a bit --- src/librustdoc/html/static/rustdoc.css | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/librustdoc/html/static/rustdoc.css b/src/librustdoc/html/static/rustdoc.css index 91ff03a327df4..8640f5da1332c 100644 --- a/src/librustdoc/html/static/rustdoc.css +++ b/src/librustdoc/html/static/rustdoc.css @@ -458,17 +458,6 @@ h4 > code, h3 > code, .invisible > code { margin-bottom: 15px; } -.content .impl-items .method, .content .impl-items > .type, .impl-items > .associatedconstant { - margin-left: 20px; -} -.content .impl-items .docblock, .content .impl-items .stability { - margin-bottom: .6em; -} - -.content .impl-items > .stability { - margin-left: 40px; -} - .content .docblock > .impl-items { margin-left: 20px; margin-top: -34px; @@ -506,7 +495,20 @@ h4 > code, h3 > code, .invisible > code { top: -9px; left: -13px; } -.methods > .stability { + +.content .impl-items .method, .content .impl-items > .type, .impl-items > .associatedconstant { + margin-left: 20px; +} + +.content .impl-items .docblock, .content .impl-items .stability { + margin-bottom: .6em; +} + +.content .impl-items > .stability { + margin-left: 40px; +} + +.methods > .stability, .content .impl-items > .stability { margin-top: -8px; } From edec5807ac5ba90cbc0c61a5ec7b80f29e1eea33 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Wed, 12 Sep 2018 23:31:21 +0200 Subject: [PATCH 02/10] Hide items if they use default docs --- src/librustdoc/html/render.rs | 61 ++++++++++++++++---------- src/librustdoc/html/static/main.js | 30 +++++++++++++ src/librustdoc/html/static/rustdoc.css | 5 +++ src/librustdoc/html/static/storage.js | 16 +++++-- 4 files changed, 85 insertions(+), 27 deletions(-) diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index dda0f37c3f95b..bb95696c5130e 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -2259,8 +2259,8 @@ fn document(w: &mut fmt::Formatter, cx: &Context, item: &clean::Item) -> fmt::Re if let Some(ref name) = item.name { info!("Documenting {}", name); } - document_stability(w, cx, item)?; - document_full(w, item, cx, "")?; + document_stability(w, cx, item, false)?; + document_full(w, item, cx, "", false)?; Ok(()) } @@ -2269,15 +2269,19 @@ fn render_markdown(w: &mut fmt::Formatter, cx: &Context, md_text: &str, links: Vec<(String, String)>, - prefix: &str) + prefix: &str, + is_hidden: bool) -> fmt::Result { let mut ids = cx.id_map.borrow_mut(); - write!(w, "
{}{}
", - prefix, Markdown(md_text, &links, RefCell::new(&mut ids), cx.codes)) + write!(w, "
{}{}
", + if is_hidden { " hidden" } else { "" }, + prefix, + Markdown(md_text, &links, RefCell::new(&mut ids), + cx.codes)) } fn document_short(w: &mut fmt::Formatter, cx: &Context, item: &clean::Item, link: AssocItemLink, - prefix: &str) -> fmt::Result { + prefix: &str, is_hidden: bool) -> fmt::Result { if let Some(s) = item.doc_value() { let markdown = if s.contains('\n') { format!("{} [Read more]({})", @@ -2285,28 +2289,33 @@ fn document_short(w: &mut fmt::Formatter, cx: &Context, item: &clean::Item, link } else { plain_summary_line(Some(s)).to_string() }; - render_markdown(w, cx, &markdown, item.links(), prefix)?; + render_markdown(w, cx, &markdown, item.links(), prefix, is_hidden)?; } else if !prefix.is_empty() { - write!(w, "
{}
", prefix)?; + write!(w, "
{}
", + if is_hidden { " hidden" } else { "" }, + prefix)?; } Ok(()) } fn document_full(w: &mut fmt::Formatter, item: &clean::Item, - cx: &Context, prefix: &str) -> fmt::Result { + cx: &Context, prefix: &str, is_hidden: bool) -> fmt::Result { if let Some(s) = cx.shared.maybe_collapsed_doc_value(item) { debug!("Doc block: =====\n{}\n=====", s); - render_markdown(w, cx, &*s, item.links(), prefix)?; + render_markdown(w, cx, &*s, item.links(), prefix, is_hidden)?; } else if !prefix.is_empty() { - write!(w, "
{}
", prefix)?; + write!(w, "
{}
", + if is_hidden { " hidden" } else { "" }, + prefix)?; } Ok(()) } -fn document_stability(w: &mut fmt::Formatter, cx: &Context, item: &clean::Item) -> fmt::Result { +fn document_stability(w: &mut fmt::Formatter, cx: &Context, item: &clean::Item, + is_hidden: bool) -> fmt::Result { let stabilities = short_stability(item, cx, true); if !stabilities.is_empty() { - write!(w, "
")?; + write!(w, "
", if is_hidden { " hidden" } else { "" })?; for stability in stabilities { write!(w, "{}", stability)?; } @@ -3872,6 +3881,11 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi RenderMode::ForDeref { mut_: deref_mut_ } => should_render_item(&item, deref_mut_), }; + let (mut is_hidden, extra_class) = if item.doc_value().is_some() { + (false, "") + } else { + (true, " hidden") + }; match item.inner { clean::MethodItem(clean::Method { ref decl, .. }) | clean::TyMethodItem(clean::TyMethod{ ref decl, .. }) => { @@ -3896,12 +3910,13 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi render_stability_since_raw(w, item.stable_since(), outer_version)?; } write!(w, "")?; + is_hidden = false; } } clean::TypedefItem(ref tydef, _) => { let id = cx.derive_id(format!("{}.{}", ItemType::AssociatedType, name)); let ns_id = cx.derive_id(format!("{}.{}", name, item_type.name_space())); - write!(w, "

", id, item_type)?; + write!(w, "

", id, item_type, extra_class)?; write!(w, "

\n")?; @@ -3909,7 +3924,7 @@ fn render_impl(w: &mut fmt::Formatter, cx: &Context, i: &Impl, link: AssocItemLi clean::AssociatedConstItem(ref ty, ref default) => { let id = cx.derive_id(format!("{}.{}", item_type, name)); let ns_id = cx.derive_id(format!("{}.{}", name, item_type.name_space())); - write!(w, "

", id, item_type)?; + write!(w, "

", id, item_type, extra_class)?; write!(w, "] Hide undocumented items" } else { addClass(this, "collapsed"); onEach(this.parentNode.getElementsByClassName("x"), function(x) { @@ -2085,7 +2095,7 @@ } }, true); this.innerHTML = "[" + labelForToggleButton(true) + - "] Show hidden default items"; + "] Show hidden undocumented items"; } }; e.insertBefore(newToggle, e.firstChild); diff --git a/src/test/rustdoc/assoc-consts.rs b/src/test/rustdoc/assoc-consts.rs index 9ace871491824..d4f8e614ad072 100644 --- a/src/test/rustdoc/assoc-consts.rs +++ b/src/test/rustdoc/assoc-consts.rs @@ -99,7 +99,7 @@ impl Qux for Bar { /// Docs for QUX1 in impl. const QUX1: i8 = 5; // @has - '//*[@id="associatedconstant.QUX_DEFAULT0"]' 'const QUX_DEFAULT0: u16' - // @has - '//*[@class="docblock hidden"]' "Docs for QUX_DEFAULT12 in trait." + // @has - '//*[@class="docblock"]' "Docs for QUX_DEFAULT12 in trait." const QUX_DEFAULT0: u16 = 6; // @has - '//*[@id="associatedconstant.QUX_DEFAULT1"]' 'const QUX_DEFAULT1: i16' // @has - '//*[@class="docblock"]' "Docs for QUX_DEFAULT1 in impl." diff --git a/src/test/rustdoc/manual_impl.rs b/src/test/rustdoc/manual_impl.rs index 54a8a76483341..ea46dae4f8324 100644 --- a/src/test/rustdoc/manual_impl.rs +++ b/src/test/rustdoc/manual_impl.rs @@ -74,7 +74,7 @@ impl T for S2 { // @has manual_impl/struct.S3.html '//*[@class="trait"]' 'T' // @has - '//*[@class="docblock"]' 'Docs associated with the S3 trait implementation.' // @has - '//*[@class="docblock"]' 'Docs associated with the S3 trait b_method implementation.' -// @has - '//*[@class="docblock"]' 'Docs associated with the trait a_method definition.' +// @has - '//*[@class="docblock hidden"]' 'Docs associated with the trait a_method definition.' pub struct S3(usize); /// Docs associated with the S3 trait implementation. From e84f461d0abbb499430ab2dd9c81ae90a16f24d1 Mon Sep 17 00:00:00 2001 From: Aidan Hobson Sayers Date: Wed, 31 Oct 2018 23:10:36 +0000 Subject: [PATCH 06/10] Make `-Z ls` list the actual filename of external dependencies --- src/librustc_metadata/decoder.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/librustc_metadata/decoder.rs b/src/librustc_metadata/decoder.rs index 9864c1f3d7c68..0854df5d1269f 100644 --- a/src/librustc_metadata/decoder.rs +++ b/src/librustc_metadata/decoder.rs @@ -400,7 +400,7 @@ impl<'a, 'tcx> MetadataBlob { for (i, dep) in root.crate_deps .decode(self) .enumerate() { - write!(out, "{} {}-{}\n", i + 1, dep.name, dep.hash)?; + write!(out, "{} {}{}\n", i + 1, dep.name, dep.extra_filename)?; } write!(out, "\n")?; Ok(()) From 273930e59fff70b0e5b981a81e89b3007679bf66 Mon Sep 17 00:00:00 2001 From: Alex Burka Date: Thu, 1 Nov 2018 02:58:29 +0000 Subject: [PATCH 07/10] test that rustdoc doesn't overflow on a big enum --- src/test/rustdoc/auxiliary/enum_primitive.rs | 210 +++++++++++++++++++ src/test/rustdoc/no-stack-overflow-25295.rs | 46 ++++ 2 files changed, 256 insertions(+) create mode 100644 src/test/rustdoc/auxiliary/enum_primitive.rs create mode 100644 src/test/rustdoc/no-stack-overflow-25295.rs diff --git a/src/test/rustdoc/auxiliary/enum_primitive.rs b/src/test/rustdoc/auxiliary/enum_primitive.rs new file mode 100644 index 0000000000000..c265ae44f0dc0 --- /dev/null +++ b/src/test/rustdoc/auxiliary/enum_primitive.rs @@ -0,0 +1,210 @@ +// Copyright (c) 2015 Anders Kaseorg + +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// β€œSoftware”), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: + +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED β€œAS IS”, WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +//! This crate exports a macro `enum_from_primitive!` that wraps an +//! `enum` declaration and automatically adds an implementation of +//! `num::FromPrimitive` (reexported here), to allow conversion from +//! primitive integers to the enum. It therefore provides an +//! alternative to the built-in `#[derive(FromPrimitive)]`, which +//! requires the unstable `std::num::FromPrimitive` and is disabled in +//! Rust 1.0. +//! +//! # Example +//! +//! ``` +//! #[macro_use] extern crate enum_primitive; +//! extern crate num_traits; +//! use num_traits::FromPrimitive; +//! +//! enum_from_primitive! { +//! #[derive(Debug, PartialEq)] +//! enum FooBar { +//! Foo = 17, +//! Bar = 42, +//! Baz, +//! } +//! } +//! +//! fn main() { +//! assert_eq!(FooBar::from_i32(17), Some(FooBar::Foo)); +//! assert_eq!(FooBar::from_i32(42), Some(FooBar::Bar)); +//! assert_eq!(FooBar::from_i32(43), Some(FooBar::Baz)); +//! assert_eq!(FooBar::from_i32(91), None); +//! } +//! ``` + + +pub mod num_traits { + pub trait FromPrimitive: Sized { + fn from_i64(n: i64) -> Option; + fn from_u64(n: u64) -> Option; + } +} + +pub use std::option::Option; +pub use num_traits::FromPrimitive; + +/// Helper macro for internal use by `enum_from_primitive!`. +#[macro_export] +macro_rules! enum_from_primitive_impl_ty { + ($meth:ident, $ty:ty, $name:ident, $( $variant:ident )*) => { + #[allow(non_upper_case_globals, unused)] + fn $meth(n: $ty) -> $crate::Option { + $( if n == $name::$variant as $ty { + $crate::Option::Some($name::$variant) + } else )* { + $crate::Option::None + } + } + }; +} + +/// Helper macro for internal use by `enum_from_primitive!`. +#[macro_export] +#[macro_use(enum_from_primitive_impl_ty)] +macro_rules! enum_from_primitive_impl { + ($name:ident, $( $variant:ident )*) => { + impl $crate::FromPrimitive for $name { + enum_from_primitive_impl_ty! { from_i64, i64, $name, $( $variant )* } + enum_from_primitive_impl_ty! { from_u64, u64, $name, $( $variant )* } + } + }; +} + +/// Wrap this macro around an `enum` declaration to get an +/// automatically generated implementation of `num::FromPrimitive`. +#[macro_export] +#[macro_use(enum_from_primitive_impl)] +macro_rules! enum_from_primitive { + ( + $( #[$enum_attr:meta] )* + enum $name:ident { + $( $( #[$variant_attr:meta] )* $variant:ident ),+ + $( = $discriminator:expr, $( $( #[$variant_two_attr:meta] )* $variant_two:ident ),+ )* + } + ) => { + $( #[$enum_attr] )* + enum $name { + $( $( #[$variant_attr] )* $variant ),+ + $( = $discriminator, $( $( #[$variant_two_attr] )* $variant_two ),+ )* + } + enum_from_primitive_impl! { $name, $( $variant )+ $( $( $variant_two )+ )* } + }; + + ( + $( #[$enum_attr:meta] )* + enum $name:ident { + $( $( $( #[$variant_attr:meta] )* $variant:ident ),+ = $discriminator:expr ),* + } + ) => { + $( #[$enum_attr] )* + enum $name { + $( $( $( #[$variant_attr] )* $variant ),+ = $discriminator ),* + } + enum_from_primitive_impl! { $name, $( $( $variant )+ )* } + }; + + ( + $( #[$enum_attr:meta] )* + enum $name:ident { + $( $( #[$variant_attr:meta] )* $variant:ident ),+ + $( = $discriminator:expr, $( $( #[$variant_two_attr:meta] )* $variant_two:ident ),+ )*, + } + ) => { + $( #[$enum_attr] )* + enum $name { + $( $( #[$variant_attr] )* $variant ),+ + $( = $discriminator, $( $( #[$variant_two_attr] )* $variant_two ),+ )*, + } + enum_from_primitive_impl! { $name, $( $variant )+ $( $( $variant_two )+ )* } + }; + + ( + $( #[$enum_attr:meta] )* + enum $name:ident { + $( $( $( #[$variant_attr:meta] )* $variant:ident ),+ = $discriminator:expr ),+, + } + ) => { + $( #[$enum_attr] )* + enum $name { + $( $( $( #[$variant_attr] )* $variant ),+ = $discriminator ),+, + } + enum_from_primitive_impl! { $name, $( $( $variant )+ )+ } + }; + + ( + $( #[$enum_attr:meta] )* + pub enum $name:ident { + $( $( #[$variant_attr:meta] )* $variant:ident ),+ + $( = $discriminator:expr, $( $( #[$variant_two_attr:meta] )* $variant_two:ident ),+ )* + } + ) => { + $( #[$enum_attr] )* + pub enum $name { + $( $( #[$variant_attr] )* $variant ),+ + $( = $discriminator, $( $( #[$variant_two_attr] )* $variant_two ),+ )* + } + enum_from_primitive_impl! { $name, $( $variant )+ $( $( $variant_two )+ )* } + }; + + ( + $( #[$enum_attr:meta] )* + pub enum $name:ident { + $( $( $( #[$variant_attr:meta] )* $variant:ident ),+ = $discriminator:expr ),* + } + ) => { + $( #[$enum_attr] )* + pub enum $name { + $( $( $( #[$variant_attr] )* $variant ),+ = $discriminator ),* + } + enum_from_primitive_impl! { $name, $( $( $variant )+ )* } + }; + + ( + $( #[$enum_attr:meta] )* + pub enum $name:ident { + $( $( #[$variant_attr:meta] )* $variant:ident ),+ + $( = $discriminator:expr, $( $( #[$variant_two_attr:meta] )* $variant_two:ident ),+ )*, + } + ) => { + $( #[$enum_attr] )* + pub enum $name { + $( $( #[$variant_attr] )* $variant ),+ + $( = $discriminator, $( $( #[$variant_two_attr] )* $variant_two ),+ )*, + } + enum_from_primitive_impl! { $name, $( $variant )+ $( $( $variant_two )+ )* } + }; + + ( + $( #[$enum_attr:meta] )* + pub enum $name:ident { + $( $( $( #[$variant_attr:meta] )* $variant:ident ),+ = $discriminator:expr ),+, + } + ) => { + $( #[$enum_attr] )* + pub enum $name { + $( $( $( #[$variant_attr] )* $variant ),+ = $discriminator ),+, + } + enum_from_primitive_impl! { $name, $( $( $variant )+ )+ } + }; +} + diff --git a/src/test/rustdoc/no-stack-overflow-25295.rs b/src/test/rustdoc/no-stack-overflow-25295.rs new file mode 100644 index 0000000000000..37b0aca4b00ca --- /dev/null +++ b/src/test/rustdoc/no-stack-overflow-25295.rs @@ -0,0 +1,46 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// ensure this code doesn't stack overflow +// aux-build:enum_primitive.rs + +#[macro_use] extern crate enum_primitive; + +enum_from_primitive! { + pub enum Test { + A1,A2,A3,A4,A5,A6, + B1,B2,B3,B4,B5,B6, + C1,C2,C3,C4,C5,C6, + D1,D2,D3,D4,D5,D6, + E1,E2,E3,E4,E5,E6, + F1,F2,F3,F4,F5,F6, + G1,G2,G3,G4,G5,G6, + H1,H2,H3,H4,H5,H6, + I1,I2,I3,I4,I5,I6, + J1,J2,J3,J4,J5,J6, + K1,K2,K3,K4,K5,K6, + L1,L2,L3,L4,L5,L6, + M1,M2,M3,M4,M5,M6, + N1,N2,N3,N4,N5,N6, + O1,O2,O3,O4,O5,O6, + P1,P2,P3,P4,P5,P6, + Q1,Q2,Q3,Q4,Q5,Q6, + R1,R2,R3,R4,R5,R6, + S1,S2,S3,S4,S5,S6, + T1,T2,T3,T4,T5,T6, + U1,U2,U3,U4,U5,U6, + V1,V2,V3,V4,V5,V6, + W1,W2,W3,W4,W5,W6, + X1,X2,X3,X4,X5,X6, + Y1,Y2,Y3,Y4,Y5,Y6, + Z1,Z2,Z3,Z4,Z5,Z6, + } +} + From d0778ac88e5e920e9ac2432a7c5c3246fb236310 Mon Sep 17 00:00:00 2001 From: Nick Cameron Date: Fri, 2 Nov 2018 10:38:05 +1300 Subject: [PATCH 08/10] publish-toolstate: ping maintainers when a tool builds again And add @Xanewok as an RLS maintainer --- src/tools/publish_toolstate.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tools/publish_toolstate.py b/src/tools/publish_toolstate.py index c794e169fca33..4ade87f5d65bd 100755 --- a/src/tools/publish_toolstate.py +++ b/src/tools/publish_toolstate.py @@ -26,7 +26,7 @@ MAINTAINERS = { 'miri': '@oli-obk @RalfJung @eddyb', 'clippy-driver': '@Manishearth @llogiq @mcarton @oli-obk', - 'rls': '@nrc', + 'rls': '@nrc @Xanewok', 'rustfmt': '@nrc', 'book': '@carols10cents @steveklabnik', 'nomicon': '@frewsxcv @Gankro', @@ -81,8 +81,8 @@ def update_latest( status[os] = new if new > old: changed = True - message += 'πŸŽ‰ {} on {}: {} β†’ {}.\n' \ - .format(tool, os, old, new) + message += 'πŸŽ‰ {} on {}: {} β†’ {} (cc {}, @rust-lang/infra).\n' \ + .format(tool, os, old, new, MAINTAINERS.get(tool)) elif new < old: changed = True message += 'πŸ’” {} on {}: {} β†’ {} (cc {}, @rust-lang/infra).\n' \ From 2279f6260c42344257fccef364c5cfef6c9b093e Mon Sep 17 00:00:00 2001 From: Alex Burka Date: Thu, 1 Nov 2018 02:57:37 +0000 Subject: [PATCH 09/10] add test for deriving Debug on uninhabited enum --- src/test/ui/derive-uninhabited-enum-38885.rs | 27 +++++++++++++++++++ .../ui/derive-uninhabited-enum-38885.stderr | 14 ++++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/test/ui/derive-uninhabited-enum-38885.rs create mode 100644 src/test/ui/derive-uninhabited-enum-38885.stderr diff --git a/src/test/ui/derive-uninhabited-enum-38885.rs b/src/test/ui/derive-uninhabited-enum-38885.rs new file mode 100644 index 0000000000000..dc7f5d60cd82c --- /dev/null +++ b/src/test/ui/derive-uninhabited-enum-38885.rs @@ -0,0 +1,27 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// compile-pass +// compile-flags: -Wunused + +// ensure there are no special warnings about uninhabited types +// when deriving Debug on an empty enum + +#[derive(Debug)] +enum Void {} //~ WARN never used + +#[derive(Debug)] +enum Foo { //~ WARN never used + Bar(u8), + Void(Void), +} + +fn main() {} + diff --git a/src/test/ui/derive-uninhabited-enum-38885.stderr b/src/test/ui/derive-uninhabited-enum-38885.stderr new file mode 100644 index 0000000000000..11032abfa12ae --- /dev/null +++ b/src/test/ui/derive-uninhabited-enum-38885.stderr @@ -0,0 +1,14 @@ +warning: enum is never used: `Void` + --> $DIR/derive-uninhabited-enum-38885.rs:18:1 + | +LL | enum Void {} //~ WARN never used + | ^^^^^^^^^ + | + = note: `-W dead-code` implied by `-W unused` + +warning: enum is never used: `Foo` + --> $DIR/derive-uninhabited-enum-38885.rs:21:1 + | +LL | enum Foo { //~ WARN never used + | ^^^^^^^^ + From ca65b4304e2a3179c206a4d61dc623e790fc117d Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 1 Nov 2018 23:57:17 +0100 Subject: [PATCH 10/10] Don't show associated const items by default --- src/librustdoc/clean/mod.rs | 1 - src/test/rustdoc/assoc-consts.rs | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index f7f2a45255e64..80a4759ec088d 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -556,7 +556,6 @@ impl ItemEnum { pub fn is_associated(&self) -> bool { match *self { ItemEnum::TypedefItem(_, _) | - ItemEnum::AssociatedConstItem(_, _) | ItemEnum::AssociatedTypeItem(_, _) => true, _ => false, } diff --git a/src/test/rustdoc/assoc-consts.rs b/src/test/rustdoc/assoc-consts.rs index d4f8e614ad072..9ace871491824 100644 --- a/src/test/rustdoc/assoc-consts.rs +++ b/src/test/rustdoc/assoc-consts.rs @@ -99,7 +99,7 @@ impl Qux for Bar { /// Docs for QUX1 in impl. const QUX1: i8 = 5; // @has - '//*[@id="associatedconstant.QUX_DEFAULT0"]' 'const QUX_DEFAULT0: u16' - // @has - '//*[@class="docblock"]' "Docs for QUX_DEFAULT12 in trait." + // @has - '//*[@class="docblock hidden"]' "Docs for QUX_DEFAULT12 in trait." const QUX_DEFAULT0: u16 = 6; // @has - '//*[@id="associatedconstant.QUX_DEFAULT1"]' 'const QUX_DEFAULT1: i16' // @has - '//*[@class="docblock"]' "Docs for QUX_DEFAULT1 in impl."