Commit Graph

77669 Commits

Author SHA1 Message Date
Mark Mansi
e5280e452f use const trick 2018-04-29 17:13:49 -05:00
bors
774a6a3c4b Auto merge of #50317 - varkor:repr-align-assign, r=nagisa
Improve error message for #[repr(align=x)]

Before:
```
error[E0552]: unrecognized representation hint
 --> src/main.rs:1:8
  |
1 | #[repr(align="8")]
  |        ^^^^^^^^^
```
After:
```
error[E0693]: incorrect `repr(align)` attribute format
 --> src/main.rs:1:8
  |
2 | #[repr(align="8")]
  |        ^^^^^^^^^ help: use parentheses instead: `align(8)`
```

Fixes #50314.
2018-04-29 21:55:50 +00:00
varkor
35fe2998c0 Add test for repr(align=x) 2018-04-29 18:46:41 +01:00
varkor
a815f753bc Add error when using repr(align=x) instead of repr(align(x)) 2018-04-29 18:42:43 +01:00
Eric Huss
269d279094 Fix some broken links in docs. 2018-04-29 10:15:40 -07:00
bors
79252ff4e2 Auto merge of #48605 - KiChjang:unused-mut-warning, r=nikomatsakis
Allow MIR borrowck to catch unused mutable locals

Fixes #47279.

r? @nikomatsakis
2018-04-29 16:25:04 +00:00
bors
96e182833b Auto merge of #50217 - z4v1er:patch-1, r=aturon
Fix typo
2018-04-29 14:08:59 +00:00
bors
d450f99138 Auto merge of #50300 - phansch:update_clippy, r=oli-obk
Update clippy

First time doing this. Not sure if this is enough as the docs mention that the Cargo.lock should be updated, however running `cargo update -p clippy` and `./x.py` doesn't change anything.

Closes https://github.com/rust-lang-nursery/rust-clippy/issues/2700

r? @oli-obk
2018-04-29 11:58:45 +00:00
Pazzaz
368fe37c22 Add more links in panic docs 2018-04-29 13:45:33 +02:00
bors
87d3250445 Auto merge of #50306 - alexcrichton:inline-policy, r=sfackler
std: Inline `DefaultResizePolicy::new`

This should allow us to tighten up the [codegen][example] a bit more, avoiding a
function call across object boundaries in the default optimized case.

[example]: https://play.rust-lang.org/?gist=c1179088b0f8a4dcd93a9906463f993d&version=stable&mode=release
2018-04-29 09:22:10 +00:00
Keith Yeung
0a1cb9b914 Add the actual used mutable var to the set 2018-04-28 22:25:57 -07:00
Niko Matsakis
ded0697679 Return RootPlace in is_mutable 2018-04-28 22:25:57 -07:00
Zack M. Davis
3dbdccc6a9 stabilize #[must_use] for functions and must-use operators
This is in the matter of RFC 1940 and tracking issue #43302.
2018-04-28 20:32:49 -07:00
Zack M. Davis
c659faba8d in which the fn-must-use codepath is prevented from panicking on closure
The must-use lint needs the DefId of called functions and method
receivers in order to look for a `#[must_use]` attribute, but this would
ICE (!) if a called function was actually a closure (with a non-unit
return value). Instead, let's be specific that we want a `Def::Fn`,
rather than blithely assuming that we can get the DefId of a qpath.

Supporting must-use closures doesn't seem like a priority, but could
conceivably be added in the future if desired (conditional on the
statement and expression attributes (#15701) story being amicable).
2018-04-28 20:32:49 -07:00
bors
f76f6fbdea Auto merge of #50271 - sinkuu:fix_ice, r=eddyb
Fix ICE #48984

* ~~fbf6423  The tail type was not normalized.~~
* d0839d5680  The method had a wrong assumption that something whose parent is a trait is an associated item. Fixes #48984.
2018-04-29 03:01:09 +00:00
Mark Mansi
0212e0230a feature on test 2018-04-28 20:59:25 -05:00
bors
f4c1f0ce93 Auto merge of #50188 - alexcrichton:feature-all-the-things, r=eddyb
Add `-C target-feature` to all functions

Previously the features specified to LLVM via `-C target-feature` were only
reflected in the `TargetMachine` but this change *also* reflects these and the
base features inside each function itself. This change matches clang and...

Closes rust-lang-nursery/stdsimd#427
2018-04-28 23:49:28 +00:00
Alex Crichton
622371153c Add -C target-feature to all functions
Previously the features specified to LLVM via `-C target-feature` were only
reflected in the `TargetMachine` but this change *also* reflects these and the
base features inside each function itself. This change matches clang and...

Closes rust-lang-nursery/stdsimd#427
2018-04-28 14:28:15 -07:00
bors
66363b2881 Auto merge of #50240 - nnethercote:LazyBTreeMap, r=cramertj
Implement LazyBTreeMap and use it in a few places.

This is a thin wrapper around BTreeMap that avoids allocating upon creation.

I would prefer to change BTreeMap directly to make it lazy (like I did with HashSet in #36734) and I initially attempted that by making BTreeMap::root an Option<>. But then I also had to change Iter and Range to handle trees with no root, and those types have stability markers on them and I wasn't sure if that was acceptable. Also, BTreeMap has a lot of complex code and changing it all was challenging, and I didn't have high confidence about my general approach.

So I prototyped this wrapper instead and used it in the hottest locations to get some measurements about the effect. The measurements are pretty good!

- Doing a debug build of serde, it reduces the total number of heap allocations from 17,728,709 to 13,359,384, a 25% reduction. The number of bytes allocated drops from 7,474,672,966 to 5,482,308,388, a 27% reduction.

- It gives speedups of up to 3.6% on some rustc-perf benchmark jobs. crates.io, futures, and serde benefit most.
```
futures-check
        avg: -1.9%      min: -3.6%      max: -0.5%
serde-check
        avg: -2.1%      min: -3.5%      max: -0.7%
crates.io-check
        avg: -1.7%      min: -3.5%      max: -0.3%
serde
        avg: -2.0%      min: -3.0%      max: -0.9%
serde-opt
        avg: -1.8%      min: -2.9%      max: -0.3%
futures
        avg: -1.5%      min: -2.8%      max: -0.4%
tokio-webpush-simple-check
        avg: -1.1%      min: -2.2%      max: -0.1%
futures-opt
        avg: -1.2%      min: -2.1%      max: -0.4%
piston-image-check
        avg: -0.8%      min: -1.1%      max: -0.3%
crates.io
        avg: -0.6%      min: -1.0%      max: -0.3%
```
@Gankro, how do you think I should proceed here? Is leaving this as a wrapper reasonable? Or should I try to make BTreeMap itself lazy? If so, can I change the representation of Iter and Range?

Thanks!
2018-04-28 21:19:33 +00:00
Alex Crichton
c1bb1caa11 std: Inline DefaultResizePolicy::new
This should allow us to tighten up the [codegen][example] a bit more, avoiding a
function call across object boundaries in the default optimized case.

[example]: https://play.rust-lang.org/?gist=c1179088b0f8a4dcd93a9906463f993d&version=stable&mode=release
2018-04-28 14:14:21 -07:00
Anthony Ramine
69ec4aa97c Mark functions returning uninhabited types as noreturn 2018-04-28 21:10:01 +02:00
bors
68a09fc539 Auto merge of #50164 - nox:rval-range-metadata, r=eddyb
Emit range metadata on calls returning scalars (fixes #50157)
2018-04-28 17:59:25 +00:00
bors
1e01e22509 Auto merge of #50295 - SergioBenitez:master, r=alexcrichton
Don't feature gate bang macros on 'proc_macro_path_invoc'.

Fixes oversight from #50120.
2018-04-28 15:33:31 +00:00
Guillaume Gomez
00bbda16a7 Add query search order check 2018-04-28 17:21:12 +02:00
Philipp Hansch
d27e2a1854
Update clippy submodule 2018-04-28 15:10:42 +02:00
bors
ff65726ebf Auto merge of #50155 - est31:label_expressions, r=petrochenkov
'label can start expressions

```Rust
let foo = 'label: loop { break 'label 42; };
```

is valid Rust code.
2018-04-28 10:08:56 +00:00
Keith Yeung
8c607eaf94 Skip implicit self argument for closures 2018-04-28 01:55:26 -07:00
Keith Yeung
180e2426c9 Return LocalMutationIsAllowed in is_mutable 2018-04-28 01:55:25 -07:00
Keith Yeung
71d221f294 Determine unused mutable variables based on the 'root' place 2018-04-28 01:55:25 -07:00
Keith Yeung
e3b372f67d Only check possibly initialized values and also loop over fn args 2018-04-28 01:55:25 -07:00
Keith Yeung
5a2b590ec0 Track unused mutable variables across closures 2018-04-28 01:55:25 -07:00
Keith Yeung
3e423d0586 Disable AST unused mut check when using MIR borrowck 2018-04-28 01:55:24 -07:00
Keith Yeung
2338adf48c Allow MIR borrowck to catch unused mutable locals 2018-04-28 01:55:23 -07:00
bors
207bc40379 Auto merge of #49826 - cuviper:rustc-main-ICE, r=alexcrichton
rustc_driver: Catch ICEs on the main thread too

#48575 introduced an optimization to run rustc directly on the main thread when possible.  However, the threaded code detects panics when they `join()` to report as an ICE.  When running directly, we need to use `panic::catch_unwind` to get the same effect.

cc @ishitatsuyuki
r? @alexcrichton
2018-04-28 06:26:46 +00:00
Sergio Benitez
f756b072b3 Don't feature gate bang macros on 'proc_macro_path_invoc'. 2018-04-27 21:32:41 -07:00
bors
1eb0cef62b Auto merge of #50149 - aaronaaeng:master, r=estebank
Added warning for unused arithmetic expressions

The compiler now displays a warning when a binary arithmetic operation is evaluated but not used.  This resolves #50124  by following the instructions outlined in the issue.  The changes are as follows:

- Added new pattern matching for unused arithmetic expressions in `src/librustc_lint/unused.rs`
- Added `#[must_use]` attributes to the binary operation methods in `src/libcore/internal_macros.rs`
- Added `#[must_use]` attributes to the non-assigning binary operators in `src/libcore/ops/arith.rs`
2018-04-28 04:14:12 +00:00
Shotaro Yamada
9fc2595802 Make trait_of_item return None for non associated items
It have returned `Some` for constants in a trait definition,
and `Instance::resolve` called `tcx.associated_item` for them,
causing ICE.
2018-04-28 10:49:45 +09:00
bors
ede7f94794 Auto merge of #49822 - matthewjasper:dropck-closures, r=nikomatsakis
Access individual fields of tuples, closures and generators on drop.

Fixes #48623, by extending the change in #47917 to closures. Also does this for tuples and generators for consistency.

Enums are unchanged because there is now way to borrow `*enum.field` without borrowing `enum.field` at the moment, so any error would be reported when the enum goes out of scope. Unions aren't changed because unions they don't automatically drop their fields.

r? @nikomatsakis
2018-04-27 23:31:43 +00:00
Josh Stone
64bcbca81b rustc_driver: Catch ICEs on the main thread too 2018-04-27 14:57:00 -07:00
bors
686d0ae137 Auto merge of #50290 - kennytm:rollup, r=kennytm
Rollup of 9 pull requests

Successful merges:

 - #49858 (std: Mark `ptr::Unique` with `#[doc(hidden)]`)
 - #49968 (Stabilize dyn trait)
 - #50192 (Add some utilities to `libsyntax`)
 - #50251 (rustc: Disable threads in LLD for wasm)
 - #50263 (rustc: Emit `uwtable` for allocator shims)
 - #50269 (Update `parking_lot` dependencies)
 - #50273 (Allow #[inline] on closures)
 - #50284 (fix search load page failure)
 - #50257 (Don't ICE on tuple struct ctor with incorrect arg count)

Failed merges:
2018-04-27 21:01:47 +00:00
kennytm
dc6b167e22
Rollup merge of #50257 - estebank:fix-49560, r=nikomatsakis
Don't ICE on tuple struct ctor with incorrect arg count

Fix #49560.
2018-04-28 04:51:00 +08:00
Matthew Jasper
902bc0fb1a Access individual fields of tuples, closures and generators on drop. 2018-04-27 20:41:30 +01:00
kennytm
e5983943fe
Rollup merge of #50284 - GuillaumeGomez:search-load-failure, r=SimonSapin
fix search load page failure

Fixes #50283.

r? @QuietMisdreavus
2018-04-28 03:32:20 +08:00
kennytm
3f84ce2e0e
Rollup merge of #50273 - Amanieu:issue-49532, r=alexcrichton
Allow #[inline] on closures

Fixes #49632
2018-04-28 03:32:18 +08:00
kennytm
28762edb7e
Rollup merge of #50269 - alexcrichton:update-parking-lot, r=Mark-Simulacrum
Update `parking_lot` dependencies

This commit updates `parking_lot` to pull in Amanieu/parking_lot#70 and...

Closes #49438
2018-04-28 03:32:17 +08:00
kennytm
0da4bdeb2a
Rollup merge of #50263 - alexcrichton:uwtable-allcoators, r=eddyb
rustc: Emit `uwtable` for allocator shims

This commit emits the `uwtable` attribute to LLVM for platforms that require it
for the allocator shims that we generate to ensure that they can hopefully get
unwound past. This is a stab in the dark at helping
https://bugzilla.mozilla.org/show_bug.cgi?id=1456150 along.
2018-04-28 03:32:16 +08:00
kennytm
1c1fd2758e
Rollup merge of #50251 - alexcrichton:wasm-no-threads, r=eddyb
rustc: Disable threads in LLD for wasm

Upstream bug reports (rustwasm/wasm-bindgen#119) show that this may be the
culprit of odd crashes/hangs. The linker is a tiny fraction of build time anyway
right now so let's disable it and figure out how to possibly reenable it later
if necessary.
2018-04-28 03:32:15 +08:00
kennytm
4a961d1f08
Rollup merge of #50192 - bobtwinkles:libsyntax_extensions, r=jseyfried
Add some utilities to `libsyntax`

Adds a few functions to `Mark` and `Span` that I found useful in an upcoming refactor of NLL region error reporting. Also includes some new documentation based on my discussion with @jseyfried on IRC.

r? @jseyfried
2018-04-28 03:32:13 +08:00
kennytm
8b36d9abaa
Rollup merge of #49968 - christianpoveda:stabilize_dyn, r=nikomatsakis
Stabilize dyn trait

This PR stabilizes RFC 2113. I followed the [stabilization guide](https://forge.rust-lang.org/stabilization-guide.html).

Related issue: https://github.com/rust-lang/rust/issues/49218
2018-04-28 03:32:12 +08:00
kennytm
a18e7a6e83
Rollup merge of #49858 - dmizuk:unique-doc-hidden, r=steveklabnik
std: Mark `ptr::Unique` with `#[doc(hidden)]`

`Unique` is now perma-unstable, so let's hide its docs.
2018-04-28 03:32:11 +08:00