Commit Graph

77902 Commits

Author SHA1 Message Date
Simon Sapin
21941c8129 Update Cargo to 2018-04-28 122fd5be5201913d42e219e132d6569493583bca 2018-04-30 17:04:42 +02:00
kennytm
fba903a435
Make the fields of RangeInclusive private.
Added new()/start()/end() methods to RangeInclusive.

Changed the lowering of `..=` to use RangeInclusive::new().
2018-04-30 21:01:13 +08:00
Michael Lamparski
02b3da1200 decrease false negatives for str overflow test 2018-04-30 07:37:19 -04:00
Michael Lamparski
ce66f5d918 flesh out tests for SliceIndex
m*n lines of implementation deserves m*n lines of tests
2018-04-30 07:37:08 -04:00
Michael Lamparski
0842dc6723 collect str SliceIndex tests into a mod
GitHub users: I think you can add ?w=1 to the url
for a vastly cleaner whitespace-ignoring diff
2018-04-30 07:37:02 -04:00
Michael Lamparski
4fab1674c3 update libcore's comment about str tests 2018-04-30 07:36:56 -04:00
Michael Lamparski
6b749b0113 Clean up the other Slice*Inclusive impls for str
A previous PR fixed one method that was legitimately buggy;
this cleans up the rest to be less diverse, mirroring the
corresponding impls on [T] to the greatest extent possible
without introducing any unnecessary UTF-8 boundary checks at 0.
2018-04-30 07:36:46 -04:00
Michael Lamparski
5ab4c811ca str/slice: factor out overflow error messages 2018-04-30 07:36:27 -04:00
bors
64e6dda0bc Auto merge of #50326 - ollie27:rustdoc_cross_crate_const_link, r=GuillaumeGomez
rustdoc: Fix links to constants in external crates

r? @GuillaumeGomez
2018-04-30 10:30:14 +00:00
Nicholas Nethercote
989815d567 Extend Printer::buf on demand.
So that 55 entries (at 48 bytes each) don't need to be eagerly
initialized on creation.

This speeds up numerous rust-perf benchmark runs, by up to 3%.
2018-04-30 19:24:24 +10:00
bors
7fbc4d881d Auto merge of #50272 - scottmcm:termination-test-error, r=nikomatsakis
Add a ui test for an incorrect Result success type in a #[test]

cc https://github.com/rust-lang/rust/issues/48854#issuecomment-384730601
r? @nikomatsakis
2018-04-30 07:48:50 +00:00
Martin Husemann
7c2304ddc6 Map the stack guard page with max protection on NetBSD
On NetBSD the initial mmap() protection of a mapping can not be made
less restrictive with mprotect().

So when mapping a stack guard page, use the maximum protection
we ever want to use, then mprotect() it to the permission we
want it to have initially.
2018-04-30 08:04:53 +02:00
Jorge Aparicio
bd4ebf28bd check that #[used] is used only on statics 2018-04-30 07:43:22 +02:00
bors
9ff8ec8fdf Auto merge of #50204 - Manishearth:approx-enum, r=estebank
Use enum for approximate suggestions

r? @nrc @killercup
2018-04-30 05:38:06 +00:00
John Kåre Alsaker
221b7ca3c2 Remove usages of Term::as_str and mark it for removal 2018-04-30 05:27:05 +02:00
bors
f900bcf35c Auto merge of #50261 - nrc:update, r=kennytm
Update Rustfmt

r? @kennytm

Updates rustfmt, should fix the broken tests, but I can't reproduce locally, so who knows?
2018-04-30 02:32:52 +00:00
Nick Cameron
410e2011bd Update Rustfmt 2018-04-30 14:10:30 +12:00
varkor
2eb8343af1 Correct unused field warning on struct match container patterns 2018-04-30 01:27:37 +01:00
bors
78bcd9b5fe Auto merge of #50092 - abonander:issue-49934, r=petrochenkov
Warn on pointless #[derive] in more places

This fixes the regression in #49934 and ensures that unused `#[derive]` invocations on statements, expressions and generic type parameters survive to trip the `unused_attributes` lint. There is a separate warning hardcoded for `#[derive]` on macro invocations since linting (even the early-lint pass) occurs after expansion. This also adds regression tests for some nodes that were already warning properly.

closes #49934
2018-04-30 00:18:49 +00:00
varkor
8e8fe9042c Correct unused field warning on box struct match 2018-04-30 00:51:02 +01:00
varkor
cc53db8bf9 Correct unused field warning on &struct match 2018-04-30 00:40:11 +01:00
Austin Bonander
f16d2ff7ec Warn on pointless #[derive] in more places
This fixes the regression in #49934 and ensures that unused `#[derive]`s on statements, expressions and generic type parameters survive to trip the `unused_attributes` lint. For `#[derive]` on macro invocations it has a hardcoded warning since linting occurs after expansion. This also adds regression testing for some nodes that were already warning properly.

closes #49934
2018-04-29 16:01:41 -07:00
Oliver Middleton
7232df7d5a rustdoc: Fix links to constants in external crates 2018-04-29 23:28:39 +01:00
Mark Mansi
f9f992379d heh, logic is hard 2018-04-29 17:27:17 -05:00
Vadim Petrochenkov
0a6e91bdbc Add a few more tests for proc macro feature gating 2018-04-30 01:19:12 +03:00
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
Johannes Nixdorf
ec2b861c2f bootstrap: pass crt-static for the compiler host as well 2018-04-29 11:30:56 +02:00
Johannes Nixdorf
5ecf29df05 bootstrap.py: respect crt-static
Bootstrap requires serde_derive, which needs proc-macro crate types, so
it won't work with crt-static.
2018-04-29 11:30:56 +02:00
Johannes Nixdorf
a5a875d17b musl: don't use the included startfiles with -crt-static
This fixes #36710 with -crt-static.
2018-04-29 11:30:56 +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