]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoRollup merge of #72701 - pickfire:patch-1, r=Mark-Simulacrum
Dylan DPC [Fri, 29 May 2020 18:21:24 +0000 (20:21 +0200)]
Rollup merge of #72701 - pickfire:patch-1, r=Mark-Simulacrum

Fix grammar in liballoc raw_vec

4 years agoRollup merge of #72591 - sexxi-goose:rename_upvar_list-to-closure_captures, r=matthew...
Dylan DPC [Fri, 29 May 2020 18:21:22 +0000 (20:21 +0200)]
Rollup merge of #72591 - sexxi-goose:rename_upvar_list-to-closure_captures, r=matthewjasper

librustc_middle: Rename upvar_list to closure_captures

As part of supporting RFC 2229, we will be capturing all the places that
are mentioned in a closure. Currently the `upvar_list` field gives access to a `FxIndexMap<HirId, Upvar>` map. Eventually this will change, with the `upvar_list` having a more general structure that expresses captured paths, not just the mentioned `upvars`. We will make those changes in subsequent PRs.

This commit modifies the name of the `upvar_list` map to `closure_captures` in `TypeckTables`.

r? @matthewjasper

4 years agoRollup merge of #72572 - JohnTitor:add-tests, r=matthewjasper
Dylan DPC [Fri, 29 May 2020 18:21:20 +0000 (20:21 +0200)]
Rollup merge of #72572 - JohnTitor:add-tests, r=matthewjasper

Add some regression tests

Closes #68532
Closes #70121
Closes #71042
CC #56445

r? @matthewjasper since they (except for #71042) are related to #72362.

4 years agoRollup merge of #72568 - golddranks:add_total_cmp_to_floats, r=sfackler
Dylan DPC [Fri, 29 May 2020 18:21:18 +0000 (20:21 +0200)]
Rollup merge of #72568 - golddranks:add_total_cmp_to_floats, r=sfackler

Implement total_cmp for f32, f64

# Overview
* Implements method `total_cmp` on `f32` and `f64`. This method implements a float comparison that, unlike the standard `partial_cmp`, is total (defined on all values) in accordance to the IEEE 754 (rev 2008) §5.10 `totalOrder` predicate.
* The method has an API similar to `cmp`: `pub fn total_cmp(&self, other: &Self) -> crate::cmp::Ordering { ... }`.
* Implements tests.
* Has documentation.

# Justification for the API
* Total ordering for `f32` and `f64` has been discussed many time before:
  * https://internals.rust-lang.org/t/pre-pre-rfc-range-restricting-wrappers-for-floating-point-types/6701
  * https://github.com/rust-lang/rfcs/issues/1249
  * https://github.com/rust-lang/rust/pull/53938
  * https://github.com/rust-lang/rust/issues/5585
* The lack of total ordering leads to frequent complaints, especially from people new to Rust.
  * This is an ergonomics issue that needs to be addressed.
  * However, the default behaviour of implementing only `PartialOrd` is intentional, as relaxing it might lead to correctness issues.
* Most earlier implementations and discussions have been focusing on a wrapper type that implements trait `Ord`. Such a wrapper type is, however not easy to add because of the large API surface added.
* As a minimal step that hopefully proves uncontroversial, we can implement a stand-alone method `total_cmp` on floating point types.
  * I expect adding such methods should be uncontroversial because...
    * Similar methods on `f32` and `f64` would be warranted even in case stdlib would provide a wrapper type that implements `Ord` some day.
    * It implements functionality that is standardised. (IEEE 754, 2008 rev. §5.10 Note, that the 2019 revision relaxes the ordering. The way we do ordering in this method conforms to the stricter 2008 standard.)
* With stdlib APIs such as `slice::sort_by` and `slice::binary_search_by` that allow users to provide a custom ordering criterion, providing additional helper methods is a minimal way of adding ordering functionality.
  * Not also does it allow easily using aforementioned APIs, it also provides an easy and well-tested primitive for the users and library authors to implement an `Ord`-implementing wrapper, if needed.

4 years agoRollup merge of #72465 - tmiasko:liveness-upvars, r=nikomatsakis
Dylan DPC [Fri, 29 May 2020 18:21:17 +0000 (20:21 +0200)]
Rollup merge of #72465 - tmiasko:liveness-upvars, r=nikomatsakis

Warn about unused captured variables

Include captured variables in liveness analysis. Warn when captured variables
are unused (but possibly read or written to). Warn about dead assignments to
captured variables.

Fixes #37707.
Fixes #47128.
Fixes #63220.

4 years agoRollup merge of #72398 - Lucretiel:ip-socket-display, r=Mark-Simulacrum
Dylan DPC [Fri, 29 May 2020 18:21:15 +0000 (20:21 +0200)]
Rollup merge of #72398 - Lucretiel:ip-socket-display, r=Mark-Simulacrum

SocketAddr and friends now correctly pad its content

Currently, `IpAddr` and friends correctly respect formatting parameters when printing via `Display`. This PR makes SocketAddr and friends do the same thing.

4 years agoRollup merge of #72383 - DarkEld3r:issue-72322, r=matthewjasper
Dylan DPC [Fri, 29 May 2020 18:21:13 +0000 (20:21 +0200)]
Rollup merge of #72383 - DarkEld3r:issue-72322, r=matthewjasper

Suggest using std::mem::drop function instead of explicit destructor call

I would prefer to give a better suggestion that includes code example, but I'm currently stuck on getting the correct span for that.

Closes #72322.

4 years agoRollup merge of #72310 - jyn514:peekable-next-if, r=dtolnay
Dylan DPC [Fri, 29 May 2020 18:21:11 +0000 (20:21 +0200)]
Rollup merge of #72310 - jyn514:peekable-next-if, r=dtolnay

Add Peekable::next_if

Prior art:

`rust_analyzer` uses [`Parser::eat`](https://github.com/rust-analyzer/rust-analyzer/blob/50f4ae798b7c54d417ee88455b87fd0477473150/crates/ra_parser/src/parser.rs#L94), which is `next_if` specialized to `|y| self.next_if(|x| x == y)`.

Basically every other parser I've run into in Rust has an equivalent of `Parser::eat`; see for example

- [cranelift](https://github.com/bytecodealliance/wasmtime/blob/94190d57244b26baf36629c88104b0ba516510cf/cranelift/reader/src/parser.rs#L498)
- [rcc](https://github.com/jyn514/rcc/blob/a8159c3904a0c950fbba817bf9109023fad69033/src/parse/mod.rs#L231)
- [crunch](https://github.com/Kixiron/crunch-lang/blob/8521874fab8a7d62bfa7dea8bd1da94b63e31be8/crates/crunch-parser/src/parser/mod.rs#L213-L241)

Possible extensions: A specialization of `next_if` to using `Eq::eq`. The only difficulty here is the naming - maybe `next_if_eq`?

Alternatives:
- Instead of `func: impl FnOnce(&I::Item) -> bool`, use `func: impl FnOnce(I::Item) -> Option<I::Item>`. This has the advantage that `func` can move the value if necessary, but means that there is no guarantee `func` will return the same value it was given.
- Instead of `fn next_if(...) -> Option<I::Item>`, use `fn next_if(...) -> bool`. This makes the common case of `iter.next_if(f).is_some()` easier, but makes the unusual case impossible.

Bikeshedding on naming:
- `next_if` could be renamed to `consume_if` (to match `eat`, but a little more formally)
- `next_if_eq` could be renamed to `consume`. This is more concise but less self-explanatory if you haven't written a lot of parsers.
- Both of the above, but with `consume` replaced by `eat`.

4 years agoliveness: Warn about unused captured variables
Tomasz Miąsko [Fri, 22 May 2020 00:00:00 +0000 (00:00 +0000)]
liveness: Warn about unused captured variables

4 years agoliveness: Include upvars in the analysis
Tomasz Miąsko [Thu, 21 May 2020 00:00:00 +0000 (00:00 +0000)]
liveness: Include upvars in the analysis

4 years agoliveness: Remove unused fallthrough_ln
Tomasz Miąsko [Thu, 21 May 2020 00:00:00 +0000 (00:00 +0000)]
liveness: Remove unused fallthrough_ln

4 years agoliveness: Remove unused clean_exit_var
Tomasz Miąsko [Thu, 21 May 2020 00:00:00 +0000 (00:00 +0000)]
liveness: Remove unused clean_exit_var

4 years agoliveness: Log information about used variables
Tomasz Miąsko [Wed, 20 May 2020 00:00:00 +0000 (00:00 +0000)]
liveness: Log information about used variables

4 years agoAuto merge of #72671 - flip1995:clippyup, r=Xanewok
bors [Fri, 29 May 2020 11:16:45 +0000 (11:16 +0000)]
Auto merge of #72671 - flip1995:clippyup, r=Xanewok

Update Clippy, RLS, and rustfmt

r? @Dylan-DPC

This makes Clippy test-pass again: 3089c3b

Otherwise this includes bugfixes and a few new lints.

Fixes #72231
Fixes #72232

4 years agoAuto merge of #72727 - JohnTitor:rollup-nni16m2, r=JohnTitor
bors [Fri, 29 May 2020 07:52:06 +0000 (07:52 +0000)]
Auto merge of #72727 - JohnTitor:rollup-nni16m2, r=JohnTitor

Rollup of 11 pull requests

Successful merges:

 - #71633 (Impl Error for Infallible)
 - #71843 (Tweak and stabilize AtomicN::fetch_update)
 - #72288 (Stabilization of weak-into-raw)
 - #72324 (Stabilize AtomicN::fetch_min and AtomicN::fetch_max)
 - #72452 (Clarified the documentation for Formatter::precision)
 - #72495 (Improve E0601 explanation)
 - #72534 (Improve missing `@` in slice binding pattern diagnostics)
 - #72547 (Added a codegen test for a recent optimization for overflow-checks=on)
 - #72711 (remove redundant `mk_const`)
 - #72713 (Whitelist #[allow_internal_unstable])
 - #72720 (Clarify the documentation of `take`)

Failed merges:

r? @ghost

4 years agoAdd fibersapi feature to winapi in rustc-workspace-hack
flip1995 [Fri, 29 May 2020 06:19:58 +0000 (08:19 +0200)]
Add fibersapi feature to winapi in rustc-workspace-hack

Co-authored-by: Eric Huss <ehuss@users.noreply.github.com>
4 years agoRollup merge of #72720 - poliorcetics:clarify-take-doc, r=joshtriplett
Yuki Okushi [Fri, 29 May 2020 06:07:11 +0000 (15:07 +0900)]
Rollup merge of #72720 - poliorcetics:clarify-take-doc, r=joshtriplett

Clarify the documentation of `take`

This PR addresses the concerns of #61222, adding an example for the behaviour of `Iterator::take` when there are less than `n` elements.

4 years agoRollup merge of #72713 - rust-lang:jonas-schievink-patch-2, r=Mark-Simulacrum
Yuki Okushi [Fri, 29 May 2020 06:07:09 +0000 (15:07 +0900)]
Rollup merge of #72713 - rust-lang:jonas-schievink-patch-2, r=Mark-Simulacrum

Whitelist #[allow_internal_unstable]

This should hopefully work around https://github.com/rust-lang/rust/issues/65023, which currently makes almost every bootstrap fail for me.

4 years agoRollup merge of #72711 - lcnr:fixme-heyho, r=jonas-schievink
Yuki Okushi [Fri, 29 May 2020 06:07:07 +0000 (15:07 +0900)]
Rollup merge of #72711 - lcnr:fixme-heyho, r=jonas-schievink

remove redundant `mk_const`

Taken from #72675 as this is fairly unrelated and that PR is more difficult than I imagined,
so it may take some time until it lands.

4 years agoRollup merge of #72547 - alex:patch-1, r=oli-obk
Yuki Okushi [Fri, 29 May 2020 06:07:05 +0000 (15:07 +0900)]
Rollup merge of #72547 - alex:patch-1, r=oli-obk

Added a codegen test for a recent optimization for overflow-checks=on

Closes #58692

4 years agoRollup merge of #72534 - chrissimpkins:fix-72373, r=estebank
Yuki Okushi [Fri, 29 May 2020 06:07:04 +0000 (15:07 +0900)]
Rollup merge of #72534 - chrissimpkins:fix-72373, r=estebank

Improve missing `@` in slice binding pattern diagnostics

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

Includes a new suggestion with `Applicability::MaybeIncorrect` confidence level.

Before:

```
 --> src/main.rs:5:19
  |
5 |         [h, ref ts..] => foo(c, n - h) + foo(ts, n),
  |                   -^
  |                   |
  |                   expected one of `,`, `@`, `]`, or `|`
  |                   help: missing `,`

error[E0308]: mismatched types
 --> src/main.rs:5:46
  |
5 |         [h, ref ts..] => foo(c, n - h) + foo(ts, n),
  |                                              ^^ expected slice `[u32]`, found `u32`
  |
  = note: expected reference `&[u32]`
             found reference `&u32`

error: aborting due to 2 previous errors
```

After:

```
error: expected one of `,`, `@`, `]`, or `|`, found `..`
 --> src/main.rs:5:20
  |
5 |         [h, ref ts..] => foo(c, n - h) + foo(ts, n),
  |                    ^^ expected one of `,`, `@`, `]`, or `|`
  |
help: if you meant to bind the contents of the rest of the array pattern into `ts`, use `@`
  |
5 |         [h, ref ts @ ..] => foo(c, n - h) + foo(ts, n),
  |                    ^

error: aborting due to previous error
```

r? @estebank

4 years agoRollup merge of #72495 - GuillaumeGomez:cleanup-e0601, r=Dylan-DPC
Yuki Okushi [Fri, 29 May 2020 06:07:02 +0000 (15:07 +0900)]
Rollup merge of #72495 - GuillaumeGomez:cleanup-e0601, r=Dylan-DPC

Improve E0601 explanation

r? @Dylan-DPC

4 years agoRollup merge of #72452 - Lucretiel:precision-doc, r=dtolnay
Yuki Okushi [Fri, 29 May 2020 06:06:59 +0000 (15:06 +0900)]
Rollup merge of #72452 - Lucretiel:precision-doc, r=dtolnay

Clarified the documentation for Formatter::precision

Added a note that `precision` is interpreted as max-width when formatting strings

4 years agoRollup merge of #72324 - Amanieu:atomic_minmax, r=dtolnay
Yuki Okushi [Fri, 29 May 2020 06:06:57 +0000 (15:06 +0900)]
Rollup merge of #72324 - Amanieu:atomic_minmax, r=dtolnay

Stabilize AtomicN::fetch_min and AtomicN::fetch_max

Some architectures (ARMv8.1 LSE and RISC-V) have specific instructions for atomic min/max which the compiler can only generate through explicit instrinsics.

4 years agoRollup merge of #72288 - vorner:stabilize-weak-into-raw, r=dtolnay
Yuki Okushi [Fri, 29 May 2020 06:06:55 +0000 (15:06 +0900)]
Rollup merge of #72288 - vorner:stabilize-weak-into-raw, r=dtolnay

Stabilization of weak-into-raw

Closes #60728.

There are also two removals of `#![feature(weak_into_raw)]` in the `src/tools/miri` submodule. How should I synchronize the changes with there?

* I can ignore it for now and once this gets merged, update the tool, send a pull request to that one and then reference the changes to rustc.
* I could try submitting the changes to miri first, but then the build would fail there, because the attribute would still be needed.

I think the first one is the correct one, extrapolating from the contributing guidelines (even though they speak about breaking the tools and this should not break it, as extra feature should not hurt).

4 years agoRollup merge of #71843 - sfackler:cas-loop-cleanup, r=dtolnay
Yuki Okushi [Fri, 29 May 2020 06:06:53 +0000 (15:06 +0900)]
Rollup merge of #71843 - sfackler:cas-loop-cleanup, r=dtolnay

Tweak and stabilize AtomicN::fetch_update

The fetch_update method implements a compare-and-swap loop to update the value in an atomic to an arbitrary value computed by a closure.

I've applied a few tweaks suggested by @mystor in this comment on the tracking issue: https://github.com/rust-lang/rust/issues/48655#issuecomment-496036553. Specifically, the load and store ordering arguments have been swapped to match with the orderings of `compare_exchange`, and the closure has been moved from the first to last argument.

Moving the closure to the last argument is a change away from other methods on the atomic types which place the ordering(s) last, but matches with the broad convention that closure arguments come last in functions. In particular, rustfmt style lays calls with multi-line closures out more cleanly when the closure comes last.

4 years agoRollup merge of #71633 - a1phyr:infallible_error, r=dtolnay
Yuki Okushi [Fri, 29 May 2020 06:06:48 +0000 (15:06 +0900)]
Rollup merge of #71633 - a1phyr:infallible_error, r=dtolnay

Impl Error for Infallible

This PR only changes the place where `impl Error for Infallible` is documented, as one could think that it is not the case when reading https://doc.rust-lang.org/nightly/std/convert/enum.Infallible.html.

Fixes #70842

4 years agoClarify comment message & MAX_LENGTH const
Nathan West [Fri, 22 May 2020 19:59:38 +0000 (15:59 -0400)]
Clarify comment message & MAX_LENGTH const

4 years agoAdded fast-path, tests
Nathan West [Wed, 20 May 2020 20:29:36 +0000 (16:29 -0400)]
Added fast-path, tests

4 years ago`SocketAddr(V4|V6)?`::Display now correctly pads its content
Nathan West [Wed, 20 May 2020 19:21:24 +0000 (15:21 -0400)]
`SocketAddr(V4|V6)?`::Display now correctly pads its content

IpAddr and friends pad when displaying; SocketAddr now does this as well

4 years agoAuto merge of #72506 - Nadrieril:fix-72476, r=matthewjasper
bors [Fri, 29 May 2020 04:05:03 +0000 (04:05 +0000)]
Auto merge of #72506 - Nadrieril:fix-72476, r=matthewjasper

Exhaustiveness checking: work around type normalization issues

This should resolve https://github.com/rust-lang/rust/issues/72476 and probably https://github.com/rust-lang/rust/issues/72467.
This is a bit hacky but that's actually what the code was doing before https://github.com/rust-lang/rust/pull/71930. I'm essentially reverting https://github.com/rust-lang/rust/commit/e5a2cd526a6ad92b90dda81104abc7adf4c83495. So despite being hacky, it's been tried and tested (so much so that code relies on it now x)).
Only the third commit does anything interesting.

4 years agoClarify the documentation of take
Alexis Bourget [Fri, 29 May 2020 01:29:01 +0000 (03:29 +0200)]
Clarify the documentation of take

4 years agoAuto merge of #72716 - Dylan-DPC:rollup-wdj97ab, r=Dylan-DPC
bors [Fri, 29 May 2020 00:42:59 +0000 (00:42 +0000)]
Auto merge of #72716 - Dylan-DPC:rollup-wdj97ab, r=Dylan-DPC

Rollup of 12 pull requests

Successful merges:

 - #72239 (Implement PartialOrd and Ord for SocketAddr*)
 - #72466 (Stabilize str_strip feature)
 - #72605 (Add working example for E0617 explanation)
 - #72636 (Cleanup `Resolver::<clone|into>_outputs` methods)
 - #72645 (Add myself to .mailmap)
 - #72667 (expand unaligned_references test)
 - #72670 (Fix incorrect comment in generator test)
 - #72674 (Clippy should always build)
 - #72682 (Add test for #66930)
 - #72695 (update data layout for illumos x86)
 - #72697 (Remove rustc-ux-guidelines)
 - #72702 (rustc_lint: Remove `unused_crate_dependencies` from the `unused` group)

Failed merges:

r? @ghost

4 years agoRollup merge of #72702 - petrochenkov:unudeps, r=estebank
Dylan DPC [Fri, 29 May 2020 00:33:29 +0000 (02:33 +0200)]
Rollup merge of #72702 - petrochenkov:unudeps, r=estebank

rustc_lint: Remove `unused_crate_dependencies` from the `unused` group

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

It's undesirable to enable `unused_crate_dependencies` with blanket `#![deny(unused)]` due to the amount of redundant `--extern` options passed by Cargo.

4 years agoRollup merge of #72697 - ehuss:rm-rustc-ux-guidelines, r=nikomatsakis
Dylan DPC [Fri, 29 May 2020 00:33:28 +0000 (02:33 +0200)]
Rollup merge of #72697 - ehuss:rm-rustc-ux-guidelines, r=nikomatsakis

Remove rustc-ux-guidelines

This is now in the rustc-dev-guide:
* https://github.com/rust-lang/rustc-dev-guide/pull/716
* https://github.com/rust-lang/rustc-dev-guide/pull/717

This is a public page, but it was not linked to anywhere, so I think it is safe to remove. Google searches don't show it being used anywhere.

4 years agoRollup merge of #72695 - jclulow:illumos-llvm-catchup, r=nikic
Dylan DPC [Fri, 29 May 2020 00:33:26 +0000 (02:33 +0200)]
Rollup merge of #72695 - jclulow:illumos-llvm-catchup, r=nikic

update data layout for illumos x86

In a recent change, 8b199222cc92667cd0e57595ad435cd0a7526af8,
adjustments were made to the data layout we pass to LLVM.
Unfortunately, the illumos target was missed in this change.
See also: https://github.com/rust-lang/rust/pull/67900

4 years agoRollup merge of #72682 - JohnTitor:mir-tests, r=RalfJung
Dylan DPC [Fri, 29 May 2020 00:33:24 +0000 (02:33 +0200)]
Rollup merge of #72682 - JohnTitor:mir-tests, r=RalfJung

Add test for #66930

Closes #66930
Closes #67558

They're fixed by #72424.
I skipped adding `--emit=mir` flag to src/test/ui/issues/issue-25145.rs as a regression test since the root cause seems the same and it should be run with `check-pass`, not `run-pass` so we should duplicate that test.

r? @RalfJung

4 years agoRollup merge of #72674 - Mark-Simulacrum:clippy-always-test-pass, r=oli-obk
Dylan DPC [Fri, 29 May 2020 00:33:23 +0000 (02:33 +0200)]
Rollup merge of #72674 - Mark-Simulacrum:clippy-always-test-pass, r=oli-obk

Clippy should always build

This just unwraps clippy's build step instead of skipping tests if clippy didn't
build. This matches e.g. cargo's behavior and seems more correct, as we always
expect clippy to successfully build.

I believe this doesn't actually change anything in practice, but I feel mildly uncomfortable potentially leaving this hole open.

4 years agoRollup merge of #72670 - rust-lang:jonas-schievink-patch-1, r=nikomatsakis
Dylan DPC [Fri, 29 May 2020 00:33:21 +0000 (02:33 +0200)]
Rollup merge of #72670 - rust-lang:jonas-schievink-patch-1, r=nikomatsakis

Fix incorrect comment in generator test

https://github.com/rust-lang/rust/pull/69837#discussion_r431141825 (thanks for the catch, @jplatte)

4 years agoRollup merge of #72667 - RalfJung:unaligned-ref-test, r=nikomatsakis
Dylan DPC [Fri, 29 May 2020 00:33:19 +0000 (02:33 +0200)]
Rollup merge of #72667 - RalfJung:unaligned-ref-test, r=nikomatsakis

expand unaligned_references test

Also test implicit ref when having a field as a method receiver, as suggested by @bluss.

4 years agoRollup merge of #72645 - ldm0:mailmap, r=nikomatsakis
Dylan DPC [Fri, 29 May 2020 00:33:18 +0000 (02:33 +0200)]
Rollup merge of #72645 - ldm0:mailmap, r=nikomatsakis

Add myself to .mailmap

4 years agoRollup merge of #72636 - marmeladema:resolver-outputs-def-id, r=petrochenkov
Dylan DPC [Fri, 29 May 2020 00:33:16 +0000 (02:33 +0200)]
Rollup merge of #72636 - marmeladema:resolver-outputs-def-id, r=petrochenkov

Cleanup `Resolver::<clone|into>_outputs` methods

Follow-up cleanup work of https://github.com/rust-lang/rust/pull/72402

First commit has been split out from https://github.com/rust-lang/rust/pull/72552

r? @ecstatic-morse

4 years agoRollup merge of #72605 - GuillaumeGomez:cleanup-e0617, r=Dylan-DPC
Dylan DPC [Fri, 29 May 2020 00:33:14 +0000 (02:33 +0200)]
Rollup merge of #72605 - GuillaumeGomez:cleanup-e0617, r=Dylan-DPC

Add working example for E0617 explanation

r? @Dylan-DPC

4 years agoRollup merge of #72466 - lzutao:stabilize_str-strip, r=dtolnay
Dylan DPC [Fri, 29 May 2020 00:33:11 +0000 (02:33 +0200)]
Rollup merge of #72466 - lzutao:stabilize_str-strip, r=dtolnay

Stabilize str_strip feature

This PR stabilizes these APIs:

```rust
impl str {
    /// Returns a string slice with the prefix removed.
    ///
    /// If the string starts with the pattern `prefix`, `Some` is returned with the substring where
    /// the prefix is removed. Unlike `trim_start_matches`, this method removes the prefix exactly
    /// once.
    pub fn strip_prefix<'a, P: Pattern<'a>>(&'a self, prefix: P) -> Option<&'a str>;

    /// Returns a string slice with the suffix removed.
    ///
    /// If the string ends with the pattern `suffix`, `Some` is returned with the substring where
    /// the suffix is removed. Unlike `trim_end_matches`, this method removes the suffix exactly
    /// once.
    pub fn strip_suffix<'a, P>(&'a self, suffix: P) -> Option<&'a str>
    where
        P: Pattern<'a>,
        <P as Pattern<'a>>::Searcher: ReverseSearcher<'a>;
}
```

Closes  #67302

4 years agoRollup merge of #72239 - hch12907:master, r=dtolnay
Dylan DPC [Fri, 29 May 2020 00:33:07 +0000 (02:33 +0200)]
Rollup merge of #72239 - hch12907:master, r=dtolnay

Implement PartialOrd and Ord for SocketAddr*

The implementation is mostly the same as the one found in `IpAddr` (other than adding comparison for ports, of course).
Continues #53788 and #53863
Fixes #53710

4 years agoWhitelist #[allow_internal_unstable]
Jonas Schievink [Thu, 28 May 2020 23:19:33 +0000 (01:19 +0200)]
Whitelist #[allow_internal_unstable]

This should hopefully work around https://github.com/rust-lang/rust/issues/65023, which currently makes almost every bootstrap fail for me.

4 years agoremove redundant `mk_const`
Bastian Kauschke [Thu, 28 May 2020 21:59:54 +0000 (23:59 +0200)]
remove redundant `mk_const`

4 years agoUpdate RLS to clippyup branch
flip1995 [Thu, 28 May 2020 18:04:49 +0000 (20:04 +0200)]
Update RLS to clippyup branch

4 years agorustc_lint: Remove `unused_crate_dependencies` from the `unused` group
Vadim Petrochenkov [Thu, 28 May 2020 16:44:53 +0000 (19:44 +0300)]
rustc_lint: Remove `unused_crate_dependencies` from the `unused` group

4 years agoFix grammar in liballoc raw_vec
Ivan Tham [Thu, 28 May 2020 16:40:41 +0000 (00:40 +0800)]
Fix grammar in liballoc raw_vec

4 years agoRemove rustc-ux-guidelines
Eric Huss [Thu, 28 May 2020 15:23:23 +0000 (08:23 -0700)]
Remove rustc-ux-guidelines

4 years agoTemp fix: don't run cargo lint tests in rustc test suite
flip1995 [Thu, 28 May 2020 15:19:30 +0000 (17:19 +0200)]
Temp fix: don't run cargo lint tests in rustc test suite

4 years agoupdate data layout for illumos x86
Joshua M. Clulow [Thu, 28 May 2020 15:09:10 +0000 (08:09 -0700)]
update data layout for illumos x86

In a recent change, 8b199222cc92667cd0e57595ad435cd0a7526af8,
adjustments were made to the data layout we pass to LLVM.
Unfortunately, the illumos target was missed in this change.
See also: https://github.com/rust-lang/rust/pull/67900

4 years agoUpdate Cargo.lock
flip1995 [Thu, 28 May 2020 13:47:54 +0000 (15:47 +0200)]
Update Cargo.lock

4 years agoSet CFG_RELEASE for tools in bootstrap/tool.rs
Igor Matuszewski [Thu, 28 May 2020 08:44:01 +0000 (10:44 +0200)]
Set CFG_RELEASE for tools in bootstrap/tool.rs

Since rustc-ap-* v659 we now need to set CFG_RELEASE for
rustc-ap-rustc_attr for `#[cfg(version(...))]` to work.

Co-authored-by: Eric Huss <ehuss@users.noreply.github.com>
4 years agosubmodules: Update RLS and Rustfmt
Igor Matuszewski [Thu, 21 May 2020 13:39:52 +0000 (15:39 +0200)]
submodules: Update RLS and Rustfmt

4 years agoMerge commit '7ea7cd165ad6705603852771bf82cc2fd6560db5' into clippyup2
flip1995 [Thu, 28 May 2020 13:45:24 +0000 (15:45 +0200)]
Merge commit '7ea7cd165ad6705603852771bf82cc2fd6560db5' into clippyup2

4 years agoAdd test for #66930
Yuki Okushi [Thu, 28 May 2020 07:43:03 +0000 (16:43 +0900)]
Add test for #66930

4 years agoAuto merge of #72494 - lcnr:predicate-cleanup, r=nikomatsakis
bors [Thu, 28 May 2020 00:18:52 +0000 (00:18 +0000)]
Auto merge of #72494 - lcnr:predicate-cleanup, r=nikomatsakis

Pass more `Copy` types by value.

There are a lot of locations where we pass `&T where T: Copy` by reference,
which should both be slightly less performant and less readable IMO.

This PR currently consists of three fairly self contained commits:

- passes `ty::Predicate` by value and stops depending on `AsRef<ty::Predicate>`.
- changes `<&List<_>>::into_iter` to iterate over the elements by value. This would break `List`s
  of non copy types. But as the only list constructor requires `T` to be copy anyways, I think
  the improved readability is worth this potential future restriction.
- passes `mir::PlaceElem` by value. Mir currently has quite a few copy types which are passed by reference, e.g. `Local`. As I don't have a lot of experience working with MIR, I mostly did this to get some feedback from people who use MIR more frequently
- tries to reuse `ty::Predicate` in case it did not change in some places, which should hopefully
  fix the regression caused by #72055

r? @nikomatsakis for the first commit, which continues the work of #72055 and makes adding `PredicateKind::ForAll` slightly more pleasant. Feel free to reassign though

4 years agoClippy should always build
Mark Rousskov [Wed, 27 May 2020 21:25:47 +0000 (17:25 -0400)]
Clippy should always build

This just unwraps clippy's build step instead of skipping tests if clippy didn't
build. This matches e.g. cargo's behavior and seems more correct, as we always
expect clippy to successfully build.

4 years agoFix incorrect comment in generator test
Jonas Schievink [Wed, 27 May 2020 19:38:38 +0000 (21:38 +0200)]
Fix incorrect comment in generator test

4 years agoAdd working example for E0617 explanation
Guillaume Gomez [Tue, 26 May 2020 08:33:40 +0000 (10:33 +0200)]
Add working example for E0617 explanation

4 years agoAuto merge of #5652 - rust-lang:flip1995-patch-1, r=yaahc
bors [Wed, 27 May 2020 18:55:57 +0000 (18:55 +0000)]
Auto merge of #5652 - rust-lang:flip1995-patch-1, r=yaahc

Fail bors on missing changelog

Bors stopped failed if the changelog was missing. Instead it waited 2h (?) and then timed out.

changelog: none

4 years agoAuto merge of #71996 - Marwes:detach_undo_log, r=nikomatsakis
bors [Wed, 27 May 2020 18:31:45 +0000 (18:31 +0000)]
Auto merge of #71996 - Marwes:detach_undo_log, r=nikomatsakis

perf: Revert accidental inclusion of a part of #69218

This was accidentally included in #69464 after a rebase and given
how much `inflate` and `keccak` stresses the obligation forest seems
like a likely culprit to the regression in those benchmarks.

(It is necessary in #69218 as obligation forest needs to accurately
track the root variables or unifications will get lost)

4 years agoexpand unaligned_references test
Ralf Jung [Wed, 27 May 2020 18:31:17 +0000 (20:31 +0200)]
expand unaligned_references test

4 years agoimprove diagnostics suggestion for missing `@` in slice id binding to rest pattern
Chris Simpkins [Wed, 27 May 2020 18:09:54 +0000 (14:09 -0400)]
improve diagnostics suggestion for missing `@` in  slice id binding to rest pattern

add issue 72373 tests

fmt test

fix suggestion format

Replacement, not insertion of suggested string

implement review changes

refactor to span_suggestion_verbose, improve suggestion message,  change id @ pattern space formatting

fmt

fix diagnostics spacing between ident and @

refactor reference

4 years agoStore `LocalDefId` directly in `rustc_resolve::Resolver` where possible
marmeladema [Sun, 24 May 2020 11:18:22 +0000 (12:18 +0100)]
Store `LocalDefId` directly in `rustc_resolve::Resolver` where possible

This commit also include the following changes:
* Remove unused `hir::Map::as_local_node_id` method
* Remove outdated comment about `hir::Map::local_def_id` method
* Remove confusing `GlobMap` type alias
* Use `LocalDefId` instead of `DefId` in `extern_crate_map`
* Use `LocalDefId` instead of `DefId` in `maybe_unused_extern_crates`
* Modify `extern_mod_stmt_cnum` query to accept a `LocalDefId` instead of a `DefId`

4 years agoAuto merge of #72601 - JohnTitor:deps, r=Mark-Simulacrum
bors [Wed, 27 May 2020 14:48:33 +0000 (14:48 +0000)]
Auto merge of #72601 - JohnTitor:deps, r=Mark-Simulacrum

Update transitive dependencies to remove some deps

Similar to #71919, this removes some (duplicate) dependencies.

4 years agoAuto merge of #5631 - ThibsG:ExtendUselessConversion, r=matthiaskrgr
bors [Wed, 27 May 2020 13:06:59 +0000 (13:06 +0000)]
Auto merge of #5631 - ThibsG:ExtendUselessConversion, r=matthiaskrgr

Extend useless conversion

This PR extends `useless_conversion` lint with `TryFrom` and `TryInto`

fixes: #5344

changelog: Extend `useless_conversion` with `TryFrom` and `TryInto`

4 years agoAuto merge of #5653 - matthiaskrgr:rustup_47, r=flip1995
bors [Wed, 27 May 2020 12:30:32 +0000 (12:30 +0000)]
Auto merge of #5653 - matthiaskrgr:rustup_47, r=flip1995

rustup https://github.com/rust-lang/rust/pull/72342, allow unused_crate_dependencies

changelog: none

4 years agorustup https://github.com/rust-lang/rust/pull/72342, allow unused_crate_dependencies
Matthias Krüger [Wed, 27 May 2020 11:55:57 +0000 (13:55 +0200)]
rustup https://github.com/rust-lang/rust/pull/72342, allow unused_crate_dependencies

4 years agoAuto merge of #72639 - Dylan-DPC:rollup-76upj51, r=Dylan-DPC
bors [Wed, 27 May 2020 11:18:53 +0000 (11:18 +0000)]
Auto merge of #72639 - Dylan-DPC:rollup-76upj51, r=Dylan-DPC

Rollup of 6 pull requests

Successful merges:

 - #72348 (Fix confusing error message for comma typo in multiline statement)
 - #72533 (Resolve UB in Arc/Weak interaction (2))
 - #72548 (Add test for old compiler ICE when using `Borrow`)
 - #72606 (Small cell example update)
 - #72610 (Remove font-display settings)
 - #72626 (Add remark regarding DoubleEndedIterator)

Failed merges:

r? @ghost

4 years agoAdd myself to .mailmap
Donough Liu [Wed, 27 May 2020 08:16:27 +0000 (16:16 +0800)]
Add myself to .mailmap

4 years agoAdd Peekable::next_if
Joshua Nelson [Mon, 18 May 2020 00:15:15 +0000 (20:15 -0400)]
Add Peekable::next_if

Prior art:

`rust_analyzer` uses
[`Parser::eat`](https://github.com/rust-analyzer/rust-analyzer/blob/50f4ae798b7c54d417ee88455b87fd0477473150/crates/ra_parser/src/parser.rs#L94), which is `next_if` specialized to
`|y| next_if(|x| x == y)`.

Basically every other parser I've run into in Rust has an equivalent of
Parser::eat; see for example

- [cranelift](https://github.com/bytecodealliance/wasmtime/blob/94190d57244b26baf36629c88104b0ba516510cf/cranelift/reader/src/parser.rs#L498)
- [rcc](https://github.com/jyn514/rcc/blob/a8159c3904a0c950fbba817bf9109023fad69033/src/parse/mod.rs#L231)
- [crunch](https://github.com/Kixiron/crunch-lang/blob/8521874fab8a7d62bfa7dea8bd1da94b63e31be8/crates/crunch-parser/src/parser/mod.rs#L213-L241)

4 years agoRollup merge of #72626 - phimuemue:doubleendediter_doc, r=dtolnay
Dylan DPC [Wed, 27 May 2020 01:09:23 +0000 (03:09 +0200)]
Rollup merge of #72626 - phimuemue:doubleendediter_doc, r=dtolnay

Add remark regarding DoubleEndedIterator

While reviewing https://github.com/rust-itertools/itertools/pull/442/commits/14293bd18f01b6bd4856816222f808f46603eccd#diff-2c16d2ada06ad2fd1fc754679646d471, I realized that a `DoubleEndedIterator` may yield different elements depending on whether it is traversed forwards or backwards. (Not only the *order*, but possibly also the yielded values.)

I found this remarkable, but could not find anything in the current docs, so I thought it may be worth mentioning this explicitly.

Unfortunately, I could not test these changes locally (`rustdoc` complains about `unresolved import`). Sorry if this causes headache.

If I should change something, please let me know. If it seems too trivial, feel free to just close this PR.

4 years agoRollup merge of #72610 - GuillaumeGomez:revert-unwanted-css-changes, r=Dylan-DPC
Dylan DPC [Wed, 27 May 2020 01:09:21 +0000 (03:09 +0200)]
Rollup merge of #72610 - GuillaumeGomez:revert-unwanted-css-changes, r=Dylan-DPC

Remove font-display settings

Since for the moment, the result isn't as expected since #72092 when not using docs locally, let's revert them.

r? @Dylan-DPC

4 years agoRollup merge of #72606 - GuillaumeGomez:cell-example-update, r=Dylan-DPC
Dylan DPC [Wed, 27 May 2020 01:09:19 +0000 (03:09 +0200)]
Rollup merge of #72606 - GuillaumeGomez:cell-example-update, r=Dylan-DPC

Small cell example update

r? @Dylan-DPC

4 years agoRollup merge of #72548 - rossmacarthur:add-mcve-for-50687, r=nikomatsakis
Dylan DPC [Wed, 27 May 2020 01:09:15 +0000 (03:09 +0200)]
Rollup merge of #72548 - rossmacarthur:add-mcve-for-50687, r=nikomatsakis

Add test for old compiler ICE when using `Borrow`

The original issue was caused by implementing `Borrow` on a local type and using the tokio-reactor crate which had this impl: https://github.com/tokio-rs/tokio/blob/tokio-0.1.4/tokio-reactor/src/poll_evented.rs#L547-L577

This causes an ICE on Rust 1.27.0:

```console
$ RUSTUP_TOOLCHAIN=1.27.0 rustc src/test/ui/issues/issue-50687-ice-on-borrow.rs
error: internal compiler error: librustc/traits/structural_impls.rs:180: impossible case reached

thread 'main' panicked at 'Box<Any>', librustc_errors/lib.rs:554:9
note: Run with `RUST_BACKTRACE=1` for a backtrace.
error: aborting due to previous error

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.27.0 (3eda71b00 2018-06-19) running on x86_64-apple-darwin
```

Closes #50687

4 years agoRollup merge of #72533 - Diggsey:db-fix-arc-ub2, r=dtolnay
Dylan DPC [Wed, 27 May 2020 01:09:12 +0000 (03:09 +0200)]
Rollup merge of #72533 - Diggsey:db-fix-arc-ub2, r=dtolnay

Resolve UB in Arc/Weak interaction (2)

Use raw pointers to avoid making any assertions about the data field.

Follow up from #72479, see that PR for more detail on the motivation.

@RalfJung I was able to avoid a lot of the changes to `Weak`, by making a helper type (`WeakInner`) - because of auto-deref and because the fields have the same name, the rest of the code continues to compile.

4 years agoRollup merge of #72348 - chrissimpkins:fix-72253, r=estebank
Dylan DPC [Wed, 27 May 2020 01:09:11 +0000 (03:09 +0200)]
Rollup merge of #72348 - chrissimpkins:fix-72253, r=estebank

Fix confusing error message for comma typo in multiline statement

Fixes #72253.  Expands on the issue with a colon typo check.

r? @estebank

cc @ehuss

4 years agoAuto merge of #72596 - ehuss:update-cargo, r=ehuss
bors [Wed, 27 May 2020 01:08:36 +0000 (01:08 +0000)]
Auto merge of #72596 - ehuss:update-cargo, r=ehuss

Update cargo

7 commits in 500b2bd01c958f5a33b6aa3f080bea015877b83c..9fcb8c1d20c17f51054f7aa4e08ff28d381fe096
2020-05-18 17:12:54 +0000 to 2020-05-25 16:25:36 +0000
- Bump to semver 0.10 for `VersionReq::is_exact` (rust-lang/cargo#8279)
- Fix panic with `cargo tree --target=all -Zfeatures=all` (rust-lang/cargo#8269)
- Fix nightly tests with llvm-tools. (rust-lang/cargo#8272)
- Provide better error messages for a bad `patch`. (rust-lang/cargo#8248)
- Try installing exact versions before updating (rust-lang/cargo#8022)
- Document unstable `strip` profile feature (rust-lang/cargo#8262)
- Add option to strip binaries (rust-lang/cargo#8246)

4 years agoAuto merge of #5651 - ebroto:names_as_early_passes, r=flip1995
bors [Tue, 26 May 2020 23:12:16 +0000 (23:12 +0000)]
Auto merge of #5651 - ebroto:names_as_early_passes, r=flip1995

Register redundant_field_names and non_expressive_names as early passes

Similar names was moved to a pre-expansion pass to solve #2927, so I'm avoiding linting on code from expansion, which makes the dogfood (mostly, see below) pass.

I had to change new_without_default though, and although I understand why it was not triggering before, TBH I don't see why the binding inside the nested `if_chain` is being linted now. Any ideas? (it seems legit though as the code can be changed by the user)

changelog: Register redundant_field_names and non_expressive_names as early passes

Fixes #5356
Fixes #5521

4 years agoFail bors on missing changelog
Philipp Krones [Tue, 26 May 2020 22:51:08 +0000 (00:51 +0200)]
Fail bors on missing changelog

4 years agoAuto merge of #5650 - imbsky:actions-cache-v2, r=flip1995
bors [Tue, 26 May 2020 22:44:56 +0000 (22:44 +0000)]
Auto merge of #5650 - imbsky:actions-cache-v2, r=flip1995

Bump actions/cache from v1 to v2

We just released v2. That includes a lot of improvements.
https://github.com/actions/cache/releases/tag/v2.0.0

changelog: none

4 years agoAvoid triggering similar names on code from expansion
Eduardo Broto [Tue, 26 May 2020 22:06:50 +0000 (00:06 +0200)]
Avoid triggering similar names on code from expansion

4 years agoBump actions/cache from v1 to v2
Sora Morimoto [Tue, 26 May 2020 21:25:38 +0000 (06:25 +0900)]
Bump actions/cache from v1 to v2

4 years agoAuto merge of #72627 - Dylan-DPC:rollup-bavnoq5, r=Dylan-DPC
bors [Tue, 26 May 2020 20:58:52 +0000 (20:58 +0000)]
Auto merge of #72627 - Dylan-DPC:rollup-bavnoq5, r=Dylan-DPC

Rollup of 6 pull requests

Successful merges:

 - #72270 (add a lint against references to packed fields)
 - #72294 (JS cleanup)
 - #72342 (Warn about unused crate deps)
 - #72401 (Use correct function for detecting `const fn` in unsafety checking)
 - #72581 (Allow unlabeled breaks from desugared `?` in labeled blocks)
 - #72592 (Update books)

Failed merges:

r? @ghost

4 years agoimprove error message for unexpected comma token in multiline block
Chris Simpkins [Tue, 26 May 2020 20:52:16 +0000 (16:52 -0400)]
improve error message for unexpected comma token in multiline block

confusing diagnostics, issue #72253

add test for confusing error message, issue-72253

remove is_multiline check, refactor to self.expect(&token:Semi)

update issue-72253 tests

return Ok

4 years agoRollup merge of #72592 - ehuss:update-books, r=ehuss
Dylan DPC [Tue, 26 May 2020 20:11:34 +0000 (22:11 +0200)]
Rollup merge of #72592 - ehuss:update-books, r=ehuss

Update books

## reference

7 commits in 892b928b565e35d25b6f9c47faee03b94bc41489..becdca9477c9eafa96a4eea5156fe7a2730d9dd2
2020-05-11 11:13:51 -0700 to 2020-05-21 21:08:02 +0100
- Update tuple index token. (rust-lang-nursery/reference#814)
- Fixes minor errors (rust-lang-nursery/reference#818)
- Update that macros can be deprecated. (rust-lang-nursery/reference#813)
- work on char/str descriptions (rust-lang-nursery/reference#809)
- cfg_attr needs a valid predicate (rust-lang-nursery/reference#812)
- Account for removal of UB in float-to-int casts (rust-lang-nursery/reference#810)
- Fix stray plus signs. (rust-lang-nursery/reference#811)

## book

6 commits in 6247be15a7f7509559f7981ee2209b9e0cc121df..e8a4714a9d8a6136a59b8e63544e149683876e36
2020-05-03 10:55:09 -0500 to 2020-05-25 10:29:27 -0500
- code is 1024 now, not 512
- Clean up install a bit
- We don't need build.sh anymore
- Fix CI status in README
- Port to github actions (rust-lang/book#2337)
- operating system -&gt; allocator

## rust-by-example

5 commits in ab072b14393cbd9e8a1d1d75879bf51e27217bbb..7aa82129aa23e7e181efbeb8da03a2a897ef6afc
2020-05-09 08:46:39 -0300 to 2020-05-25 14:54:26 -0300
- Person of age 0 is alive (rust-lang/rust-by-example#1348)
- Gramatical fix in std/rc.md (rust-lang/rust-by-example#1347)
- Capture example should use String (rust-lang/rust-by-example#1331)
- Fix empty bound examples (rust-lang/rust-by-example#1343)
- Fix an inline comment in macros/repeat.md (rust-lang/rust-by-example#1344)

## edition-guide

1 commits in 49270740c7a4bff2763e6bc730b191d45b7d5167..0a8ab5046829733eb03df0738c4fafaa9b36b348
2020-05-11 08:50:29 -0500 to 2020-05-18 08:34:23 -0500
- Changes for Rust 1.32 & setup for edition-next (rust-lang-nursery/edition-guide#213)

## embedded-book

3 commits in 366c50a03bed928589771eba8a6f18e0c0c01d23..5555a97f04ad7974ac6fb8fb47c267c4274adf4a
2020-05-07 09:04:42 +0000 to 2020-05-25 18:00:51 +0000
- Remove reference to const-fn feature of cortex-m. Closes rust-embedded/book#242.  (rust-embedded/book#243)
- Spelling: Appplication -&gt; Application  (rust-embedded/book#241)
- QEMU debugging updates  (rust-embedded/book#239)

4 years agoRollup merge of #72581 - samrat:allow-desugared-break-in-labeled-block, r=davidtwco
Dylan DPC [Tue, 26 May 2020 20:11:33 +0000 (22:11 +0200)]
Rollup merge of #72581 - samrat:allow-desugared-break-in-labeled-block, r=davidtwco

Allow unlabeled breaks from desugared `?` in labeled blocks

`?` is desugared into a `break` targeting the innermost `try` scope in which it resides. The `break` however will not have a label. https://github.com/rust-lang/rust/blob/master/src/librustc_ast_lowering/expr.rs#L1560

Since the `target` of the `break` is known, the compiler should not complain about an unlabeled jump for `break`s desugared from `?`.

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

4 years agoRollup merge of #72401 - ecstatic-morse:issue-72394, r=eddyb
Dylan DPC [Tue, 26 May 2020 20:11:31 +0000 (22:11 +0200)]
Rollup merge of #72401 - ecstatic-morse:issue-72394, r=eddyb

Use correct function for detecting `const fn` in unsafety checking

Resolves #72394.

4 years agoRollup merge of #72342 - jsgf:warn-unused-deps, r=petrochenkov
Dylan DPC [Tue, 26 May 2020 20:11:29 +0000 (22:11 +0200)]
Rollup merge of #72342 - jsgf:warn-unused-deps, r=petrochenkov

Warn about unused crate deps

Implements #57274 by adding -Wunused-crate-dependencies. This will warn about any `--extern` option on the command line which isn't referenced by the crate source either via `use` or `extern crate`.

Crates which are added for some side effect but are otherwise unreferenced - such as for symbols they define - the warning can be suppressed with `use somecrate as _;`.

If a crate has multiple aliases (eg using `foo = { package = "bar" }` in `Cargo.toml`), then it will warn about each unused alias.

This does not consider crate added by some other means than `--extern`, including the standard library. It also doesn't consider any crate without `add_prelude` set (though I'm not sure about this).

Unfortunately this probably [does not yet work well with Cargo](https://github.com/rust-lang/rust/issues/57274#issuecomment-624839355) as it will over-specify crates, causing spurious warnings. As a result, this lint is "allow" by default and must be explicitly enabled either via `#![warn(unused_crate_deps)]` or with `-Wunused-crate-deps`.

4 years agoRollup merge of #72294 - GuillaumeGomez:js-cleanup, r=kinnison
Dylan DPC [Tue, 26 May 2020 20:11:26 +0000 (22:11 +0200)]
Rollup merge of #72294 - GuillaumeGomez:js-cleanup, r=kinnison

JS cleanup

The goal here is just to improve the source code a bit. I recommend to review one commit at a time, otherwise it might not make much sense. :)

The biggest commit is the second one: to prevent to have "global" variables declared in `main.js` (and thus prevent name conflict or overwriting), I moved such code into anonymous functions.

r? @kinnison

cc @rust-lang/rustdoc

4 years agoRollup merge of #72270 - RalfJung:lint-ref-to-packed, r=oli-obk
Dylan DPC [Tue, 26 May 2020 20:11:22 +0000 (22:11 +0200)]
Rollup merge of #72270 - RalfJung:lint-ref-to-packed, r=oli-obk

add a lint against references to packed fields

Creating a reference to an insufficiently aligned packed field is UB and should be disallowed, both inside and outside of `unsafe` blocks. However, currently there is no stable alternative (https://github.com/rust-lang/rust/issues/64490) so all we do right now is have a future incompatibility warning when doing this outside `unsafe` (https://github.com/rust-lang/rust/issues/46043).

This adds an allow-by-default lint. @retep998 suggested this can help early adopters avoid issues. It also means we can then do a crater run where this is deny-by-default as suggested by @joshtriplett.

I guess the main thing to bikeshed is the lint name. I am not particularly happy with "packed_references" as it sounds like the packed field has reference type. I chose this because it is similar to "safe_packed_borrows". What about "reference_to_packed" or "unaligned_reference" or so?

4 years agoSimplify suggestion
Stanislav Tkach [Tue, 26 May 2020 20:06:46 +0000 (23:06 +0300)]
Simplify suggestion

4 years agoAdd remark regarding DoubleEndedIterator
philipp [Tue, 26 May 2020 19:38:44 +0000 (21:38 +0200)]
Add remark regarding DoubleEndedIterator

4 years agoFix fallout in similar_names
flip1995 [Tue, 12 May 2020 14:50:00 +0000 (16:50 +0200)]
Fix fallout in similar_names

4 years agoFix fallout in redundant_field_names
flip1995 [Tue, 12 May 2020 14:26:55 +0000 (16:26 +0200)]
Fix fallout in redundant_field_names

4 years agoRegister redundant_field_names and non_expressive_names as early passes
flip1995 [Thu, 23 Apr 2020 22:14:03 +0000 (00:14 +0200)]
Register redundant_field_names and non_expressive_names as early passes

4 years agoAuto merge of #71931 - alexcrichton:reproducible-macos, r=eddyb
bors [Tue, 26 May 2020 17:38:47 +0000 (17:38 +0000)]
Auto merge of #71931 - alexcrichton:reproducible-macos, r=eddyb

Export ZERO_AR_DATE for macos linker invocations

This commit attempts to improve reproducibility of builds on macOS by
exporting the `ZERO_AR_DATE=1` environment variable for all invocations
of the linker. While it looks like this env var is targeted at just the
`ar` command (which does actually read this) it appears that recent-ish
versions of the linker *also* read this environment variable. This
env var forces the linker to set a deterministic zero value for the
mtime in the N_OSO field of the object file.

Currently it's believe that older versions of the linker will simply
ignore this env var, while newer versions will read it and produce a
deterministic output for compilations with debuginfo.

Closes #47086
Closes #66568