]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoRollup merge of #88828 - FabianWolff:issue-88585, r=dtolnay
Manish Goregaokar [Tue, 5 Oct 2021 19:52:42 +0000 (12:52 -0700)]
Rollup merge of #88828 - FabianWolff:issue-88585, r=dtolnay

Use `libc::sigaction()` instead of `sys::signal()` to prevent a deadlock

Fixes #88585. POSIX [specifies](https://man7.org/linux/man-pages/man3/fork.3p.html) that after forking,
> to avoid errors, the child process may only execute async-signal-safe operations until such time as one of the exec functions is called.

Rust's standard library does not currently adhere to this, as evidenced by #88585. The child process calls [`sys::signal()`](https://github.com/rust-lang/rust/blob/7bf0736e130e2203c58654f7353dbf9575e49d5c/library/std/src/sys/unix/android.rs#L76), which on Android calls [`libc::dlsym()`](https://github.com/rust-lang/rust/blob/7bf0736e130e2203c58654f7353dbf9575e49d5c/library/std/src/sys/unix/weak.rs#L101), which is [**not**](https://man7.org/linux/man-pages/man7/signal-safety.7.html) async-signal-safe, and in fact causes a deadlock in the example in #88585.

I think the easiest solution here would be to just call `libc::sigaction()` instead, which [is](https://man7.org/linux/man-pages/man7/signal-safety.7.html) async-signal-safe, provides the functionality we need, and is apparently available on all Android versions because it is also used e.g. [here](https://github.com/rust-lang/rust/blob/7bf0736e130e2203c58654f7353dbf9575e49d5c/library/std/src/sys/unix/stack_overflow.rs#L112-L114).

2 years agoRollup merge of #88706 - ThePuzzlemaker:issue-88609, r=jackh726
Manish Goregaokar [Tue, 5 Oct 2021 19:52:41 +0000 (12:52 -0700)]
Rollup merge of #88706 - ThePuzzlemaker:issue-88609, r=jackh726

Normalize associated type projections when checking return type of main

This fixes #88609.

Previously, the return type of `fn main()` would not have any associated type projections within normalized before checking if it implements the standard library trait `std::process::Termination`. This commit appears to fix it.

This feels vaguely symptomatic of a problem in the underlying trait solving engine, but I am not sure how I would solve that. I am unsure why the example in #88609 with `assert_impl_termination` and `fn foo()` work, but simply `fn main()` doesn't. The way that I solved this is also probably not the best way to do this, so please let me know if there is a better way to do this.

I have added a build-pass regression test for this issue.

2 years agoAuto merge of #89363 - oli-obk:in_tracing_we_trust, r=Mark-Simulacrum
bors [Tue, 5 Oct 2021 12:52:43 +0000 (12:52 +0000)]
Auto merge of #89363 - oli-obk:in_tracing_we_trust, r=Mark-Simulacrum

Fix performance regression with #[instrument]

linked tracing PR: https://github.com/tokio-rs/tracing/pull/1600

regression introduced by #89048

2 years agoAuto merge of #89266 - cjgillot:session-ich, r=michaelwoerister
bors [Tue, 5 Oct 2021 09:45:11 +0000 (09:45 +0000)]
Auto merge of #89266 - cjgillot:session-ich, r=michaelwoerister

Move ICH to rustc_query_system

Based on https://github.com/rust-lang/rust/pull/89183

The StableHashingContext does not need to be in rustc_middle.

This PR moves it to rustc_query_system. This will avoid a dependency between rustc_ast_lowering and rustc_middle in https://github.com/rust-lang/rust/pull/89124.

2 years agoAuto merge of #89549 - Manishearth:rollup-mhkyc16, r=Manishearth
bors [Tue, 5 Oct 2021 06:56:57 +0000 (06:56 +0000)]
Auto merge of #89549 - Manishearth:rollup-mhkyc16, r=Manishearth

Rollup of 12 pull requests

Successful merges:

 - #87631 (os current_exe using same approach as linux to get always the full ab…)
 - #88234 (rustdoc-json: Don't ignore impls for primitive types)
 - #88651 (Use the 64b inner:monotonize() implementation not the 128b one for aarch64)
 - #88816 (Rustdoc migrate to table so the gui can handle >2k constants)
 - #89244 (refactor: VecDeques PairSlices fields to private)
 - #89364 (rustdoc-json: Encode json files with UTF-8)
 - #89423 (Fix ICE caused by non_exaustive_omitted_patterns struct lint)
 - #89426 (bootstrap: add config option for nix patching)
 - #89462 (haiku thread affinity build fix)
 - #89482 (Follow the diagnostic output style guide)
 - #89504 (Don't suggest replacing region with 'static in NLL)
 - #89535 (fix busted JavaScript in error index generator)

Failed merges:

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

2 years agoRollup merge of #89535 - notriddle:notriddle/error-index-generator-js, r=Mark-Simulacrum
Manish Goregaokar [Tue, 5 Oct 2021 06:56:25 +0000 (23:56 -0700)]
Rollup merge of #89535 - notriddle:notriddle/error-index-generator-js, r=Mark-Simulacrum

fix busted JavaScript in error index generator

The old JavaScript didn't work. It filled the browser console with "e.previousElementSibling not defined" errors, because it didn't account for the example-wrap div that a newer version of rustdoc added.

Additionally, it had copied versions of utility functions that had been optimized in rustdoc main.js. This version updates those.

2 years agoRollup merge of #89504 - Aaron1011:rpit-nll-static, r=nikomatsakis
Manish Goregaokar [Tue, 5 Oct 2021 06:56:24 +0000 (23:56 -0700)]
Rollup merge of #89504 - Aaron1011:rpit-nll-static, r=nikomatsakis

Don't suggest replacing region with 'static in NLL

Fixes #73159

This is similar to #69350 - if the user didn't initially
write out a 'static lifetime, adding 'static in response to
a lifetime error is usually the wrong thing to do.

2 years agoRollup merge of #89482 - hkmatsumoto:patch-diagnostics, r=joshtriplett
Manish Goregaokar [Tue, 5 Oct 2021 06:56:23 +0000 (23:56 -0700)]
Rollup merge of #89482 - hkmatsumoto:patch-diagnostics, r=joshtriplett

Follow the diagnostic output style guide

Detected by #89455.

2 years agoRollup merge of #89462 - devnexen:haiku_thread_aff_build_fix, r=nagisa
Manish Goregaokar [Tue, 5 Oct 2021 06:56:22 +0000 (23:56 -0700)]
Rollup merge of #89462 - devnexen:haiku_thread_aff_build_fix, r=nagisa

haiku thread affinity build fix

2 years agoRollup merge of #89426 - davidtwco:bootstrap-nix-toolchain-env-var, r=Mark-Simulacrum
Manish Goregaokar [Tue, 5 Oct 2021 06:56:21 +0000 (23:56 -0700)]
Rollup merge of #89426 - davidtwco:bootstrap-nix-toolchain-env-var, r=Mark-Simulacrum

bootstrap: add config option for nix patching

On NixOS systems, bootstrap will patch rustc used in bootstrapping after checking `/etc/os-release` (to confirm the current distribution is NixOS). However, when using Nix on a non-NixOS system, it can be desirable for bootstrap to patch rustc. In this commit, a `patch-binaries-for-nix` option is added to `config.toml`, which allows for user opt-in to bootstrap's Nix patching.

r? ``@Mark-Simulacrum``

2 years agoRollup merge of #89423 - DevinR528:reachable-fields, r=Nadrieril
Manish Goregaokar [Tue, 5 Oct 2021 06:56:20 +0000 (23:56 -0700)]
Rollup merge of #89423 - DevinR528:reachable-fields, r=Nadrieril

Fix ICE caused by non_exaustive_omitted_patterns struct lint

fixes #89382

Add check that a list of `Pat`s is non empty to prevent ICE in `FnCtxt::lint_non_exhaustive_omitted_patterns`.

Is related to #89374 and #89105

2 years agoRollup merge of #89364 - hkmatsumoto:encode-json-with-utf-8, r=Mark-Simulacrum
Manish Goregaokar [Tue, 5 Oct 2021 06:56:19 +0000 (23:56 -0700)]
Rollup merge of #89364 - hkmatsumoto:encode-json-with-utf-8, r=Mark-Simulacrum

rustdoc-json: Encode json files with UTF-8

Currently, `check_missing_items.py` malfunctions when the index contains some letters like emojis.

Related to #89360.

2 years agoRollup merge of #89244 - DeveloperC286:pair_slices_fields_to_private, r=joshtriplett
Manish Goregaokar [Tue, 5 Oct 2021 06:56:18 +0000 (23:56 -0700)]
Rollup merge of #89244 - DeveloperC286:pair_slices_fields_to_private, r=joshtriplett

refactor: VecDeques PairSlices fields to private

Reducing VecDeque's PairSlices fields to private, a `from(...)` method is already used to create PairSlices.

2 years agoRollup merge of #88816 - dns2utf8:rustdoc_test_gui_2k_constants, r=GuillaumeGomez
Manish Goregaokar [Tue, 5 Oct 2021 06:56:17 +0000 (23:56 -0700)]
Rollup merge of #88816 - dns2utf8:rustdoc_test_gui_2k_constants, r=GuillaumeGomez

Rustdoc migrate to table so the gui can handle >2k constants

Closes #88545.

This PR adds a test for overlapping entries in the `item-table` https://github.com/rust-lang/rust/issues/88545
It currently includes the commit with the workaround from https://github.com/rust-lang/rust/pull/88776

2 years agoRollup merge of #88651 - AGSaidi:monotonize-inner-64b-aarch64, r=dtolnay
Manish Goregaokar [Tue, 5 Oct 2021 06:56:17 +0000 (23:56 -0700)]
Rollup merge of #88651 - AGSaidi:monotonize-inner-64b-aarch64, r=dtolnay

Use the 64b inner:monotonize() implementation not the 128b one for aarch64

aarch64 prior to v8.4 (FEAT_LSE2) doesn't have an instruction that guarantees
untorn 128b reads except for completing a 128b load/store exclusive pair
(ldxp/stxp) or compare-and-swap (casp) successfully. The requirement to
complete a 128b read+write atomic is actually more expensive and more unfair
than the previous implementation of monotonize() which used a Mutex on aarch64,
especially at large core counts.  For aarch64 switch to the 64b atomic
implementation which is about 13x faster for a benchmark that involves many
calls to Instant::now().

2 years agoRollup merge of #88234 - hkmatsumoto:rustdoc-impls-for-primitive, r=jyn514
Manish Goregaokar [Tue, 5 Oct 2021 06:56:16 +0000 (23:56 -0700)]
Rollup merge of #88234 - hkmatsumoto:rustdoc-impls-for-primitive, r=jyn514

rustdoc-json: Don't ignore impls for primitive types

Fix the issue discussed at [Zulip](https://rust-lang.zulipchat.com/#narrow/stream/266220-rustdoc/topic/.E2.9C.94.20Json.20output.20lacks.20some.20item.20which.20are.20supposed.20to.20be.20there)

r? ``@jyn514``

2 years agoRollup merge of #87631 - :solarish_upd_fs, r=joshtriplett
Manish Goregaokar [Tue, 5 Oct 2021 06:56:15 +0000 (23:56 -0700)]
Rollup merge of #87631 - :solarish_upd_fs, r=joshtriplett

os current_exe using same approach as linux to get always the full ab…

…solute path

2 years agoAuto merge of #89545 - workingjubilee:rollup-ooxf3p2, r=workingjubilee
bors [Tue, 5 Oct 2021 04:13:35 +0000 (04:13 +0000)]
Auto merge of #89545 - workingjubilee:rollup-ooxf3p2, r=workingjubilee

Rollup of 15 pull requests

Successful merges:

 - #87993 (Stabilize try_reserve)
 - #88090 (Perform type inference in range pattern)
 - #88780 (Added abs_diff for integer types.)
 - #89270 (path.push() should work as expected on windows verbatim paths)
 - #89413 (Correctly handle supertraits for min_specialization)
 - #89456 (Update to the final LLVM 13.0.0 release)
 - #89466 (Fix bug with query modifier parsing)
 - #89473 (Fix extra `non_snake_case` warning for shorthand field bindings)
 - #89474 (rustdoc: Improve doctest pass's name and module's name)
 - #89478 (Fixed numerus of error message)
 - #89480 (Add test for issue 89118.)
 - #89487 (Try to recover from a `=>` -> `=` or `->` typo in a match arm)
 - #89494 (Deny `where` clauses on `auto` traits)
 - #89511 (:arrow_up: rust-analyzer)
 - #89536 (update Miri)

Failed merges:

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

2 years agoRollup merge of #89536 - RalfJung:miri, r=RalfJung
Jubilee [Tue, 5 Oct 2021 04:12:44 +0000 (21:12 -0700)]
Rollup merge of #89536 - RalfJung:miri, r=RalfJung

update Miri

Let's get the recent fixes and improvements shipped.
r? ````@ghost````

2 years agoRollup merge of #89511 - lnicola:rust-analyzer-2021-10-04, r=lnicola
Jubilee [Tue, 5 Oct 2021 04:12:43 +0000 (21:12 -0700)]
Rollup merge of #89511 - lnicola:rust-analyzer-2021-10-04, r=lnicola

:arrow_up: rust-analyzer

2 years agoRollup merge of #89494 - FabianWolff:issue-84075, r=davidtwco
Jubilee [Tue, 5 Oct 2021 04:12:43 +0000 (21:12 -0700)]
Rollup merge of #89494 - FabianWolff:issue-84075, r=davidtwco

Deny `where` clauses on `auto` traits

Fixes #84075.

2 years agoRollup merge of #89487 - FabianWolff:issue-89396, r=petrochenkov
Jubilee [Tue, 5 Oct 2021 04:12:42 +0000 (21:12 -0700)]
Rollup merge of #89487 - FabianWolff:issue-89396, r=petrochenkov

Try to recover from a `=>` -> `=` or `->` typo in a match arm

Fixes #89396.

2 years agoRollup merge of #89480 - hameerabbasi:issue-89118-test, r=jackh726
Jubilee [Tue, 5 Oct 2021 04:12:41 +0000 (21:12 -0700)]
Rollup merge of #89480 - hameerabbasi:issue-89118-test, r=jackh726

Add test for issue 89118.

This PR adds a test for issue 89118.

Closes #89118.

2 years agoRollup merge of #89478 - zvavybir:master, r=jyn514
Jubilee [Tue, 5 Oct 2021 04:12:40 +0000 (21:12 -0700)]
Rollup merge of #89478 - zvavybir:master, r=jyn514

Fixed numerus of error message

When there are redundant trait requirements and these are hidden, a message is generated by the following code snippet:
`format!("{} redundant requirements hidden", count)`
But if there is only a single hidden requirement, it will still print this message in plural instead of singular.

2 years agoRollup merge of #89474 - camelid:better-pass-name, r=jyn514
Jubilee [Tue, 5 Oct 2021 04:12:39 +0000 (21:12 -0700)]
Rollup merge of #89474 - camelid:better-pass-name, r=jyn514

rustdoc: Improve doctest pass's name and module's name

As the docs at the top of the file say, it is an overloaded pass and
actually runs two lints.

2 years agoRollup merge of #89473 - FabianWolff:issue-89469, r=joshtriplett
Jubilee [Tue, 5 Oct 2021 04:12:38 +0000 (21:12 -0700)]
Rollup merge of #89473 - FabianWolff:issue-89469, r=joshtriplett

Fix extra `non_snake_case` warning for shorthand field bindings

Fixes #89469. The problem is the innermost `if` condition here:
https://github.com/rust-lang/rust/blob/d14731cb3ced8318d7fc83cbe838f0e7f2fb3b40/compiler/rustc_lint/src/nonstandard_style.rs#L435-L452

This code runs for every `PatKind::Binding`, so if a struct has multiple fields, say A and B, and both are bound in a pattern using shorthands, the call to `self.check_snake_case()` will indeed be skipped in the `check_pat()` call for `A`; but when `check_pat()` is called for `B`, the loop will still iterate over `A`, and `field.ident (= A) != ident (= B)` will be true. I have fixed this by only looking at non-shorthand bindings, and only the binding that `check_pat()` was actually called for.

2 years agoRollup merge of #89466 - Mark-Simulacrum:query-macros, r=oli-obk
Jubilee [Tue, 5 Oct 2021 04:12:37 +0000 (21:12 -0700)]
Rollup merge of #89466 - Mark-Simulacrum:query-macros, r=oli-obk

Fix bug with query modifier parsing

The previous macro_rules! parsers failed when an additional modifier was added
with ambiguity errors. The error is pretty unclear as to what exactly the cause
here is, but this change simplifies the argument parsing code such that the
error is avoided.

Extracted from other work, and somewhat duplicates 0358edeb5 from #85830, but
this approach seems a little simpler to me. Not technically currently necessary but seems
like a good cleanup.

2 years agoRollup merge of #89456 - cuviper:llvm-13, r=nikic
Jubilee [Tue, 5 Oct 2021 04:12:36 +0000 (21:12 -0700)]
Rollup merge of #89456 - cuviper:llvm-13, r=nikic

Update to the final LLVM 13.0.0 release

2 years agoRollup merge of #89413 - matthewjasper:spec-marker-fix, r=nikomatsakis
Jubilee [Tue, 5 Oct 2021 04:12:35 +0000 (21:12 -0700)]
Rollup merge of #89413 - matthewjasper:spec-marker-fix, r=nikomatsakis

Correctly handle supertraits for min_specialization

Supertraits of specialization markers could circumvent checks for
min_specialization. Elaborating predicates prevents this.

r? ````@nikomatsakis````

2 years agoRollup merge of #89270 - seanyoung:join_fold, r=m-ou-se
Jubilee [Tue, 5 Oct 2021 04:12:35 +0000 (21:12 -0700)]
Rollup merge of #89270 - seanyoung:join_fold, r=m-ou-se

path.push() should work as expected on windows verbatim paths

On Windows, std::fs::canonicalize() returns an so-called UNC path.  UNC paths differ with regular paths because:

- This type of path can much longer than a non-UNC path (32k vs 260 characters).
- The prefix for a UNC path is ``Component::Prefix(Prefix::DiskVerbatim(..)))``
- No `/` is allowed
- No `.` is allowed
- No `..` is allowed

Rust has poor handling of such paths. If you join a UNC path with a path with any of the above, then this will not work.

I've implemented a new method `fn join_fold()` which joins paths and also removes any `.` and `..` from it, and replaces `/` with `\` on Windows. Using this function it is possible to use UNC paths without issue. In addition, this function is useful on Linux too; paths can be appended without having to call `canonicalize()` to remove the `.` and `..`.

This PR needs test cases, which can I add. I hope this will a start of a discussion.

2 years agoRollup merge of #88780 - orlp:int-abs-diff, r=m-ou-se
Jubilee [Tue, 5 Oct 2021 04:12:34 +0000 (21:12 -0700)]
Rollup merge of #88780 - orlp:int-abs-diff, r=m-ou-se

Added abs_diff for integer types.

Closes https://github.com/rust-lang/rust/issues/62111.

2 years agoRollup merge of #88090 - nbdd0121:inference, r=nikomatsakis
Jubilee [Tue, 5 Oct 2021 04:12:33 +0000 (21:12 -0700)]
Rollup merge of #88090 - nbdd0121:inference, r=nikomatsakis

Perform type inference in range pattern

Fix #88074

2 years agoRollup merge of #87993 - kornelski:try_reserve_stable, r=joshtriplett
Jubilee [Tue, 5 Oct 2021 04:12:33 +0000 (21:12 -0700)]
Rollup merge of #87993 - kornelski:try_reserve_stable, r=joshtriplett

Stabilize try_reserve

Stabilization PR for the [`try_reserve` feature](https://github.com/rust-lang/rust/issues/48043#issuecomment-898040475).

2 years agoupdate Miri
Ralf Jung [Mon, 4 Oct 2021 22:13:00 +0000 (18:13 -0400)]
update Miri

2 years agofix busted JavaScript in error index generator
Michael Howell [Mon, 4 Oct 2021 20:01:50 +0000 (13:01 -0700)]
fix busted JavaScript in error index generator

The old JavaScript didn't work. It filled the browser console
with "e.previousElementSibling not defined" errors, because
it didn't account for the example-wrap div that a newer version
of rustdoc added.

Additionally, it had copied versions of utility functions that
had been optimized in rustdoc main.js. This version updates those.

2 years agoAuto merge of #89530 - workingjubilee:rollup-ua14iq6, r=workingjubilee
bors [Mon, 4 Oct 2021 20:58:57 +0000 (20:58 +0000)]
Auto merge of #89530 - workingjubilee:rollup-ua14iq6, r=workingjubilee

Rollup of 13 pull requests

Successful merges:

 - #83655 ([aarch64] add target feature outline-atomics)
 - #87091 (implement advance_(back_)_by on more iterators)
 - #88451 (Fix an ICE caused by type mismatch errors being ignored)
 - #88452 (VecDeque: improve performance for From<[T; N]>)
 - #89400 (Improve wording of `map_or_else` docs)
 - #89407 (Recommend running `cargo clean` in E0514 output)
 - #89443 (Include the length in BTree hashes)
 - #89444 (rustdoc: use slice::contains instead of open-coding it)
 - #89447 (Improve error message for missing angle brackets in `[_]::method`)
 - #89453 (Consistently use 'supertrait'.)
 - #89483 (Practice diagnostic message convention)
 - #89500 (Fix ICE with buffered lint referring to AST node deleted by everybody_loops)
 - #89508 (Stabilize `const_panic`)

Failed merges:

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

2 years agoRollup merge of #89508 - jhpratt:stabilize-const_panic, r=joshtriplett
Jubilee [Mon, 4 Oct 2021 20:58:17 +0000 (13:58 -0700)]
Rollup merge of #89508 - jhpratt:stabilize-const_panic, r=joshtriplett

Stabilize `const_panic`

Closes #51999

FCP completed in #89006

```@rustbot``` label +A-const-eval +A-const-fn +T-lang

cc ```@oli-obk``` for review (not `r?`'ing as not on lang team)

2 years agoRollup merge of #89500 - FabianWolff:issue-87308, r=petrochenkov
Jubilee [Mon, 4 Oct 2021 20:58:16 +0000 (13:58 -0700)]
Rollup merge of #89500 - FabianWolff:issue-87308, r=petrochenkov

Fix ICE with buffered lint referring to AST node deleted by everybody_loops

Fixes #87308. Note the following comment:
https://github.com/rust-lang/rust/blob/08759c691e2e9799a3c6780ffdf910240ebd4a6b/compiler/rustc_lint/src/early.rs#L415-L417

As it turns out, this is not _always_ a bug, because `-Zunpretty=everybody_loops` causes a lot of AST nodes to be deleted, and thus some buffered lints will refer to non-existent node ids. To fix this, my changes simply ignore buffered lints if `-Zunpretty=everybody_loops` is enabled, which, from my understanding, shouldn't be a big issue because it only affects pretty-printing. Of course, a more elegant solution would only ignore buffered lints that actually point at deleted node ids, but I haven't figured out an easy way of achieving this.

For the concrete example in #87308, the buffered lint is created [here](https://github.com/rust-lang/rust/blob/08759c691e2e9799a3c6780ffdf910240ebd4a6b/compiler/rustc_expand/src/mbe/macro_rules.rs#L145-L151) with the `lint_node_id` from [here](https://github.com/rust-lang/rust/blob/08759c691e2e9799a3c6780ffdf910240ebd4a6b/compiler/rustc_expand/src/mbe/macro_rules.rs#L319), i.e. it points at the macro _expansion_, which then gets deleted by `ReplaceBodyWithLoop` [here](https://github.com/rust-lang/rust/blob/08759c691e2e9799a3c6780ffdf910240ebd4a6b/compiler/rustc_interface/src/passes.rs#L377).

2 years agoRollup merge of #89483 - hkmatsumoto:patch-diagnostics-2, r=estebank
Jubilee [Mon, 4 Oct 2021 20:58:15 +0000 (13:58 -0700)]
Rollup merge of #89483 - hkmatsumoto:patch-diagnostics-2, r=estebank

Practice diagnostic message convention

Detected by #89455.

r? ```@estebank```

2 years agoRollup merge of #89453 - waywardmonkeys:consistent-supertrait-usage, r=nagisa
Jubilee [Mon, 4 Oct 2021 20:58:14 +0000 (13:58 -0700)]
Rollup merge of #89453 - waywardmonkeys:consistent-supertrait-usage, r=nagisa

Consistently use 'supertrait'.

A subset of places referred to 'super-trait', so this changes them
to all use 'supertrait'. This matches 'supertype' and some other
usages. An exception is 'auto-trait' which is consistently used
in that manner.

2 years agoRollup merge of #89447 - FabianWolff:issue-89388, r=davidtwco
Jubilee [Mon, 4 Oct 2021 20:58:13 +0000 (13:58 -0700)]
Rollup merge of #89447 - FabianWolff:issue-89388, r=davidtwco

Improve error message for missing angle brackets in `[_]::method`

Fixes #89388.

2 years agoRollup merge of #89444 - notriddle:notriddle/contains-str, r=jyn514
Jubilee [Mon, 4 Oct 2021 20:58:12 +0000 (13:58 -0700)]
Rollup merge of #89444 - notriddle:notriddle/contains-str, r=jyn514

rustdoc: use slice::contains instead of open-coding it

2 years agoRollup merge of #89443 - cuviper:btree-hash-len, r=dtolnay
Jubilee [Mon, 4 Oct 2021 20:58:11 +0000 (13:58 -0700)]
Rollup merge of #89443 - cuviper:btree-hash-len, r=dtolnay

Include the length in BTree hashes

This change makes it consistent with `Hash` for all other collections.

2 years agoRollup merge of #89407 - pierwill:recommend-clean-E0514, r=davidtwco
Jubilee [Mon, 4 Oct 2021 20:58:10 +0000 (13:58 -0700)]
Rollup merge of #89407 - pierwill:recommend-clean-E0514, r=davidtwco

Recommend running `cargo clean` in E0514 output

This suggestion has worked for me before. Seems to me it could help others.

2 years agoRollup merge of #89400 - Nitepone:nitepone/map-or-else-docfix, r=dtolnay
Jubilee [Mon, 4 Oct 2021 20:58:09 +0000 (13:58 -0700)]
Rollup merge of #89400 - Nitepone:nitepone/map-or-else-docfix, r=dtolnay

Improve wording of `map_or_else` docs

Changes doc text to refer to the "default" parameter as the "default"
function.

Previously, the doc text referred to the "f" parameter as the "default" function; and the "default" parameter as the "fallback" function.

2 years agoRollup merge of #88452 - xu-cheng:vecdeque-from-array, r=m-ou-se
Jubilee [Mon, 4 Oct 2021 20:58:08 +0000 (13:58 -0700)]
Rollup merge of #88452 - xu-cheng:vecdeque-from-array, r=m-ou-se

VecDeque: improve performance for From<[T; N]>

Create `VecDeque` directly from the array instead of inserting items one-by-one.

Benchmark
```
./x.py bench library/alloc --test-args vec_deque::bench_from_array_1000
```

* Before
```
test vec_deque::bench_from_array_1000                    ... bench:       3,991 ns/iter (+/- 717)
```

* After
```
test vec_deque::bench_from_array_1000                    ... bench:         268 ns/iter (+/- 37)
```

2 years agoRollup merge of #88451 - theo-lw:issue-87771, r=jackh726
Jubilee [Mon, 4 Oct 2021 20:58:07 +0000 (13:58 -0700)]
Rollup merge of #88451 - theo-lw:issue-87771, r=jackh726

Fix an ICE caused by type mismatch errors being ignored

This PR fixes #87771. It turns out that the check on `compiler/rustc_typeck/src/check/demand.rs:148` leads to the ICE. I removed it because the early return in [`check_expr_assign`](https://github.com/theo-lw/rust/blob/dec7fc3ced5bc3c18d0e5d29921d087f93189cb8/compiler/rustc_typeck/src/check/expr.rs#L928) already prevents unnecessary error messages from the call to `check_expr_coercable_to_type`.

2 years agoRollup merge of #87091 - the8472:more-advance-by-impls, r=joshtriplett
Jubilee [Mon, 4 Oct 2021 20:58:07 +0000 (13:58 -0700)]
Rollup merge of #87091 - the8472:more-advance-by-impls, r=joshtriplett

implement advance_(back_)_by on more iterators

Add more efficient, non-default implementations for `feature(iter_advance_by)` (#77404) on more iterators and adapters.

This PR only contains implementations where skipping over items doesn't elide any observable side-effects such as user-provided closures or `clone()` functions. I'll put those in a separate PR.

2 years agoRollup merge of #83655 - sebpop:arm64-outline-atomics, r=workingjubilee
Jubilee [Mon, 4 Oct 2021 20:58:06 +0000 (13:58 -0700)]
Rollup merge of #83655 - sebpop:arm64-outline-atomics, r=workingjubilee

[aarch64] add target feature outline-atomics

Enable outline-atomics by default as enabled in clang by the following commit
https://reviews.llvm.org/rGc5e7e649d537067dec7111f3de1430d0fc8a4d11

Performance improves by several orders of magnitude when using the LSE instructions
instead of the ARMv8.0 compatible load/store exclusive instructions.

Tested on Graviton2 aarch64-linux with
x.py build && x.py install && x.py test

2 years agoUse `TokenKind::similar_tokens()`
Fabian Wolff [Mon, 4 Oct 2021 20:13:00 +0000 (22:13 +0200)]
Use `TokenKind::similar_tokens()`

2 years agoAuto merge of #88834 - the8472:char-count, r=joshtriplett
bors [Mon, 4 Oct 2021 12:49:57 +0000 (12:49 +0000)]
Auto merge of #88834 - the8472:char-count, r=joshtriplett

optimize str::from_utf8() validation when slice contains multibyte chars and str.chars().count() in all cases

The change shows small but consistent improvements across several x86 target feature levels. I also tried to optimize counting with `slice.as_chunks` but that yielded more inconsistent results, bigger improvements for some optimization levels, lesser ones in others.

```
old, -O2, x86-64
test str::str_char_count_emoji                                  ... bench:       1,924 ns/iter (+/- 26)
test str::str_char_count_lorem                                  ... bench:         879 ns/iter (+/- 12)
test str::str_char_count_lorem_short                            ... bench:           5 ns/iter (+/- 0)

new, -O2, x86-64
test str::str_char_count_emoji                                  ... bench:       1,878 ns/iter (+/- 21)
test str::str_char_count_lorem                                  ... bench:         851 ns/iter (+/- 11)
test str::str_char_count_lorem_short                            ... bench:           4 ns/iter (+/- 0)

old, -O2, x86-64-v2
test str::str_char_count_emoji                                  ... bench:       1,477 ns/iter (+/- 46)
test str::str_char_count_lorem                                  ... bench:         675 ns/iter (+/- 15)
test str::str_char_count_lorem_short                            ... bench:           5 ns/iter (+/- 0)

new, -O2, x86-64-v2
test str::str_char_count_emoji                                  ... bench:       1,323 ns/iter (+/- 39)
test str::str_char_count_lorem                                  ... bench:         593 ns/iter (+/- 18)
test str::str_char_count_lorem_short                            ... bench:           4 ns/iter (+/- 0)

old, -O2, x86-64-v3
test str::str_char_count_emoji                                  ... bench:         748 ns/iter (+/- 7)
test str::str_char_count_lorem                                  ... bench:         348 ns/iter (+/- 2)
test str::str_char_count_lorem_short                            ... bench:           5 ns/iter (+/- 0)

new, -O2, x86-64-v3
test str::str_char_count_emoji                                  ... bench:         650 ns/iter (+/- 4)
test str::str_char_count_lorem                                  ... bench:         301 ns/iter (+/- 1)
test str::str_char_count_lorem_short                            ... bench:           5 ns/iter (+/- 0)
```

and for the multibyte-char string validation:

```
old, -O2, x86-64
test str::str_validate_emoji                                    ... bench:       4,606 ns/iter (+/- 64)

new, -O2, x86-64
test str::str_validate_emoji                                    ... bench:       3,837 ns/iter (+/- 60)
```

2 years agoAuto merge of #89489 - FabianWolff:issue-89485, r=oli-obk
bors [Mon, 4 Oct 2021 10:09:04 +0000 (10:09 +0000)]
Auto merge of #89489 - FabianWolff:issue-89485, r=oli-obk

Fix unsound optimization with explicit variant discriminants

Fixes #89485.

2 years agoStabilize try_reserve
Kornel [Sun, 29 Aug 2021 22:21:33 +0000 (23:21 +0100)]
Stabilize try_reserve

2 years agoAuto merge of #89512 - Manishearth:rollup-meh9x7r, r=Manishearth
bors [Mon, 4 Oct 2021 07:25:50 +0000 (07:25 +0000)]
Auto merge of #89512 - Manishearth:rollup-meh9x7r, r=Manishearth

Rollup of 14 pull requests

Successful merges:

 - #86434 (Add `Ipv6Addr::is_benchmarking`)
 - #86828 (const fn for option copied, take & replace)
 - #87679 (BTree: refine some comments)
 - #87910 (Mark unsafe methods NonZero*::unchecked_(add|mul) as const.)
 - #88286 (Remove unnecessary unsafe block in `process_unix`)
 - #88305 (Manual Debug for Unix ExitCode ExitStatus ExitStatusError)
 - #88353 (Partially stabilize `array_methods`)
 - #88370 (Add missing `# Panics` section to `Vec` method)
 - #88481 (Remove some feature gates)
 - #89138 (Fix link in Ipv6Addr::to_ipv4 docs)
 - #89401 (Add truncate note to Vec::resize)
 - #89467 (Fix typos in rustdoc/lints)
 - #89472 (Only register `WSACleanup` if `WSAStartup` is actually ever called)
 - #89505 (Add regression test for spurious const error with NLL)

Failed merges:

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

2 years agoStabilize `const_panic`
Jacob Pratt [Mon, 4 Oct 2021 04:33:43 +0000 (00:33 -0400)]
Stabilize `const_panic`

2 years agoRollup merge of #89505 - Aaron1011:nll-const-test, r=Mark-Simulacrum
Manish Goregaokar [Mon, 4 Oct 2021 06:13:25 +0000 (23:13 -0700)]
Rollup merge of #89505 - Aaron1011:nll-const-test, r=Mark-Simulacrum

Add regression test for spurious const error with NLL

Fixes #55825

2 years agoRollup merge of #89472 - nagisa:nagisa/wsa-cleanup, r=dtolnay
Manish Goregaokar [Mon, 4 Oct 2021 06:13:24 +0000 (23:13 -0700)]
Rollup merge of #89472 - nagisa:nagisa/wsa-cleanup, r=dtolnay

Only register `WSACleanup` if `WSAStartup` is actually ever called

See https://github.com/rust-lang/rust/pull/85595

Fixes #85441

2 years agoRollup merge of #89467 - tniessen:rustdoc-unecessary, r=jyn514
Manish Goregaokar [Mon, 4 Oct 2021 06:13:23 +0000 (23:13 -0700)]
Rollup merge of #89467 - tniessen:rustdoc-unecessary, r=jyn514

Fix typos in rustdoc/lints

This PR merely fixes a few typos in a recently introduced change :)

Refs: https://github.com/rust-lang/rust/pull/85223

2 years agoRollup merge of #89401 - owengage:master, r=joshtriplett
Manish Goregaokar [Mon, 4 Oct 2021 06:13:22 +0000 (23:13 -0700)]
Rollup merge of #89401 - owengage:master, r=joshtriplett

Add truncate note to Vec::resize

A very minor addition to the `Vec::resize` documentation to point out the `truncate` method.
When I was searching for something matching `truncate` I managed to miss it, along with some colleagues. We later found it by chance. We did find `resize` however, so I was hoping to point it out in the documentation.

2 years agoRollup merge of #89138 - newpavlov:patch-2, r=dtolnay
Manish Goregaokar [Mon, 4 Oct 2021 06:13:21 +0000 (23:13 -0700)]
Rollup merge of #89138 - newpavlov:patch-2, r=dtolnay

Fix link in Ipv6Addr::to_ipv4 docs

2 years agoRollup merge of #88481 - bjorn3:remove_feature_gates, r=cjgillot
Manish Goregaokar [Mon, 4 Oct 2021 06:13:20 +0000 (23:13 -0700)]
Rollup merge of #88481 - bjorn3:remove_feature_gates, r=cjgillot

Remove some feature gates

The first commit removes various feature gates that are unused. The second commit replaces some `Fn` implementations with `Iterator` implementations, which is much cleaner IMO. The third commit replaces an unboxed_closures feature gate with min_specialization. For some reason the unboxed_closures feature gate suppresses the min_specialization feature gate from triggering on an `TrustedStep` impl. The last comment just turns a regular comment into a doc comment as drive by cleanup. I can move it to a separate PR if preferred.

2 years agoRollup merge of #88370 - Seppel3210:master, r=dtolnay
Manish Goregaokar [Mon, 4 Oct 2021 06:13:20 +0000 (23:13 -0700)]
Rollup merge of #88370 - Seppel3210:master, r=dtolnay

Add missing `# Panics` section to `Vec` method

namely `Vec::extend_from_within`

2 years agoRollup merge of #88353 - jhpratt:stabilize-array-as-ref, r=joshtriplett
Manish Goregaokar [Mon, 4 Oct 2021 06:13:19 +0000 (23:13 -0700)]
Rollup merge of #88353 - jhpratt:stabilize-array-as-ref, r=joshtriplett

Partially stabilize `array_methods`

This stabilizes `<[T; N]>::as_slice` and `<[T; N]>::as_mut_slice`, which is forms part of the `array_methods` feature: #76118.

This also makes `<[T; N]>::as_slice` const due to its trivial nature.

2 years agoRollup merge of #88305 - ijackson:exitstatus-debug, r=dtolnay
Manish Goregaokar [Mon, 4 Oct 2021 06:13:18 +0000 (23:13 -0700)]
Rollup merge of #88305 - ijackson:exitstatus-debug, r=dtolnay

Manual Debug for Unix ExitCode ExitStatus ExitStatusError

These structs have misleading names.  An ExitStatus[Error] is actually a Unix wait status; an ExitCode is actually an exit status.  These misleading names appear in the `Debug` output.

The `Display` impls on Unix have been improved, but the `Debug` impls are still misleading, as reported in #74832.

Fix this by pretending that these internal structs are called `unix_exit_status` and `unix_wait_status` as applicable.  (We can't actually rename the structs because of the way that the cross-platform machinery works: the names are cross-platform.)

After this change, this program
```
#![feature(exit_status_error)]
fn main(){
    let x = std::process::Command::new("false").status().unwrap();
    dbg!(x.exit_ok());
    eprintln!("x={:?}",x);
}
```
produces this output
```
[src/main.rs:4] x.exit_ok() = Err(
    ExitStatusError(
        unix_wait_status(
            256,
        ),
    ),
)
x=ExitStatus(unix_wait_status(256))
```

Closes #74832

2 years agoRollup merge of #88286 - LeSeulArtichaut:unnecessary-unsafe-block-std, r=dtolnay
Manish Goregaokar [Mon, 4 Oct 2021 06:13:18 +0000 (23:13 -0700)]
Rollup merge of #88286 - LeSeulArtichaut:unnecessary-unsafe-block-std, r=dtolnay

Remove unnecessary unsafe block in `process_unix`

Because it's nested under this unsafe fn!

This block isn't detected as unnecessary because of a bug in the compiler: #88260.

2 years agoRollup merge of #87910 - iago-lito:mark_unsafe_nonzero_arithmetics_as_const, r=joshtr...
Manish Goregaokar [Mon, 4 Oct 2021 06:13:17 +0000 (23:13 -0700)]
Rollup merge of #87910 - iago-lito:mark_unsafe_nonzero_arithmetics_as_const, r=joshtriplett

Mark unsafe methods NonZero*::unchecked_(add|mul) as const.

Now that https://github.com/rust-lang/rfcs/pull/3016 has landed, these two unstable `std` function can be marked `const`, according to this detail of #84186.

2 years agoRollup merge of #87679 - ssomers:btree_comments, r=joshtriplett
Manish Goregaokar [Mon, 4 Oct 2021 06:13:16 +0000 (23:13 -0700)]
Rollup merge of #87679 - ssomers:btree_comments, r=joshtriplett

BTree: refine some comments

2 years agoRollup merge of #86828 - lambinoo:67441-const-fn-copied-take-replace, r=joshtriplett
Manish Goregaokar [Mon, 4 Oct 2021 06:13:16 +0000 (23:13 -0700)]
Rollup merge of #86828 - lambinoo:67441-const-fn-copied-take-replace, r=joshtriplett

const fn for option copied, take & replace

Tracking issue: [#67441](https://github.com/rust-lang/rust/issues/67441)

Adding const fn for the copied, take and replace method of Option. Also adding necessary unit test.

It's my first contribution so I am pretty sure I don't know what I'm doing but there's a first for everything!

2 years agoRollup merge of #86434 - CDirkx:ipv6-benchmarking, r=joshtriplett
Manish Goregaokar [Mon, 4 Oct 2021 06:13:15 +0000 (23:13 -0700)]
Rollup merge of #86434 - CDirkx:ipv6-benchmarking, r=joshtriplett

Add `Ipv6Addr::is_benchmarking`

This PR adds the unstable method `Ipv6Addr::is_benchmarking`. This method is added for parity with `Ipv4Addr::is_benchmarking`, and I intend to use it in a future rework of `Ipv6Addr::is_global` (edit: #86634) to more accurately follow the [IANA Special Address Registry](https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml) (like is done in `Ipv4Addr::is_global`).

With `Ipv6Addr::is_benchmarking` and `Ipv4Addr::is_benchmarking` now both existing, `IpAddr::is_benchmarking` is also added.

2 years ago:arrow_up: rust-analyzer
Laurențiu Nicola [Mon, 4 Oct 2021 05:37:24 +0000 (08:37 +0300)]
:arrow_up: rust-analyzer

2 years agoAuto merge of #89165 - jkugelman:read-to-end-overallocation, r=joshtriplett
bors [Mon, 4 Oct 2021 04:44:56 +0000 (04:44 +0000)]
Auto merge of #89165 - jkugelman:read-to-end-overallocation, r=joshtriplett

Fix read_to_end to not grow an exact size buffer

If you know how much data to expect and use `Vec::with_capacity` to pre-allocate a buffer of that capacity, `Read::read_to_end` will still double its capacity. It needs some space to perform a read, even though that read ends up returning `0`.

It's a bummer to carefully pre-allocate 1GB to read a 1GB file into memory and end up using 2GB.

This fixes that behavior by special casing a full buffer and reading into a small "probe" buffer instead. If that read returns `0` then it's confirmed that the buffer was the perfect size. If it doesn't, the probe buffer is appended to the normal buffer and the read loop continues.

Fixing this allows several workarounds in the standard library to be removed:

- `Take` no longer needs to override `Read::read_to_end`.
- The `reservation_size` callback that allowed `Take` to inhibit the previous over-allocation behavior isn't needed.
- `fs::read` doesn't need to reserve an extra byte in `initial_buffer_size`.

Curiously, there was a unit test that specifically checked that `Read::read_to_end` *does* over-allocate. I removed that test, too.

2 years agoDon't suggest replacing region with 'static in NLL
Aaron Hill [Sun, 3 Oct 2021 21:29:34 +0000 (16:29 -0500)]
Don't suggest replacing region with 'static in NLL

Fixes #73159

This is similar to #69350 - if the user didn't initially
write out a 'static lifetime, adding 'static in response to
a lifetime error is usually the wrong thing to do.

2 years agoAdd regression test for spurious const error with NLL
Aaron Hill [Sun, 3 Oct 2021 21:54:54 +0000 (16:54 -0500)]
Add regression test for spurious const error with NLL

Fixes #55825

2 years agoAuto merge of #88175 - camsteffen:let-desugar-span, r=Manishearth
bors [Sun, 3 Oct 2021 21:44:10 +0000 (21:44 +0000)]
Auto merge of #88175 - camsteffen:let-desugar-span, r=Manishearth

Add expansion to while desugar spans

In the same vein as #88163, this reverts a change in Clippy behavior as a result of #80357 (and reverts some `#[allow]`s): This changes `clippy::blocks_in_if_conditions` to not fire on `while` loops. Though we might actually want Clippy to lint those cases, we should introduce the change purposefully, with tests, and possibly under a different lint name.

The actual change here is to add a desugaring expansion to the spans when lowering a `while` loop.

r? `@Manishearth`

2 years agoDisable `SimplifyBranchSame` optimization for now
Fabian Wolff [Sun, 3 Oct 2021 20:58:24 +0000 (22:58 +0200)]
Disable `SimplifyBranchSame` optimization for now

2 years agoUpdate comments
Fabian Wolff [Sun, 3 Oct 2021 19:06:49 +0000 (21:06 +0200)]
Update comments

2 years agoFix ICE with buffered lint referring to AST node deleted by everybody_loops
Fabian Wolff [Sun, 3 Oct 2021 19:04:36 +0000 (21:04 +0200)]
Fix ICE with buffered lint referring to AST node deleted by everybody_loops

2 years agoAuto merge of #89486 - rusticstuff:docker_letsencrypt_ca_update, r=Mark-Simulacrum
bors [Sun, 3 Oct 2021 19:03:23 +0000 (19:03 +0000)]
Auto merge of #89486 - rusticstuff:docker_letsencrypt_ca_update, r=Mark-Simulacrum

Update Let's Encrypt ROOT CA certificate in dist-(i686|x86_64)-linux docker images

The DST Root CA X3 used by Let's Encrypt has expired ([Let's Encrypt announcement](https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/)). This patch installs the new root certificate (ISRG Root X1) and disables the old one. Disabling the old one is necessary because otherwise curl still fails to download from servers with Let's Encrypt certs even though they are cross-signed.

Fixes #89484.

2 years agoAuto merge of #88086 - ssomers:btree_clone_testing, r=dtolnay
bors [Sun, 3 Oct 2021 16:22:37 +0000 (16:22 +0000)]
Auto merge of #88086 - ssomers:btree_clone_testing, r=dtolnay

BTree: toughen panicky test of clone()

Test did not cover the second half of `clone_subtree` and why this clones key & value first.

2 years agoDeny `where` clauses on `auto` traits
Fabian Wolff [Sun, 3 Oct 2021 15:58:10 +0000 (17:58 +0200)]
Deny `where` clauses on `auto` traits

2 years agoReplace Fn impls with RPIT impls in rustc_index
bjorn3 [Sat, 2 Oct 2021 17:47:04 +0000 (19:47 +0200)]
Replace Fn impls with RPIT impls in rustc_index

This is cleaner and removes an unstable feature usage

2 years agoAdded tracking issue numbers for int_abs_diff.
Orson Peters [Sun, 3 Oct 2021 15:44:07 +0000 (17:44 +0200)]
Added tracking issue numbers for int_abs_diff.

2 years agoAdd some inlining.
Camille GILLOT [Sun, 3 Oct 2021 14:07:26 +0000 (16:07 +0200)]
Add some inlining.

2 years agoUpdate ui-fulldeps.
Camille GILLOT [Sun, 26 Sep 2021 13:54:02 +0000 (15:54 +0200)]
Update ui-fulldeps.

2 years agoAccess StableHashingContext in rustc_query_system.
Camille GILLOT [Sat, 25 Sep 2021 23:40:17 +0000 (01:40 +0200)]
Access StableHashingContext in rustc_query_system.

2 years agoFully remove rustc_middle::ich.
Camille GILLOT [Sat, 14 Nov 2020 16:04:40 +0000 (17:04 +0100)]
Fully remove rustc_middle::ich.

2 years agoRemove re-export.
Camille GILLOT [Sat, 14 Nov 2020 15:48:54 +0000 (16:48 +0100)]
Remove re-export.

2 years agoMove ICH to rustc_query_system.
Camille GILLOT [Sat, 14 Nov 2020 15:35:31 +0000 (16:35 +0100)]
Move ICH to rustc_query_system.

2 years agoRemove StableHashProvider.
Camille GILLOT [Wed, 29 Sep 2021 17:47:55 +0000 (19:47 +0200)]
Remove StableHashProvider.

2 years agoMove rustc_middle::middle::cstore to rustc_session.
Camille GILLOT [Sat, 14 Nov 2020 02:02:03 +0000 (03:02 +0100)]
Move rustc_middle::middle::cstore to rustc_session.

2 years agoMove some HashStable impls.
Camille GILLOT [Sun, 19 Sep 2021 21:03:21 +0000 (23:03 +0200)]
Move some HashStable impls.

2 years agoFix unsound optimization with explicit variant discriminants
Fabian Wolff [Sun, 3 Oct 2021 13:29:56 +0000 (15:29 +0200)]
Fix unsound optimization with explicit variant discriminants

2 years agoAuto merge of #87870 - WaffleLapkin:pub_split_at_unchecked, r=dtolnay
bors [Sun, 3 Oct 2021 13:41:52 +0000 (13:41 +0000)]
Auto merge of #87870 - WaffleLapkin:pub_split_at_unchecked, r=dtolnay

Make `<[T]>::split_at_unchecked` and `<[T]>::split_at_mut_unchecked` public

The methods were originally added in https://github.com/rust-lang/rust/pull/75936 (https://github.com/sdroege/rust/commit/30dc32b10eb53e4a92c61a42062983db58838217), but for some reason as private. Nevertheless, the methods have documentation and even a [tracking issue](https://github.com/rust-lang/rust/issues/76014).

It's very weird to have a tracking issue for private methods and these methods may be useful outside of the standard library. As such, this PR makes the methods public.

2 years agoFix extra `non_snake_case` warning for shorthand field bindings
Fabian Wolff [Sat, 2 Oct 2021 20:18:11 +0000 (22:18 +0200)]
Fix extra `non_snake_case` warning for shorthand field bindings

2 years agoMove from grid layout to table based layout because of browser limits that overlay...
Stefan Schindler [Sat, 11 Sep 2021 23:18:39 +0000 (01:18 +0200)]
Move from grid layout to table based layout because of browser limits that overlay row entries after a UA specific amount of rows

2 years agoShow how many tests are running in parallel
Stefan Schindler [Sat, 11 Sep 2021 16:43:22 +0000 (18:43 +0200)]
Show how many tests are running in parallel

2 years agoAdd a test to detect overlapping entries in overview tables
Stefan Schindler [Fri, 10 Sep 2021 11:40:38 +0000 (13:40 +0200)]
Add a test to detect overlapping entries in overview tables

Detects https://github.com/rust-lang/rust/issues/88545

2 years agoTry to recover from a `=>` -> `=` or `->` typo in a match arm
Fabian Wolff [Sun, 3 Oct 2021 12:14:35 +0000 (14:14 +0200)]
Try to recover from a `=>` -> `=` or `->` typo in a match arm

2 years agoCombined 4 commits into 1
Matthias Kaak [Sat, 2 Oct 2021 23:14:48 +0000 (23:14 +0000)]
Combined 4 commits into 1

Fixed numerus of error message

Removed superfluous argument

Using pluralize!() instead of code duplication

Adjusted a test

2 years agoAuto merge of #89459 - tspiteri:idiv-overflow-bitand, r=kennytm
bors [Sun, 3 Oct 2021 10:34:57 +0000 (10:34 +0000)]
Auto merge of #89459 - tspiteri:idiv-overflow-bitand, r=kennytm

Use bitand when checking for signed integer division overflow

For `self == Self::MIN && rhs == -1`, LLVM does not realize that this is the same check made by `self / rhs`, so the code generated may have some unnecessary duplication. For `(self == Self::MIN) & (rhs == -1)`, LLVM realizes it is the same check.