Commit Graph

83087 Commits

Author SHA1 Message Date
bors
35a5541fd9 Auto merge of #53707 - eddyb:phantom-waffles, r=oli-obk
rustc_typeck: turn `where Type:,` into a WF(Type) predicate, instead of ignoring it.

Fixes #53696, assuming crater doesn't catch anyone using this syntax already.

Allowing an empty list of bounds in the grammar was done for the benefit of macro authors, most of which would *probably* be using it for bounds on type parameters, which are always WF.

r? @nikomatsakis cc @petrochenkov
2018-09-06 09:32:23 +00:00
bors
20ca02569a Auto merge of #53721 - arielb1:exhaustively-unpun, r=nikomatsakis
fix `is_non_exhaustive` confusion between structs and enums

Structs and enums can both be non-exhaustive, with a very different
meaning. This PR splits `is_non_exhaustive` to 2 separate functions - 1
for structs, and another for enums, and fixes the places that got the
usage confused.

Fixes #53549.

r? @eddyb
2018-09-06 06:42:19 +00:00
bors
27e5457f3f Auto merge of #53955 - alexcrichton:fix-dist-again, r=japaric
rustbuild: Tweak LLVM distribution layout

This commit tweaks the layout of a few components that we distribute to
hopefully fix across all platforms the recent issues with LLD being unable to
find the LLVM shared object. In #53245 we switched to building LLVM as a dynamic
library, which means that LLVM tools by default link to LLVM dynamically rather
than statically. This in turn means that the tools, at runtime, need to find the
LLVM shared library.

LLVM's shared library is currently distributed as part of the rustc component.
This library is located, however, at `$sysroot/lib`. The LLVM tools we ship are
in two locations:

* LLD is shipped at `$sysroot/lib/rustlib/$host/bin/rust-lld`
* Other LLVM tools are shipped at `$sysroot/bin`

Each LLVM tool has an embedded rpath directive indicating where it will search
for dynamic libraries. This currently points to `../lib` and is presumably
inserted by LLVM's build system. Unfortunately, though, this directive is only
correct for the LLVM tools at `$sysroot/bin`, not LLD!

This commit is targeted at fixing this situation by making two changes:

* LLVM tools other than LLD are moved in the distribution to
  `$sysroot/lib/rustlib/$host/bin`. This moves them next to LLD and should
  position them for...
* The LLVM shared object is moved to `$sysroot/lib/rustlib/$host/lib`

Together this means that all tools should natively be able to find the shared
object and the shared object should be installed all the time for the various
tools. Overall this should...

Closes #53813
2018-09-06 02:09:12 +00:00
bors
8b7f164eab Auto merge of #52994 - varkor:trim_direction, r=alexcrichton
Add trim_start, trim_end etc.; deprecate trim_left, trim_right, etc. in future

Adds the methods: `trim_start`, `trim_end`, `trim_start_matches` and `trim_end_matches`.
Deprecates `trim_left`, `trim_right`, `trim_left_matches` and `trim_right_matches` starting from Rust 1.33.0, three versions from when they'll initially be marked as being deprecated, using the future deprecation from https://github.com/rust-lang/rust/issues/30785 and https://github.com/rust-lang/rust/pull/51681.

Fixes https://github.com/rust-lang/rust/issues/30459.
2018-09-05 23:45:08 +00:00
bors
6e0f1cc158 Auto merge of #53962 - michaelwoerister:close-thinlto-file-descriptors, r=alexcrichton
ThinLTO: Don't keep files open after mmaping them.

Fixes #53947.

r? @alexcrichton
2018-09-05 20:52:42 +00:00
bors
780b0c7bbf Auto merge of #53951 - tromey:restore-lldb-build, r=alexcrichton
Restore lldb build

commit 6c10142251 ("Update LLVM submodule") disabled the lldb build.
This patch updates the lldb and clang submodules to once again build
against the LLVM that is included in the Rust tree, and reverts the
.travis.yml changes from that patch.
2018-09-05 18:11:27 +00:00
Tom Tromey
7bb30ff0d9 Pick up State.h include path change 2018-09-05 10:37:05 -06:00
Alex Crichton
bce09b6e34 rustbuild: Tweak LLVM distribution layout
This commit tweaks the layout of a few components that we distribute to
hopefully fix across all platforms the recent issues with LLD being unable to
find the LLVM shared object. In #53245 we switched to building LLVM as a dynamic
library, which means that LLVM tools by default link to LLVM dynamically rather
than statically. This in turn means that the tools, at runtime, need to find the
LLVM shared library.

LLVM's shared library is currently distributed as part of the rustc component.
This library is located, however, at `$sysroot/lib`. The LLVM tools we ship are
in two locations:

* LLD is shipped at `$sysroot/lib/rustlib/$host/bin/rust-lld`
* Other LLVM tools are shipped at `$sysroot/bin`

Each LLVM tool has an embedded rpath directive indicating where it will search
for dynamic libraries. This currently points to `../lib` and is presumably
inserted by LLVM's build system. Unfortunately, though, this directive is only
correct for the LLVM tools at `$sysroot/bin`, not LLD!

This commit is targeted at fixing this situation by making two changes:

* LLVM tools other than LLD are moved in the distribution to
  `$sysroot/lib/rustlib/$host/bin`. This moves them next to LLD and should
  position them for...
* The LLVM shared object is moved to `$sysroot/lib/rustlib/$host/lib`

Together this means that all tools should natively be able to find the shared
object and the shared object should be installed all the time for the various
tools. Overall this should...

Closes #53813
2018-09-05 09:17:20 -07:00
bors
d8af8b66d9 Auto merge of #53878 - alexcrichton:wasm-atomics-feature, r=eddyb
rustc: Prepare the `atomics` feature for wasm

This commit adds a few changes for atomic instructions on the
`wasm32-unknown-unknown` target. Atomic instructions are not yet stable in
WebAssembly itself but there are multiple implementations and LLVM has support
for the proposed instruction set, so let's work on exposing it!

Here there are a few inclusions:

* The `atomics` feature was whitelisted for LLVM, allowing code in Rust to
  enable/disable/gate on this.

* The `singlethread` option is turned off for wasm when the `atomics` feature is
  enabled. This means that by default wasm won't be lowering with atomics, but
  when atomics are enabled globally we'll turn off single-threaded mode to
  actually codegen atomics. This probably isn't what we'll want in the long term
  but for now it should work.

* Finally the maximum atomic width is increased to 64 to reflect the current
  wasm spec.
2018-09-05 13:19:19 +00:00
Michael Woerister
fc47a92336 ThinLTO: Don't keep files open after mmaping them (because it's not needed). 2018-09-05 13:52:58 +02:00
bors
b0297f3043 Auto merge of #53867 - cwndrws:json-test-formatter-test-count-as-num, r=nrc
Make json test output formatter represent "test_count" as num

fixes #53866
2018-09-05 09:57:56 +00:00
bors
3f13b27c2b Auto merge of #53410 - djrenren:custom-test-frameworks, r=alexcrichton
Introduce Custom Test Frameworks

Introduces `#[test_case]` and `#[test_runner]` and re-implements `#[test]` and `#[bench]` in terms of them.

Details found here: https://blog.jrenner.net/rust/testing/2018/08/06/custom-test-framework-prop.html
2018-09-05 07:30:19 +00:00
John Renner
0593dc7e3c Move #[test_case] to a syntax extension 2018-09-04 22:33:23 -07:00
John Renner
e5ed105716 Document #[test_case] and #![test_runner] 2018-09-04 22:33:11 -07:00
John Renner
08ea5b7c78 Fix #[test] shadowing in macro_prelude 2018-09-04 22:33:10 -07:00
John Renner
9b27de41d4 Introduce Custom Test Frameworks 2018-09-04 22:33:00 -07:00
bors
0be2c30369 Auto merge of #53075 - Mark-Simulacrum:update-cargolock, r=alexcrichton
Update Cargo.lock

This also includes major version bumps for the rand crate used by core, std, and alloc tests, among other crates (regex, etc.) used elsewhere. Since these are all internal there should be no user-visible changes.

r? @alexcrichton
2018-09-05 03:04:20 +00:00
bors
f68b7cc598 Auto merge of #53027 - matklad:once_is_completed, r=alexcrichton
Allow to check if sync::Once is already initialized

Hi!

I propose to expose a way to check if a `Once` instance is initialized.

I need it in `once_cell`. `OnceCell` is effetively a pair of `(Once, UnsafeCell<Option<T>>)`, which can set the `T` only once. Because I can't check if `Once` is initialized, I am forced to add an indirection and check the value of ptr instead:

8127a81976/src/lib.rs (L423-L429)

8127a81976/src/lib.rs (L457-L461)

The `parking_lot`'s version of `Once` exposes the state as an enum: https://docs.rs/parking_lot/0.6.3/parking_lot/struct.Once.html#method.state.

I suggest, for now, just to add a simple `bool` function: this fits my use-case perfectly, exposes less implementation details, and is forward-compatible with more fine-grained state checking.
2018-09-05 00:37:03 +00:00
Mark Rousskov
9ec5ef541a Breaking change upgrades 2018-09-04 13:22:08 -06:00
Tom Tromey
289da84381 Restore lldb build
commit 6c10142251 ("Update LLVM submodule") disabled the lldb build.
This patch updates the lldb and clang submodules to once again build
against the LLVM that is included in the Rust tree, and reverts the
.travis.yml changes from that patch.
2018-09-04 11:21:58 -06:00
bors
1c2e17f4e3 Auto merge of #53870 - Xanewok:update-rls, r=oli-obk
Update RLS and Rustfmt

RLS
* Allow project model to download crates ([#1020](https://github.com/rust-lang-nursery/rls/pull/1020))
* Support simple external builds ([#988](https://github.com/rust-lang-nursery/rls/pull/988))
* Support using external Rustfmt ([#990](https://github.com/rust-lang-nursery/rls/pull/990))

Rustfmt (0.99.4)
* Format chains with comment ([#2899](https://github.com/rust-lang-nursery/rls/pull/2899))
* Do not show wildcard pattern in slice pattern ([#2912](https://github.com/rust-lang-nursery/rls/pull/2912))
* Impl only use ([#2951](https://github.com/rust-lang-nursery/rls/pull/2951))
* ... and [more](5c9a2b6c13...1c408818c8)

Bumped in tandem to pull a single version of `rustc-ap-*` libs.

r? @nrc
2018-09-04 13:17:07 +00:00
Igor Matuszewski
d5e5e76a7d Update RLS wrt recent Clippy changes 2018-09-04 14:49:21 +02:00
Igor Matuszewski
e976baee55 Update Rustfmt to 0.99.4
This pulls the same version of rustc-ap-* libs as RLS does.
2018-09-04 12:02:28 +02:00
Igor Matuszewski
2944f2b6e8 Update RLS 2018-09-04 12:02:28 +02:00
bors
4efc0a7811 Auto merge of #53928 - tbu-:pr_doc_fromrawmut, r=frewsxcv
Link to more detailed docs in `slice::from_raw_parts_mut`
2018-09-04 07:11:35 +00:00
bors
8b80390ead Auto merge of #53927 - ljedrz:save_analysis_cleanups, r=oli-obk
A few cleanups and minor improvements to save_analysis

- calculate the capacity of some `Vec`s
- change`to_owned()` to `clone()` for the purposes of `lower_attributes`
- remove a superfluous `clone()`
- prefer `to_owned()` to `to_string()`
- a few other minor improvements
2018-09-04 02:50:59 +00:00
bors
c7fc1a55a2 Auto merge of #53883 - RalfJung:miri-assert, r=oli-obk
miri engine: make sure we do not copy unsized data

r? @oli-obk
2018-09-03 23:20:31 +00:00
bors
0f063aef62 Auto merge of #53926 - japaric:arm-features, r=alexcrichton
whitelist some ARM features

required for rust-lang-nursery/stdsimd#557

r? @gnzlbg or @alexcrichton
2018-09-03 20:59:09 +00:00
ljedrz
9883dd73aa A few cleanups and minor improvements to save_analysis 2018-09-03 18:37:54 +02:00
bors
cd5c26f0eb Auto merge of #53697 - Cyres:const-fn-int-ops, r=oli-obk
Add more const int ops

r? @oli-obk

Tracking Issue: #53718

list of `const fn`s in this PR:

- `feature = const_int_rotate`
  - `rotate_left`
  - `rotate_right`
- `feature = const_int_wrapping`
  - `wrapping_add`
  - `wrapping_sub`
  - `wrapping_mul`
  - `wrapping_shl`
  - `wrapping_shr`
- `feature = const_int_overflowing`
  - `overflowing_add`
  - `overflowing_sub`
  - `overflowing_mul`
  - `overflowing_shl`
  - `overflowing_shr`
- `feature = const_int_sign`
  - `is_positive`
  - `is_negative`
- `feature = const_int_conversion`
  - `reverse_bits`
  - `to_le_bytes`
  - `to_ne_bytes`
  - `from_be_bytes`
  - `from_le_bytes`
  - `from_ne_bytes`
  - `reverse_bits`
2018-09-03 16:31:34 +00:00
Tobias Bucher
fe56878a24 Link to more detailed docs in slice::from_raw_parts_mut 2018-09-03 18:29:08 +02:00
Jorge Aparicio
bac0eb2f37 whitelist some ARM features 2018-09-03 16:52:43 +02:00
bors
ee73f80dc9 Auto merge of #53673 - michaelwoerister:incr-thinlto-2000, r=alexcrichton
Enable ThinLTO with incremental compilation.

This is an updated version of #52309. This PR allows `rustc` to use (local) ThinLTO and incremental compilation at the same time. In theory this should allow for getting compile-time improvements for small changes while keeping the runtime performance of the generated code roughly the same as when compiling non-incrementally.

The difference to #52309 is that this version also caches the pre-LTO version of LLVM bitcode. This allows for another layer of caching:
1. if the module itself has changed, we have to re-codegen and re-optimize.
2. if the module itself has not changed, but a module it imported from during ThinLTO has, we don't need to re-codegen and don't need to re-run the first optimization phase. Only the second (i.e. ThinLTO-) optimization phase is re-run.
3. if neither the module itself nor any of its imports have changed then we can re-use the final, post-ThinLTO version of the module. (We might have to load its pre-ThinLTO version though so it's available for other modules to import from)
2018-09-03 13:59:57 +00:00
Tim Diekmann
4811e5b6c7
Add missing brace 2018-09-03 15:26:27 +02:00
Cyres
beadf75ad0 Add ident function to the rest of the tests 2018-09-03 15:25:06 +02:00
Tim Diekmann
e54c5a9e48
Wrap rhs in ident function 2018-09-03 15:01:04 +02:00
Tim Diekmann
256cf8681e
Add const_unstable flag to overflowing_shr 2018-09-03 14:53:05 +02:00
bors
591a17d3d9 Auto merge of #53831 - TheDarkula:pointer-check, r=oli-obk
Added pointer checking to sanity checks

r? @oli-obk
2018-09-03 11:31:15 +00:00
Michael Woerister
21d05f64aa incr.ThinLTO: Do some cleanup and add some logging. 2018-09-03 13:26:46 +02:00
Michael Woerister
d5545751f9 Add memmap crate to tidy whitelist. 2018-09-03 13:26:24 +02:00
bors
f3bb23191c Auto merge of #53865 - zilbuz:issue-52768, r=pnkfelix
Remove 'not reporting regions error due to nll' warning

Fix #52768
2018-09-03 08:56:42 +00:00
bors
2687112ea6 Auto merge of #53838 - nrc:save-generic, r=eddyb
save-analysis: record info for the types in `where` clauses

cc https://github.com/rust-lang-nursery/rls/issues/987

r? @eddyb
2018-09-03 02:32:11 +00:00
bors
9395f0af78 Auto merge of #53725 - tbu-:pr_getrandom_syscalls, r=alexcrichton
Reduce number of syscalls in `rand`

This skips the initial zero-length `getrandom` call and
directly hands the user buffer to the operating system, saving one
`getrandom` syscall.
2018-09-02 21:24:18 +00:00
bors
763d91aa12 Auto merge of #53899 - Manishearth:clippyup, r=kennytm
Update clippy

r? @kennytm @oli-obk
2018-09-02 18:13:03 +00:00
bors
23ea1b8188 Auto merge of #53599 - matthiaskrgr:split_str__to__split_char, r=frewsxcv
use char pattern for single-character splits: a.split("x") -> a.split('x')
2018-09-02 15:27:56 +00:00
bors
5a0a9a280a Auto merge of #53897 - topecongiro:check-to-eat, r=petrochenkov
Replace check() + bump() with eat()

cc #51945.

r? @petrochenkov
2018-09-02 13:11:22 +00:00
Manish Goregaokar
2e15511050 Update clippy 2018-09-02 13:29:50 +05:30
Seiichi Uchida
51dbb024f7 Replace check() + bump() with eat() 2018-09-02 15:19:28 +09:00
bors
3480ac2a80 Auto merge of #53887 - flip1995:tool_lints, r=Manishearth
Fix of bug introduced by #53762 (tool_lints)

Before implementing backwards compat for tool lints, the `Tool` case when parsing cmdline lints was unreachable. This changed with #53762.

This fix is needed for rls test-pass. (@nrc)

r? @Manishearth
2018-09-02 02:10:33 +00:00
bors
a1a8c444f9 Auto merge of #53842 - estebank:various, r=petrochenkov
Various small diagnostic and code clean up

 - Point at def span on incorrect `panic` or `oom` function
 - Use structured suggestion instead of note for `+=` that can be performed on a dereference of the left binding
 - Small code formatting cleanup
2018-09-01 23:34:14 +00:00