kennytm [Tue, 17 Oct 2017 14:21:01 +0000 (22:21 +0800)]
Rollup merge of #45315 - zackmdavis:expected_statement_after_outer_attr_after_inner_attr, r=petrochenkov
don't issue "expected statement after outer attr." after inner attr.
While an inner attribute here is in fact erroneous, that error ("inner
attribute is not permitted in this context") successfully gets set earlier;
this further admonition is nonsensical.
bors [Tue, 17 Oct 2017 03:11:52 +0000 (03:11 +0000)]
Auto merge of #45179 - cuviper:result-intoiter-clone, r=BurntSushi
core: derive Clone for result::IntoIter
It appears to be a simple oversight that `result::IntoIter<T>` doesn't
implement `Clone` (where `T: Clone`). We do already have `Clone` for
`result::Iter`, as well as the similar `option::IntoIter` and `Iter`.
bors [Tue, 17 Oct 2017 00:34:32 +0000 (00:34 +0000)]
Auto merge of #45138 - johnthagen:future_imports, r=nikomatsakis
Add more __future__ imports to increase compatibility with Python 3 in bootstrap
The functionality of the `__future__` imports are described [here](https://docs.python.org/3/library/__future__.html).
These will help ensure the bootstrap code stays compatible with Python 3. If changes are made in the future that use absolute imports, division, or the `print` function, this will be ensure that running it under Python 2 will pass or fail the same way as Python 3.
`Option` is made a [new-style class](https://docs.python.org/2/reference/datamodel.html#new-style-and-classic-classes), so that it behaves the same way in Python 2 and 3.
The `__future__ unicode_literals` import is not used, because that can change the semantics of the code in Python 2 in unwanted ways. For more information see [this article](http://python-future.org/unicode_literals.html).
bors [Mon, 16 Oct 2017 18:52:16 +0000 (18:52 +0000)]
Auto merge of #45243 - alexcrichton:tool-rls-rustfmt, r=Mark-Simulacrum
rustbuild: Allow setting rls/rustfmt to "broken"
This commit enables configuring the RLS/rustfmt tools to the "broken" state and
actually get it past CI. The main changes here were to update all dist-related
code to handle the situation where the RLS isn't available. This in turn
involved a homegrown preprocessor-like-function to edit the configuration files
we pass to the various combined installer tools.
Alex Crichton [Tue, 19 Sep 2017 20:04:17 +0000 (13:04 -0700)]
rustbuild: Allow setting rls/rustfmt to "broken"
This commit enables configuring the RLS/rustfmt tools to the "broken" state and
actually get it past CI. The main changes here were to update all dist-related
code to handle the situation where the RLS isn't available. This in turn
involved a homegrown preprocessor-like-function to edit the configuration files
we pass to the various combined installer tools.
bors [Mon, 16 Oct 2017 16:02:43 +0000 (16:02 +0000)]
Auto merge of #45202 - alexcrichton:fix-inline-always, r=michaelwoerister
rustc: Handle #[inline(always)] at -O0
This commit updates the handling of `#[inline(always)]` functions at -O0 to
ensure that it's always inlined regardless of the number of codegen units used.
bors [Mon, 16 Oct 2017 03:02:05 +0000 (03:02 +0000)]
Auto merge of #45283 - alexcrichton:used-mut-nodes, r=arielb1
rustc: Remove `used_mut_nodes` from `TyCtxt`
This updates the borrowck query to return a result, and this result is then used
to incrementally check for unused mutable nodes given sets of all the used
mutable nodes.
Zack M. Davis [Mon, 16 Oct 2017 02:02:45 +0000 (19:02 -0700)]
don't issue "expected statement after outer attr." after inner attr.
While an inner attribute here is in fact erroneous, that error ("inner
attribute is not permitted in this context") successfully gets set earlier;
this further admonition is nonsensical.
bors [Mon, 16 Oct 2017 00:32:21 +0000 (00:32 +0000)]
Auto merge of #45191 - petrochenkov:yesar, r=Mark-Simulacrum
rustbuild: Support specifying archiver and linker explicitly
With this patch `x.py test` passes without toolchain being in `PATH` if `cc`, `cxx`, `ar`, `linker` and `gdb` are specified in `config.toml` (except for a few `run-make` tests using `nm`).
bors [Sun, 15 Oct 2017 20:07:35 +0000 (20:07 +0000)]
Auto merge of #45215 - alexcrichton:thin-lto-reference-more, r=michaelwoerister
rustc: Fix some ThinLTO internalization
First the `addPreservedGUID` function forgot to take care of "alias" summaries.
I'm not 100% sure what this is but the current code now matches upstream. Next
the `computeDeadSymbols` return value wasn't actually being used, but it needed
to be used! Together these should...
bors [Sun, 15 Oct 2017 17:48:12 +0000 (17:48 +0000)]
Auto merge of #44613 - QuietMisdreavus:rustdoc-perf, r=michaelwoerister
some low-hanging rustdoc optimizations
There were a few discussions earlier today in #rust-internals about the syscall usage and overall performance of rustdoc. This PR is intended to pick some low-hanging fruit and try to rein in some of the performance issues of rustdoc.
Alex Crichton [Wed, 11 Oct 2017 18:19:59 +0000 (11:19 -0700)]
rustc: Fix some ThinLTO internalization
First the `addPreservedGUID` function forgot to take care of "alias" summaries.
I'm not 100% sure what this is but the current code now matches upstream. Next
the `computeDeadSymbols` return value wasn't actually being used, but it needed
to be used! Together these should...
bors [Sun, 15 Oct 2017 14:00:39 +0000 (14:00 +0000)]
Auto merge of #45228 - theotherjimmy:ensure-query, r=michaelwoerister
incr.comp.: Introduce `ensure` and `ensure` typeck_tables_of
Resolves #45210
In this Pull Request we introduce the `ensure` query/function. `ensure` has the
semantics and type of the function `Q1` below:
```rust
fn Q1::ensure(K){
Q(K);
}
```
Further, `ensure` avoids the need to load the result from disk (or execute the
provider, if we are not storing the results of Q to disk).
kennytm [Sun, 15 Oct 2017 06:21:57 +0000 (14:21 +0800)]
Rollup merge of #45269 - sfackler:connect-timeout-fix, r=alexcrichton
Fix TcpStream::connect_timeout on linux
Linux appears to set POLLOUT when a conection's refused, which is pretty
weird. Invert the check to look for an error explicitly. Also add an
explict test for this case.
kennytm [Sun, 15 Oct 2017 06:21:55 +0000 (14:21 +0800)]
Rollup merge of #45263 - Manishearth:hashmap-clean, r=bluss
Do some cleanups for hashmaps
@mystor noticed some things whilst reading through the hashmap RawTable code.
Firstly, in RawTable we deal with this hash_offset value that is the offset of the list of hashes from the buffer start. This is always zero, and this isn't consistently used (which means that we would have bugs if we set it to something else). We should just remove this since it doesn't help us at all.
Secondly, the probing length tag is not copied when cloning a raw table. This is minor and basically means we do a bit more work than we need on further inserts on a cloned hashmap.
Steven Fackler [Sat, 14 Oct 2017 02:22:33 +0000 (19:22 -0700)]
Fix TcpStream::connect_timeout on linux
Linux appears to set POLLOUT when a conection's refused, which is pretty
weird. Invert the check to look for an error explicitly. Also add an
explict test for this case.
bors [Sat, 14 Oct 2017 18:48:08 +0000 (18:48 +0000)]
Auto merge of #45177 - oli-obk:clippy, r=alexcrichton
Enable building clippy in CI
r? @alexcrichton
As discussed at Rustfest. Measured additional time is 4 minutes on my machine if no dependencies are shared with other tools. In reality most dependencies are shared (especially the slow to compile ones like serde).
cc @Manishearth
Does not run clippy's test suite, since
a) it is nontrivial in the rustc build system
b) it breaks more frequently but the breakage is negligible
If clippy breaks, the procedure to follow is documented under https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#external-dependencies
Alex Crichton [Fri, 15 Sep 2017 19:49:10 +0000 (12:49 -0700)]
rustc: Remove `used_mut_nodes` from `TyCtxt`
This updates the borrowck query to return a result, and this result is then used
to incrementally check for unused mutable nodes given sets of all the used
mutable nodes.
This isn't strictly necessary for hashmap cloning to work. The tag is
used to hint for an upcoming resize, so it's good to copy this
information over.
(We can do cleverer things like actually resizing the hashmap when we
see the tag, or even cleaning up the entry order, but this requires
more thought and might not be worth it)
This offset is always zero, and we don't consistently take it into
account. This is okay, because it's zero, but if it ever changes we're
going to have bugs (e.g. in the `dealloc` call, where we don't take it
into account).
It's better to remove this for now; if we ever have a need for a
nonzero offset we can add it back, and handle it properly when we do so.
bors [Sat, 14 Oct 2017 13:47:44 +0000 (13:47 +0000)]
Auto merge of #45167 - pnkfelix:migrate-remaining-ast-diagnostics, r=arielb1
MIR-borrowck: Migrate remaining ast diagnostics
This PR migrates all of the remaining diagnostics in `rustc_borrowck` over to `rustc_mir`, exposing them for use by both AST-borrowck and MIR-borrowck.
This should hopefully resolve all remaining cases of diagnostic messages emitted from borrowck under `-Z borrowck-mir` without an origin annotation.
bors [Sat, 14 Oct 2017 11:22:46 +0000 (11:22 +0000)]
Auto merge of #45162 - chrisvittal:mir-testing, r=nikomatsakis
Modify MIR testing to require consecutive lines
MIR testing now requires that lines be consecutive. To achive this,
instead of collecting the expected mir as a string, it is now wrapped in
an `ExpectedLine` enum, that is either `Elision` or `Text(T)` where `T:
AsRef<str>`. `Text` lines must be matched in order, unless separated by
`Elision` lines. Elision occurs lazily, that is, an Elision will skip
as few lines as possible.
To add a new elision marker. Put a comment containing only "..." and
whitespace in any MIR testing block. Like so:
bors [Sat, 14 Oct 2017 06:34:20 +0000 (06:34 +0000)]
Auto merge of #45137 - theotherjimmy:vtable-methods-query, r=nikomatsakis
Queryify Vtable methods
This query might come with a downside: It converts an iterator to a Vec, which may increase the working set of rustc on programs that use many many traits (I think that's where this is used).
kennytm [Fri, 13 Oct 2017 15:38:04 +0000 (23:38 +0800)]
Rollup merge of #45245 - stjepang:more-padding-between-impls, r=QuietMisdreavus
Rustdoc: Increase padding between consecutive impls
Currently, [implementors](https://doc.rust-lang.org/nightly/std/iter/trait.IntoIterator.html#implementors) list is a bit too condensed. More spacing makes the list easier to read.
Check out [this comment](https://github.com/rust-lang/rust/issues/41879#issuecomment-333121118) to see what's the effect of this change.
kennytm [Fri, 13 Oct 2017 15:38:02 +0000 (23:38 +0800)]
Rollup merge of #45236 - alexcrichton:build-less, r=Mark-Simulacrum
rustbuild: Prevent spurious rebuilds of the RLS
The RLS currently is rebuilt every time you test it because the `OPENSSL_DIR`
env var is changing, which is in turn caused by an accidental omission of
`prepare_tool_cargo` when testing the RLS.
kennytm [Fri, 13 Oct 2017 15:38:00 +0000 (23:38 +0800)]
Rollup merge of #45209 - kennytm:treat-checksum-error-as-download-error, r=Mark-Simulacrum
rustbuild: Make openssl download more reliable.
1. Add `-f` flag to curl, so when the server returns 403 or 500 it will fail immediately.
2. Moved the checksum part into the retry loop, assuming checksum failure is due to broken download that can be fixed by downloading again.
This PR is created responding to two recent spurious failures in https://github.com/rust-lang/rust/pull/45075#issuecomment-335202319 and https://github.com/rust-lang/rust/pull/45030#issuecomment-335029356.
kennytm [Fri, 13 Oct 2017 15:37:59 +0000 (23:37 +0800)]
Rollup merge of #45203 - alexcrichton:update-llvm, r=michaelwoerister
rustc: Update LLVM with a ThinLTO fix
This commit updates LLVM with a patch that's landed upstream to fix an assertion
that was tripping when ThinLTO was activated. Unfortunately I wasn't able to get
a reduced test case, but I've tested manually on the affected crates and the
assertion is indeed fixed.
kennytm [Fri, 13 Oct 2017 15:37:58 +0000 (23:37 +0800)]
Rollup merge of #45189 - alexcrichton:thinlto-allocators, r=michaelwoerister
rustc: Handle `#[no_mangle]` anywhere in a crate
This commit updates the reachability pass of the compiler to seed the local
worklist with `#[no_mangle]`-like items anywhere in a crate, not just those
reachable from public items.
kennytm [Fri, 13 Oct 2017 15:37:57 +0000 (23:37 +0800)]
Rollup merge of #45178 - Badel2:comma-after-struct, r=petrochenkov
Better error message for comma after base struct
#41834
This adds a better error for commas after the base struct:
```
let foo = Foo {
one: 111,
..Foo::default(), // This comma is a syntax error
};
```
The current error is a generic `expected one of ...` which isn't beginner-friendly. My error looks like this:
```
error: cannot use a comma after the base struct
--> tmp/example.rs:26:9
|
26 | ..Foo::default(),
| ^^^^^^^^^^^^^^^^- help: remove this comma
|
= note: the base struct expansion must always be the last field
```
I even added a note for people who don't know why this isn't allowed.
bors [Fri, 13 Oct 2017 15:04:12 +0000 (15:04 +0000)]
Auto merge of #45063 - michaelwoerister:bring-back-incremental-info, r=nikomatsakis
incr.comp.: Bring back output of -Zincremental-info.
This got kind lost during the transition to red/green.
I also switched back from `eprintln!()` to `println!()` since the former never actually produced any output. I suspect this has to do with `libterm` somehow monopolizing `stderr`.