]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoRollup merge of #89520 - GuillaumeGomez:cache-rustdoc-gui-test, r=Mark-Simulacrum
Matthias Krüger [Sun, 10 Oct 2021 16:22:20 +0000 (18:22 +0200)]
Rollup merge of #89520 - GuillaumeGomez:cache-rustdoc-gui-test, r=Mark-Simulacrum

Don't rebuild GUI test crates every time you run test src/test/rustdoc-gui

This method has multiple advantages:

 * It'll completely remove the rustdoc-GUI test doc folder if rustdoc was updated
 * It'll rebuild GUI test crates only they have been updated

All in all, it's quite convenient! (even more with https://github.com/rust-lang/rust/pull/88816)

r? ```@Mark-Simulacrum```

2 years agoRollup merge of #89438 - pierwill:prefix-free-hash, r=Amanieu
Matthias Krüger [Sun, 10 Oct 2021 16:22:20 +0000 (18:22 +0200)]
Rollup merge of #89438 - pierwill:prefix-free-hash, r=Amanieu

docs: `std::hash::Hash` should ensure prefix-free data

Attempt to synthesize the discussion in #89429 into a suggestion regarding `Hash` implementations (not a hard requirement).

Closes #89429.

2 years agoRollup merge of #89428 - DevinR528:reachable-featuregate, r=Nadrieril,camelid
Matthias Krüger [Sun, 10 Oct 2021 16:22:19 +0000 (18:22 +0200)]
Rollup merge of #89428 - DevinR528:reachable-featuregate, r=Nadrieril,camelid

Feature gate the non_exhaustive_omitted_patterns lint

Fixes https://github.com/rust-lang/rust/issues/89374

Add the machinery to gate the new `non_exhaustive_omitted_patterns` lint.

relates to https://github.com/rust-lang/rust/pull/89105 and https://github.com/rust-lang/rust/pull/89423

2 years agoRollup merge of #88713 - falk-hueffner:int-log10-documentation-fixes, r=scottmcm
Matthias Krüger [Sun, 10 Oct 2021 16:22:18 +0000 (18:22 +0200)]
Rollup merge of #88713 - falk-hueffner:int-log10-documentation-fixes, r=scottmcm

Improve docs for int_log

* Clarify rounding.
* Avoid "wrapping" wording.
* Omit wrong claim on 0 only being returned in error cases.
* Typo fix for one_less_than_next_power_of_two.

2 years agoRollup merge of #88374 - joshlf:patch-2, r=JohnTitor
Matthias Krüger [Sun, 10 Oct 2021 16:22:17 +0000 (18:22 +0200)]
Rollup merge of #88374 - joshlf:patch-2, r=JohnTitor

Fix documentation in Cell

2 years agoAuto merge of #89219 - nickkuk:str_split_once_get_unchecked, r=Mark-Simulacrum
bors [Sun, 10 Oct 2021 12:29:48 +0000 (12:29 +0000)]
Auto merge of #89219 - nickkuk:str_split_once_get_unchecked, r=Mark-Simulacrum

Use get_unchecked in str::[r]split_once

This PR removes indices checking in `str::split_once` and `str::rsplit_once` methods.

2 years agoAuto merge of #88952 - skrap:add-armv7-uclibc, r=nagisa
bors [Sun, 10 Oct 2021 08:16:22 +0000 (08:16 +0000)]
Auto merge of #88952 - skrap:add-armv7-uclibc, r=nagisa

Add new tier-3 target: armv7-unknown-linux-uclibceabihf

This change adds a new tier-3 target: armv7-unknown-linux-uclibceabihf

This target is primarily used in embedded linux devices where system resources are slim and glibc is deemed too heavyweight.  Cross compilation C toolchains are available [here](https://toolchains.bootlin.com/) or via [buildroot](https://buildroot.org).

The change is based largely on a previous PR #79380 with a few minor modifications.  The author of that PR was unable to push the PR forward, and graciously allowed me to take it over.

Per the [target tier 3 policy](https://github.com/rust-lang/rfcs/blob/master/text/2803-target-tier-policy.md), I volunteer to be the "target maintainer".

This is my first PR to Rust itself, so I apologize if I've missed things!

2 years agoAuto merge of #89695 - jsha:more-templates, r=GuillaumeGomez
bors [Sun, 10 Oct 2021 04:41:03 +0000 (04:41 +0000)]
Auto merge of #89695 - jsha:more-templates, r=GuillaumeGomez

Move top part of print_item to Tera templates

Part of #84419.

This moves the first line of each item page (E.g. `Struct foo::Bar .... 1.0.0 [-][src]` into a Tera template.

I also moved template initialization into its own module and added a small macro to reduce duplication and opportunity for errors.

2 years agoAuto merge of #89661 - rusticstuff:libisl_mirror_take_two, r=Mark-Simulacrum
bors [Sun, 10 Oct 2021 01:46:11 +0000 (01:46 +0000)]
Auto merge of #89661 - rusticstuff:libisl_mirror_take_two, r=Mark-Simulacrum

CI: Use mirror for libisl downloads for more docker dist builds

http://isl.gforge.inria.fr fell from the net a couple of days ago. It hosts libisl source tarballs required by crosstool-ng, which we use for our docker dist cross-compilation builds. Some of the affected builds were already fixed in #89599.

This PR sets a mirror URL for the other builds requiring libisl-0.14. They use an older version of crosstool-ng (1.22.0), which has only one mirror setting for all downloads.

r? `@Mark-Simulacrum`

2 years agoAuto merge of #89631 - camsteffen:clippy-boot-env, r=Mark-Simulacrum
bors [Sat, 9 Oct 2021 22:37:34 +0000 (22:37 +0000)]
Auto merge of #89631 - camsteffen:clippy-boot-env, r=Mark-Simulacrum

Remove unused clippy bootstrap env vars

Continues rust-lang/rust-clippy#7646

2 years agoAuto merge of #88379 - camelid:cleanup-clean, r=jyn514
bors [Sat, 9 Oct 2021 19:05:08 +0000 (19:05 +0000)]
Auto merge of #88379 - camelid:cleanup-clean, r=jyn514

rustdoc: Cleanup various `clean` types

Cleanup various `clean` types.

2 years agoUpdate library/core/src/hash/mod.rs
pierwill [Sat, 9 Oct 2021 18:53:29 +0000 (13:53 -0500)]
Update library/core/src/hash/mod.rs

Co-authored-by: Amanieu d'Antras <amanieu@gmail.com>
2 years agoAuto merge of #89703 - GuillaumeGomez:rollup-g3ulo9x, r=GuillaumeGomez
bors [Sat, 9 Oct 2021 16:01:30 +0000 (16:01 +0000)]
Auto merge of #89703 - GuillaumeGomez:rollup-g3ulo9x, r=GuillaumeGomez

Rollup of 6 pull requests

Successful merges:

 - #75644 (Add 'core::array::from_fn' and 'core::array::try_from_fn')
 - #87528 (stack overflow handler specific openbsd change.)
 - #88436 (std: Stabilize command_access)
 - #89614 (Update to Unicode 14.0)
 - #89664 (Add documentation to boxed conversions)
 - #89700 (Fix invalid HTML generation for higher bounds)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRemove some stray whitespace.
Jacob Hoffman-Andrews [Sat, 9 Oct 2021 15:33:19 +0000 (08:33 -0700)]
Remove some stray whitespace.

2 years agoRollup merge of #89700 - GuillaumeGomez:fix-rustdoc-higher-bound-html-gen, r=notriddle
Guillaume Gomez [Sat, 9 Oct 2021 15:08:41 +0000 (17:08 +0200)]
Rollup merge of #89700 - GuillaumeGomez:fix-rustdoc-higher-bound-html-gen, r=notriddle

Fix invalid HTML generation for higher bounds

Considering this is a bug, I cherry-picked the commit from #89676 so it's merged more quickly.

r? ``@notriddle``

2 years agoRollup merge of #89664 - timClicks:51430-document-boxed-conversions, r=m-ou-se
Guillaume Gomez [Sat, 9 Oct 2021 15:08:41 +0000 (17:08 +0200)]
Rollup merge of #89664 - timClicks:51430-document-boxed-conversions, r=m-ou-se

Add documentation to boxed conversions

Among other changes, documents whether allocations are necessary
to complete the type conversion.

Part of #51430, supersedes #89199

2 years agoRollup merge of #89614 - cuviper:unicode-14, r=joshtriplett
Guillaume Gomez [Sat, 9 Oct 2021 15:08:40 +0000 (17:08 +0200)]
Rollup merge of #89614 - cuviper:unicode-14, r=joshtriplett

Update to Unicode 14.0

The Unicode Standard [announced Version 14.0](https://home.unicode.org/announcing-the-unicode-standard-version-14-0/) on September 14, 2021, and this pull request updates the generated tables in `core` accordingly.

This did require a little prep-work in `unicode-table-generator`. First, #81358 had modified the generated file instead of the tool, so that change is now reflected in the tool as well. Next, I found that the "Alphabetic" property in version 14 was panicking when generating a bitset, "cannot pack 264 into 8 bits". We've been using the skiplist for that anyway, so I changed this to fail gracefully. Finally, I confirmed that the tool still created the exact same tables for 13 before moving to 14.

2 years agoRollup merge of #88436 - lf-:stabilize-command-access, r=yaahc
Guillaume Gomez [Sat, 9 Oct 2021 15:08:39 +0000 (17:08 +0200)]
Rollup merge of #88436 - lf-:stabilize-command-access, r=yaahc

std: Stabilize command_access

Tracking issue: #44434 (not yet closed but the FCP is done so that should be soon).

2 years agoRollup merge of #87528 - :stack_overflow_obsd, r=joshtriplett
Guillaume Gomez [Sat, 9 Oct 2021 15:08:38 +0000 (17:08 +0200)]
Rollup merge of #87528 - :stack_overflow_obsd, r=joshtriplett

stack overflow handler specific openbsd change.

2 years agoRollup merge of #75644 - c410-f3r:array, r=yaahc
Guillaume Gomez [Sat, 9 Oct 2021 15:08:38 +0000 (17:08 +0200)]
Rollup merge of #75644 - c410-f3r:array, r=yaahc

Add 'core::array::from_fn' and 'core::array::try_from_fn'

These auxiliary methods fill uninitialized arrays in a safe way and are particularly useful for elements that don't implement `Default`.

```rust
// Foo doesn't implement Default
struct Foo(usize);

let _array = core::array::from_fn::<_, _, 2>(|idx| Foo(idx));
```

Different from `FromIterator`, it is guaranteed that the array will be fully filled and no error regarding uninitialized state will be throw. In certain scenarios, however, the creation of an **element** can fail and that is why the `try_from_fn` function is also provided.

```rust
#[derive(Debug, PartialEq)]
enum SomeError {
    Foo,
}

let array = core::array::try_from_fn(|i| Ok::<_, SomeError>(i));
assert_eq!(array, Ok([0, 1, 2, 3, 4]));

let another_array = core::array::try_from_fn(|_| Err(SomeError::Foo));
assert_eq!(another_array, Err(SomeError::Foo));
 ```

2 years agoAuto merge of #89343 - Mark-Simulacrum:no-args-queries, r=cjgillot
bors [Sat, 9 Oct 2021 13:13:07 +0000 (13:13 +0000)]
Auto merge of #89343 - Mark-Simulacrum:no-args-queries, r=cjgillot

Refactor fingerprint reconstruction

This PR replaces can_reconstruct_query_key with fingerprint_style, which returns the style of the fingerprint for that query. This allows us to avoid trying to extract a DefId (or equivalent) from keys which *are* reconstructible because they're () but not as DefIds.

This is done with the goal of fixing -Zdump-dep-graph, which seems to have broken a while ago (I didn't try to bisect). Currently even on a `fn main() {}` file it'll ICE (you need to also pass -Zquery-dep-graph for it to work at all), and this patch indirectly fixes the cause of that ICE. This also adds a test for it continuing to work.

2 years agoFix invalid HTML generation for higher bounds
Guillaume Gomez [Fri, 8 Oct 2021 18:11:02 +0000 (20:11 +0200)]
Fix invalid HTML generation for higher bounds

2 years agoAdd a test that -Zquery-dep-graph -Zdump-dep-graph works
Mark Rousskov [Sat, 2 Oct 2021 16:23:18 +0000 (12:23 -0400)]
Add a test that -Zquery-dep-graph -Zdump-dep-graph works

2 years agoAuto merge of #89698 - matthiaskrgr:rollup-gna54x6, r=matthiaskrgr
bors [Sat, 9 Oct 2021 10:00:54 +0000 (10:00 +0000)]
Auto merge of #89698 - matthiaskrgr:rollup-gna54x6, r=matthiaskrgr

Rollup of 10 pull requests

Successful merges:

 - #88707 (String.split_terminator: Add an example when using a slice of chars)
 - #89605 (Fix stabilization version for `bindings_after_at`)
 - #89634 (rustc_driver: Enable the `WARN` log level by default)
 - #89641 (make #[target_feature] work with `asm` register classes)
 - #89678 (Fix minor std::thread documentation typo)
 - #89684 (Fix asm docs typo)
 - #89687 (Move `read2_abbreviated` function into read2.rs)
 - #89693 (Add #[must_use] to stdin/stdout/stderr locks)
 - #89694 (Add #[must_use] to string/char transformation methods)
 - #89697 (Fix min LLVM version for bpf-types test)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRollup merge of #89697 - alessandrod:issue-89689, r=nikic
Matthias Krüger [Sat, 9 Oct 2021 09:56:08 +0000 (11:56 +0200)]
Rollup merge of #89697 - alessandrod:issue-89689, r=nikic

Fix min LLVM version for bpf-types test

The test requires https://reviews.llvm.org/D102118 which was released in LLVM 13.

Closes #89689

2 years agoRollup merge of #89694 - jkugelman:must-use-string-transforms, r=joshtriplett
Matthias Krüger [Sat, 9 Oct 2021 09:56:07 +0000 (11:56 +0200)]
Rollup merge of #89694 - jkugelman:must-use-string-transforms, r=joshtriplett

Add #[must_use] to string/char transformation methods

These methods could be misconstrued as modifying their arguments instead of returning new values.

Where possible I made the note recommend a method that does mutate in place.

Parent issue: #89692

2 years agoRollup merge of #89693 - jkugelman:must-use-stdin-stdout-stderr-locks, r=joshtriplett
Matthias Krüger [Sat, 9 Oct 2021 09:56:07 +0000 (11:56 +0200)]
Rollup merge of #89693 - jkugelman:must-use-stdin-stdout-stderr-locks, r=joshtriplett

Add #[must_use] to stdin/stdout/stderr locks

Affected methods:

```rust
std::io           fn stdin_locked() -> StdinLock<'static>;
std::io::Stdin    fn lock(&self) -> StdinLock<'_>;
std::io           fn stdout_locked() -> StdoutLock<'static>;
std::io::Stdout   fn lock(&self) -> StdoutLock<'_>;
std::io           fn stderr_locked() -> StderrLock<'static>;
std::io::Stderr   fn lock(&self) -> StderrLock<'_>;
```

Parent issue: https://github.com/rust-lang/rust/issues/89692

2 years agoRollup merge of #89687 - Nicholas-Baron:move_read2_abbreviated, r=Mark-Simulacrum
Matthias Krüger [Sat, 9 Oct 2021 09:56:06 +0000 (11:56 +0200)]
Rollup merge of #89687 - Nicholas-Baron:move_read2_abbreviated, r=Mark-Simulacrum

Move `read2_abbreviated` function into read2.rs

Work towards #89475.

2 years agoRollup merge of #89684 - asquared31415:asm-doc-fix, r=joshtriplett
Matthias Krüger [Sat, 9 Oct 2021 09:56:02 +0000 (11:56 +0200)]
Rollup merge of #89684 - asquared31415:asm-doc-fix, r=joshtriplett

Fix asm docs typo

Fixes a typo in target feature names in the `asm` documentation

2 years agoRollup merge of #89678 - marcelo-gonzalez:master, r=joshtriplett
Matthias Krüger [Sat, 9 Oct 2021 09:56:01 +0000 (11:56 +0200)]
Rollup merge of #89678 - marcelo-gonzalez:master, r=joshtriplett

Fix minor std::thread documentation typo

callers of spawn_unchecked() need to make sure that the thread
not outlive references in the passed closure, not the other way around.

2 years agoRollup merge of #89641 - asquared31415:asm-feature-attr-regs, r=oli-obk
Matthias Krüger [Sat, 9 Oct 2021 09:56:00 +0000 (11:56 +0200)]
Rollup merge of #89641 - asquared31415:asm-feature-attr-regs, r=oli-obk

make #[target_feature] work with `asm` register classes

Fixes #89289

2 years agoRollup merge of #89634 - hawkw:eliza/enable-err-warn, r=oli-obk
Matthias Krüger [Sat, 9 Oct 2021 09:55:59 +0000 (11:55 +0200)]
Rollup merge of #89634 - hawkw:eliza/enable-err-warn, r=oli-obk

rustc_driver: Enable the `WARN` log level by default

This commit changes the `tracing_subscriber` initialization in
`rustc_driver` so that the `WARN` verbosity level is enabled by default
when the `RUSTC_LOG` env variable is empty. If the `RUSTC_LOG` env
variable is set, the filter string in the environment variable is
honored, instead.

Fixes #76824
Closes #89623

cc ``@eddyb,`` ``@oli-obk``

2 years agoRollup merge of #89605 - camelid:fix-version, r=nagisa
Matthias Krüger [Sat, 9 Oct 2021 09:55:58 +0000 (11:55 +0200)]
Rollup merge of #89605 - camelid:fix-version, r=nagisa

Fix stabilization version for `bindings_after_at`

According to the release notes and its PR milestone, it was stabilized
in 1.56.0.

2 years agoRollup merge of #88707 - sylvestre:split_example, r=yaahc
Matthias Krüger [Sat, 9 Oct 2021 09:55:58 +0000 (11:55 +0200)]
Rollup merge of #88707 - sylvestre:split_example, r=yaahc

String.split_terminator: Add an example when using a slice of chars

2 years agoRemove unnecessary hyphen
Tim McNamara [Sat, 9 Oct 2021 08:44:07 +0000 (21:44 +1300)]
Remove unnecessary hyphen

Co-authored-by: Laurențiu Nicola <lnicola@users.noreply.github.com>
2 years agoFix min LLVM version for bpf-types test
Alessandro Decina [Sat, 9 Oct 2021 08:18:37 +0000 (19:18 +1100)]
Fix min LLVM version for bpf-types test

Closes #89689

2 years agoSimplify wording
Tim McNamara [Sat, 9 Oct 2021 07:51:36 +0000 (20:51 +1300)]
Simplify wording

Co-authored-by: Josh Triplett <josh@joshtriplett.org>
Co-authored-by: Laurențiu Nicola <lnicola@users.noreply.github.com>
2 years agoMove template initialization into its own file.
Jacob Hoffman-Andrews [Sat, 9 Oct 2021 06:25:54 +0000 (23:25 -0700)]
Move template initialization into its own file.

2 years agoUpdate library/core/src/num/mod.rs
John Kugelman [Sat, 9 Oct 2021 06:05:03 +0000 (02:05 -0400)]
Update library/core/src/num/mod.rs

Co-authored-by: Josh Triplett <josh@joshtriplett.org>
2 years agoAdd template for print_item
Jacob Hoffman-Andrews [Sat, 9 Oct 2021 04:57:44 +0000 (21:57 -0700)]
Add template for print_item

Add print_item.html and the code in print_item.rs to use it.

2 years agoAuto merge of #89582 - jkugelman:optimize-file-read-to-end, r=joshtriplett
bors [Sat, 9 Oct 2021 05:24:47 +0000 (05:24 +0000)]
Auto merge of #89582 - jkugelman:optimize-file-read-to-end, r=joshtriplett

Optimize File::read_to_end and read_to_string

Reading a file into an empty vector or string buffer can incur unnecessary `read` syscalls and memory re-allocations as the buffer "warms up" and grows to its final size. This is perhaps a necessary evil with generic readers, but files can be read in smarter by checking the file size and reserving that much capacity.

`std::fs::read` and `std::fs::read_to_string` already perform this optimization: they open the file, reads its metadata, and call `with_capacity` with the file size. This ensures that the buffer does not need to be resized and an initial string of small `read` syscalls.

However, if a user opens the `File` themselves and calls `file.read_to_end` or `file.read_to_string` they do not get this optimization.

```rust
let mut buf = Vec::new();
file.read_to_end(&mut buf)?;
```

I searched through this project's codebase and even here are a *lot* of examples of this. They're found all over in unit tests, which isn't a big deal, but there are also several real instances in the compiler and in Cargo. I've documented the ones I found in a comment here:

https://github.com/rust-lang/rust/issues/89516#issuecomment-934423999

Most telling, the documentation for both the `Read` trait and the `Read::read_to_end` method both show this exact pattern as examples of how to use readers. What this says to me is that this shouldn't be solved by simply fixing the instances of it in this codebase. If it's here it's certain to be prevalent in the wider Rust ecosystem.

To that end, this commit adds specializations of `read_to_end` and `read_to_string` directly on `File`. This way it's no longer a minor footgun to start with an empty buffer when reading a file in.

A nice side effect of this change is that code that accesses a `File` as `impl Read` or `dyn Read` will benefit. For example, this code from `compiler/rustc_serialize/src/json.rs`:

```rust
pub fn from_reader(rdr: &mut dyn Read) -> Result<Json, BuilderError> {
    let mut contents = Vec::new();
    match rdr.read_to_end(&mut contents) {
```

Related changes:

- I also added specializations to `BufReader` to delegate to `self.inner`'s methods. That way it can call `File`'s optimized  implementations if the inner reader is a file.

- The private `std::io::append_to_string` function is now marked `unsafe`.

- `File::read_to_string` being more efficient means that the performance note for `io::read_to_string` can be softened. I've added `@camelid's` suggested wording from https://github.com/rust-lang/rust/issues/80218#issuecomment-936806502.

r? `@joshtriplett`

2 years agoAdd #[must_use] to string/char transformation methods
John Kugelman [Sat, 9 Oct 2021 05:01:40 +0000 (01:01 -0400)]
Add #[must_use] to string/char transformation methods

These methods could be misconstrued as modifying their arguments instead
of returning new values.

Where possible I made the note recommend a method that does mutate in
place.

2 years agoAdd #[must_use] to stdin/stdout/stderr locks
John Kugelman [Sat, 9 Oct 2021 03:31:57 +0000 (23:31 -0400)]
Add #[must_use] to stdin/stdout/stderr locks

2 years agoMove read2_abbreviated function into read2.rs
Nicholas-Baron [Fri, 8 Oct 2021 22:12:21 +0000 (15:12 -0700)]
Move read2_abbreviated function into read2.rs

2 years agoAdd feature gate to non_exhaustive_omitted_patterns lint
Devin Ragotzy [Fri, 1 Oct 2021 14:21:56 +0000 (10:21 -0400)]
Add feature gate to non_exhaustive_omitted_patterns lint

Actually add the feature to the lints ui test
Add tracking issue to the feature declaration
Rename feature gate to non_exhaustive_omitted_patterns_lint
Add more omitted_patterns lint feature gate

2 years agoAuto merge of #89683 - GuillaumeGomez:rollup-q2mjd9m, r=GuillaumeGomez
bors [Fri, 8 Oct 2021 21:13:27 +0000 (21:13 +0000)]
Auto merge of #89683 - GuillaumeGomez:rollup-q2mjd9m, r=GuillaumeGomez

Rollup of 6 pull requests

Successful merges:

 - #86506 (Don't normalize xform_ret_ty during method candidate assembly )
 - #89538 (Make rustdoc not highlight `->` and `=>` as operators)
 - #89649 (clippy::complexity fixes)
 - #89668 (Cfg hide more conditions for core and alloc)
 - #89669 (Remove special-casing of never primitive in rustdoc-json-types)
 - #89672 (Remove unwrap_or! macro)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoFix asm docs typo
asquared31415 [Fri, 8 Oct 2021 20:50:35 +0000 (16:50 -0400)]
Fix asm docs typo

2 years agoRollup merge of #89672 - klensy:unwrap-or-macro, r=jackh726
Guillaume Gomez [Fri, 8 Oct 2021 20:30:43 +0000 (22:30 +0200)]
Rollup merge of #89672 - klensy:unwrap-or-macro, r=jackh726

Remove unwrap_or! macro

Removes `unwrap_or!` macro and replaces it with `match`.

It's kinda cleanup, as rustc_ast not the best place for this macro and this is used only in 2 places anyway.

2 years agoRollup merge of #89669 - Urgau:json-remove-type-never, r=GuillaumeGomez
Guillaume Gomez [Fri, 8 Oct 2021 20:30:42 +0000 (22:30 +0200)]
Rollup merge of #89669 - Urgau:json-remove-type-never, r=GuillaumeGomez

Remove special-casing of never primitive in rustdoc-json-types

Fixes https://github.com/rust-lang/rust/issues/89349

r? `@GuillaumeGomez`

2 years agoRollup merge of #89668 - Urgau:core-cfg-hide, r=GuillaumeGomez
Guillaume Gomez [Fri, 8 Oct 2021 20:30:41 +0000 (22:30 +0200)]
Rollup merge of #89668 - Urgau:core-cfg-hide, r=GuillaumeGomez

Cfg hide more conditions for core and alloc

Fixes https://github.com/rust-lang/rust/issues/89663

Before:
![image](https://user-images.githubusercontent.com/3616612/136572816-a7844ac7-dc2f-4d79-87b4-7f9766421a83.png)

After:
![image](https://user-images.githubusercontent.com/3616612/136572745-7d890726-8efd-4d74-83ac-ed06f4687741.png)

*Same for alloc*

r? ``@GuillaumeGomez``

2 years agoRollup merge of #89649 - matthiaskrgr:clippycompl, r=jyn514
Guillaume Gomez [Fri, 8 Oct 2021 20:30:40 +0000 (22:30 +0200)]
Rollup merge of #89649 - matthiaskrgr:clippycompl, r=jyn514

clippy::complexity fixes

2 years agoRollup merge of #89538 - notriddle:notriddle/arrow-highlight, r=GuillaumeGomez
Guillaume Gomez [Fri, 8 Oct 2021 20:30:39 +0000 (22:30 +0200)]
Rollup merge of #89538 - notriddle:notriddle/arrow-highlight, r=GuillaumeGomez

Make rustdoc not highlight `->` and `=>` as operators

It was marking them up as `<span class="op">=</span><span class="op">&gt;</span>`,
which is bloaty and wrong (at least, I think `<=` and `=>` should probably be different colors, since they're so different and yet made from the same symbols).

Before:

![image](https://user-images.githubusercontent.com/1593513/135939748-f49b0f9e-6a7d-4d65-935a-e31cdf688a81.png)

After:

![image](https://user-images.githubusercontent.com/1593513/135940063-5ef1f6b1-7e03-4227-b46b-572b063aba05.png)

2 years agoRollup merge of #86506 - b-naber:gen_trait_impl_inconsistent, r=jackh726
Guillaume Gomez [Fri, 8 Oct 2021 20:30:38 +0000 (22:30 +0200)]
Rollup merge of #86506 - b-naber:gen_trait_impl_inconsistent, r=jackh726

Don't normalize xform_ret_ty during method candidate assembly

Fixes https://github.com/rust-lang/rust/issues/85671

Normalizing the return type of a method candidate together with the expected receiver type of the method can lead to valid method candidates being rejected during probing. Specifically in the example of the fixed issue we have a `self_ty` of the form `&A<&[Coef]>` whereas the `impl_ty` of the method would be `&A<_>`, if we normalize the projection in the return type we unify the inference variable with `Cont`, which will lead us to reject the candidate in the sup type check in `consider_probe`. Since we don't actually need the normalized return type during candidate assembly, we postpone the normalization until we consider candidates in `consider_probe`.

2 years agoFix minor std::thread documentation typo
Marcelo Diop-Gonzalez [Fri, 8 Oct 2021 19:29:04 +0000 (15:29 -0400)]
Fix minor std::thread documentation typo

callers of spawn_unchecked() need to make sure that the thread
not outlive references in the passed closure, not the other way around.

2 years agoAuto merge of #89666 - rusticstuff:disable_new_llvm_pass_manager_on_s390x_take_two...
bors [Fri, 8 Oct 2021 18:12:50 +0000 (18:12 +0000)]
Auto merge of #89666 - rusticstuff:disable_new_llvm_pass_manager_on_s390x_take_two, r=nagisa

Default to disabling the new pass manager for the s390x arch targets.

This hack disables the new LLVM pass manager by default for s390x arch targets until the performance issues are fixed (see #89609). The command line option `-Z new-llvm-pass-manager=(yes|no)` continues to take precedence over this default.

2 years agoclippy::complexity fixes
Matthias Krüger [Thu, 7 Oct 2021 21:18:39 +0000 (23:18 +0200)]
clippy::complexity fixes

2 years agobless warnings
Eliza Weisman [Fri, 8 Oct 2021 17:56:08 +0000 (10:56 -0700)]
bless warnings

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2 years agoremove unwrap_or! macro
klensy [Fri, 8 Oct 2021 16:32:16 +0000 (19:32 +0300)]
remove unwrap_or! macro

2 years agoCfg hide more conditions for alloc
Loïc BRANSTETT [Fri, 8 Oct 2021 15:11:57 +0000 (17:11 +0200)]
Cfg hide more conditions for alloc

2 years agoRemove special-casing of never primitive in rustdoc-json-types
Loïc BRANSTETT [Fri, 8 Oct 2021 14:53:39 +0000 (16:53 +0200)]
Remove special-casing of never primitive in rustdoc-json-types

2 years agoAuto merge of #89644 - matthiaskrgr:clippy_perf_okt, r=jyn514
bors [Fri, 8 Oct 2021 14:35:00 +0000 (14:35 +0000)]
Auto merge of #89644 - matthiaskrgr:clippy_perf_okt, r=jyn514

some clippy::perf fixes

2 years agoCfg hide more conditions for core
Loïc BRANSTETT [Fri, 8 Oct 2021 14:13:49 +0000 (16:13 +0200)]
Cfg hide more conditions for core

2 years agoDefault to disabling the new pass manager for the s390x targets.
Hans Kratz [Fri, 8 Oct 2021 10:10:52 +0000 (12:10 +0200)]
Default to disabling the new pass manager for the s390x targets.

2 years agoAuto merge of #89576 - tom7980:issue-89275-fix, r=estebank
bors [Fri, 8 Oct 2021 11:44:45 +0000 (11:44 +0000)]
Auto merge of #89576 - tom7980:issue-89275-fix, r=estebank

Prevent error reporting from outputting a recursion error if it finds an ambiguous trait impl during suggestions

Closes #89275

This fixes the compiler reporting a recursion error during another already in progress error by trying to make a conversion method suggestion and encounters ambiguous trait implementations that can convert a the original type into a type that can then be recursively converted into itself via another method in the trait.

Updated OverflowError struct to be an enum so I could differentiate between passes - it's no longer a ZST but I don't think that should be a problem as they only generate when there's an error in compiling code anyway

2 years agoAlso cfg flag auxiliar function
Caio [Fri, 8 Oct 2021 09:40:24 +0000 (06:40 -0300)]
Also cfg flag auxiliar function

2 years agoAuto merge of #89619 - michaelwoerister:incr-vtables, r=nagisa
bors [Fri, 8 Oct 2021 09:04:06 +0000 (09:04 +0000)]
Auto merge of #89619 - michaelwoerister:incr-vtables, r=nagisa

Turn vtable_allocation() into a query

This PR removes the untracked vtable-const-allocation cache from the `tcx` and turns the `vtable_allocation()` method into a query.

The change is pretty straightforward and should be backportable without too much effort.

Fixes https://github.com/rust-lang/rust/issues/89598.

2 years agotests
b-naber [Thu, 7 Oct 2021 23:38:33 +0000 (01:38 +0200)]
tests

2 years agodont normalize return type during candidate assembly in method probing
b-naber [Thu, 7 Oct 2021 23:32:03 +0000 (01:32 +0200)]
dont normalize return type during candidate assembly in method probing

2 years agoAdd documentation to boxed conversions
Tim McNamara [Fri, 8 Oct 2021 08:40:25 +0000 (21:40 +1300)]
Add documentation to boxed conversions

Among other changes, documents whether allocations are necessary
to complete the type conversion.

Part of #51430

Co-authored-by: Giacomo Stevanato <giaco.stevanato@gmail.com>
Co-authored-by: Joshua Nelson <github@jyn.dev>
2 years agoCI: Use mirror for downloads.
Hans Kratz [Fri, 8 Oct 2021 06:44:40 +0000 (08:44 +0200)]
CI: Use mirror for downloads.

Crosstool-ng 1.22 used by those docker dist builds only allows one
mirror for all downloads.

2 years agoAuto merge of #89659 - workingjubilee:rollup-0vggc69, r=workingjubilee
bors [Fri, 8 Oct 2021 06:16:31 +0000 (06:16 +0000)]
Auto merge of #89659 - workingjubilee:rollup-0vggc69, r=workingjubilee

Rollup of 8 pull requests

Successful merges:

 - #87918 (Enable AutoFDO.)
 - #88137 (On macOS, make strip="symbols" not pass any options to strip)
 - #88772 (Fixed confusing wording on Result::map_or_else.)
 - #89025 (Implement `#[link_ordinal(n)]`)
 - #89082 (Implement #85440 (Random test ordering))
 - #89288 (Wrapper for `-Z gcc-ld=lld` to invoke rust-lld with the correct flavor)
 - #89476 (Correct decoding of foreign expansions during incr. comp.)
 - #89622 (Use correct edition for panic in [debug_]assert!().)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRollup merge of #89622 - m-ou-se:debug-assert-2021, r=estebank
Jubilee [Fri, 8 Oct 2021 03:26:15 +0000 (20:26 -0700)]
Rollup merge of #89622 - m-ou-se:debug-assert-2021, r=estebank

Use correct edition for panic in [debug_]assert!().

See https://github.com/rust-lang/rust/issues/88638#issuecomment-915472783

2 years agoRollup merge of #89476 - cjgillot:expn-id, r=petrochenkov
Jubilee [Fri, 8 Oct 2021 03:26:14 +0000 (20:26 -0700)]
Rollup merge of #89476 - cjgillot:expn-id, r=petrochenkov

Correct decoding of foreign expansions during incr. comp.

Fixes https://github.com/rust-lang/rust/issues/74946

The original issue was due to a wrong assertion in `expn_hash_to_expn_id`.

The secondary issue was due to a mismatch between the encoding and decoding paths for expansions that are created after the TyCtxt is created.

2 years agoRollup merge of #89288 - rusticstuff:lld_wrapper, r=Mark-Simulacrum
Jubilee [Fri, 8 Oct 2021 03:26:13 +0000 (20:26 -0700)]
Rollup merge of #89288 - rusticstuff:lld_wrapper, r=Mark-Simulacrum

Wrapper for `-Z gcc-ld=lld` to invoke rust-lld with the correct flavor

This PR adds an `lld-wrapper` tool which is installed as `ld` and `ld64` in `lib\rustlib\<host_target>\bin\gcc-ld` directory and whose sole purpose is to invoke `rust-lld` in the parent directory with the correct flavor. Lld decides which flavor to use from either the first two commandline arguments or from the name of the executable (`ld` for GNU/ld flavor, `ld64` for Darwin/Macos/ld64 flavor and so on). Symbolic links could not be used as they are not supported by rustup and on Windows.

The wrapper replaces full copies of rust-lld which added some significant bloat. On UNIXish operating systems it exec rust-lld, on Windows it spawns it as a child process.

Fixes #88869.

r? ```@Mark-Simulacrum```
cc ```@nagisa``` ```@petrochenkov``` ```@1000teslas```

2 years agoRollup merge of #89082 - smoelius:master, r=kennytm
Jubilee [Fri, 8 Oct 2021 03:26:12 +0000 (20:26 -0700)]
Rollup merge of #89082 - smoelius:master, r=kennytm

Implement #85440 (Random test ordering)

This PR adds `--shuffle` and `--shuffle-seed` options to `libtest`. The options are similar to the [`-shuffle` option](https://github.com/golang/go/blob/c894b442d1e5e150ad33fa3ce13dbfab1c037b3a/src/testing/testing.go#L1482-L1499) that was recently added to Go.

Here are the relevant parts of the help message:
```
        --shuffle       Run tests in random order
        --shuffle-seed SEED
                        Run tests in random order; seed the random number
                        generator with SEED
...
By default, the tests are run in alphabetical order. Use --shuffle or set
RUST_TEST_SHUFFLE to run the tests in random order. Pass the generated
"shuffle seed" to --shuffle-seed (or set RUST_TEST_SHUFFLE_SEED) to run the
tests in the same order again. Note that --shuffle and --shuffle-seed do not
affect whether the tests are run in parallel.
```
Is an RFC needed for this?

2 years agoRollup merge of #89025 - ricobbe:raw-dylib-link-ordinal, r=michaelwoerister
Jubilee [Fri, 8 Oct 2021 03:26:11 +0000 (20:26 -0700)]
Rollup merge of #89025 - ricobbe:raw-dylib-link-ordinal, r=michaelwoerister

Implement `#[link_ordinal(n)]`

Allows the use of `#[link_ordinal(n)]` with `#[link(kind = "raw-dylib")]`, allowing Rust to link against DLLs that export symbols by ordinal rather than by name.  As long as the ordinal matches, the name of the function in Rust is not required to match the name of the corresponding function in the exporting DLL.

Part of #58713.

2 years agoRollup merge of #88772 - orlp:result-map-or-else-docfix, r=yaahc
Jubilee [Fri, 8 Oct 2021 03:26:11 +0000 (20:26 -0700)]
Rollup merge of #88772 - orlp:result-map-or-else-docfix, r=yaahc

Fixed confusing wording on Result::map_or_else.

Fixes https://github.com/rust-lang/rust/issues/88195.

2 years agoRollup merge of #88137 - joshtriplett:osx-strip-symbols-no-option, r=michaelwoerister
Jubilee [Fri, 8 Oct 2021 03:26:10 +0000 (20:26 -0700)]
Rollup merge of #88137 - joshtriplett:osx-strip-symbols-no-option, r=michaelwoerister

On macOS, make strip="symbols" not pass any options to strip

This makes the output with `strip="symbols"` match the result of just
calling `strip` on the output binary, minimizing the size of the binary.

2 years agoRollup merge of #87918 - mikebenfield:pr-afdo, r=nikic
Jubilee [Fri, 8 Oct 2021 03:26:09 +0000 (20:26 -0700)]
Rollup merge of #87918 - mikebenfield:pr-afdo, r=nikic

Enable AutoFDO.

This largely involves implementing the options debug-info-for-profiling
and profile-sample-use and forwarding them on to LLVM.

AutoFDO can be used on x86-64 Linux like this:
rustc -O -Clink-arg='Wl,--no-rosegment' -Cdebug-info-for-profiling main.rs -o main
perf record -b ./main
create_llvm_prof --binary=main --out=code.prof
rustc -O -Cprofile-sample-use=code.prof main.rs -o main2

Now `main2` will have feedback directed optimization applied to it.

The create_llvm_prof tool can be obtained from this github repository:
https://github.com/google/autofdo

The option -Clink-arg='Wl,--no-rosegment' is necessary to avoid lld
putting an extra RO segment before the executable code, which would make
the binary silently incompatible with create_llvm_prof.

2 years agoAuto merge of #89646 - camelid:miri-up, r=RalfJung
bors [Fri, 8 Oct 2021 03:14:19 +0000 (03:14 +0000)]
Auto merge of #89646 - camelid:miri-up, r=RalfJung

Update Miri

Fixes #89612.

r? `@RalfJung`

2 years agoAuto merge of #89638 - rust-lang:revert-88548-intersperse, r=Mark-Simulacrum
bors [Thu, 7 Oct 2021 23:50:54 +0000 (23:50 +0000)]
Auto merge of #89638 - rust-lang:revert-88548-intersperse, r=Mark-Simulacrum

Revert "Stabilize `Iterator::intersperse()`"

Reverts rust-lang/rust#88548

First step in resolving https://github.com/rust-lang/rust/issues/88967

2 years agoOptimize File::read_to_end and read_to_string
John Kugelman [Tue, 5 Oct 2021 23:50:28 +0000 (19:50 -0400)]
Optimize File::read_to_end and read_to_string

Reading a file into an empty vector or string buffer can incur
unnecessary `read` syscalls and memory re-allocations as the buffer
"warms up" and grows to its final size. This is perhaps a necessary evil
with generic readers, but files can be read in smarter by checking the
file size and reserving that much capacity.

`std::fs::read` and `read_to_string` already perform this optimization:
they open the file, reads its metadata, and call `with_capacity` with
the file size. This ensures that the buffer does not need to be resized
and an initial string of small `read` syscalls.

However, if a user opens the `File` themselves and calls
`file.read_to_end` or `file.read_to_string` they do not get this
optimization.

```rust
let mut buf = Vec::new();
file.read_to_end(&mut buf)?;
```

I searched through this project's codebase and even here are a *lot* of
examples of this. They're found all over in unit tests, which isn't a
big deal, but there are also several real instances in the compiler and
in Cargo. I've documented the ones I found in a comment here:

https://github.com/rust-lang/rust/issues/89516#issuecomment-934423999

Most telling, the `Read` trait and the `read_to_end` method both show
this exact pattern as examples of how to use readers. What this says to
me is that this shouldn't be solved by simply fixing the instances of it
in this codebase. If it's here it's certain to be prevalent in the wider
Rust ecosystem.

To that end, this commit adds specializations of `read_to_end` and
`read_to_string` directly on `File`. This way it's no longer a minor
footgun to start with an empty buffer when reading a file in.

A nice side effect of this change is that code that accesses a `File` as
a bare `Read` constraint or via a `dyn Read` trait object will benefit.
For example, this code from `compiler/rustc_serialize/src/json.rs`:

```rust
pub fn from_reader(rdr: &mut dyn Read) -> Result<Json, BuilderError> {
    let mut contents = Vec::new();
    match rdr.read_to_end(&mut contents) {
```

Related changes:

- I also added specializations to `BufReader` to delegate to
  `self.inner`'s methods. That way it can call `File`'s optimized
  implementations if the inner reader is a file.

- The private `std::io::append_to_string` function is now marked
  `unsafe`.

- `File::read_to_string` being more efficient means that the performance
  note for `io::read_to_string` can be softened. I've added @camelid's
  suggested wording from:

  https://github.com/rust-lang/rust/issues/80218#issuecomment-936806502

2 years agoUpdate Miri
Noah Lev [Thu, 7 Oct 2021 20:47:00 +0000 (13:47 -0700)]
Update Miri

2 years agosome clippy::perf fixes
Matthias Krüger [Thu, 7 Oct 2021 20:31:33 +0000 (22:31 +0200)]
some clippy::perf fixes

2 years agoAuto merge of #89617 - flip1995:clippyup, r=Manishearth
bors [Thu, 7 Oct 2021 20:26:27 +0000 (20:26 +0000)]
Auto merge of #89617 - flip1995:clippyup, r=Manishearth

Update Clippy

r? `@Manishearth`

2 years agomake #[target_feature] work with `asm` register classes
asquared31415 [Thu, 7 Oct 2021 19:42:18 +0000 (15:42 -0400)]
make #[target_feature] work with `asm` register classes

2 years agolol i forgot the syntax for my own crate's macros
Eliza Weisman [Thu, 7 Oct 2021 19:03:15 +0000 (12:03 -0700)]
lol i forgot the syntax for my own crate's macros

T_____T

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2 years agocomma-related changes
Eliza Weisman [Thu, 7 Oct 2021 18:29:47 +0000 (11:29 -0700)]
comma-related changes

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2 years agoTurn tcx.vtable_allocation() into a query.
Michael Woerister [Thu, 7 Oct 2021 09:29:01 +0000 (11:29 +0200)]
Turn tcx.vtable_allocation() into a query.

2 years agouse structured fields in some existing warnings
Eliza Weisman [Thu, 7 Oct 2021 17:48:48 +0000 (10:48 -0700)]
use structured fields in some existing warnings

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2 years agomake them structured while i'm here
Eliza Weisman [Thu, 7 Oct 2021 17:46:47 +0000 (10:46 -0700)]
make them structured while i'm here

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2 years agodemote `rustc_peek` traces look not user-facing
Eliza Weisman [Thu, 7 Oct 2021 17:45:39 +0000 (10:45 -0700)]
demote `rustc_peek` traces look not user-facing

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2 years agoRevert "Stabilize `Iterator::intersperse()`"
Jane Lusby [Thu, 7 Oct 2021 17:39:36 +0000 (10:39 -0700)]
Revert "Stabilize `Iterator::intersperse()`"

2 years agoAuto merge of #89629 - GuillaumeGomez:rollup-s4r8me6, r=GuillaumeGomez
bors [Thu, 7 Oct 2021 17:17:25 +0000 (17:17 +0000)]
Auto merge of #89629 - GuillaumeGomez:rollup-s4r8me6, r=GuillaumeGomez

Rollup of 7 pull requests

Successful merges:

 - #89298 (Issue 89193 - Fix ICE when using `usize` and `isize` with SIMD gathers )
 - #89461 (Add `deref_into_dyn_supertrait` lint.)
 - #89477 (Move items related to computing diffs to a separate file)
 - #89559 (RustWrapper: adapt for LLVM API change)
 - #89585 (Emit item no type error even if type inference fails)
 - #89596 (Make cfg imply doc(cfg))
 - #89615 (Add InferCtxt::with_opaque_type_inference to get_body_with_borrowck_facts)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoUpdate compiler/rustc_driver/src/lib.rs
Eliza Weisman [Thu, 7 Oct 2021 16:52:51 +0000 (09:52 -0700)]
Update compiler/rustc_driver/src/lib.rs

Co-authored-by: Joshua Nelson <github@jyn.dev>
2 years agorustc_driver: Enable the `WARN` log level by default
Eliza Weisman [Thu, 7 Oct 2021 16:17:57 +0000 (09:17 -0700)]
rustc_driver: Enable the `WARN` log level by default

This commit changes the `tracing_subscriber` initialization in
`rustc_driver` so that the `WARN` verbosity level is enabled by default
when the `RUSTC_LOG` env variable is empty. If the `RUSTC_LOG` env
variable is set, the filter string in the environment variable is
honored, instead.

Fixes #76824
Closes #89623

cc @eddyb, @oli-obk

2 years agoRemove unused clippy bootstrap env vars
Cameron Steffen [Thu, 7 Oct 2021 15:25:02 +0000 (10:25 -0500)]
Remove unused clippy bootstrap env vars

2 years agoAdd wrapper for -Z gcc-ld=lld to invoke rust-lld with the correct flavor
Hans Kratz [Sat, 25 Sep 2021 13:25:08 +0000 (15:25 +0200)]
Add wrapper for -Z gcc-ld=lld to invoke rust-lld with the correct flavor

The wrapper is installed as `ld` and `ld64` in the `lib\rustlib\<host_target>\bin\gcc-ld`
directory and its sole purpose is to invoke `rust-lld` in the parent directory with
the correct flavor.

2 years agoRollup merge of #89615 - willcrichton:fix-get-body-with-borrowck-facts, r=oli-obk
Guillaume Gomez [Thu, 7 Oct 2021 14:24:54 +0000 (16:24 +0200)]
Rollup merge of #89615 - willcrichton:fix-get-body-with-borrowck-facts, r=oli-obk

Add InferCtxt::with_opaque_type_inference to get_body_with_borrowck_facts

`mir_borrowck` uses `with_opaque_type_inference` before calling `do_mir_borrowck`: https://github.com/rust-lang/rust/blob/0eabf25b90396dead0b2a1aaa275af18a1ae6008/compiler/rustc_borrowck/src/lib.rs#L132

However `get_body_with_borrowck_facts` does not. Therefore I get an ICE eg when calling this function on the bodies of an async function as described here: https://rust-lang.zulipchat.com/#narrow/stream/182449-t-compiler.2Fhelp/topic/.E2.9C.94.20ICE.20when.20using.20get_body_with_borrowck_facts.20with.20async

This change fixes that bug.

r? `@nikomatsakis`

2 years agoRollup merge of #89596 - GuillaumeGomez:implicit-doc-cfg, r=jyn514
Guillaume Gomez [Thu, 7 Oct 2021 14:24:53 +0000 (16:24 +0200)]
Rollup merge of #89596 - GuillaumeGomez:implicit-doc-cfg, r=jyn514

Make cfg imply doc(cfg)

This is a reopening of #79341, rebased and modified a bit (we made a lot of refactoring in rustdoc's types so they needed to be reflected in this PR as well):

 * `hidden_cfg` is now in the `Cache` instead of `DocContext` because `cfg` information isn't stored anymore on `clean::Attributes` type but instead computed on-demand, so we need this information in later parts of rustdoc.
 * I removed the `bool_to_options` feature (which makes the code a bit simpler to read for `SingleExt` trait implementation.
 * I updated the version for the feature.

There is only one thing I couldn't figure out: [this comment](https://github.com/rust-lang/rust/pull/79341#discussion_r561855624)

> I think I'll likely scrap the whole `SingleExt` extension trait as the diagnostics for 0 and >1 items should be different.

How/why should they differ?

EDIT: this part has been solved, the current code was fine, just needed a little simplification.

cc `@Nemo157`
r? `@jyn514`

Original PR description:

This is only active when the `doc_cfg` feature is active.

The implicit cfg can be overridden via `#[doc(cfg(...))]`, so e.g. to hide a `#[cfg]` you can use something like:

```rust
#[cfg(unix)]
#[doc(cfg(all()))]
pub struct Unix;
```

By adding `#![doc(cfg_hide(foobar))]` to the crate attributes the cfg `#[cfg(foobar)]` (and _only_ that _exact_ cfg) will not be implicitly treated as a `doc(cfg)` to render a message in the documentation.