]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoRollup merge of #72001 - mibac138:cfg-version, r=petrochenkov
Dylan DPC [Fri, 8 May 2020 12:11:49 +0000 (14:11 +0200)]
Rollup merge of #72001 - mibac138:cfg-version, r=petrochenkov

Adjust cfg(version) to lang team decision

See https://github.com/rust-lang/rust/issues/64796#issuecomment-625474439 for details

r? @petrochenkov who reviewed the original PR (#71314)

4 years agoRollup merge of #71999 - crlf0710:mailmap, r=Dylan-DPC
Dylan DPC [Fri, 8 May 2020 12:11:47 +0000 (14:11 +0200)]
Rollup merge of #71999 - crlf0710:mailmap, r=Dylan-DPC

Add myself to mailmap.

4 years agoRollup merge of #71993 - ecstatic-morse:cleanup-old-liveness, r=jonas-schievink
Dylan DPC [Fri, 8 May 2020 12:11:45 +0000 (14:11 +0200)]
Rollup merge of #71993 - ecstatic-morse:cleanup-old-liveness, r=jonas-schievink

Remove old `util/liveness.rs` module

The liveness dataflow analysis now lives in the `dataflow` module, so this one is no longer necessary. I've copied the relevant bits of the module docs for `util::liveness` to `MaybeLiveLocals`. The example in the docs is now a `mir-dataflow` test: https://github.com/rust-lang/rust/blob/a08c47310c7d49cbdc5d7afb38408ba519967ecd/src/test/ui/mir-dataflow/liveness-ptr.rs#L6-L26

The borrow-checker used the same notion of "defs" and "uses", so I've moved it into a submodule. I would have moved it to `util/def_use.rs`, since it seems generally useful, but there's already a slightly [different version](https://github.com/rust-lang/rust/blob/master/src/librustc_mir/util/def_use.rs) of the same abstraction needed for copy propagation.

4 years agoRollup merge of #71989 - ecstatic-morse:const-context-enum, r=oli-obk
Dylan DPC [Fri, 8 May 2020 12:11:44 +0000 (14:11 +0200)]
Rollup merge of #71989 - ecstatic-morse:const-context-enum, r=oli-obk

Use a single enum for the kind of a const context

This adds a `ConstContext` enum to the `rustc_hir` crate and method that can be called via `tcx.hir()` to get the `ConstContext` for a given body owner. This arose from discussion in #71824.

r? @oli-obk

4 years agoAuto merge of #71917 - RalfJung:miri, r=RalfJung
bors [Fri, 8 May 2020 07:29:42 +0000 (07:29 +0000)]
Auto merge of #71917 - RalfJung:miri, r=RalfJung

update miri

In particular this includes the change to yield on `spin_loop_hint`, which is needed for https://github.com/rust-lang/rust/pull/71737.
r? @ghost Cc @rust-lang/miri

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

4 years agoAuto merge of #71992 - Dylan-DPC:rollup-29qjvpe, r=Dylan-DPC
bors [Fri, 8 May 2020 01:19:24 +0000 (01:19 +0000)]
Auto merge of #71992 - Dylan-DPC:rollup-29qjvpe, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #70733 (Add Arc::{incr,decr}_strong_count)
 - #71598 (improve Drop documentation)
 - #71783 (Detect errors caused by `async` block in 2015 edition)
 - #71903 (reword "possible candidate" import suggestion)
 - #71960 (Fix E0284 to not use incorrect wording)

Failed merges:

r? @ghost

4 years agoAdd myself to mailmap.
Charles Lew [Fri, 8 May 2020 00:26:29 +0000 (08:26 +0800)]
Add myself to mailmap.

4 years agoAdjust cfg(version) to lang team decision
mibac138 [Thu, 7 May 2020 22:07:18 +0000 (00:07 +0200)]
Adjust cfg(version) to lang team decision

4 years agoupdate miri
Ralf Jung [Thu, 7 May 2020 22:28:51 +0000 (00:28 +0200)]
update miri

4 years agoAuto merge of #71995 - pietroalbini:ci-windows-detect-latest-python, r=Mark-Simulacrum
bors [Thu, 7 May 2020 21:52:39 +0000 (21:52 +0000)]
Auto merge of #71995 - pietroalbini:ci-windows-detect-latest-python, r=Mark-Simulacrum

[CI] Use the latest Python available on Windows

This PR changes our Windows CI to always use the latest Python interpreter available in the GHA tool cache instead of hardcoding Python 3.7.6. This is needed because occasionally GitHub bumps the installed version, deleting the previous one.

This fixes the current GHA outage we're having. I fully expect the outage to propagate to Azure Pipelines in the coming days if we don't merge this, as both GHA and Azure use the same underlying image. Once the PR is merged we can re-enabled the double-gating.

r? @Mark-Simulacrum

4 years agoci: use the latest python available on windows
Pietro Albini [Thu, 7 May 2020 21:12:13 +0000 (23:12 +0200)]
ci: use the latest python available on windows

This commit changes our Windows CI to always use the latest Python
interpreter available in the GHA tool cache instead of hardcoding Python
3.7.6. This is needed because occasionally GitHub bumps the installed
version, deleting the previous one.

4 years agoIncorporate old module docs into `MaybeLiveLocals` docs
Dylan MacKenzie [Thu, 7 May 2020 20:13:02 +0000 (13:13 -0700)]
Incorporate old module docs into `MaybeLiveLocals` docs

4 years agoRemove old `util/liveness.rs` module
Dylan MacKenzie [Thu, 7 May 2020 19:55:01 +0000 (12:55 -0700)]
Remove old `util/liveness.rs` module

The liveness dataflow analysis now lives in
`librustc_mir/dataflow/impls/liveness.rs`. The borrow-checker has an
abstraction around of "defs" and "uses" that I've made module private. I
would have moved it to `util/def_use.rs`, but there's a slightly
different abstraction used for copy propagation with that name.

4 years agoRollup merge of #71960 - estebank:fix-E0284, r=davidtwco
Dylan DPC [Thu, 7 May 2020 19:46:16 +0000 (21:46 +0200)]
Rollup merge of #71960 - estebank:fix-E0284, r=davidtwco

Fix E0284 to not use incorrect wording

Fix #71584, fix #69683.

4 years agoRollup merge of #71903 - euclio:reword-possible-better, r=petrochenkov
Dylan DPC [Thu, 7 May 2020 19:46:14 +0000 (21:46 +0200)]
Rollup merge of #71903 - euclio:reword-possible-better, r=petrochenkov

reword "possible candidate" import suggestion

This suggestion has always read a bit awkwardly to me, particularly the "possible better candidate" variant.

This commit rewords the suggestion to be more concise and mention the kind of the suggested item. There isn't a nice way to label individual suggestions, so I opted to use "items" in the case of multiple suggestions.

4 years agoRollup merge of #71783 - estebank:async-block-2015, r=tmandry
Dylan DPC [Thu, 7 May 2020 19:46:12 +0000 (21:46 +0200)]
Rollup merge of #71783 - estebank:async-block-2015, r=tmandry

Detect errors caused by `async` block in 2015 edition

Fix #67204.

4 years agoRollup merge of #71598 - lcnr:drop-docs, r=RalfJung,Mark-Simulacrum
Dylan DPC [Thu, 7 May 2020 19:46:11 +0000 (21:46 +0200)]
Rollup merge of #71598 - lcnr:drop-docs, r=RalfJung,Mark-Simulacrum

improve Drop documentation

Fixes #36073

This is a continuation of #57449 and most of the work here was done by
the excellent @steveklabnik.

4 years agoRollup merge of #70733 - yoshuawuyts:arc-increment-refcount, r=Mark-Simulacrum
Dylan DPC [Thu, 7 May 2020 19:46:06 +0000 (21:46 +0200)]
Rollup merge of #70733 - yoshuawuyts:arc-increment-refcount, r=Mark-Simulacrum

Add Arc::{incr,decr}_strong_count

This adds two `unsafe` methods to `Arc`: `incr_strong_count` and `decr_strong_count`. A suggestion to add methods to change the strong count in `Arc` came up in during review in https://github.com/rust-lang/rust/pull/68700#discussion_r396169064, and from asking a few people this seemed like generally useful to have.

References:
- [Motivation from #68700](https://github.com/rust-lang/rust/pull/68700#discussion_r396169064)
- [Real world example in an executor](https://docs.rs/extreme/666.666.666666/src/extreme/lib.rs.html#13)

4 years agoUse `hir::ConstContext` instead of local enums
Dylan MacKenzie [Thu, 7 May 2020 17:24:20 +0000 (10:24 -0700)]
Use `hir::ConstContext` instead of local enums

4 years agoAdd `hir::ConstContext`
Dylan MacKenzie [Thu, 7 May 2020 17:22:35 +0000 (10:22 -0700)]
Add `hir::ConstContext`

4 years agoFix E0284 to not use incorrect wording
Esteban Küber [Wed, 6 May 2020 22:26:03 +0000 (15:26 -0700)]
Fix E0284 to not use incorrect wording

Fix #71584, fix #69683.

4 years agoAuto merge of #71985 - Dylan-DPC:rollup-9ceqump, r=Dylan-DPC
bors [Thu, 7 May 2020 16:03:59 +0000 (16:03 +0000)]
Auto merge of #71985 - Dylan-DPC:rollup-9ceqump, r=Dylan-DPC

Rollup of 6 pull requests

Successful merges:

 - #71938 (Use trait_object_dummy_self instead of err)
 - #71952 (Add some regression tests)
 - #71959 (tests: Fix warnings in `rust_test_helpers.c`)
 - #71962 (Grammar)
 - #71972 (use hex for pointers in Miri error messages)
 - #71980 (Allow a few warnings.)

Failed merges:

r? @ghost

4 years agoRollup merge of #71980 - steveklabnik:warnings-fixes, r=Mark-Simulacrum
Dylan DPC [Thu, 7 May 2020 15:59:00 +0000 (17:59 +0200)]
Rollup merge of #71980 - steveklabnik:warnings-fixes, r=Mark-Simulacrum

Allow a few warnings.

On Windows, these types were causing warnings to be emitted during the
build. These types are allowed to not have idiomatic names, so the
warning should be supressed.

4 years agoRollup merge of #71972 - RalfJung:miri-validity-error-refine, r=oli-obk
Dylan DPC [Thu, 7 May 2020 15:58:59 +0000 (17:58 +0200)]
Rollup merge of #71972 - RalfJung:miri-validity-error-refine, r=oli-obk

use hex for pointers in Miri error messages

Also refine vtable error message: distinguish between "drop fn does not point to a function" and "drop fn points to a function with the wrong signature".

4 years agoRollup merge of #71962 - jsoref:grammar, r=Dylan-DPC
Dylan DPC [Thu, 7 May 2020 15:58:57 +0000 (17:58 +0200)]
Rollup merge of #71962 - jsoref:grammar, r=Dylan-DPC

Grammar

I've split this into individual changes so that people can veto individually. I'm not attached to most of them.

`zeroes` vs. `zeros` is why I took the effort to run this through app.grammarly (which disappointingly didn't even notice).

4 years agoRollup merge of #71959 - petrochenkov:chelpers, r=Mark-Simulacrum
Dylan DPC [Thu, 7 May 2020 15:58:55 +0000 (17:58 +0200)]
Rollup merge of #71959 - petrochenkov:chelpers, r=Mark-Simulacrum

tests: Fix warnings in `rust_test_helpers.c`

MSVC is silly and doesn't recognize `assert` as diverging.

4 years agoRollup merge of #71952 - JohnTitor:add-tests, r=Dylan-DPC
Dylan DPC [Thu, 7 May 2020 15:58:53 +0000 (17:58 +0200)]
Rollup merge of #71952 - JohnTitor:add-tests, r=Dylan-DPC

Add some regression tests

Closes #29988
Closes #34979
Pick up two snippets that have been fixed from #67945 (shouldn't be closed yet!)

4 years agoRollup merge of #71938 - mark-i-m:de-abuse-err-4, r=eddyb
Dylan DPC [Thu, 7 May 2020 15:58:52 +0000 (17:58 +0200)]
Rollup merge of #71938 - mark-i-m:de-abuse-err-4, r=eddyb

Use trait_object_dummy_self instead of err

r? @eddyb

cc #70866.

4 years agoAdd some skip flags
Yuki Okushi [Thu, 7 May 2020 15:51:13 +0000 (00:51 +0900)]
Add some skip flags

4 years agoAdd Arc::{incr,decr}_strong_count
Yoshua Wuyts [Fri, 3 Apr 2020 11:10:13 +0000 (13:10 +0200)]
Add Arc::{incr,decr}_strong_count

4 years agoAllow a few warnings.
Steve Klabnik [Thu, 7 May 2020 12:23:06 +0000 (07:23 -0500)]
Allow a few warnings.

On Windows, these types were causing warnings to be emitted during the
build. These types are allowed to not have idiomatic names, so the
warning should be supressed.

4 years agoAuto merge of #71649 - ecstatic-morse:ci-stage0-doc, r=Mark-Simulacrum
bors [Thu, 7 May 2020 09:47:49 +0000 (09:47 +0000)]
Auto merge of #71649 - ecstatic-morse:ci-stage0-doc, r=Mark-Simulacrum

Ensure that `./x.py doc --stage 0 src/libstd` works via CI

This was split off from #71645, which recommends that users first try building `libstd` docs with the bootstrap `rustdoc`. This should work in most cases, but will fail if we start using a very recent `rustdoc` feature outside a `#[cfg(not(bootstrap))]`.

It would be very nice to guarantee that `./x.py doc --stage 0 src/libstd` works, since it allows documentation changes to be rendered locally without needing to build the compiler. However, it may put too big a burden on `rustdoc` developers who presumably want to dogfood new features.

4 years agorewrite Drop documentation
Bastian Kauschke [Thu, 7 May 2020 07:09:11 +0000 (09:09 +0200)]
rewrite Drop documentation

4 years agouse hex for pointers in Miri error messages; refine vtable error message
Ralf Jung [Thu, 7 May 2020 06:57:40 +0000 (08:57 +0200)]
use hex for pointers in Miri error messages; refine vtable error message

4 years agoAuto merge of #71925 - ehuss:update-cargo, r=ehuss
bors [Thu, 7 May 2020 05:56:20 +0000 (05:56 +0000)]
Auto merge of #71925 - ehuss:update-cargo, r=ehuss

Update cargo

7 commits in 258c89644c4587273a3ed3ee9522d2640facba43..f534844c25cacc5e004404cea835ac85e35ca3fd
2020-04-30 21:48:21 +0000 to 2020-05-06 14:39:10 +0000
- Avoid testing git-specific error messages (rust-lang/cargo#8212)
- features: allow activated_features_unverified to communicate not-present (rust-lang/cargo#8194)
- Don't force rustc to do codegen for LTO builds (rust-lang/cargo#8192)
- Hint git-fetch-with-cli on git errors (rust-lang/cargo#8166)
- ¬∃x. ¬y => ∀x. y (rust-lang/cargo#8205)
- clippy fixes (rust-lang/cargo#8189)
- Rename bitcode-in-rlib flag to embed-bitcode (rust-lang/cargo#8204)

4 years agoreword "possible candidate" import suggestion
Andy Russell [Mon, 4 May 2020 22:12:06 +0000 (18:12 -0400)]
reword "possible candidate" import suggestion

4 years agoAuto merge of #55617 - oli-obk:stacker, r=nagisa,oli-obk
bors [Thu, 7 May 2020 00:03:23 +0000 (00:03 +0000)]
Auto merge of #55617 - oli-obk:stacker, r=nagisa,oli-obk

Prevent compiler stack overflow for deeply recursive code

I was unable to write a test that

1. runs in under 1s
2. overflows on my machine without this patch

The following reproduces the issue, but I don't think it's sensible to include a test that takes 30s to compile. We can now easily squash newly appearing overflows by the strategic insertion of calls to `ensure_sufficient_stack`.

```rust
// compile-pass

#![recursion_limit="1000000"]

macro_rules! chain {
    (EE $e:expr) => {$e.sin()};
    (RECURSE $i:ident $e:expr) => {chain!($i chain!($i chain!($i chain!($i $e))))};
    (Z $e:expr) => {chain!(RECURSE EE $e)};
    (Y $e:expr) => {chain!(RECURSE Z $e)};
    (X $e:expr) => {chain!(RECURSE Y $e)};
    (A $e:expr) => {chain!(RECURSE X $e)};
    (B $e:expr) => {chain!(RECURSE A $e)};
    (C $e:expr) => {chain!(RECURSE B $e)};
    // causes overflow on x86_64 linux
    // less than 1 second until overflow on test machine
    // after overflow has been fixed, takes 30s to compile :/
    (D $e:expr) => {chain!(RECURSE C $e)};
    (E $e:expr) => {chain!(RECURSE D $e)};
    (F $e:expr) => {chain!(RECURSE E $e)};
    // more than 10 seconds
    (G $e:expr) => {chain!(RECURSE F $e)};
    (H $e:expr) => {chain!(RECURSE G $e)};
    (I $e:expr) => {chain!(RECURSE H $e)};
    (J $e:expr) => {chain!(RECURSE I $e)};
    (K $e:expr) => {chain!(RECURSE J $e)};
    (L $e:expr) => {chain!(RECURSE L $e)};
}

fn main() {
    let x = chain!(D 42.0_f32);
}
```

fixes #55471
fixes #41884
fixes #40161
fixes #34844
fixes #32594

cc @alexcrichton @rust-lang/compiler

I looked at all code that checks the recursion limit and inserted stack growth calls where appropriate.

4 years agogrammar: dealing-with
Josh Soref [Wed, 6 May 2020 23:01:27 +0000 (19:01 -0400)]
grammar: dealing-with

4 years agogrammar: simplify to avoid that
Josh Soref [Wed, 6 May 2020 23:01:05 +0000 (19:01 -0400)]
grammar: simplify to avoid that

4 years agogrammar: stray comma
Josh Soref [Wed, 6 May 2020 23:00:40 +0000 (19:00 -0400)]
grammar: stray comma

4 years agogrammar: noun not verb
Josh Soref [Wed, 6 May 2020 23:00:15 +0000 (19:00 -0400)]
grammar: noun not verb

4 years agogrammar: subject-verb not subject-verb-verb
Josh Soref [Wed, 6 May 2020 22:59:52 +0000 (18:59 -0400)]
grammar: subject-verb not subject-verb-verb

4 years agogrammar: disambiguate space-character
Josh Soref [Wed, 6 May 2020 22:58:45 +0000 (18:58 -0400)]
grammar: disambiguate space-character

4 years agogrammar: count-agreement default ... is
Josh Soref [Wed, 6 May 2020 22:58:12 +0000 (18:58 -0400)]
grammar: count-agreement default ... is

4 years agogrammar: which vs that
Josh Soref [Wed, 6 May 2020 22:56:25 +0000 (18:56 -0400)]
grammar: which vs that

4 years agotest: Fix warnings in `rust_test_helpers.c`
Vadim Petrochenkov [Wed, 6 May 2020 20:53:55 +0000 (23:53 +0300)]
test: Fix warnings in `rust_test_helpers.c`

4 years agoAuto merge of #71958 - Dylan-DPC:rollup-woxwt5d, r=Dylan-DPC
bors [Wed, 6 May 2020 20:38:56 +0000 (20:38 +0000)]
Auto merge of #71958 - Dylan-DPC:rollup-woxwt5d, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #70908 (Provide suggestions for type parameters missing bounds for associated types)
 - #71731 (Turn off rustc-dev-guide toolstate for now)
 - #71888 (refactor suggest_traits_to_import)
 - #71918 (Rename methods section)
 - #71950 (Miri validation error handling cleanup)

Failed merges:

r? @ghost

4 years agoRollup merge of #71950 - RalfJung:try-validation-cleanup, r=oli-obk
Dylan DPC [Wed, 6 May 2020 20:36:55 +0000 (22:36 +0200)]
Rollup merge of #71950 - RalfJung:try-validation-cleanup, r=oli-obk

Miri validation error handling cleanup

Slightly expand @jumbatm's pattern macro and use it throughout validation. This ensures we never incorrectly swallow `InvalidProgram` errors or ICE when they occur.

Fixes https://github.com/rust-lang/rust/issues/71353
r? @oli-obk

4 years agoRollup merge of #71918 - GuillaumeGomez:rename-methods-section, r=Dylan-DPC
Dylan DPC [Wed, 6 May 2020 20:36:51 +0000 (22:36 +0200)]
Rollup merge of #71918 - GuillaumeGomez:rename-methods-section, r=Dylan-DPC

Rename methods section

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

It renames the section [methods](https://doc.rust-lang.org/nightly/std/string/struct.String.html#methods) into "Implementations". However, I didn't not update the title in the sidebar considering that it only lists methods under (even though I updated the link of the "methods" to make it point to the "implementations" section.

r? @kinnison

cc @rust-lang/rustdoc

4 years agoRollup merge of #71888 - lcnr:refactor-suggest_traits_to_import, r=estebank
Dylan DPC [Wed, 6 May 2020 20:36:49 +0000 (22:36 +0200)]
Rollup merge of #71888 - lcnr:refactor-suggest_traits_to_import, r=estebank

refactor suggest_traits_to_import

4 years agoRollup merge of #71731 - mark-i-m:guide-toolstate-off-for-now, r=kennytm
Dylan DPC [Wed, 6 May 2020 20:36:45 +0000 (22:36 +0200)]
Rollup merge of #71731 - mark-i-m:guide-toolstate-off-for-now, r=kennytm

Turn off rustc-dev-guide toolstate for now

cc @rust-lang/wg-rustc-dev-guide @rust-lang/infra @ehuss

When we first added toolstate, the intent was to use toolstate to linkcheck PRs so that we would know which PRs break links in the guide (e.g. by moving some definition). However, these days, we are mostly getting 429 errors (too many requests) from github (not sure when this changed), and every day, there seems to be a spurious failure of some other sort. This is all despite efforts to filter out spurious failures.

Getting spurious gh pings is annoying, and we're not actually getting a lot out of this linkcheck beyond what we are getting with our CI on the guide's repo, so I'm proposing to disable this until we can figure out what might be a better path forward.

4 years agoRollup merge of #70908 - estebank:suggest-add, r=nikomatsakis
Dylan DPC [Wed, 6 May 2020 20:36:43 +0000 (22:36 +0200)]
Rollup merge of #70908 - estebank:suggest-add, r=nikomatsakis

Provide suggestions for type parameters missing bounds for associated types

When implementing the binary operator traits it is easy to forget to restrict the `Output` associated type. `rustc` now accounts for different cases to lead users in the right direction to add the necessary restrictions. The structured suggestions in the following output are new:

```
error: equality constraints are not yet supported in `where` clauses
  --> $DIR/missing-bounds.rs:37:33
   |
LL | impl<B: Add> Add for E<B> where <B as Add>::Output = B {
   |                                 ^^^^^^^^^^^^^^^^^^^^^^ not supported
   |
   = note: see issue #20041 <https://github.com/rust-lang/rust/issues/20041> for more information
help: if `Output` is an associated type you're trying to set, use the associated type binding syntax
   |
LL | impl<B: Add> Add for E<B> where B: Add<Output = B> {
   |                                 ^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
  --> $DIR/missing-bounds.rs:11:11
   |
7  | impl<B> Add for A<B> where B: Add {
   |      - this type parameter
...
11 |         A(self.0 + rhs.0)
   |           ^^^^^^^^^^^^^^ expected type parameter `B`, found associated type
   |
   = note: expected type parameter `B`
             found associated type `<B as std::ops::Add>::Output`
help: consider further restricting this bound
   |
7  | impl<B> Add for A<B> where B: Add + std::ops::Add<Output = B> {
   |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0369]: cannot add `B` to `B`
  --> $DIR/missing-bounds.rs:31:21
   |
31 |         Self(self.0 + rhs.0)
   |              ------ ^ ----- B
   |              |
   |              B
   |
help: consider restricting type parameter `B`
   |
27 | impl<B: std::ops::Add<Output = B>> Add for D<B> {
   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
```

That output is given for the following cases:

```rust
struct A<B>(B);
impl<B> Add for A<B> where B: Add {
    type Output = Self;

    fn add(self, rhs: Self) -> Self {
        A(self.0 + rhs.0) //~ ERROR mismatched types
    }
}

struct D<B>(B);
impl<B> Add for D<B> {
    type Output = Self;

    fn add(self, rhs: Self) -> Self {
        Self(self.0 + rhs.0) //~ ERROR cannot add `B` to `B`
    }
}

struct E<B>(B);
impl<B: Add> Add for E<B> where <B as Add>::Output = B {
    type Output = Self;

    fn add(self, rhs: Self) -> Self {
        Self(self.0 + rhs.0)
    }
}
```

4 years agoAdd some tests for #67945
Yuki Okushi [Wed, 6 May 2020 17:14:05 +0000 (02:14 +0900)]
Add some tests for #67945

4 years agoAdd test for #34979
Yuki Okushi [Wed, 6 May 2020 17:13:51 +0000 (02:13 +0900)]
Add test for #34979

4 years agoAdd test for #29988
Yuki Okushi [Wed, 6 May 2020 17:13:20 +0000 (02:13 +0900)]
Add test for #29988

4 years agoAuto merge of #71951 - Dylan-DPC:rollup-j9v1p0f, r=Dylan-DPC
bors [Wed, 6 May 2020 16:59:45 +0000 (16:59 +0000)]
Auto merge of #71951 - Dylan-DPC:rollup-j9v1p0f, r=Dylan-DPC

Rollup of 7 pull requests

Successful merges:

 - #71269 (Define UB in float-to-int casts to saturate)
 - #71591 (use new interface to create threads on HermitCore)
 - #71819 (x.py: Give a more helpful error message if curl isn't installed)
 - #71893 (Use the `impls` module to import pre-existing dataflow analyses)
 - #71929 (Use -fvisibility=hidden for libunwind)
 - #71937 (Ignore SGX on a few ui tests)
 - #71944 (Add comment for `Ord` implementation for array)

Failed merges:

r? @ghost

4 years agoUpdate cargo
Eric Huss [Tue, 5 May 2020 15:48:06 +0000 (08:48 -0700)]
Update cargo

4 years agoRollup merge of #71944 - ldm0:arrordhint, r=sfackler
Dylan DPC [Wed, 6 May 2020 14:59:04 +0000 (16:59 +0200)]
Rollup merge of #71944 - ldm0:arrordhint, r=sfackler

Add comment for `Ord` implementation for array

Corresponding to `Ord` implementation for slice. It hints new comer the rule of comparing two arrays.

4 years agoRollup merge of #71937 - mzohreva:mz/ui-tests-ignore-sgx, r=nikomatsakis
Dylan DPC [Wed, 6 May 2020 14:59:02 +0000 (16:59 +0200)]
Rollup merge of #71937 - mzohreva:mz/ui-tests-ignore-sgx, r=nikomatsakis

Ignore SGX on a few ui tests

cc @jethrogb

4 years agoRollup merge of #71929 - petrhosek:unwind-visibility, r=tmandry
Dylan DPC [Wed, 6 May 2020 14:59:00 +0000 (16:59 +0200)]
Rollup merge of #71929 - petrhosek:unwind-visibility, r=tmandry

Use -fvisibility=hidden for libunwind

We don't want to export any symbols from Rust's version of libunwind
as these may collide with other copies of libunwind e.g. when linking
Rust staticlib together C/C++ libraries that have their own version.

4 years agoRollup merge of #71893 - ecstatic-morse:dataflow-impls-import, r=jonas-schievink
Dylan DPC [Wed, 6 May 2020 14:58:58 +0000 (16:58 +0200)]
Rollup merge of #71893 - ecstatic-morse:dataflow-impls-import, r=jonas-schievink

Use the `impls` module to import pre-existing dataflow analyses

Currently, existing analyses live in the same module as the traits and types used to define new dataflow analyses. This muddles the [documentation for the `dataflow` module](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_mir/dataflow/index.html). After this PR, `dataflow::impls` will refer to concrete dataflow analyses, and `dataflow` to the generic interface.

4 years agoRollup merge of #71819 - jyn514:check-for-tools, r=Mark-Simulacrum
Dylan DPC [Wed, 6 May 2020 14:58:57 +0000 (16:58 +0200)]
Rollup merge of #71819 - jyn514:check-for-tools, r=Mark-Simulacrum

x.py: Give a more helpful error message if curl isn't installed

Before:

```
Updating only changed submodules
Submodules updated in 0.01 seconds
Traceback (most recent call last):
  File "./x.py", line 11, in <module>
    bootstrap.main()
  ...
  File "/home/joshua/src/rust/src/bootstrap/bootstrap.py", line 137, in run
    ret = subprocess.Popen(args, **kwargs)
  File "/usr/lib/python2.7/subprocess.py", line 394, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1047, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory
```

After:

```
Updating only changed submodules
Submodules updated in 0.01 seconds

spurious failure, trying again

spurious failure, trying again

spurious failure, trying again

spurious failure, trying again
failed to run: curl -s -y 30 -Y 10 --connect-timeout 30 --retry 3 -Sf -o /tmp/tmpSWF21P.sha256 https://static.rust-lang.org/dist/2020-04-22/rust-std-beta-x86_64-unknown-linux-gnu.tar.gz.sha256: [Errno 2] No such file or directory
Build completed unsuccessfully in 0:00:00
```

4 years agoRollup merge of #71591 - hermitcore:thread_create, r=hanna-kruppe
Dylan DPC [Wed, 6 May 2020 14:58:53 +0000 (16:58 +0200)]
Rollup merge of #71591 - hermitcore:thread_create, r=hanna-kruppe

use new interface to create threads on HermitCore

- the new interface allows to define the stack size
- increase the default stack size to 1 MByte

4 years agoRollup merge of #71269 - Mark-Simulacrum:sat-float-casts, r=nikic
Dylan DPC [Wed, 6 May 2020 14:58:50 +0000 (16:58 +0200)]
Rollup merge of #71269 - Mark-Simulacrum:sat-float-casts, r=nikic

Define UB in float-to-int casts to saturate

This closes #10184 by defining the behavior there to saturate infinities and values exceeding the integral range (on the lower or upper end). `NaN` is sent to zero.

4 years agoRemove warning about UB
Mark Rousskov [Tue, 21 Apr 2020 13:00:36 +0000 (09:00 -0400)]
Remove warning about UB

4 years agoFixup tests to test both const-eval and runtime
Mark Rousskov [Sun, 19 Apr 2020 15:53:51 +0000 (11:53 -0400)]
Fixup tests to test both const-eval and runtime

4 years agoPull in miri test cases
Mark Rousskov [Sat, 18 Apr 2020 22:43:08 +0000 (18:43 -0400)]
Pull in miri test cases

4 years agoDefine UB in float-to-int casts to saturate
Mark Rousskov [Sat, 18 Apr 2020 01:42:22 +0000 (21:42 -0400)]
Define UB in float-to-int casts to saturate

- Round to zero, and representable values cast directly.
- `NaN` goes to 0
- Values beyond the limits of the type are saturated to the "nearest value"
  (essentially rounding to zero, in some sense) in the integral type, so e.g.
  `f32::INFINITY` would go to `{u,i}N::MAX.`

4 years agomore precise vtable errors
Ralf Jung [Wed, 6 May 2020 11:46:01 +0000 (13:46 +0200)]
more precise vtable errors

4 years agotry_validation: handle multi-branching, and use macro for most remaining manual throw...
Ralf Jung [Wed, 6 May 2020 11:26:24 +0000 (13:26 +0200)]
try_validation: handle multi-branching, and use macro for most remaining manual throw_validation_failure sites

4 years agoAuto merge of #71949 - Dylan-DPC:rollup-0gg02wd, r=Dylan-DPC
bors [Wed, 6 May 2020 11:24:13 +0000 (11:24 +0000)]
Auto merge of #71949 - Dylan-DPC:rollup-0gg02wd, r=Dylan-DPC

Rollup of 6 pull requests

Successful merges:

 - #71510 (Btreemap iter intertwined)
 - #71727 (SipHasher with keys initialized to 0 should just use new())
 - #71889 (Explain our RwLock implementation)
 - #71905 (Add command aliases from Cargo to x.py commands)
 - #71914 (Backport 1.43.1 release notes to master)
 - #71921 (explain the types used in the open64 call)

Failed merges:

r? @ghost

4 years agoRollup merge of #71921 - RalfJung:open-mode, r=hanna-kruppe
Dylan DPC [Wed, 6 May 2020 11:22:22 +0000 (13:22 +0200)]
Rollup merge of #71921 - RalfJung:open-mode, r=hanna-kruppe

explain the types used in the open64 call

Fixes https://github.com/rust-lang/rust/issues/71915, where I learned about this quirk. I don't actually know what I am talking about here. ;)

4 years agoRollup merge of #71914 - pietroalbini:relnotes-1.43.1, r=Mark-Simulacrum
Dylan DPC [Wed, 6 May 2020 11:22:21 +0000 (13:22 +0200)]
Rollup merge of #71914 - pietroalbini:relnotes-1.43.1, r=Mark-Simulacrum

Backport 1.43.1 release notes to master

r? @Mark-Simulacrum

4 years agoRollup merge of #71905 - mibac138:x-cmd-alias, r=Mark-Simulacrum
Dylan DPC [Wed, 6 May 2020 11:22:19 +0000 (13:22 +0200)]
Rollup merge of #71905 - mibac138:x-cmd-alias, r=Mark-Simulacrum

Add command aliases from Cargo to x.py commands

Fixes #71357

4 years agoRollup merge of #71889 - RalfJung:rwlock, r=Amanieu
Dylan DPC [Wed, 6 May 2020 11:22:17 +0000 (13:22 +0200)]
Rollup merge of #71889 - RalfJung:rwlock, r=Amanieu

Explain our RwLock implementation

Turns out that [with the latest POSIX docs](https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_rwlock_wrlock.html), our `RwLock` implementation is actually correct. However, we cannot fully rely on that due to bugs in older glibc (fix released in 2016). Update the comments to explain that.

I also clarified our Mutex docs a bit and fixed another instance of https://github.com/rust-lang/rust/pull/55865.

r? @Amanieu
Fixes https://github.com/rust-lang/rust/issues/53127

4 years agoRollup merge of #71727 - hbina:simplified_usage, r=Mark-Simulacrum
Dylan DPC [Wed, 6 May 2020 11:22:13 +0000 (13:22 +0200)]
Rollup merge of #71727 - hbina:simplified_usage, r=Mark-Simulacrum

SipHasher with keys initialized to 0 should just use new()

I believe that is what the `new()` is for, for good reasons.

4 years agoRollup merge of #71510 - ssomers:btreemap_iter_intertwined, r=Mark-Simulacrum
Dylan DPC [Wed, 6 May 2020 11:22:05 +0000 (13:22 +0200)]
Rollup merge of #71510 - ssomers:btreemap_iter_intertwined, r=Mark-Simulacrum

Btreemap iter intertwined

3 commits:

1. Introduced benchmarks for `BTreeMap::iter()`. Benchmarks named `iter_20` were of the whole iteration process, so I renamed them. Also the benchmarks of `range` that I wrote earlier weren't very good. I included an (awkwardly named) one that compares `iter()` to `range(..)` on the same set, because the contrast is surprising:
```
 name                                           ns/iter
 btree::map::range_unbounded_unbounded          28,176
 btree::map::range_unbounded_vs_iter            89,369
```
Both dig up the same pair of leaf edges. `range(..)` also checks that some keys are correctly ordered, the only thing `iter()` does more is to copy the map's length.

2. Slightly refactoring the code to what I find more readable (not in chronological order of discovery), boosts performance:
```
>cargo-benchcmp.exe benchcmp a1 a2 --threshold 5
 name                                   a1 ns/iter  a2 ns/iter  diff ns/iter   diff %  speedup
 btree::map::find_rand_100              18          17                    -1   -5.56%   x 1.06
 btree::map::first_and_last_10k         64          71                     7   10.94%   x 0.90
 btree::map::iter_0                     2,939       2,209               -730  -24.84%   x 1.33
 btree::map::iter_1                     6,845       2,696             -4,149  -60.61%   x 2.54
 btree::map::iter_100                   8,556       3,672             -4,884  -57.08%   x 2.33
 btree::map::iter_10k                   9,292       5,884             -3,408  -36.68%   x 1.58
 btree::map::iter_1m                    10,268      6,510             -3,758  -36.60%   x 1.58
 btree::map::iteration_mut_100000       478,575     453,050          -25,525   -5.33%   x 1.06
 btree::map::range_unbounded_unbounded  28,176      36,169             7,993   28.37%   x 0.78
 btree::map::range_unbounded_vs_iter    89,369      38,290           -51,079  -57.16%   x 2.33
 btree::set::clone_100_and_remove_all   4,801       4,245               -556  -11.58%   x 1.13
 btree::set::clone_10k_and_remove_all   529,450     496,030          -33,420   -6.31%   x 1.07
```
But you can tell from the `range_unbounded_*` lines that, despite an unwarranted, vengeful attack on the range_unbounded_unbounded benchmark, this change still doesn't allow `iter()` to catch up with `range(..)`.

3. I guess that `range(..)` copes so well because it intertwines the leftmost and rightmost descend towards leaf edges, doing the two root node accesses close together, perhaps exploiting a CPU's internal pipelining? So the third commit distils a version of `range_search` (which we can't use directly because of the `Ord` bound), and we get another boost:
```
cargo-benchcmp.exe benchcmp a2 a3 --threshold 5
 name                                   a2 ns/iter  a3 ns/iter  diff ns/iter   diff %  speedup
 btree::map::first_and_last_100         40          43                     3    7.50%   x 0.93
 btree::map::first_and_last_10k         71          64                    -7   -9.86%   x 1.11
 btree::map::iter_0                     2,209       1,719               -490  -22.18%   x 1.29
 btree::map::iter_1                     2,696       2,205               -491  -18.21%   x 1.22
 btree::map::iter_100                   3,672       2,943               -729  -19.85%   x 1.25
 btree::map::iter_10k                   5,884       3,929             -1,955  -33.23%   x 1.50
 btree::map::iter_1m                    6,510       5,532               -978  -15.02%   x 1.18
 btree::map::iteration_mut_100000       453,050     476,667           23,617    5.21%   x 0.95
 btree::map::range_included_excluded    405,075     371,297          -33,778   -8.34%   x 1.09
 btree::map::range_included_included    427,577     397,440          -30,137   -7.05%   x 1.08
 btree::map::range_unbounded_unbounded  36,169      28,175            -7,994  -22.10%   x 1.28
 btree::map::range_unbounded_vs_iter    38,290      30,838            -7,452  -19.46%   x 1.24
```
But I think this is just fake news from the microbenchmarking media. `iter()` is still trying to catch up with `range(..)`. And we can sure do without another function. So I would skip this 3rd commit.

r? @Mark-Simulacrum

4 years agoconvert throw_validation_failure macro to same syntax as try_validation
Ralf Jung [Wed, 6 May 2020 09:42:18 +0000 (11:42 +0200)]
convert throw_validation_failure macro to same syntax as try_validation

4 years agoUpdate stacker and psm to 0.1.8
Mateusz Mikuła [Wed, 6 May 2020 09:29:30 +0000 (11:29 +0200)]
Update stacker and psm to 0.1.8

4 years agoproperly catch invalid-drop-fn errors
Ralf Jung [Wed, 6 May 2020 09:31:05 +0000 (11:31 +0200)]
properly catch invalid-drop-fn errors

4 years agoAdd comment for `Ord` implementation for array
Donough Liu [Wed, 6 May 2020 09:02:53 +0000 (17:02 +0800)]
Add comment for `Ord` implementation for array

4 years agoUpdate librustdoc ID tests
Guillaume Gomez [Wed, 6 May 2020 07:59:47 +0000 (09:59 +0200)]
Update librustdoc ID tests

4 years agoconvert remaining try_validation to new macro
Ralf Jung [Wed, 6 May 2020 07:22:52 +0000 (09:22 +0200)]
convert remaining try_validation to new macro

4 years agoAuto merge of #69464 - Marwes:detach_undo_log, r=nikomatsakis
bors [Wed, 6 May 2020 07:03:31 +0000 (07:03 +0000)]
Auto merge of #69464 - Marwes:detach_undo_log, r=nikomatsakis

perf: Unify the undo log of all snapshot types

Extracted from #69218 and extended to all the current snapshot types.

Since snapshotting is such a frequent action in the compiler and many of the scopes execute so little work, the act of creating the snapshot and rolling back empty/small snapshots end up showing in perf. By unifying all the logs into one the creation of snapshots becomes significantly cheaper at the cost of some complexity when combining the log with the specific data structures that are being mutated.

Depends on https://github.com/rust-lang-nursery/ena/pull/29

4 years agocomment out rustc-dev-guide in NIGHTLY_TOOLS
mark [Wed, 6 May 2020 02:46:12 +0000 (21:46 -0500)]
comment out rustc-dev-guide in NIGHTLY_TOOLS

4 years agoDetect errors caused by `async` block in 2015 edition
Esteban Küber [Sat, 2 May 2020 01:24:14 +0000 (18:24 -0700)]
Detect errors caused by `async` block in 2015 edition

4 years agouse trait_object_dummy_self instead of err
mark [Wed, 6 May 2020 02:32:08 +0000 (21:32 -0500)]
use trait_object_dummy_self instead of err

4 years agoIgnore SGX on a few ui tests
Mohsen Zohrevandi [Wed, 6 May 2020 01:12:50 +0000 (18:12 -0700)]
Ignore SGX on a few ui tests

4 years agoAuto merge of #71875 - Xanewok:update-rls, r=tmandry
bors [Tue, 5 May 2020 23:52:56 +0000 (23:52 +0000)]
Auto merge of #71875 - Xanewok:update-rls, r=tmandry

Update RLS

In addition to fixing the toolstate, this also changes the default
compilation model to the out-of-process one, which should hopefully
target considerable memory usage for long-running instances of the RLS.

Fixes #71753

r? @ghost

4 years agoadd test for insufficiently aligned vtable
Ralf Jung [Tue, 5 May 2020 22:13:41 +0000 (00:13 +0200)]
add test for insufficiently aligned vtable

4 years agovalidation: port more checks to the pattern-based macro (and give it the shorter...
Ralf Jung [Tue, 5 May 2020 22:07:53 +0000 (00:07 +0200)]
validation: port more checks to the pattern-based macro (and give it the shorter name)

4 years agoIndex IDs already used by rustdoc template
Guillaume Gomez [Tue, 5 May 2020 21:41:59 +0000 (23:41 +0200)]
Index IDs already used by rustdoc template

4 years agoAdd test for new implementations section title
Guillaume Gomez [Tue, 5 May 2020 11:53:42 +0000 (13:53 +0200)]
Add test for new implementations section title

4 years agoUpdate tests
Guillaume Gomez [Tue, 5 May 2020 11:48:47 +0000 (13:48 +0200)]
Update tests

4 years agoReplace title "Methods" with "Implementations"
Guillaume Gomez [Tue, 5 May 2020 11:48:32 +0000 (13:48 +0200)]
Replace title "Methods" with "Implementations"

4 years agoUnify winapi features for tools
Tyler Mandry [Tue, 5 May 2020 19:50:58 +0000 (12:50 -0700)]
Unify winapi features for tools

4 years agoUse -fvisibility=hidden for libunwind
Petr Hosek [Tue, 5 May 2020 19:41:23 +0000 (12:41 -0700)]
Use -fvisibility=hidden for libunwind

We don't want to export any symbols from Rust's version of libunwind
as these may collide with other copies of libunwind e.g. when linking
Rust staticlib together C/C++ libraries that have their own version.

4 years agoexplain the types used in the open64 call
Ralf Jung [Tue, 5 May 2020 14:43:57 +0000 (16:43 +0200)]
explain the types used in the open64 call

4 years agoUnify some syn 1.0 et al. features for tools
Igor Matuszewski [Tue, 5 May 2020 12:16:15 +0000 (14:16 +0200)]
Unify some syn 1.0 et al. features for tools

4 years agoUpdate RLS
Igor Matuszewski [Mon, 4 May 2020 12:51:31 +0000 (14:51 +0200)]
Update RLS

In addition to fixing the toolstate, this also changes the default
compilation model to the out-of-process one, which should hopefully
target considerable memory usage for long-running instances of the RLS.