]> git.lizzy.rs Git - rust.git/log
rust.git
5 years agoAuto merge of #56161 - RalfJung:vecdeque-stacked-borrows, r=SimonSapin
bors [Thu, 13 Dec 2018 07:12:19 +0000 (07:12 +0000)]
Auto merge of #56161 - RalfJung:vecdeque-stacked-borrows, r=SimonSapin

VecDeque: fix for stacked borrows

`VecDeque` violates a version of stacked borrows where creating a shared reference is not enough to make a location *mutably accessible* from raw pointers (and I think that is the version we want).  There are two problems:

* Creating a `NonNull<T>` from `&mut T` goes through `&T` (inferred for a `_`), then `*const T`, then `NonNull<T>`. That means in this stricter version of Stacked Borrows, we cannot actually write to such a `NonNull` because it was created from a shared reference! This PR fixes that by going from `&mut T` to `*mut T` to `*const T`.
* `VecDeque::drain` creates the `Drain` struct by *first* creating a `NonNull` from `self` (which is an `&mut VecDeque`), and *then* calling `self.buffer_as_mut_slice()`. The latter reborrows `self`, asserting that `self` is currently the unique pointer to access this `VecDeque`, and hence invalidating the `NonNull` that was created earlier. This PR fixes that by instead using `self.buffer_as_slice()`, which only performs read accesses and creates only shared references, meaning the raw pointer (`NonNull`) remains valid.

It is possible that other methods on `VecDeque` do something similar, miri's test coverage of `VecDeque` is sparse to say the least.

Cc @nikomatsakis @Gankro

5 years agoAuto merge of #56090 - nnethercote:filesearch, r=eddyb
bors [Thu, 13 Dec 2018 03:35:15 +0000 (03:35 +0000)]
Auto merge of #56090 - nnethercote:filesearch, r=eddyb

Overhaul `FileSearch` and `SearchPaths`

`FileSearch::search()` traverses one or more directories. For each
directory it generates a `Vec<PathBuf>` containing one element per file
in that directory.

In some benchmarks this occurs enough that the allocations done for the
`PathBuf`s are significant, and in practice a small number of
directories are being traversed over and over again. For example, when
compiling the `tokio-webpush-simple` benchmark, two directories are
traversed 58 times each. Each of these directories have more than 100
files.

We can do all the necessary traversals up front, when `Session` is created,
and get the `Vec<PathBuf>`s then.

This reduces instruction counts on several benchmarks by 1--5%.

r? @alexcrichton

CC @eddyb, @michaelwoerister, @nikomatsakis

5 years agoAuto merge of #55982 - alexcrichton:panic-extern-abort, r=zackmdavis
bors [Thu, 13 Dec 2018 01:12:13 +0000 (01:12 +0000)]
Auto merge of #55982 - alexcrichton:panic-extern-abort, r=zackmdavis

rustc: Switch `extern` functions to abort by default on panic

This was intended to land way back in 1.24, but it was backed out due to
breakage which has long since been fixed. An unstable `#[unwind]`
attribute can be used to tweak the behavior here, but this is currently
simply switching rustc's internal default to abort-by-default if an
`extern` function panics, making our codegen sound primarily (as
currently you can produce UB with safe code)

Closes #52652

5 years agoAuto merge of #55992 - cramertj:pin-docs, r=alexcrichton
bors [Wed, 12 Dec 2018 21:04:34 +0000 (21:04 +0000)]
Auto merge of #55992 - cramertj:pin-docs, r=alexcrichton

Expand std::pin module docs and rename std::pin::Pinned to PhantomPinned

cc https://github.com/rust-lang/rust/issues/49150, https://github.com/rust-lang/rust/issues/55766

r? @withoutboats

5 years agoRename Pinned marker type to PhantomPinned
Taylor Cramer [Thu, 15 Nov 2018 23:49:16 +0000 (15:49 -0800)]
Rename Pinned marker type to PhantomPinned

5 years agoExpand documantation for std::pin module
Taylor Cramer [Thu, 15 Nov 2018 23:46:17 +0000 (15:46 -0800)]
Expand documantation for std::pin module

5 years agorustc: Switch `extern` functions to abort by default on panic
Alex Crichton [Thu, 15 Nov 2018 14:17:58 +0000 (06:17 -0800)]
rustc: Switch `extern` functions to abort by default on panic

This was intended to land way back in 1.24, but it was backed out due to
breakage which has long since been fixed. An unstable `#[unwind]`
attribute can be used to tweak the behavior here, but this is currently
simply switching rustc's internal default to abort-by-default if an
`extern` function panics, making our codegen sound primarily (as
currently you can produce UB with safe code)

Closes #52652

5 years agoAuto merge of #56735 - Mark-Simulacrum:fix-sign, r=alexcrichton
bors [Wed, 12 Dec 2018 15:37:54 +0000 (15:37 +0000)]
Auto merge of #56735 - Mark-Simulacrum:fix-sign, r=alexcrichton

Fix gpg signing in manifest builder

GPG versions 2.x+ require that --batch be passed if --passphrase-fd is
to be accepted.

From the man page:

       --passphrase-fd n
              Read  the passphrase from file descriptor n. Only the first line
              will be read from file descriptor n. If you use  0  for  n,  the
              passphrase  will  be  read  from STDIN. This can only be used if
              only one passphrase is supplied.

              Note that this passphrase is only used if the option --batch has
              also been given.  This is different from GnuPG version 1.x.

5 years agoAuto merge of #56092 - alexcrichton:no-more-std-subodules, r=Mark-Simulacrum
bors [Wed, 12 Dec 2018 13:05:59 +0000 (13:05 +0000)]
Auto merge of #56092 - alexcrichton:no-more-std-subodules, r=Mark-Simulacrum

std: Depend directly on crates.io crates

Ever since we added a Cargo-based build system for the compiler the
standard library has always been a little special, it's never been able
to depend on crates.io crates for runtime dependencies. This has been a
result of various limitations, namely that Cargo doesn't understand that
crates from crates.io depend on libcore, so Cargo tries to build crates
before libcore is finished.

I had an idea this afternoon, however, which lifts the strategy
from #52919 to directly depend on crates.io crates from the standard
library. After all is said and done this removes a whopping three
submodules that we need to manage!

The basic idea here is that for any crate `std` depends on it adds an
*optional* dependency on an empty crate on crates.io, in this case named
`rustc-std-workspace-core`. This crate is overridden via `[patch]` in
this repository to point to a local crate we write, and *that* has a
`path` dependency on libcore.

Note that all `no_std` crates also depend on `compiler_builtins`, but if
we're not using submodules we can publish `compiler_builtins` to
crates.io and all crates can depend on it anyway! The basic strategy
then looks like:

* The standard library (or some transitive dep) decides to depend on a
  crate `foo`.
* The standard library adds

  ```toml
  [dependencies]
  foo = { version = "0.1", features = ['rustc-dep-of-std'] }
  ```
* The crate `foo` has an optional dependency on `rustc-std-workspace-core`
* The crate `foo` has an optional dependency on `compiler_builtins`
* The crate `foo` has a feature `rustc-dep-of-std` which activates these
  crates and any other necessary infrastructure in the crate.

A sample commit for `dlmalloc` [turns out to be quite simple][commit].
After that all `no_std` crates should largely build "as is" and still be
publishable on crates.io! Notably they should be able to continue to use
stable Rust if necessary, since the `rename-dependency` feature of Cargo
is soon stabilizing.

As a proof of concept, this commit removes the `dlmalloc`,
`libcompiler_builtins`, and `libc` submodules from this repository. Long
thorns in our side these are now gone for good and we can directly
depend on crates.io! It's hoped that in the long term we can bring in
other crates as necessary, but for now this is largely intended to
simply make it easier to manage these crates and remove submodules.

This should be a transparent non-breaking change for all users, but one
possible stickler is that this almost for sure breaks out-of-tree
`std`-building tools like `xargo` and `cargo-xbuild`. I think it should
be relatively easy to get them working, however, as all that's needed is
an entry in the `[patch]` section used to build the standard library.
Hopefully we can work with these tools to solve this problem!

[commit]: https://github.com/alexcrichton/dlmalloc-rs/commit/28ee12db813a3b650a7c25d1c36d2c17dcb88ae3

5 years agoAuto merge of #56039 - ljedrz:sorted_map_upgrades, r=matthewjasper
bors [Wed, 12 Dec 2018 10:44:32 +0000 (10:44 +0000)]
Auto merge of #56039 - ljedrz:sorted_map_upgrades, r=matthewjasper

SortedMap upgrades

- change the impl `From<Iterator<I>>` to `FromIterator<I>`
- make the impls of `Index` and `get` match the ones from `BTreeMap`
- add `is_empty` and `contains_key`
- readability/whitespace fixes
- add a proper `Iterator` implementation
- `impl IntoIterator for &SortedMap`

These changes make `SortedMap` almost a drop-in replacement for `BTreeMap`, at least to the point it is used by `rustc`; what is left is `Entry` API that I'd like to follow this PR with, and possibly implementing `ParallelIterator`.

5 years agoAuto merge of #56010 - euclio:intra-doc-spans, r=QuietMisdreavus
bors [Wed, 12 Dec 2018 08:18:13 +0000 (08:18 +0000)]
Auto merge of #56010 - euclio:intra-doc-spans, r=QuietMisdreavus

fix intra-link resolution spans in block comments

This commit improves the calculation of code spans for intra-doc
resolution failures. All sugared doc comments should now have the
correct spans, including those where the comment is longer than the
docs.

It also fixes an issue where the spans were calculated incorrectly for
certain unsugared doc comments. The diagnostic will now always use the
span of the attributes, as originally intended.

Fixes #55964.

r? @QuietMisdreavus

5 years agoRemove some env vars for rustdoc invocations.
Nicholas Nethercote [Wed, 12 Dec 2018 05:28:43 +0000 (16:28 +1100)]
Remove some env vars for rustdoc invocations.

In an attempt to avoid "thread '<unnamed>' panicked at 'failed to
acquire jobserver token: Bad file descriptor" errors.

5 years agostd: Depend directly on crates.io crates
Alex Crichton [Tue, 20 Nov 2018 05:52:50 +0000 (21:52 -0800)]
std: Depend directly on crates.io crates

Ever since we added a Cargo-based build system for the compiler the
standard library has always been a little special, it's never been able
to depend on crates.io crates for runtime dependencies. This has been a
result of various limitations, namely that Cargo doesn't understand that
crates from crates.io depend on libcore, so Cargo tries to build crates
before libcore is finished.

I had an idea this afternoon, however, which lifts the strategy
from #52919 to directly depend on crates.io crates from the standard
library. After all is said and done this removes a whopping three
submodules that we need to manage!

The basic idea here is that for any crate `std` depends on it adds an
*optional* dependency on an empty crate on crates.io, in this case named
`rustc-std-workspace-core`. This crate is overridden via `[patch]` in
this repository to point to a local crate we write, and *that* has a
`path` dependency on libcore.

Note that all `no_std` crates also depend on `compiler_builtins`, but if
we're not using submodules we can publish `compiler_builtins` to
crates.io and all crates can depend on it anyway! The basic strategy
then looks like:

* The standard library (or some transitive dep) decides to depend on a
  crate `foo`.
* The standard library adds

  ```toml
  [dependencies]
  foo = { version = "0.1", features = ['rustc-dep-of-std'] }
  ```
* The crate `foo` has an optional dependency on `rustc-std-workspace-core`
* The crate `foo` has an optional dependency on `compiler_builtins`
* The crate `foo` has a feature `rustc-dep-of-std` which activates these
  crates and any other necessary infrastructure in the crate.

A sample commit for `dlmalloc` [turns out to be quite simple][commit].
After that all `no_std` crates should largely build "as is" and still be
publishable on crates.io! Notably they should be able to continue to use
stable Rust if necessary, since the `rename-dependency` feature of Cargo
is soon stabilizing.

As a proof of concept, this commit removes the `dlmalloc`,
`libcompiler_builtins`, and `libc` submodules from this repository. Long
thorns in our side these are now gone for good and we can directly
depend on crates.io! It's hoped that in the long term we can bring in
other crates as necessary, but for now this is largely intended to
simply make it easier to manage these crates and remove submodules.

This should be a transparent non-breaking change for all users, but one
possible stickler is that this almost for sure breaks out-of-tree
`std`-building tools like `xargo` and `cargo-xbuild`. I think it should
be relatively easy to get them working, however, as all that's needed is
an entry in the `[patch]` section used to build the standard library.
Hopefully we can work with these tools to solve this problem!

[commit]: https://github.com/alexcrichton/dlmalloc-rs/commit/28ee12db813a3b650a7c25d1c36d2c17dcb88ae3

5 years agoFix gpg signing in manifest builder
Mark Rousskov [Wed, 12 Dec 2018 02:10:45 +0000 (19:10 -0700)]
Fix gpg signing in manifest builder

GPG versions 2.x+ require that --batch be passed if --passphrase-fd is
to be accepted.

5 years agoReplace `FileSearch::for_each_lib_search_path` with `search_paths`.
Nicholas Nethercote [Fri, 23 Nov 2018 02:36:41 +0000 (13:36 +1100)]
Replace `FileSearch::for_each_lib_search_path` with `search_paths`.

Returning an iterator leads to nicer code all around.

5 years agoAvoid regenerating the `Vec<PathBuf>` in `FileSearch::search()`.
Nicholas Nethercote [Tue, 20 Nov 2018 00:06:45 +0000 (11:06 +1100)]
Avoid regenerating the `Vec<PathBuf>` in `FileSearch::search()`.

`FileSearch::search()` traverses one or more directories. For each
directory it generates a `Vec<PathBuf>` containing one element per file
in that directory.

In some benchmarks this occurs enough that the allocations done for the
`PathBuf`s are significant, and in practice a small number of
directories are being traversed over and over again. For example, when
compiling the `tokio-webpush-simple` benchmark, two directories are
traversed 58 times each. Each of these directories have more than 100
files.

This commit changes things so that all the `Vec<PathBuf>`s that will be
needed by a `Session` are precomputed when that `Session` is created;
they are stored in `SearchPath`. `FileSearch` gets a reference to the
necessary `SearchPath`s. This reduces instruction counts on several
benchmarks by 1--5%.

The commit also removes the barely-used `visited_dirs` hash in
`for_each_lib_searchPath`. It only detects if `tlib_path` is the same as
one of the previously seen paths, which is unlikely.

5 years agoIntroduce `SearchPath` and replace `SearchPaths` with `Vec<SearchPath>`.
Nicholas Nethercote [Thu, 22 Nov 2018 05:33:07 +0000 (16:33 +1100)]
Introduce `SearchPath` and replace `SearchPaths` with `Vec<SearchPath>`.

It's more idiomatic, makes the code shorter, and will help with the next
commit.

5 years agoRemove `Session::sysroot()`.
Nicholas Nethercote [Thu, 22 Nov 2018 04:49:48 +0000 (15:49 +1100)]
Remove `Session::sysroot()`.

Instead of maybe storing its own sysroot and maybe deferring to the one
in `Session::opts`, just clone the latter when necessary so one is
always directly available. This removes the need for the getter.

5 years agoAvoid a useless `FxHashSet::insert` in `FileSearch::for_each_lib_search_path`.
Nicholas Nethercote [Wed, 21 Nov 2018 11:03:59 +0000 (22:03 +1100)]
Avoid a useless `FxHashSet::insert` in `FileSearch::for_each_lib_search_path`.

5 years agoAuto merge of #53497 - fukatani:test-debuginfo-function-call, r=tromey
bors [Tue, 11 Dec 2018 16:27:49 +0000 (16:27 +0000)]
Auto merge of #53497 - fukatani:test-debuginfo-function-call, r=tromey

Test with gdb8.2 and add debuginfo printing function call test

As far as I can see, `print function()` is not tested. It is important feature for debugging.

5 years agoAuto merge of #56243 - RalfJung:test-deterministic, r=alexcrichton
bors [Tue, 11 Dec 2018 14:04:15 +0000 (14:04 +0000)]
Auto merge of #56243 - RalfJung:test-deterministic, r=alexcrichton

libtest: Use deterministic HashMap, avoid spawning thread if there is no concurrency

It seems desirable to make a test and bench runner deterministic, which this achieves by using a deterministic hasher. Also, we we only have 1 thread, we don't bother spawning one and just use the main thread.

The motivation for this is to be able to run the test harness in miri, where we can neither access the OS RNG, nor spawn threads.

5 years agoAdd function call test, Update gdb and test docker image install gdb by ppa.
Unknown [Sun, 19 Aug 2018 14:51:57 +0000 (23:51 +0900)]
Add function call test, Update gdb and test docker image install gdb by ppa.

5 years agouse an enum instead of bool
Ralf Jung [Tue, 11 Dec 2018 10:02:23 +0000 (11:02 +0100)]
use an enum instead of bool

5 years agoAuto merge of #56703 - alexcrichton:fix-tools, r=Mark-Simulacrum
bors [Tue, 11 Dec 2018 08:14:14 +0000 (08:14 +0000)]
Auto merge of #56703 - alexcrichton:fix-tools, r=Mark-Simulacrum

Fix build of the `build-manifest` tool

Accidentally broken in #56258!

5 years agoBuild manifest tool on mingw-check builder
Mark Rousskov [Tue, 11 Dec 2018 03:40:04 +0000 (20:40 -0700)]
Build manifest tool on mingw-check builder

This builder is not really the correct place to put this, but it
definitely has the time budget and checking this tool builds on just one
platform is more than sufficient.

5 years agoFix build of the `build-manifest` tool
Alex Crichton [Tue, 11 Dec 2018 03:34:47 +0000 (19:34 -0800)]
Fix build of the `build-manifest` tool

Accidentally broken in #56258!

5 years agoAuto merge of #56627 - alexcrichton:update-cargo, r=alexcrichton
bors [Tue, 11 Dec 2018 03:22:10 +0000 (03:22 +0000)]
Auto merge of #56627 - alexcrichton:update-cargo, r=alexcrichton

Update Cargo submodule and its dependencies

Hopefully just another routine update!

So far this starts to enable the `std::arch` in stage0 builds of rustc.
This means that we may need stage0/not(stage0) in stdsimd itself, but
more and more code is starting to use `std::arch` so I think it's time
to start shifting the balance of work here.

5 years agofix intra-link resolution spans in block comments
Andy Russell [Mon, 10 Dec 2018 17:24:39 +0000 (12:24 -0500)]
fix intra-link resolution spans in block comments

This commit improves the calculation of code spans for intra-doc
resolution failures. All sugared doc comments should now have the
correct spans, including those where the comment is longer than the
docs.

It also fixes an issue where the spans were calculated incorrectly for
certain unsugared doc comments. The diagnostic will now always use the
span of the attributes, as originally intended.

Fixes #55964.

5 years agoUpdate Cargo submodule and its dependencies
Alex Crichton [Sat, 8 Dec 2018 11:06:54 +0000 (03:06 -0800)]
Update Cargo submodule and its dependencies

Hopefully just another routine update!

So far this starts to enable the `std::arch` in stage0 builds of rustc.
This means that we may need stage0/not(stage0) in stdsimd itself, but
more and more code is starting to use `std::arch` so I think it's time
to start shifting the balance of work here.

5 years agoAuto merge of #56688 - GuillaumeGomez:rollup, r=GuillaumeGomez
bors [Mon, 10 Dec 2018 21:42:20 +0000 (21:42 +0000)]
Auto merge of #56688 - GuillaumeGomez:rollup, r=GuillaumeGomez

Rollup of 5 pull requests

Successful merges:

 - #56491 (emit error with span for empty asserts)
 - #56633 (Fix right arrow size for crate filter)
 - #56641 (fix span for invalid number of parameters in trait method)
 - #56656 (Fix typo)
 - #56661 (Add regression test for ICE)

Failed merges:

r? @ghost

5 years agoRollup merge of #56661 - aelred:issue-55846, r=Mark-Simulacrum
Guillaume Gomez [Mon, 10 Dec 2018 21:02:02 +0000 (22:02 +0100)]
Rollup merge of #56661 - aelred:issue-55846, r=Mark-Simulacrum

Add regression test for ICE

Fixes #55846 with a minimal (or as best as I can manage) test case. I tested this against 1.30.0 manually to confirm it crashes.

The issue seemed to have something to do with associated types. It's possible someone with more knowledge can shrink the test case down further, or make it clearer.

5 years agoRollup merge of #56656 - BeatButton:liballoc_string_typo, r=Centril
Guillaume Gomez [Mon, 10 Dec 2018 21:02:01 +0000 (22:02 +0100)]
Rollup merge of #56656 - BeatButton:liballoc_string_typo, r=Centril

Fix typo

5 years agoRollup merge of #56641 - GuillaumeGomez:span-trait-method-invalid-nb-parameters,...
Guillaume Gomez [Mon, 10 Dec 2018 21:02:00 +0000 (22:02 +0100)]
Rollup merge of #56641 - GuillaumeGomez:span-trait-method-invalid-nb-parameters, r=estebank

fix span for invalid number of parameters in trait method

Fixes #56582.

5 years agoRollup merge of #56633 - GuillaumeGomez:fix-right-arrow-display, r=QuietMisdreavus
Guillaume Gomez [Mon, 10 Dec 2018 21:01:58 +0000 (22:01 +0100)]
Rollup merge of #56633 - GuillaumeGomez:fix-right-arrow-display, r=QuietMisdreavus

Fix right arrow size for crate filter

This bug only appears when a crate has a long name:

<img width="1440" alt="screenshot 2018-12-08 at 16 36 21" src="https://user-images.githubusercontent.com/3050060/49687728-7de06180-fb07-11e8-8554-d32597351fac.png">

With this fix, it goes back to normal, whatever the size:

<img width="1440" alt="screenshot 2018-12-08 at 16 36 05" src="https://user-images.githubusercontent.com/3050060/49687730-8769c980-fb07-11e8-91b7-b5e1961211a2.png">

r? @QuietMisdreavus

5 years agoRollup merge of #56491 - euclio:assert-error, r=estebank
Guillaume Gomez [Mon, 10 Dec 2018 21:01:57 +0000 (22:01 +0100)]
Rollup merge of #56491 - euclio:assert-error, r=estebank

emit error with span for empty asserts

Fixes #55547.

5 years agoAuto merge of #56666 - Xanewok:rustfmt, r=kennytm
bors [Mon, 10 Dec 2018 14:40:41 +0000 (14:40 +0000)]
Auto merge of #56666 - Xanewok:rustfmt, r=kennytm

Update Rustfmt and RLS

Supersedes #56652, hopefully fixes toolstate.

r? @SimonSapin

5 years agosorted_map: add contains_key function
ljedrz [Sun, 18 Nov 2018 18:00:22 +0000 (19:00 +0100)]
sorted_map: add contains_key function

5 years agosorted_map: readability/whitespace fixes
ljedrz [Sun, 18 Nov 2018 09:44:49 +0000 (10:44 +0100)]
sorted_map: readability/whitespace fixes

5 years agosorted_map: add is_empty
ljedrz [Sun, 18 Nov 2018 09:44:25 +0000 (10:44 +0100)]
sorted_map: add is_empty

5 years agosorted_map: make the impls of Index and get match ones from BTreeMap
ljedrz [Sun, 18 Nov 2018 09:43:50 +0000 (10:43 +0100)]
sorted_map: make the impls of Index and get match ones from BTreeMap

5 years agosorted_map: change From<Iterator<I>> to FromIterator<I>
ljedrz [Sun, 18 Nov 2018 09:41:40 +0000 (10:41 +0100)]
sorted_map: change From<Iterator<I>> to FromIterator<I>

5 years agoAuto merge of #56157 - RalfJung:park, r=nagisa
bors [Mon, 10 Dec 2018 12:19:47 +0000 (12:19 +0000)]
Auto merge of #56157 - RalfJung:park, r=nagisa

expand thread::park explanation

Cc @carllerche @parched @stjepang

5 years agoAuto merge of #56624 - RalfJung:miri, r=oli-obk
bors [Mon, 10 Dec 2018 09:58:22 +0000 (09:58 +0000)]
Auto merge of #56624 - RalfJung:miri, r=oli-obk

update miri

r? @oli-obk

5 years agoBump failure to 0.1.3
Igor Matuszewski [Mon, 10 Dec 2018 09:57:43 +0000 (10:57 +0100)]
Bump failure to 0.1.3

We use failure_derive 0.1.3, try to work around
```
error[E0433]: failed to resolve: could not find `AsFail` in `failure`
```

5 years agoUpdate in-tree rustfmt to 1.0.1 to dedup versions
Igor Matuszewski [Mon, 10 Dec 2018 08:05:37 +0000 (09:05 +0100)]
Update in-tree rustfmt to 1.0.1 to dedup versions

5 years agoUpdate RLS
Igor Matuszewski [Mon, 10 Dec 2018 07:58:08 +0000 (08:58 +0100)]
Update RLS

5 years agoUpdate rustfmt
Simon Sapin [Sun, 9 Dec 2018 18:14:49 +0000 (19:14 +0100)]
Update rustfmt

Pick up https://github.com/rust-lang/rustfmt/pull/3236

5 years agoAuto merge of #56369 - nnethercote:rm-Delimited, r=petrochenkov
bors [Mon, 10 Dec 2018 03:33:17 +0000 (03:33 +0000)]
Auto merge of #56369 - nnethercote:rm-Delimited, r=petrochenkov

Remove `tokenstream::Delimited`.

Because it's an extra type layer that doesn't really help; in a couple
of places it actively gets in the way, and overall removing it makes the
code nicer. It does, however, move `tokenstream::TokenTree` further away
from the `TokenTree` in `quote.rs`.

More importantly, this change reduces the size of `TokenStream` from 48
bytes to 40 bytes on x86-64, which is enough to slightly reduce
instruction counts on numerous benchmarks, the best by 1.5%.

Note that `open_tt` and `close_tt` have gone from being methods on
`Delimited` to associated methods of `TokenTree`.

5 years agoAdd regression test for issue #55846
Felix Chapman [Mon, 10 Dec 2018 02:49:19 +0000 (02:49 +0000)]
Add regression test for issue #55846

5 years agoRemove `tokenstream::Delimited`.
Nicholas Nethercote [Thu, 29 Nov 2018 23:02:04 +0000 (10:02 +1100)]
Remove `tokenstream::Delimited`.

Because it's an extra type layer that doesn't really help; in a couple
of places it actively gets in the way, and overall removing it makes the
code nicer. It does, however, move `tokenstream::TokenTree` further away
from the `TokenTree` in `quote.rs`.

More importantly, this change reduces the size of `TokenStream` from 48
bytes to 40 bytes on x86-64, which is enough to slightly reduce
instruction counts on numerous benchmarks, the best by 1.5%.

Note that `open_tt` and `close_tt` have gone from being methods on
`Delimited` to associated methods of `TokenTree`.

5 years agoAuto merge of #56269 - nnethercote:_match-Matrix-SmallVec, r=simulacrum
bors [Mon, 10 Dec 2018 01:08:05 +0000 (01:08 +0000)]
Auto merge of #56269 - nnethercote:_match-Matrix-SmallVec, r=simulacrum

Use a `SmallVec` within `_match::Matrix`.

This avoids allocations.

5 years agoUse a `SmallVec` within `_match::Matrix`.
Nicholas Nethercote [Wed, 28 Nov 2018 02:38:46 +0000 (13:38 +1100)]
Use a `SmallVec` within `_match::Matrix`.

This commit also fixes up lifetimes a bit:

- Renames `'a` as `'p` when used with `Matrix` and `Pattern`, for
  consistency.

- Removes some unnecessary `'p` lifetimes on some function arguments.

- Adds some missing lifetime parameters.

5 years agoAuto merge of #56463 - ljedrz:slice_concat_join, r=nikic
bors [Sun, 9 Dec 2018 22:39:44 +0000 (22:39 +0000)]
Auto merge of #56463 - ljedrz:slice_concat_join, r=nikic

slice: tweak concat & join

- use `sum` instead of `fold` (readability)
- adjust the capacity for `join` - the number of separators is `n - 1`, not `n`; proof:
```
fn main() {
    let a = [[1, 2], [4, 5]];
    let v = a.join(&3);

    assert_ne!(v.len(), v.capacity()); // len is 5, capacity is 6
}
```

5 years agoUpgrade `smallvec` to 0.6.7 and use the new `may_dangle` feature.
Nicholas Nethercote [Wed, 28 Nov 2018 21:52:22 +0000 (08:52 +1100)]
Upgrade `smallvec` to 0.6.7 and use the new `may_dangle` feature.

5 years agoFix typo
BeatButton [Sun, 9 Dec 2018 21:10:20 +0000 (14:10 -0700)]
Fix typo

5 years agoAuto merge of #56444 - petrochenkov:uifull, r=davidtwco
bors [Sun, 9 Dec 2018 18:49:12 +0000 (18:49 +0000)]
Auto merge of #56444 - petrochenkov:uifull, r=davidtwco

Move compile-fail-fulldeps tests to UI

cc https://github.com/rust-lang/rust/issues/53353

r? @davidtwco

5 years agoFix rebase + Add missing `// force-host`
Vadim Petrochenkov [Fri, 7 Dec 2018 21:53:15 +0000 (00:53 +0300)]
Fix rebase + Add missing `// force-host`

5 years agoRemove compile-fail-fulldeps test suite
Vadim Petrochenkov [Sun, 2 Dec 2018 20:07:22 +0000 (23:07 +0300)]
Remove compile-fail-fulldeps test suite

5 years agoMove some tests from ui-fulldeps to ui
Vadim Petrochenkov [Sun, 2 Dec 2018 19:59:50 +0000 (22:59 +0300)]
Move some tests from ui-fulldeps to ui

5 years agoMove compile-fail-fulldeps tests to ui-fulldeps
Vadim Petrochenkov [Sun, 2 Dec 2018 19:42:43 +0000 (22:42 +0300)]
Move compile-fail-fulldeps tests to ui-fulldeps

5 years agoMove former compile-fail-fulldeps tests to ui
Vadim Petrochenkov [Sun, 2 Dec 2018 19:27:37 +0000 (22:27 +0300)]
Move former compile-fail-fulldeps tests to ui

5 years agoAuto merge of #56644 - jens1o:patch-1, r=pietroalbini
bors [Sun, 9 Dec 2018 16:15:32 +0000 (16:15 +0000)]
Auto merge of #56644 - jens1o:patch-1, r=pietroalbini

Fix security link in CONTRIBUTING to its new place

avoiding an 404

5 years agoFix security link in CONTRIBUTING to its new place
Jens Hausdorf [Sun, 9 Dec 2018 14:25:23 +0000 (15:25 +0100)]
Fix security link in CONTRIBUTING to its new place

avoiding an 404

5 years agoAuto merge of #56631 - matthiaskrgr:clippy, r=nikic
bors [Sun, 9 Dec 2018 11:56:32 +0000 (11:56 +0000)]
Auto merge of #56631 - matthiaskrgr:clippy, r=nikic

submodules: update clippy from 1df5766c to a3c77f6a

fixes clippy toolstate

Changes:
````
s/rustfmt-preview/rustfmt/
Swap if branches
Fix c_void false positive caused by libc refactoring
rustup https://github.com/rust-lang/rust/pull/56502 ( .hir -> .hir() )
typo: emum → enum
Fix format.
Add sysroot gettinh code to dogfood tests.
Add sysroot getting code to tests.
Don't try to determine sysroot. rustc_driver will use default value.
Fix suggestion for multiple derefs
Fix `clone_on_copy` not detecting derefs sometimes
````
r? @oli-obk

5 years agoAuto merge of #56630 - sinkuu:core_iter, r=kennytm
bors [Sun, 9 Dec 2018 00:18:34 +0000 (00:18 +0000)]
Auto merge of #56630 - sinkuu:core_iter, r=kennytm

Resolve FIXME in libcore/iter/mod.rs

and makes a few improvements.

5 years agoAuto merge of #56615 - integer32llc:update-book, r=GuillaumeGomez
bors [Sat, 8 Dec 2018 22:00:09 +0000 (22:00 +0000)]
Auto merge of #56615 - integer32llc:update-book, r=GuillaumeGomez

Update the book to fix some edition-related bugs

I'd love to have this included in a point release if one happens, but the changes aren't worth doing a point release on their own IMO. I'd definitely like to see this backported to beta.

The most urgent changes included here are:

- Chapter 19.6, on macros (including the macro changes that just stabilized), [is cut off](https://github.com/rust-lang/book/issues/1668) because of an ill-placed newline in a comment that [pulldown-cmark interprets incorrectly](https://github.com/raphlinus/pulldown-cmark/issues/124).
- [The `Cargo.toml` shown in the Guessing Game example in Chapter 2 (and one in Chapter 14) doesn't have `edition="2018"`](https://github.com/rust-lang/book/pull/1671), which can be confusing depending on whether the readers have it in theirs or not, think they should remove it if they have it, and the rest of the chapter assumes it's there and the code doesn't compile if you don't have it.
- The redirects implemented as part of only shipping the 2018 edition of the book sometimes lead to [having to click through 2 redirect pages](https://github.com/rust-lang/book/pull/1667) when it could be just one.

There are other small corrections included that were made since the last time the book was updated, but those aren't urgent.

cc @steveklabnik

5 years agoAuto merge of #56616 - estebank:issue-56539, r=davidtwco
bors [Sat, 8 Dec 2018 19:34:43 +0000 (19:34 +0000)]
Auto merge of #56616 - estebank:issue-56539, r=davidtwco

Encode `TraitAlias` as if they were `Trait`

Fix #56539.

5 years agofix span for invalid number of parameters in trait method
Guillaume Gomez [Sat, 8 Dec 2018 19:04:14 +0000 (20:04 +0100)]
fix span for invalid number of parameters in trait method

5 years agoAuto merge of #56632 - Eijebong:synup, r=Mark-Simulacrum
bors [Sat, 8 Dec 2018 17:06:19 +0000 (17:06 +0000)]
Auto merge of #56632 - Eijebong:synup, r=Mark-Simulacrum

Reduce the number of syn versions compiled from 4 to 2

The last remaining one comes from mdbook. Unfortunately updating it
breaks everything

5 years agoFix right arrow size for crate filter
Guillaume Gomez [Sat, 8 Dec 2018 15:35:51 +0000 (16:35 +0100)]
Fix right arrow size for crate filter

5 years agoDon't call size_hint of underlying iterator needlessly
Shotaro Yamada [Sat, 8 Dec 2018 11:16:36 +0000 (20:16 +0900)]
Don't call size_hint of underlying iterator needlessly

5 years agoResolve FIXME and cleanup
Shotaro Yamada [Sat, 8 Dec 2018 11:15:49 +0000 (20:15 +0900)]
Resolve FIXME and cleanup

5 years agoOverride Cycle::try_fold
Shotaro Yamada [Sat, 8 Dec 2018 11:09:44 +0000 (20:09 +0900)]
Override Cycle::try_fold

 name                            old ns/iter  new ns/iter  diff ns/iter   diff %  speedup
 iter::bench_cycle_take_ref_sum  927,152      927,194                42    0.00%   x 1.00
 iter::bench_cycle_take_sum      938,129      603,492          -334,637  -35.67%   x 1.55

5 years agoReduce the numbers of syn versions compiled from 4 to 2
Bastien Orivel [Sat, 8 Dec 2018 14:11:47 +0000 (15:11 +0100)]
Reduce the numbers of syn versions compiled from 4 to 2

The last remaining one comes from mdbook. Unfortunately updating it
breaks everything

5 years agosubmodules: update clippy from 1df5766c to a3c77f6a
Matthias Krüger [Sat, 8 Dec 2018 14:02:12 +0000 (15:02 +0100)]
submodules: update clippy from 1df5766c to a3c77f6a

Changes:
````
s/rustfmt-preview/rustfmt/
Swap if branches
Fix c_void false positive caused by libc refactoring
rustup https://github.com/rust-lang/rust/pull/56502 ( .hir -> .hir() )
typo: emum → enum
Fix format.
Add sysroot gettinh code to dogfood tests.
Add sysroot getting code to tests.
Don't try to determine sysroot. rustc_driver will use default value.
Fix suggestion for multiple derefs
Fix `clone_on_copy` not detecting derefs sometimes
````

5 years agoupdate miri
Ralf Jung [Sat, 8 Dec 2018 10:09:02 +0000 (11:09 +0100)]
update miri

5 years agoAuto merge of #56623 - Centril:rollup, r=Centril
bors [Sat, 8 Dec 2018 09:56:32 +0000 (09:56 +0000)]
Auto merge of #56623 - Centril:rollup, r=Centril

Rollup of 6 pull requests

Successful merges:

 - #56248 (Suggest an appropriate token when encountering `pub Ident<'a>`)
 - #56597 (Improve the usage message for `-Z dump-mir`.)
 - #56599 (codegen: Fix va_list - aarch64 iOS/Windows)
 - #56602 (Fix the just-introduced ptr::hash docs)
 - #56620 (resolve: Reduce some clutter in import ambiguity errors)
 - #56621 (Add missing comma in Generators)

Failed merges:

r? @ghost

5 years agoRollup merge of #56621 - Morganamilo:fix-generators-comma, r=Centril
Mazdak Farrokhzad [Sat, 8 Dec 2018 07:43:50 +0000 (08:43 +0100)]
Rollup merge of #56621 - Morganamilo:fix-generators-comma, r=Centril

Add missing comma in Generators

5 years agoRollup merge of #56620 - petrochenkov:noclutter, r=estebank
Mazdak Farrokhzad [Sat, 8 Dec 2018 07:43:49 +0000 (08:43 +0100)]
Rollup merge of #56620 - petrochenkov:noclutter, r=estebank

resolve: Reduce some clutter in import ambiguity errors

Noticed in https://www.reddit.com/r/rust/comments/a3pyrw/announcing_rust_131_and_rust_2018/eb8alhi/.
The first error is distracting, but unnecessary, it's a *consequence* of the ambiguity error and appears because one of the ambiguous `actix` modules (unsurprisingly) doesn't have the expected name in it.

5 years agoRollup merge of #56602 - dwijnand:fix-ptr-hash-docs, r=Centril
Mazdak Farrokhzad [Sat, 8 Dec 2018 07:43:48 +0000 (08:43 +0100)]
Rollup merge of #56602 - dwijnand:fix-ptr-hash-docs, r=Centril

Fix the just-introduced ptr::hash docs

Follow-up to #56250.

5 years agoRollup merge of #56599 - dlrobertson:fix_va_arg, r=eddyb
Mazdak Farrokhzad [Sat, 8 Dec 2018 07:43:47 +0000 (08:43 +0100)]
Rollup merge of #56599 - dlrobertson:fix_va_arg, r=eddyb

codegen: Fix va_list - aarch64 iOS/Windows

## Summary

Fix code generated for `VaList` on Aarch64 iOS/Windows.

## Details

According to the [Apple - ARM64 Function Calling Conventions]:

> ... the type va_list is an alias for char * rather than for the struct
> type specified in the generic PCS.

The current implementation uses the generic Aarch64 structure for `VaList`
for Aarch64 iOS. Switch to using the `char *` variant of the `VaList`
and use the corresponding `emit_ptr_va_arg` for the `va_arg` intrinsic.

Windows always uses the `char *` variant of the `VaList`. Update the `va_arg`
intrinsic to use `emit_ptr_va_arg`.

[Apple - ARM64 Function Calling Conventions]: https://developer.apple.com/library/archive/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARM64FunctionCallingConventions.html

5 years agoRollup merge of #56597 - vext01:dump-mir-usage, r=wesleywiser
Mazdak Farrokhzad [Sat, 8 Dec 2018 07:43:45 +0000 (08:43 +0100)]
Rollup merge of #56597 - vext01:dump-mir-usage, r=wesleywiser

Improve the usage message for `-Z dump-mir`.

Ouput now looks like this:
```
$ rustc -Z help
...
    -Z               arg-align-attributes -- emit align metadata for reference arguments
    -Z                       dump-mir=val -- dump MIR state to file.
        `val` is used to select which passes and functions to dump. For example:
        `all` matches all passes and functions,
        `foo` matches all passes for functions whose name contains 'foo',
        `foo & ConstProp` only the 'ConstProp' pass for function names containing 'foo',
        `foo | bar` all passes for function names containing 'foo' or 'bar'.
    -Z                   dump-mir-dir=val -- the directory the MIR is dumped into
...
```

Fixes #56558

5 years agoRollup merge of #56248 - estebank:suggest-bare-pub, r=petrochenkov
Mazdak Farrokhzad [Sat, 8 Dec 2018 07:43:43 +0000 (08:43 +0100)]
Rollup merge of #56248 - estebank:suggest-bare-pub, r=petrochenkov

Suggest an appropriate token when encountering `pub Ident<'a>`

Fix #55403. Follow up to #45997.

5 years agoAuto merge of #56583 - RalfJung:vergen, r=oli-obk
bors [Sat, 8 Dec 2018 07:36:15 +0000 (07:36 +0000)]
Auto merge of #56583 - RalfJung:vergen, r=oli-obk

update vergen

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

r? @oli-obk

5 years agoAdd missing comma in Generators
morganamilo [Sat, 8 Dec 2018 04:13:18 +0000 (04:13 +0000)]
Add missing comma in Generators

5 years agoAuto merge of #56578 - alexreg:cosmetic-1, r=alexreg
bors [Sat, 8 Dec 2018 03:50:16 +0000 (03:50 +0000)]
Auto merge of #56578 - alexreg:cosmetic-1, r=alexreg

Various minor/cosmetic improvements to code

r? @Centril 😄

5 years agoFixed nll stderr file.
Alexander Regueiro [Sat, 8 Dec 2018 03:16:39 +0000 (03:16 +0000)]
Fixed nll stderr file.

5 years agoresolve: Reduce some clutter in import ambiguity errors
Vadim Petrochenkov [Sat, 8 Dec 2018 01:19:29 +0000 (04:19 +0300)]
resolve: Reduce some clutter in import ambiguity errors

5 years agoFixed line numbers in stderr file.
Alexander Regueiro [Fri, 7 Dec 2018 20:46:10 +0000 (20:46 +0000)]
Fixed line numbers in stderr file.

5 years agoFixed test stderr files.
Alexander Regueiro [Fri, 7 Dec 2018 17:51:18 +0000 (17:51 +0000)]
Fixed test stderr files.

5 years agoFixed incorrect reference to issue #23121.
Alexander Regueiro [Fri, 7 Dec 2018 02:31:02 +0000 (02:31 +0000)]
Fixed incorrect reference to issue #23121.

5 years agoFixed more imports and variable names.
Alexander Regueiro [Fri, 7 Dec 2018 02:39:33 +0000 (02:39 +0000)]
Fixed more imports and variable names.

5 years agoRe-added accidentally-removed imports.
Alexander Regueiro [Fri, 7 Dec 2018 01:40:42 +0000 (01:40 +0000)]
Re-added accidentally-removed imports.

5 years agoVarious minor/cosmetic improvements to code
Alexander Regueiro [Tue, 27 Nov 2018 02:59:49 +0000 (02:59 +0000)]
Various minor/cosmetic improvements to code

5 years agoAuto merge of #56258 - euclio:fs-read-write, r=euclio
bors [Fri, 7 Dec 2018 23:26:14 +0000 (23:26 +0000)]
Auto merge of #56258 - euclio:fs-read-write, r=euclio

use top level `fs` functions where appropriate

This commit replaces many usages of `File::open` and reading or writing
with `fs::read_to_string`, `fs::read` and `fs::write`. This reduces code
complexity, and will improve performance for most reads, since the
functions allocate the buffer to be the size of the file.

I believe that this commit will not impact behavior in any way, so some
matches will check the error kind in case the file was not valid UTF-8.
Some of these cases may not actually care about the error.

5 years agocodegen: Fix va_list - aaarch64 iOS/Windows
Dan Robertson [Wed, 5 Dec 2018 02:44:08 +0000 (02:44 +0000)]
codegen: Fix va_list - aaarch64 iOS/Windows

According to the Apple developer docs:

> The type va_list is an alias for char * rather than for the struct
> type specified in the generic PCS.

The current implementation uses the generic Aarch64 structure for VaList
for Aarch64 iOS.

Windows always uses the char * variant of the va_list.

5 years agoEncode `TraitAlias` as if they were `Trait`
Esteban Küber [Fri, 7 Dec 2018 22:52:44 +0000 (14:52 -0800)]
Encode `TraitAlias` as if they were `Trait`

5 years agoUpdate the book to fix some edition-related bugs
Carol (Nichols || Goulding) [Fri, 7 Dec 2018 22:43:00 +0000 (17:43 -0500)]
Update the book to fix some edition-related bugs

5 years agoAuto merge of #56502 - Zoxc:hir-func, r=eddyb
bors [Fri, 7 Dec 2018 20:04:06 +0000 (20:04 +0000)]
Auto merge of #56502 - Zoxc:hir-func, r=eddyb

Use a function to access the Hir map to be able to turn it into a query later

r? @eddyb

5 years agouse top level `fs` functions where appropriate
Andy Russell [Fri, 16 Nov 2018 21:22:06 +0000 (16:22 -0500)]
use top level `fs` functions where appropriate

This commit replaces many usages of `File::open` and reading or writing
with `fs::read_to_string`, `fs::read` and `fs::write`. This reduces code
complexity, and will improve performance for most reads, since the
functions allocate the buffer to be the size of the file.

I believe that this commit will not impact behavior in any way, so some
matches will check the error kind in case the file was not valid UTF-8.
Some of these cases may not actually care about the error.