kennytm [Wed, 18 Oct 2017 17:59:49 +0000 (01:59 +0800)]
Rollup merge of #45217 - SimonSapin:alloc-doc, r=steveklabnik
Fix out of date unstable book entries for `alloc_*` features.
The `alloc_jemalloc` crate does not provide a type to use with `#[global_allocator]`, and (according to Alex) `extern crate alloc_jemalloc;` alone became a no-op when `#[global_allocator]` was introduced.
kennytm [Wed, 18 Oct 2017 17:59:47 +0000 (01:59 +0800)]
Rollup merge of #45098 - sunjay:breakingrustfmtrls, r=alexcrichton
Documenting the process for when rustfmt/rls break
**DO NOT MERGE YET**
I'm documenting what to do when rustfmt or rls break because of your changes. I'm currently going through this and will keep adding more as I figure out what all the steps are. This first commit is based on @alexcrichton's [comment on my original PR](https://github.com/rust-lang/rust/pull/44766#issuecomment-332653525).
kennytm [Wed, 18 Oct 2017 17:59:46 +0000 (01:59 +0800)]
Rollup merge of #45082 - jacwah:explain-E0382, r=steveklabnik
Mention Clone and refs in --explain E0382
I followed the discussion in #42446 and came up with these additions.
- Mention references before going into traits. They're probably more likely solutions.
- Mention `Clone` before `Copy`. Cloning has wider applicability and `#derive[Copy, Clone]` makes more sense after learning about `Clone`.
The language is not great, any suggestions there would be appreciated :sparkles:
kennytm [Wed, 18 Oct 2017 17:59:44 +0000 (01:59 +0800)]
Rollup merge of #44138 - steveklabnik:rustdoc-deprecations, r=QuietMisdreavus
Deprecate several flags in rustdoc
Part of #44136
cc @rust-lang/dev-tools @rust-lang/docs
This is a very basic PR to start deprecating some flags; `rustdoc` doesn't really have fancy output options like `rustc` does, so I went with `eprintln!`. Happy to change it if people feel that's not appropriate.
Also, I have no idea if we can or should write tests here, so I didn't try. If someone feels strongly about it, then let's do it, but given that the only outcome here is a side effect...
bors [Wed, 18 Oct 2017 10:44:08 +0000 (10:44 +0000)]
Auto merge of #44501 - nikomatsakis:issue-44137-non-query-data-in-tcx, r=eddyb
remove or encapsulate the remaining non-query data in tcx
I wound up removing the existing cache around inhabitedness since it didn't seem to be adding much value. I reworked const rvalue promotion, but not that much (i.e., I did not split the computation into bits, as @eddyb had tossed out as a suggestion). But it's now demand driven, at least.
cc @michaelwoerister -- see the `forbid_reads` change in last commit
r? @eddyb -- since the trickiest of this PR is the work on const rvalue promotion
Sunjay Varma [Tue, 10 Oct 2017 20:31:43 +0000 (16:31 -0400)]
Added a section about updating submodules
The process for updating rustfmt is quite involved because of the way everything is configured. This section covers the steps for updating rustfmt and rationale behind them.
kennytm [Tue, 17 Oct 2017 14:21:02 +0000 (22:21 +0800)]
Rollup merge of #45321 - alexcrichton:xcodeup, r=aidanhs
ci: Update Travis OSX builders
Looks like Travis [has announced][blog] that our current `xcode8.2` image is
being deprecated and the recommended Xcode 7 image is `xcode7.3`. This updates
us to these ahead of time to make sure we can shake out any bugs, if any.
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).
Niko Matsakis [Fri, 8 Sep 2017 13:58:53 +0000 (09:58 -0400)]
restructure the public inhabitedness APIs and remove the cache
The cache was broken anyhow and this computation doesn't look that
expensive. These public accessors could potentially become queries,
but we'd have to add some more complex logic around lift. I'd prefer
to have some test cases to profile with before doing that.
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.
Alex Crichton [Mon, 16 Oct 2017 15:25:58 +0000 (08:25 -0700)]
ci: Update Travis OSX builders
Looks like Travis [has announced][blog] that our current `xcode8.2` image is
being deprecated and the recommended Xcode 7 image is `xcode7.3`. This updates
us to these ahead of time to make sure we can shake out any bugs, if any.
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)