Commit Graph

77608 Commits

Author SHA1 Message Date
Manish Goregaokar
dafbdeb384 Add idiom lint for bare extern crate 2018-05-04 11:24:36 -07:00
bors
0bfe3072cb Auto merge of #50435 - cuviper:rm-lookup_host, r=sfackler
Remove the deprecated std::net::{lookup_host,LookupHost}

These are unstable, and were deprecated by #47510, since Rust 1.25.  The
internal `sys` implementations are still kept to support the call in the
common `resolve_socket_addr`.
2018-05-04 12:12:05 +00:00
bors
22a41e4515 Auto merge of #50409 - KiChjang:issue-50343, r=nikomatsakis
Skip checking for unused mutable locals that have no name

Fixes #50343.
2018-05-04 08:22:13 +00:00
bors
e78c51adc2 Auto merge of #50398 - llogiq:memchr-nano-opt, r=nagisa
nano-optimization for memchr::repeat_byte

This replaces the multiple shifts & bitwise or with a single multiplication

In my benchmarks this performs equally well or better, especially on 64bit systems (it shaves a stable nanosecond on my skylake). This may go against conventional wisdom, but the shifts and bitwise ors cannot be pipelined because of hard data dependencies.

While it may or may not be worthwile from an optimization standpoint, it also reduces code size, so there's basically no downside.
2018-05-04 05:38:18 +00:00
bors
841e0ccb4c Auto merge of #50433 - nrc:update, r=alexcrichton
Update RLS and Rustfmt (and Cargo)

Updates RLS and Rustfmt (the latter fixing tests). Cargo is updated too (to fix RLS tests), but that is covered by https://github.com/rust-lang/rust/pull/50417, so probably  won't do much.

r? @alexcrichton
2018-05-04 02:58:37 +00:00
Nick Cameron
4952426c50 Update RLS and Rustfmt (and Cargo) 2018-05-04 12:33:56 +12:00
bors
1eab9c5a1b Auto merge of #50397 - sgrif:sg-smaller-universe-refactorings, r=nikomatsakis
Refactorings in preparation for the removal of the leak check

This contains all of the commits from #48407 that I was able to pull out on their own. This has most of the refactoring/ground work to unblock other work, but without the behavior changes that still need a crater run and NLL changes.

r? @nikomatsakis
2018-05-04 00:16:41 +00:00
Josh Stone
b539936845 Remove the deprecated std::net::{lookup_host,LookupHost}
These are unstable, and were deprecated by #47510, since Rust 1.25.  The
internal `sys` implementations are still kept to support the call in the
common `resolve_socket_addr`.
2018-05-03 16:24:21 -07:00
bors
e82261dfbb Auto merge of #50413 - kennytm:rollup, r=kennytm
Rollup of 12 pull requests

Successful merges:

 - #50302 (Add query search order check)
 - #50320 (Fix invalid path generation in rustdoc search)
 - #50349 (Rename "show type declaration" to "show declaration")
 - #50360 (Clarify wordings of the `unstable_name_collision` lint.)
 - #50365 (Use two vectors in nearest_common_ancestor.)
 - #50393 (Allow unaligned reads in constants)
 - #50401 (Revert "Implement FromStr for PathBuf")
 - #50406 (Forbid constructing empty identifiers from concat_idents)
 - #50407 (Always inline simple BytePos and CharPos methods.)
 - #50416 (check if the token is a lifetime before parsing)
 - #50417 (Update Cargo)
 - #50421 (Fix ICE when using a..=b in a closure.)

Failed merges:
2018-05-03 20:45:54 +00:00
kennytm
03a0402dbf
Rollup merge of #50320 - GuillaumeGomez:fix-search-path-generation, r=QuietMisdreavus
Fix invalid path generation in rustdoc search

Fixes #50311.
2018-05-04 04:28:00 +08:00
Guillaume Gomez
a876d28b4a Fix invalid path generation in rustdoc search 2018-05-03 22:14:37 +02:00
kennytm
bab812d7ca
Rollup merge of #50416 - rleungx:non-lifetime, r=estebank
check if the token is a lifetime before parsing

Fixes #50381.
2018-05-04 02:16:59 +08:00
kennytm
4cc4a67cea
Rollup merge of #50406 - ExpHP:concat-nonzero-idents, r=dtolnay
Forbid constructing empty identifiers from concat_idents

The empty identifier is a [reserved identifier](8a37c75a3a/src/libsyntax_pos/symbol.rs (L300-L305)) in rust, apparently used for black magicks like representing the crate root or somesuch... and therefore, being able to construct it is Ungood.  Presumably.

...even if the macro that lets you construct it is so useless that you can't actually do any damage with it. (and believe me, I tried)

Fixes #50403.

**Note:** I noticed that when you try to do something similar with `proc_macro::Term`, the compiler actually catches it and flags the identifier as reserved.  Perhaps a better solution would be to somehow have that same check applied here.
2018-05-04 02:16:39 +08:00
kennytm
dfb32af87d
Rollup merge of #50421 - kennytm:fix-50415-ice-when-returning-range-inclusive-from-closure, r=michaelwoerister
Fix ICE when using a..=b in a closure.

Fix #50415.
2018-05-04 02:12:55 +08:00
kennytm
5976e8ac6b
Rollup merge of #50417 - matklad:pr-50379, r=alexcrichton
Update Cargo

This should fix RLS

cc https://github.com/rust-lang/rust/pull/50379, https://github.com/rust-lang/cargo/pull/5465
2018-05-04 02:12:53 +08:00
kennytm
e65098bcf1
Rollup merge of #50407 - nnethercote:inline-BytePos, r=michaelwoerister
Always inline simple BytePos and CharPos methods.

Because they are (a) trivial, and (b) super hot.

This change speeds up most rustc-perf benchmarks, the best by 5%.

Full measurements:
```
coercions-check
	avg: -3.0%	min: -5.4%	max: -1.3%
helloworld-check
	avg: -3.9%	min: -4.1%	max: -3.6%
unify-linearly-check
	avg: -3.1%	min: -3.7%	max: -2.5%
deeply-nested-check
	avg: -2.6%	min: -3.6%	max: -2.1%
coercions-opt
	avg: -2.1%	min: -3.6%	max: -1.3%
coercions
	avg: -2.0%	min: -3.5%	max: -1.0%
issue-46449-check
	avg: -2.8%	min: -3.1%	max: -2.6%
parser-check
	avg: -2.6%	min: -3.1%	max: -2.0%
deeply-nested-opt
	avg: -1.5%	min: -3.0%	max: -0.8%
deeply-nested
	avg: -1.8%	min: -2.9%	max: -1.1%
issue-46449
	avg: -1.4%	min: -2.7%	max: -1.1%
issue-46449-opt
	avg: -1.0%	min: -2.7%	max: -0.5%
regression-31157-check
	avg: -1.7%	min: -2.3%	max: -1.1%
tuple-stress-opt
	avg: -1.0%	min: -2.2%	max: -0.5%
tokio-webpush-simple-check
	avg: -1.6%	min: -2.1%	max: -1.2%
tuple-stress-check
	avg: -1.2%	min: -2.1%	max: -0.8%
unused-warnings-check
	avg: -1.6%	min: -2.0%	max: -1.4%
encoding-check
	avg: -1.4%	min: -1.8%	max: -1.0%
tuple-stress
	avg: -1.0%	min: -1.7%	max: -0.6%
encoding-opt
	avg: -0.9%	min: -1.6%	max: -0.3%
unused-warnings
	avg: -1.3%	min: -1.6%	max: -1.2%
unused-warnings-opt
	avg: -1.3%	min: -1.5%	max: -1.2%
encoding
	avg: -1.0%	min: -1.5%	max: -0.4%
html5ever-opt
	avg: -0.7%	min: -1.5%	max: -0.3%
futures
	avg: -1.0%	min: -1.5%	max: -0.5%
futures-check
	avg: -1.0%	min: -1.5%	max: -0.5%
futures-opt
	avg: -0.8%	min: -1.4%	max: -0.3%
regression-31157-opt
	avg: -0.5%	min: -1.4%	max: -0.0%
unify-linearly-opt
	avg: -1.2%	min: -1.4%	max: -1.0%
parser-opt
	avg: -1.2%	min: -1.4%	max: -1.0%
helloworld
	avg: -1.3%	min: -1.4%	max: -1.3%
helloworld-opt
	avg: -1.3%	min: -1.3%	max: -1.3%
parser
	avg: -1.2%	min: -1.3%	max: -1.0%
regex-check
	avg: -1.1%	min: -1.3%	max: -0.7%
unify-linearly
	avg: -1.1%	min: -1.3%	max: -1.0%
syn-check
	avg: -0.8%	min: -1.3%	max: -0.3%
piston-image-check
	avg: -0.7%	min: -1.2%	max: -0.4%
regex-opt
	avg: -0.5%	min: -1.2%	max: -0.0%
syn
	avg: -0.6%	min: -1.2%	max: -0.3%
hyper
	avg: -0.8%	min: -1.2%	max: -0.4%
syn-opt
	avg: -0.5%	min: -1.2%	max: -0.1%
regex
	avg: -0.7%	min: -1.2%	max: -0.3%
regression-31157
	avg: -0.7%	min: -1.2%	max: -0.3%
clap-rs-check
	avg: -0.6%	min: -1.1%	max: -0.2%
hyper-check
	avg: -0.8%	min: -1.1%	max: -0.5%
piston-image-opt
	avg: -0.4%	min: -1.1%	max: -0.0%
hyper-opt
	avg: -0.6%	min: -1.0%	max: 0.0%
inflate
	avg: -0.4%	min: -1.0%	max: -0.2%
html5ever
	avg: -0.5%	min: -1.0%	max: -0.2%
inflate-opt
	avg: -0.3%	min: -1.0%	max: 0.3%
deep-vector-check
	avg: -0.6%	min: -1.0%	max: -0.3%
style-servo-check
	avg: -0.7%	min: -1.0%	max: -0.5%
tokio-webpush-simple-opt
	avg: -0.3%	min: -0.9%	max: 0.0%
inflate-check
	avg: -0.3%	min: -0.9%	max: -0.1%
piston-image
	avg: -0.4%	min: -0.8%	max: -0.2%
deep-vector
	avg: -0.4%	min: -0.8%	max: -0.1%
clap-rs
	avg: -0.4%	min: -0.7%	max: -0.2%
deep-vector-opt
	avg: -0.2%	min: -0.7%	max: 0.2%
style-servo
	avg: -0.3%	min: -0.7%	max: 0.1%
crates.io
	avg: -0.4%	min: -0.6%	max: -0.2%
crates.io-opt
	avg: -0.3%	min: -0.6%	max: -0.1%
tokio-webpush-simple
	avg: -0.4%	min: -0.6%	max: -0.3%
crates.io-check
	avg: -0.4%	min: -0.6%	max: -0.3%
html5ever-check
	avg: -0.4%	min: -0.6%	max: -0.2%
serde
	avg: -0.1%	min: -0.6%	max: 0.2%
serde-check
	avg: -0.1%	min: -0.5%	max: 0.4%
serde-opt
	avg: -0.2%	min: -0.5%	max: -0.1%
style-servo-opt
	avg: -0.2%	min: -0.4%	max: -0.0%
clap-rs-opt
	avg: -0.1%	min: -0.3%	max: 0.0%
2018-05-04 02:12:52 +08:00
kennytm
cd6fa5f426
Rollup merge of #50401 - alexcrichton:remove-path-from-str, r=sfackler
Revert "Implement FromStr for PathBuf"

This reverts commit 05a9acc3b8.

The libs team was discussing https://github.com/rust-lang/rust/issues/44431 today and the changes originally added in https://github.com/rust-lang/rust/pull/48292 and the conclusion was that we'd like to revert this for now until `!` is stable. This'll provide us maximal flexibility to tweak the error type here in the future, and it looks like `!` is close-ish to stabilization so hopefully this won't be delayed for too long.
2018-05-04 02:12:51 +08:00
kennytm
46bc2c28b9
Rollup merge of #50393 - oli-obk:packed_const_panic, r=eddyb
Allow unaligned reads in constants

fixes #50356

introduced in https://github.com/rust-lang/rust/pull/49513
2018-05-04 02:12:50 +08:00
kennytm
fd4bf23783
Rollup merge of #50365 - nnethercote:nearest_common_ancestor-two-vecs, r=nikomatsakis
Use two vectors in nearest_common_ancestor.

When looking at any scope in scope chain A, we only need to look for
matches among scopes previously seen in scope chain B, and vice versa.
This halves the number of "seen before?" comparisons, speeding up some
runs of style-servo, clap-rs, and syn by 1--2%.

Thanks to @kirillkh for the suggestion.

r? @nikomatsakis
2018-05-04 02:12:48 +08:00
kennytm
06a47dc26e
Rollup merge of #50360 - kennytm:fix-50232-clarify-unstable-name-collision, r=nikomatsakis
Clarify wordings of the `unstable_name_collision` lint.

Stabilizing an inherent method may cause change in behavior instead of inference error. Updated to use the wording from [varkor's comment].

Closes #50232.

[varkor's comment]: https://github.com/rust-lang/rust/issues/50232#issuecomment-384678097
2018-05-04 02:12:47 +08:00
kennytm
73042c54f5
Rollup merge of #50349 - GuillaumeGomez:rename-type-declaration-label, r=estebank
Rename "show type declaration" to "show declaration"

Fixes #50347.

r? @QuietMisdreavus
2018-05-04 02:12:46 +08:00
kennytm
83c45051f8
Fix issue #50415. 2018-05-03 22:36:44 +08:00
Aleksey Kladov
70c52e5e19 Update Cargo 2018-05-03 16:49:47 +03:00
bors
d68b0eceaa Auto merge of #50030 - flip1995:rfc2103, r=petrochenkov
Implement tool_attributes feature (RFC 2103)

cc #44690

This is currently just a rebased and compiling (hopefully) version of #47773.

Let's see if travis likes this. I will add the implementation for `tool_lints` this week.
2018-05-03 11:52:03 +00:00
rleungx
390c3cee6a check if the token is a lifetime before parsing 2018-05-03 19:12:39 +08:00
Michael Lamparski
8e38d02d98 update concat_idents doc stubs 2018-05-03 06:49:30 -04:00
kennytm
4e3da52d02
Rollup merge of #50302 - GuillaumeGomez:add-query-search-order-check, r=QuietMisdreavus
Add query search order check

Fixes #50180.

r? @QuietMisdreavus
2018-05-03 16:11:26 +08:00
bors
698b956a9f Auto merge of #50391 - nnethercote:escape_unicode, r=eddyb
Use escape_default() for strings in LitKind::token().

This avoids converting every char to \u{...} form, which bloats the
resulting strings unnecessarily. It also provides consistency with the
existing escape_default() calls in LitKind::token() used for raw
string literals, char literals, and raw byte char literals.

There are two benefits from this change.

- Compilation is faster. Most of the rustc-perf benchmarks see a
  non-trivial speedup, particularly for incremental rebuilds, with the
  best speedup over 13%, and multiple others over 10%.

- Generated rlibs are smaller. An extreme example is libfutures.rlib,
  which shrinks from 2073306 bytes to 1765927 bytes, a 15% reduction.

r? @jseyfried

<details><summary>Here are full numbers for all the rustc-perf runs where the improvement was > 1%.</summary>

```
regex-check
	avg: -11.1%	min: -13.4%	max: -5.5%
futures-check
	avg: -7.6%	min: -11.4%	max: -3.5%
futures-opt
	avg: -6.3%	min: -10.3%	max: -2.3%
futures
	avg: -6.6%	min: -10.3%	max: -2.8%
regex-opt
	avg: -4.7%	min: -10.2%	max: -0.4%
regex
	avg: -5.3%	min: -10.2%	max: -1.2%
hyper-check
	avg: -4.8%	min: -6.6%	max: -2.7%
encoding-check
	avg: -4.1%	min: -5.5%	max: -2.5%
issue-46449-check
	avg: -4.7%	min: -5.2%	max: -4.1%
clap-rs-check
	avg: -2.9%	min: -5.2%	max: -1.1%
hyper
	avg: -3.0%	min: -5.1%	max: -0.8%
parser-check
	avg: -4.2%	min: -4.9%	max: -3.2%
hyper-opt
	avg: -2.6%	min: -4.9%	max: -0.3%
encoding-opt
	avg: -2.3%	min: -4.6%	max: -0.5%
encoding
	avg: -2.5%	min: -4.4%	max: -0.6%
issue-46449
	avg: -2.3%	min: -4.4%	max: -1.8%
issue-46449-opt
	avg: -1.7%	min: -4.3%	max: -0.9%
clap-rs-opt
	avg: -1.6%	min: -4.2%	max: -0.2%
serde-check
	avg: -1.4%	min: -4.1%	max: -0.2%
clap-rs
	avg: -1.6%	min: -3.9%	max: -0.7%
unify-linearly-check
	avg: -3.2%	min: -3.7%	max: -2.7%
serde
	avg: -1.1%	min: -3.5%	max: -0.1%
regression-31157-check
	avg: -2.6%	min: -3.4%	max: -1.6%
helloworld-check
	avg: -2.5%	min: -3.4%	max: -0.6%
serde-opt
	avg: -1.3%	min: -3.3%	max: -0.5%
tokio-webpush-simple-check
	avg: -2.4%	min: -3.2%	max: -1.8%
piston-image-check
	avg: -1.7%	min: -3.2%	max: -0.9%
deeply-nested-opt
	avg: -1.5%	min: -3.0%	max: -0.6%
deeply-nested-check
	avg: -1.9%	min: -2.9%	max: -0.4%
deeply-nested
	avg: -1.9%	min: -2.9%	max: -1.2%
syn-check
	avg: -1.8%	min: -2.8%	max: -0.6%
coercions
	avg: -0.5%	min: -2.8%	max: 0.4%
syn-opt
	avg: -0.9%	min: -2.4%	max: -0.1%
syn
	avg: -1.1%	min: -2.2%	max: -0.3%
parser-opt
	avg: -1.9%	min: -2.1%	max: -1.6%
parser
	avg: -1.9%	min: -2.1%	max: -1.6%
style-servo-check
	avg: -1.3%	min: -2.0%	max: -0.8%
regression-31157-opt
	avg: -0.8%	min: -2.0%	max: 0.0%
piston-image
	avg: -0.7%	min: -1.8%	max: -0.2%
piston-image-opt
	avg: -0.6%	min: -1.8%	max: -0.0%
regression-31157
	avg: -1.0%	min: -1.7%	max: -0.3%
html5ever-opt
	avg: -0.6%	min: -1.5%	max: -0.1%
unify-linearly-opt
	avg: -1.3%	min: -1.5%	max: -1.1%
unify-linearly
	avg: -1.3%	min: -1.4%	max: -1.2%
tokio-webpush-simple-opt
	avg: -0.4%	min: -1.2%	max: -0.0%
helloworld-opt
	avg: -1.0%	min: -1.1%	max: -0.6%
helloworld
	avg: -1.0%	min: -1.1%	max: -0.7%
inflate-opt
	avg: -0.3%	min: -1.1%	max: 0.1%
html5ever-check
	avg: -0.6%	min: -1.0%	max: -0.3%
inflate-check
	avg: -0.3%	min: -1.0%	max: -0.1%
```

</details>
2018-05-03 08:06:08 +00:00
bors
427c548749 Auto merge of #50378 - varkor:repr-align-max-29, r=eddyb
Reduce maximum repr(align(N)) to 2^29

The current maximum `repr(align(N))` alignment is larger than the maximum alignment accepted by LLVM, which can cause issues for huge values of `N`, as seen in #49492. Fixes #49492.

r? @rkruppe
2018-05-03 05:38:11 +00:00
Keith Yeung
4bc48480c0 Skip checking for unused mutable locals that have no name 2018-05-02 21:43:39 -07:00
Michael Lamparski
fbc57a7c7a add missing output for ui test 2018-05-03 00:25:14 -04:00
Nicholas Nethercote
e740b97be6 Always inline simple BytePos and CharPos methods.
Because they are (a) trivial, and (b) super hot.

This change speeds up most rustc-benchmarks, the best by 5%.
2018-05-03 13:25:18 +10:00
Michael Lamparski
cd54b3e448 forbid empty identifiers from concat_idents 2018-05-02 22:58:28 -04:00
bors
9e3cbbb60a Auto merge of #50369 - pftbest:unicode, r=SimonSapin
Fix a warning in libcore on 16bit targets.

This code is assuming that usize >= 32bits, but it is not the case on
16bit targets. It is producing a warning that can fail the compilation
on MSP430 if deny(warnings) is enabled.
It is very unlikely that someone would actually use this code on
a microcontroller, but since unicode was merged into libcore we
have to compile it on 16bit targets.

I've tried to make sure that the code stays the same on x86,
here is an assembly comparison: https://godbolt.org/g/wFw7dZ

r? @SimonSapin
2018-05-03 02:01:04 +00:00
Nicholas Nethercote
7a56360ece Remove parse::escape_default().
str::escape_default() can be used instead.
2018-05-03 10:31:45 +10:00
Nicholas Nethercote
d5d389e4f1 Use escape_default() for strings in LitKind::token().
This avoids converting every char to \u{...} form, which bloats the
resulting strings unnecessarily. It also provides consistency with the
existing escape_default() calls in LitKind::token() used for raw
string literals, char literals, and raw byte char literals.

There are two benefits from this change.

- Compilation is faster. Most of the rustc-perf benchmarks see a
  non-trivial speedup, particularly for incremental rebuilds, with the
  best speedup over 13%, and multiple others over 10%.

- Generated rlibs are smaller. An extreme example is libfutures.rlib,
  which shrinks from 2073306 bytes to 1765927 bytes, a 15% reduction.
2018-05-03 10:31:39 +10:00
Alex Crichton
f6841470f1 Revert "Implement FromStr for PathBuf"
This reverts commit 05a9acc3b8.
2018-05-02 16:39:54 -07:00
Andre Bogus
1cefb5ce31 nano-optimization for memchr::repeat_byte 2018-05-02 23:53:40 +02:00
Sean Griffin
68a1fdfee4 Add a comment explaining unification w/ universes 2018-05-02 15:02:11 -06:00
bors
8a37c75a3a Auto merge of #50355 - petrochenkov:50187, r=oli-obk
Fix an unresolved import issue with enabled `use_extern_macros`

This is a kinda ugly special-purpose solution that will break if we suddenly add a fourth namespace, but I hope to come up with something more general if I get to import resolution refactoring this summer.

Fixes https://github.com/rust-lang/rust/issues/50187 thus removing a blocker for stabilization of `use_extern_macros`
2018-05-02 20:33:31 +00:00
Sean Griffin
4ac9717a1f Fix rebase issues 2018-05-02 11:52:18 -06:00
bors
3eadd75473 Auto merge of #50354 - varkor:initial-field-alignment-c-int, r=eddyb
Correct initial field alignment for repr(C)/repr(int)

Fixes #50098 following https://github.com/rust-lang/rust/issues/50098#issuecomment-385497333.

(I wasn't sure which kind of test was best suited here — I picked run-pass simply because that was convenient, but if codegen is more appropriate, let me know and I'll change it.)

r? @eddyb
2018-05-02 17:02:25 +00:00
Sean Griffin
04708ba60e track skol levels in the InferCtxt rather than via counter 2018-05-02 08:36:13 -06:00
Sean Griffin
f5d240b432 Wrap InferCtxt::universe in a cell
We'll need this in order to start tracking skolemizatoins here, and it's
easier to update all the field accesses now rather than later.
2018-05-02 08:36:07 -06:00
Sean Griffin
ce64f9d823 Fix rebase issues 2018-05-02 08:28:42 -06:00
Oliver Schneider
bf2a6c3ff9 Allow unaligned reads in constants 2018-05-02 15:48:26 +02:00
Sean Griffin
2f69b798af give a universe to region variables 2018-05-02 07:36:11 -06:00
Sean Griffin
6234a89828 store RegionVariableInfo and not just RegionVariableOrigin 2018-05-02 07:36:11 -06:00
Sean Griffin
360cbf2f48 change skolemizations to use universe index
This is sort of confusing "side step". All it does is to change the
representation of a skolemized region. but the source of that universe
index is not the inference context, which is what we eventually want,
but rather an internal counter in the region inference context.

We'll patch that up later. But doing this now ought to help with
confusing diffs later.
2018-05-02 07:36:10 -06:00
Sean Griffin
e904d56928 add universes to type inference variables
This gives each type inference variable a notion of universe but doesn't
do anything with it. We can always get the "current universe" from
infer_ctxt. This relies on the property of type variables that they can
never interact with siblings.
2018-05-02 07:36:09 -06:00