]> git.lizzy.rs Git - rust.git/log
rust.git
7 years agoRemove unused method CrateContext::rotate().
Michael Woerister [Mon, 7 Nov 2016 19:40:52 +0000 (14:40 -0500)]
Remove unused method CrateContext::rotate().

7 years agoAdapt accidentally fixed test case.
Michael Woerister [Mon, 7 Nov 2016 18:33:21 +0000 (13:33 -0500)]
Adapt accidentally fixed test case.

7 years agoFix codegen test after change of llvm type naming scheme
Michael Woerister [Tue, 8 Nov 2016 18:23:57 +0000 (13:23 -0500)]
Fix codegen test after change of llvm type naming scheme

7 years agoMake names of types used in LLVM IR stable.
Michael Woerister [Fri, 4 Nov 2016 21:37:42 +0000 (17:37 -0400)]
Make names of types used in LLVM IR stable.

Before this PR, type names could depend on the cratenum being used
for a given crate and also on the source location of closures.
Both are undesirable for incremental compilation where we cache
LLVM IR and don't want it to depend on formatting or in which
order crates are loaded.

7 years agoAuto merge of #37753 - est31:master, r=petrochenkov
bors [Sun, 13 Nov 2016 17:53:30 +0000 (09:53 -0800)]
Auto merge of #37753 - est31:master, r=petrochenkov

Fix empty lifetime list or one with trailing comma being rejected

Fixes #37733

7 years agoFix empty lifetime list or one with trailing comma being rejected
est31 [Sun, 13 Nov 2016 16:55:17 +0000 (17:55 +0100)]
Fix empty lifetime list or one with trailing comma being rejected

Fixes #37733

7 years agoAuto merge of #37735 - Mark-Simulacrum:remove-e-macro, r=bluss
bors [Sun, 13 Nov 2016 13:22:09 +0000 (05:22 -0800)]
Auto merge of #37735 - Mark-Simulacrum:remove-e-macro, r=bluss

Remove macro work-around

`--stage 2` build succeeded.

7 years agoAuto merge of #37728 - QuietMisdreavus:rustdoc-enum-struct, r=GuillaumeGomez
bors [Sun, 13 Nov 2016 06:36:49 +0000 (22:36 -0800)]
Auto merge of #37728 - QuietMisdreavus:rustdoc-enum-struct, r=GuillaumeGomez

rustdoc: fold fields for enum struct variants into a docblock

Per discussion in #37500, this PR updates the enum rendering code to wrap variants with named struct fields in a `docblock` span that is hidden automatically upon load of the page. This gives struct variant fields a clean separation from other enum variants, giving a boost to the readability of such documentation. Preview output is available [on the issue page](https://github.com/rust-lang/rust/issues/37500#issuecomment-260069269), but for the sake of completeness I'll include the images here again.

![rustdoc struct enum variant 4 part 1](https://cloud.githubusercontent.com/assets/5217170/20231925/96160b7e-a82a-11e6-945b-bbba95c5e4bc.PNG)

When you initially load the page, there's a line under variants with struct fields letting you know you can click to expand the listing.

![rustdoc struct enum variant 4 part 2](https://cloud.githubusercontent.com/assets/3050060/20232067/1dc63266-a866-11e6-9555-8fb1c8afdcec.png)

If you click to expand, the header and table unfold into a nicely-indented listing.

If you want to take a look in your own browser and screen size, [I've got this version hosted on my server](https://shiva.icesoldier.me/doctest/doctest/enum.OldTopicRemoval.html).

Fixes #37500

r? @GuillaumeGomez

7 years agoAuto merge of #37689 - eddyb:bktrc-pls, r=alexcrichton
bors [Sun, 13 Nov 2016 02:53:51 +0000 (18:53 -0800)]
Auto merge of #37689 - eddyb:bktrc-pls, r=alexcrichton

Set `RUST_BACKTRACE=1` on travis to be more helpful.

7 years agoAuto merge of #37675 - arielb1:trans-closure, r=eddyb
bors [Sat, 12 Nov 2016 23:29:13 +0000 (15:29 -0800)]
Auto merge of #37675 - arielb1:trans-closure, r=eddyb

Translate closures through the collector

Now that old trans is gone, there is no need for the hack of translating closures when they are instantiated. We can translate them like regular items.

r? @eddyb

7 years agoaddress review comments
Ariel Ben-Yehuda [Sat, 12 Nov 2016 21:20:02 +0000 (23:20 +0200)]
address review comments

7 years agoAuto merge of #37611 - Mark-Simulacrum:tari-nodejs-runner-detect, r=alexcrichton
bors [Sat, 12 Nov 2016 20:02:40 +0000 (12:02 -0800)]
Auto merge of #37611 - Mark-Simulacrum:tari-nodejs-runner-detect, r=alexcrichton

compile-test: allow overriding nodejs binary location

Add a command-line argument to manually specify which nodejs binary should be used,
which disables the default search.

Original work done by @tari.

Fixes #34188.

7 years agorustdoc: fold fields for enum struct variants into a docblock
QuietMisdreavus [Fri, 11 Nov 2016 22:41:00 +0000 (16:41 -0600)]
rustdoc: fold fields for enum struct variants into a docblock

7 years agoRemove macro work-around.
Mark-Simulacrum [Sat, 12 Nov 2016 19:20:58 +0000 (12:20 -0700)]
Remove macro work-around.

7 years agorustc_trans: translate closures using the collector
Ariel Ben-Yehuda [Wed, 9 Nov 2016 21:09:28 +0000 (23:09 +0200)]
rustc_trans: translate closures using the collector

Translate closures like normal functions, using the trans::collector
interface.

7 years agorustc_typeck: register item types for closures
Ariel Ben-Yehuda [Wed, 9 Nov 2016 18:41:03 +0000 (20:41 +0200)]
rustc_typeck: register item types for closures

This makes them closer to actual items and allows for more
transparent treatment.

7 years agorustc: move closure upvar types to the closure substs
Ariel Ben-Yehuda [Thu, 3 Nov 2016 20:19:33 +0000 (22:19 +0200)]
rustc: move closure upvar types to the closure substs

This moves closures to the (DefId, Substs) scheme like all other items,
and saves a word from the size of TyS now that Substs is 2 words.

7 years agoAuto merge of #37531 - estebank:fix-ref-mut-mut, r=jonathandturner
bors [Sat, 12 Nov 2016 16:41:30 +0000 (08:41 -0800)]
Auto merge of #37531 - estebank:fix-ref-mut-mut, r=jonathandturner

Fix invalid "ref mut mut" sugestion

Change output from:

```nocode
error: cannot borrow immutable local variable `x` as mutable
  --> <anon>:12:23
   |
11 |         TestEnum::Item(ref mut x) => {
   |                        --------- use `ref mut mut x` here to make mutable
12 |             test(&mut x);
   |                       ^ cannot borrow mutably
```

to

```nocode
error: cannot borrow immutable local variable `x` as mutable
  --> <anon>:12:23
   |
12 |             test(&mut x);
   |                       ^
   |                       |
   |                       cannot reborrow mutably
   |                       try removing `&mut` here
```
Fixes #37139, #34337, #34126

7 years agoAuto merge of #37554 - mikhail-m1:dnlle, r=jonathandturner
bors [Sat, 12 Nov 2016 13:20:56 +0000 (05:20 -0800)]
Auto merge of #37554 - mikhail-m1:dnlle, r=jonathandturner

Improve "Doesn't live long enough" error

case with temporary variable

issue #36279 part of #35233

r? @jonathandturner

7 years agoSet `RUST_BACKTRACE=1` on travis to be more helpful.
Eduard Burtescu [Thu, 10 Nov 2016 14:12:53 +0000 (16:12 +0200)]
Set `RUST_BACKTRACE=1` on travis to be more helpful.

7 years agoAuto merge of #37730 - eddyb:rollup, r=eddyb
bors [Sat, 12 Nov 2016 08:39:50 +0000 (00:39 -0800)]
Auto merge of #37730 - eddyb:rollup, r=eddyb

Rollup of 30 pull requests

- Successful merges: #37190, #37368, #37481, #37503, #37527, #37535, #37551, #37584, #37600, #37613, #37615, #37659, #37662, #37669, #37682, #37688, #37690, #37692, #37693, #37694, #37695, #37696, #37698, #37699, #37705, #37708, #37709, #37716, #37724, #37727
- Failed merges: #37640, #37689, #37717

7 years agoRollup merge of #37727 - GuillaumeGomez:invalid_src, r=eddyb
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:45 +0000 (10:38 +0200)]
Rollup merge of #37727 - GuillaumeGomez:invalid_src, r=eddyb

Fix invalid src url

Fixes #37684.

Thanks to @eddyb's help.

r? @eddyb

7 years agoRollup merge of #37724 - brson:bump, r=alexcrichton
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:45 +0000 (10:38 +0200)]
Rollup merge of #37724 - brson:bump, r=alexcrichton

Bump verison to 1.15.0

The bootstrap compiler still needs to be updated, but that's waiting on new betas.

7 years agoRollup merge of #37716 - GuillaumeGomez:mem_urls, r=@frewsxcv
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:44 +0000 (10:38 +0200)]
Rollup merge of #37716 - GuillaumeGomez:mem_urls, r=@frewsxcv

Mem urls

r? @steveklabnik

7 years agoRollup merge of #37709 - bluss:cleaner-vec-extend, r=alexcrichton
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:44 +0000 (10:38 +0200)]
Rollup merge of #37709 - bluss:cleaner-vec-extend, r=alexcrichton

vec: Write the .extend() specialization in cleaner style

As far as possible, use regular `default fn` specialization in favour of
ad-hoc conditionals.

No intentional functional change. Code quality was validated against the same
benchmarks that were used in initial trusted len development.

This change is prompted by taking impressions from
https://github.com/rust-lang/rust/issues/27749#issuecomment-244498705

7 years agoRollup merge of #37708 - oli-obk:box_free, r=eddyb
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:44 +0000 (10:38 +0200)]
Rollup merge of #37708 - oli-obk:box_free, r=eddyb

change the `box_free` lang item to accept pointers to unsized types

in miri we use the `box_free` lang item as the destructor for `Box` objects, since the function's api matches that of an `fn drop(&mut self)` in a hypothetical `impl<T: ?Sized> Drop for Box<T>` exactly.

This works fine except if we insert a check in the `size_of` intrinsic to ensure that it is only called with sized types, since the `box_free` lang item calls that intrinsic.

cc @eddyb

no clue who to r? here, probably lang team?

7 years agoRollup merge of #37705 - nnethercote:fewer-mk_ty-calls, r=brson
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:44 +0000 (10:38 +0200)]
Rollup merge of #37705 - nnethercote:fewer-mk_ty-calls, r=brson

Avoid unnecessary mk_ty calls in Ty::super_fold_with.

This speeds up compilation of several rustc-benchmarks by 1--2% and the workload in #36799 by 5%.

r? @eddyb

7 years agoRollup merge of #37699 - alexcrichton:default-for-duration, r=brson
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:43 +0000 (10:38 +0200)]
Rollup merge of #37699 - alexcrichton:default-for-duration, r=brson

std: Derive `Default` for `Duration`.

Discussed in #37546 the libs team reached the conclusion that a default zero
duration seems like a reasonable implementation of the `Default` trait.

Closes #37546

7 years agoRollup merge of #37698 - GuillaumeGomez:marker_urls, r=brson
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:43 +0000 (10:38 +0200)]
Rollup merge of #37698 - GuillaumeGomez:marker_urls, r=brson

Add missing urls for marker's traits

r? @steveklabnik

7 years agoRollup merge of #37696 - arthurprs:patch-1, r=alexcrichton
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:42 +0000 (10:38 +0200)]
Rollup merge of #37696 - arthurprs:patch-1, r=alexcrichton

Remove one bounds check from BufReader

Very minor thing. Otherwise the optimizer can't be sure that pos <= cap. Added a paranoid debug_assert to ensure correctness instead.

CC #37573

7 years agoRollup merge of #37695 - estebank:unescaped-curly, r=alexcrichton
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:42 +0000 (10:38 +0200)]
Rollup merge of #37695 - estebank:unescaped-curly, r=alexcrichton

On fmt string with unescaped `{` note how to escape

On cases of malformed format strings where a `{` hasn't been properly escaped, like `println!("{");`, present a NOTE explaining how to escape the `{` char.

Fix #34300.

7 years agoRollup merge of #37694 - michaelwoerister:test-if-ich, r=brson
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:42 +0000 (10:38 +0200)]
Rollup merge of #37694 - michaelwoerister:test-if-ich, r=brson

ICH: Add test case for if- and if-let-expressions.

r? @nikomatsakis

7 years agoRollup merge of #37693 - michaelwoerister:ich-tests, r=brson
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:42 +0000 (10:38 +0200)]
Rollup merge of #37693 - michaelwoerister:ich-tests, r=brson

ICH: Add test case for call expressions.

r? @nikomatsakis

7 years agoRollup merge of #37692 - nbp:debug-lvalue-subslice, r=eddyb
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:42 +0000 (10:38 +0200)]
Rollup merge of #37692 - nbp:debug-lvalue-subslice, r=eddyb

Balance the debug output of Lvalue Subslice

The current debug output for Lvalue Subslice is not balanced and does not respect the comment[1], which indicates that we use `slice[from:-to] in Python terms.`.  In python terms slices which have a start but no end are written as `a[start:]`, so following the comment, I fixed the output accordingly.

Grep-ing over the sources, I did not found any test cases checking this subslice debug output.
Note, I have not yet tested this change yet, as I am still waiting for the end of LLVM compilation.

[1] https://manishearth.github.io/rust-internals-docs/rustc/mir/enum.ProjectionElem.html

7 years agoRollup merge of #37690 - TimNN:llvm-rel-dbg, r=alexcrichton
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:41 +0000 (10:38 +0200)]
Rollup merge of #37690 - TimNN:llvm-rel-dbg, r=alexcrichton

rustbuild: support RelWithDebInfo for llvm

r? @alexcrichton

7 years agoRollup merge of #37688 - eddyb:lazy-8, r=petrochenkov
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:41 +0000 (10:38 +0200)]
Rollup merge of #37688 - eddyb:lazy-8, r=petrochenkov

[8/n] rustc: clean up lookup_item_type and remove TypeScheme.

_This is part of a series ([prev](https://github.com/rust-lang/rust/pull/37676) | [next]()) of patches designed to rework rustc into an out-of-order on-demand pipeline model for both better feature support (e.g. [MIR-based](https://github.com/solson/miri) early constant evaluation) and incremental execution of compiler passes (e.g. type-checking), with beneficial consequences to IDE support as well.
If any motivation is unclear, please ask for additional PR description clarifications or code comments._

<hr>

* `tcx.tcache` -> `tcx.item_types`
* `TypeScheme` (grouping `Ty` and `ty::Generics`) is removed
* `tcx.item_types` entries no longer duplicated in `tcx.tables.node_types`
* `tcx.lookup_item_type(def_id).ty` -> `tcx.item_type(def_id)`
* `tcx.lookup_item_type(def_id).generics` -> `tcx.item_generics(def_id)`
* `tcx.lookup_generics(def_id)` -> `tcx.item_generics(def_id)`
* `tcx.lookup_{super_,}predicates(def_id)` -> `tcx.item_{super_,}predicates(def_id)`

7 years agoRollup merge of #37682 - cuviper:local-cargo, r=alexcrichton
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:41 +0000 (10:38 +0200)]
Rollup merge of #37682 - cuviper:local-cargo, r=alexcrichton

rustbuild: enable an initial local cargo

This allows the initial build of src/bootstrap itself to use a local
cargo taken from `configure --local-rust-root`.  It was already finding
rustc this way, but was always downloading cargo since it didn't know
where to find it.

It now matches the same logic that `config.rs` will use for stage0,
where both rustc and cargo are taken from `CFG_LOCAL_RUST_ROOT`.

7 years agoRollup merge of #37669 - GuillaumeGomez:always_urls, r=brson
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:41 +0000 (10:38 +0200)]
Rollup merge of #37669 - GuillaumeGomez:always_urls, r=brson

Add missing urls for FusedIterator and TrustedLen traits

r? @steveklabnik

7 years agoRollup merge of #37662 - wesleywiser:intrinsics_docs, r=aturon
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:41 +0000 (10:38 +0200)]
Rollup merge of #37662 - wesleywiser:intrinsics_docs, r=aturon

Add documentation to some of the unstable intrinsics

Part of #34338

7 years agoRollup merge of #37659 - nikomatsakis:sfackler-36340-fix, r=eddyb
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:40 +0000 (10:38 +0200)]
Rollup merge of #37659 - nikomatsakis:sfackler-36340-fix, r=eddyb

introduce a `fudge_regions_if_ok` to address false region edges

Fixes #37655.

r? @eddyb
cc @sfackler

7 years agoRollup merge of #37615 - atilag:armv5te-support, r=alexcrichton
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:40 +0000 (10:38 +0200)]
Rollup merge of #37615 - atilag:armv5te-support, r=alexcrichton

Add support for ARMv5TE architecture

7 years agoRollup merge of #37613 - DanielKeep:eww-you-got-printf-in-your-format, r=alexcrichton
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:40 +0000 (10:38 +0200)]
Rollup merge of #37613 - DanielKeep:eww-you-got-printf-in-your-format, r=alexcrichton

Add foreign formatting directive detection.

This teaches `format_args!` how to interpret format printf- and
shell-style format directives.  This is used in cases where there are
unused formatting arguments, and the reason for that *might* be because
the programmer is trying to use the wrong kind of formatting string.

This was prompted by an issue encountered by simulacrum on the #rust IRC
channel.  In short: although `println!` told them that they weren't using
all of the conversion arguments, the problem was in using printf-syle
directives rather than ones `println!` would undertand.

Where possible, `format_args!` will tell the programmer what they should
use instead.  For example, it will suggest replacing `%05d` with `{:0>5}`,
or `%2$.*3$s` with `{1:.3$}`.  Even if it cannot suggest a replacement,
it will explicitly note that Rust does not support that style of directive,
and direct the user to the `std::fmt` documentation.

-----

**Example**: given:

```rust
fn main() {
    println!("%.*3$s %s!\n", "Hello,", "World", 4);
    println!("%1$*2$.*3$f", 123.456);
}
```

The compiler outputs the following:

```text
error: multiple unused formatting arguments
 --> local/fmt.rs:2:5
  |
2 |     println!("%.*3$s %s!\n", "Hello,", "World", 4);
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
note: argument never used
 --> local/fmt.rs:2:30
  |
2 |     println!("%.*3$s %s!\n", "Hello,", "World", 4);
  |                              ^^^^^^^^
note: argument never used
 --> local/fmt.rs:2:40
  |
2 |     println!("%.*3$s %s!\n", "Hello,", "World", 4);
  |                                        ^^^^^^^
note: argument never used
 --> local/fmt.rs:2:49
  |
2 |     println!("%.*3$s %s!\n", "Hello,", "World", 4);
  |                                                 ^
  = help: `%.*3$s` should be written as `{:.2$}`
  = help: `%s` should be written as `{}`
  = note: printf formatting not supported; see the documentation for `std::fmt`
  = note: this error originates in a macro outside of the current crate

error: argument never used
 --> local/fmt.rs:6:29
  |
6 |     println!("%1$*2$.*3$f", 123.456);
  |                             ^^^^^^^
  |
  = help: `%1$*2$.*3$f` should be written as `{0:1$.2$}`
  = note: printf formatting not supported; see the documentation for `std::fmt`
```

7 years agoRollup merge of #37600 - brson:relnotes-1.13, r=alexcrichton
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:39 +0000 (10:38 +0200)]
Rollup merge of #37600 - brson:relnotes-1.13, r=alexcrichton

Add changelog for 1.13.0

The diagnostics PRs are excellent and some have excellent examples thanks @jonathandturner @estebank.

[Here are some notes about the performance changes during the release.
Compile times are improved %40 in some cases](https://gist.github.com/brson/1404c4bf4868d7d108f240a6ecba7f31).

This desires to be backported to beta for 1.13.

Sadly, the [1.12.1 changelog PR](https://github.com/rust-lang/rust/pull/37317) has not merged to master yet, and is sitting in a [rollup PR](https://github.com/rust-lang/rust/pull/37597).

r? @rust-lang/lang @rust-lang/compiler @rust-lang/libs @rust-lang/core

7 years agoRollup merge of #37584 - alexcrichton:travis, r=brson
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:38 +0000 (10:38 +0200)]
Rollup merge of #37584 - alexcrichton:travis, r=brson

Move all Linux/OSX CI infastructure to Travis

This commit configures our `.travis.yml` to test the full suite of tests we have
on Buildbot right now. A whole mess of docker images are added to the `src/ci`
directory which represent all the build environments for each configuration.
Each of these environments is then configured in `.travis.yml` to run on the
auto branch.

Note that the full matrix of tests aren't intended to be run on all PRs.
Instead, we continue to run only one entry in the matrix, forcing all others to
finish quickly. Only the `auto` branch should run the full matrix of builds.

Also note that the infrastructure hasn't quite been allocated yet to the
rust-lang/rust repository, so everything is disabled for now except for the one
build that happens on PRs. Once that infrastructure is allocated though we can
enable this and let it fly!

Notable modifications from the current test suite today:

* Android tests are run in rustbuild instead of the makefiles, for whatever
  reason I couldn't get the makefiles to work on Travis.
* A debuginfo test was updated to work with the current version of the Android
  NDK.
* Some dependencies in `mk/tests.mk` were fixed to allow running tests in
  parallel.

7 years agoRollup merge of #37551 - Mark-Simulacrum:upgrade-accvec, r=eddyb
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:38 +0000 (10:38 +0200)]
Rollup merge of #37551 - Mark-Simulacrum:upgrade-accvec, r=eddyb

Replace syntax's SmallVector with AccumulateVec

This adds a new type to data_structures, `SmallVec`, which wraps `AccumulateVec` with support for re-allocating onto the heap (`SmallVec::reserve`). `SmallVec` is then used to replace the implementation of `SmallVector` in libsyntax.

r? @eddyb

Fixes #37371. Using `SmallVec` instead of libsyntax's `SmallVector` will provide the `N = 2/4` case easily (just needs a few more `Array` impls).

cc @nnethercote, probably interested in this area

7 years agoRollup merge of #37535 - Havvy:graph, r=eddyb
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:38 +0000 (10:38 +0200)]
Rollup merge of #37535 - Havvy:graph, r=eddyb

Graph Changes

General cleanup and adding a few methods that I want to use in Clippy.

Need somebody to bikeshed names.

7 years agoRollup merge of #37527 - Mark-Simulacrum:mpsc-recvtimeouterror-error-impl, r=alexcrichton
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:37 +0000 (10:38 +0200)]
Rollup merge of #37527 - Mark-Simulacrum:mpsc-recvtimeouterror-error-impl, r=alexcrichton

Add Error implementation for std::sync::mpsc::RecvTimeoutError.

Fixes https://github.com/rust-lang/rust/issues/37525.

7 years agoRollup merge of #37503 - nwin:patch-3, r=steveklabnik
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:37 +0000 (10:38 +0200)]
Rollup merge of #37503 - nwin:patch-3, r=steveklabnik

Remove remark about poor code style

The current wording [seems to be confusing](https://www.reddit.com/r/rust/comments/5aat03/why_is_implementing_traits_on_primitive_types/). As an explanation when and why this could be considered as poor style would go beyond of the scope of this chapter I suggest to remove this remark.

7 years agoRollup merge of #37481 - estebank:lifetime-help-removal-for-impl, r=eddyb
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:37 +0000 (10:38 +0200)]
Rollup merge of #37481 - estebank:lifetime-help-removal-for-impl, r=eddyb

Don't provide hint to add lifetime on impl items

``` rust
use std::str::FromStr;

pub struct Foo<'a> {
    field: &'a str,
}

impl<'a> FromStr for Foo<'a> {
    type Err = ();
    fn from_str(path: &str) -> Result<Self, ()> {
        Ok(Foo { field: path })
    }
}
```

would give the following hint:

``` nocode
help: consider using an explicit lifetime parameter as shown: fn from_str(path: &'a str) -> Result<Self, ()>
  --> <anon>:9:5
   |
9  |     fn from_str(path: &str) -> Result<Self, ()> {
   |     ^
```

which is never correct, since then there will be a lifetime mismatch between the `impl` and the trait.

Remove this hint for all `impl` items.

Re: #37363.

7 years agoRollup merge of #37368 - trotter:patch-1, r=steveklabnik
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:37 +0000 (10:38 +0200)]
Rollup merge of #37368 - trotter:patch-1, r=steveklabnik

Update testing.md to reflect changes to cargo new

`cargo new` now creates a `src/lib.rs` with a `tests` module by default. I've updated the earlier examples in this doc to reflect this. However, I don't know how we want to approach the "introduction" to idiomatic testing that follows in "the tests module" section. I _think_ it should be broken apart, with the module concept being introduced early on, and the `super` concept being addressed when we hit the `add_two` example. I'd like to get agreement on that being the right approach before I do it though.

I _also_ removed the `#fn main() {}` hidden at the beginning of each example, as these cause Rust Playground to not treat the file as a set of tests that it can run. Removing it _should_ cause Rust Playground to display a "Test >" button in the top left when a user runs the code, which will allow them to see the test runner output.

7 years agoRollup merge of #37190 - QuietMisdreavus:rustdoc-where-newline, r=GuillaumeGomez
Eduard-Mihai Burtescu [Sat, 12 Nov 2016 08:38:36 +0000 (10:38 +0200)]
Rollup merge of #37190 - QuietMisdreavus:rustdoc-where-newline, r=GuillaumeGomez

rustdoc: add line breaks to where clauses a la rustfmt

Much like my last PR for rustdoc (#36679), this adds line breaks to certain statements based on their line length. Here the focus was on where clauses.

Some examples:
- [Where clause in a trait function](https://shiva.icesoldier.me/custom-std/std/iter/trait.Iterator.html?search=#method.unzip) (also in the trait header block at the top of the page)
- [Where clause on a bare function](https://shiva.icesoldier.me/doc-custom2/petgraph/visit/fn.depth_first_search.html)
- [Where clauses in trait impls on a struct](https://shiva.icesoldier.me/custom-std/std/collections/struct.HashMap.html) (scroll to the bottom) These are regularly not on their own line, but will be given their own line now if their "prefix text" doesn't give them enough room to sensibly print their constraints. HashMap's trait impls provide some examples of both behaviors.

The libstd links above are the whole docs rendered with this, and the "bare function" link above is in another set that pulls some notable crates together. `petgraph` was the one that brought this request up, and that collection also includes [itertools](https://shiva.icesoldier.me/doc-custom2/itertools/trait.Itertools.html) which provided an easy sample to test with.

r? @GuillaumeGomez

7 years agoAuto merge of #37469 - meh:fix-term, r=alexcrichton
bors [Sat, 12 Nov 2016 04:46:59 +0000 (20:46 -0800)]
Auto merge of #37469 - meh:fix-term, r=alexcrichton

Fix terminfo database search path

This is more consistent with what every other program does, I happened to have `TERMINFO` set as `/usr/share/terminfo` but had the actual database in `~/.terminfo`, regardless of that every other terminfo/ncurses based software picked up the one in the home correctly.

This just puts the path in `TERMINFO` at the top of the search paths, and moves the home checking to the default search paths section.

7 years agoFix invalid src url
Guillaume Gomez [Fri, 11 Nov 2016 23:30:53 +0000 (00:30 +0100)]
Fix invalid src url

7 years agoAuto merge of #37721 - brson:docs-default, r=alexcrichton
bors [Fri, 11 Nov 2016 22:39:23 +0000 (14:39 -0800)]
Auto merge of #37721 - brson:docs-default, r=alexcrichton

bootstrap: rust-docs is a default package

This will cause it to be built as part of `make dist`.

This is blocking betas and nightlies.

r? @alexcrichton

7 years agoBump verison to 1.15.0
Brian Anderson [Fri, 11 Nov 2016 21:56:12 +0000 (21:56 +0000)]
Bump verison to 1.15.0

7 years agobootstrap: rust-docs is a default package
Brian Anderson [Fri, 11 Nov 2016 21:47:18 +0000 (21:47 +0000)]
bootstrap: rust-docs is a default package

This will cause it to be built as part of `make dist`.

7 years agoOn fmt string with unescaped `{` note how to escape
Esteban Küber [Thu, 10 Nov 2016 20:48:55 +0000 (12:48 -0800)]
On fmt string with unescaped `{` note how to escape

On cases of malformed format strings where a `{` hasn't been properly
escaped, like `println!("{");`, present a note explaining how to escape
the `{` char.

7 years agoAdd missing urls for mem module
Guillaume Gomez [Fri, 11 Nov 2016 17:49:16 +0000 (18:49 +0100)]
Add missing urls for mem module

7 years agoUpdate patch with example.
nwin [Fri, 4 Nov 2016 09:50:58 +0000 (10:50 +0100)]
Update patch with example.

7 years agoAuto merge of #37456 - estebank:unused-imports-verbosity, r=jonathandturner
bors [Fri, 11 Nov 2016 17:04:17 +0000 (09:04 -0800)]
Auto merge of #37456 - estebank:unused-imports-verbosity, r=jonathandturner

Group unused import warnings per import list

Given a file

``` rust
use std::collections::{BinaryHeap, BTreeMap, BTreeSet};

fn main() {}
```

Show a single warning, instead of three for each unused import:

``` nocode
warning: unused imports, #[warn(unused_imports)] on by default
 --> file2.rs:1:24
  |
1 | use std::collections::{BinaryHeap, BTreeMap, BTreeSet};
  |                        ^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^
```

Include support for lints pointing at `MultilineSpan`s, instead of just
`Span`s.

Fixes #16132.

7 years agoMove all Linux/OSX CI infastructure to Travis
Alex Crichton [Tue, 11 Oct 2016 19:21:40 +0000 (12:21 -0700)]
Move all Linux/OSX CI infastructure to Travis

This commit configures our `.travis.yml` to test the full suite of tests we have
on Buildbot right now. A whole mess of docker images are added to the `src/ci`
directory which represent all the build environments for each configuration.
Each of these environments is then configured in `.travis.yml` to run on the
auto branch.

Note that the full matrix of tests aren't intended to be run on all PRs.
Instead, we continue to run only one entry in the matrix, forcing all others to
finish quickly. Only the `auto` branch should run the full matrix of builds.

Also note that the infrastructure hasn't quite been allocated yet to the
rust-lang/rust repository, so everything is disabled for now except for the one
build that happens on PRs. Once that infrastructure is allocated though we can
enable this and let it fly!

Notable modifications from the current test suite today:

* Android tests are run in rustbuild instead of the makefiles, for whatever
  reason I couldn't get the makefiles to work on Travis.
* A debuginfo test was updated to work with the current version of the Android
  NDK.
* Some dependencies in `mk/tests.mk` were fixed to allow running tests in
  parallel.

7 years agoChange implementation of syntax::util::SmallVector to use data_structures::SmallVec.
Mark-Simulacrum [Thu, 3 Nov 2016 04:33:35 +0000 (22:33 -0600)]
Change implementation of syntax::util::SmallVector to use data_structures::SmallVec.

7 years agoAuto merge of #37447 - estebank:non-duplicate-definition-error, r=nrc
bors [Fri, 11 Nov 2016 13:55:04 +0000 (05:55 -0800)]
Auto merge of #37447 - estebank:non-duplicate-definition-error, r=nrc

Show one error for duplicated type definitions

For the following code:

``` rustc
struct Bar;
struct Bar;

fn main () {
}
```

show

``` nocode
error[E0428]: a type named `Bar` has already been defined in this module
  --> src/test/compile-fail/E0428.rs:12:1
   |
11 | struct Bar;
   | ----------- previous definition of `Bar` here
12 | struct Bar;
   | ^^^^^^^^^^^

error: aborting due to previous error
```

instead of

``` nocode
error[E0428]: a type named `Bar` has already been defined in this module
  --> src/test/compile-fail/E0428.rs:12:1
   |
11 | struct Bar;
   | ----------- previous definition of `Bar` here
12 | struct Bar;
   | ^^^^^^^^^^^

error[E0428]: a value named `Bar` has already been defined in this module
  --> src/test/compile-fail/E0428.rs:12:1
   |
11 | struct Bar;
   | ----------- previous definition of `Bar` here
12 | struct Bar;
   | ^^^^^^^^^^^

error: aborting due to 2 previous errors
```

Fixes #35767.

7 years ago[breaking-change] change the `box_free` item to accept pointers to unsized types
Oliver 'ker' Schneider [Fri, 11 Nov 2016 10:55:47 +0000 (11:55 +0100)]
[breaking-change] change the `box_free` item to accept pointers to unsized types

7 years agovec: Write the .extend() specialization in cleaner style
Ulrik Sverdrup [Fri, 11 Nov 2016 11:54:10 +0000 (12:54 +0100)]
vec: Write the .extend() specialization in cleaner style

As far as possible, use regular `default fn` specialization in favour of
ad-hoc conditionals.

7 years agoAuto merge of #37246 - goffrie:no-loop, r=jseyfried
bors [Fri, 11 Nov 2016 10:51:01 +0000 (02:51 -0800)]
Auto merge of #37246 - goffrie:no-loop, r=jseyfried

Don't spin expanding stmt macros.

If we can't make progress when parsing a macro expansion as a statement then we should just bail.

This alleviates the symptoms shown in e.g. #37113 and #37234 but it doesn't fix the problem that parsing invalid enum bodies (and others) leaves the parser in a crappy state.

I'm not sold on this strategy (checking `tokens_consumed`), so if anyone has a better idea, I'm all ears!

7 years agoAuto merge of #36615 - sinkuu:e0243_0244, r=nrc
bors [Fri, 11 Nov 2016 07:44:44 +0000 (23:44 -0800)]
Auto merge of #36615 - sinkuu:e0243_0244, r=nrc

Make E0243/E0244 message consistent with E0107

E0243/E0233 prints `expected {}, found {}` on the span note, while E0107 prints it on the first line. This is confusing when both error occur simultaneously.

This PR makes E0243/E0233 print `expected {}, found {}` on the first line.

Code:

``` rust
struct Foo<'a, 'b> {
    s: &'a str,
    t: &'b str,
}

type Bar<T, U> = Foo<T, U>;
```

rustc output (before):

```
error[E0107]: wrong number of lifetime parameters: expected 2, found 0
 --> test.rs:6:18
  |
6 | type Bar<T, U> = Foo<T, U>;
  |                  ^^^^^^^^^ expected 2 lifetime parameters

error[E0244]: wrong number of type arguments
 --> test.rs:6:18
  |
6 | type Bar<T, U> = Foo<T, U>;
  |                  ^^^^^^^^^ expected no type arguments, found 2
```

rustc output (after):

```
error[E0107]: wrong number of lifetime parameters: expected 2, found 0
 --> /tmp/test.rs:6:18
  |
6 | type Bar<T, U> = Foo<T, U>;
  |                  ^^^^^^^^^ expected 2 lifetime parameters

error[E0244]: wrong number of type arguments: expected 0, found 2
 --> /tmp/test.rs:6:18
  |
6 | type Bar<T, U> = Foo<T, U>;
  |                  ^^^^^^^^^ expected no type arguments
```

7 years agoAvoid unnecessary mk_ty calls in Ty::super_fold_with.
Nicholas Nethercote [Fri, 11 Nov 2016 04:56:58 +0000 (15:56 +1100)]
Avoid unnecessary mk_ty calls in Ty::super_fold_with.

This speeds up compilation of several rustc-benchmarks by 1--2% and the
workload in #36799 by 5%.

7 years agoAuto merge of #37691 - alexcrichton:update-compiler-rt, r=brson
bors [Fri, 11 Nov 2016 04:38:40 +0000 (20:38 -0800)]
Auto merge of #37691 - alexcrichton:update-compiler-rt, r=brson

std: Update compiler-rt for more ABI fixes

This update of compiler-rt includes rust-lang/compiler-rt#26 which provides a
targeted fix to the powisf2 intrinsics to keep #37559 fixed but also address
the new issue of #37630. I've also [written up my thoughts][1] on why it appears
that this is the correct fix for now (hoepfully at least).

Closes #37630

[1]: https://github.com/rust-lang/compiler-rt/pull/26#issuecomment-259751998

7 years agoAdd foreign formatting directive detection.
Daniel Keep [Fri, 11 Nov 2016 04:23:15 +0000 (15:23 +1100)]
Add foreign formatting directive detection.

This teaches `format_args!` how to interpret format printf- and
shell-style format directives.  This is used in cases where there are
unused formatting arguments, and the reason for that *might* be because
the programmer is trying to use the wrong kind of formatting string.

This was prompted by an issue encountered by simulacrum on the #rust IRC
channel.  In short: although `println!` told them that they weren't using
all of the conversion arguments, the problem was in using printf-syle
directives rather than ones `println!` would undertand.

Where possible, `format_args!` will tell the programmer what they should
use instead.  For example, it will suggest replacing `%05d` with `{:0>5}`,
or `%2$.*3$s` with `{1:.3$}`.  Even if it cannot suggest a replacement,
it will explicitly note that Rust does not support that style of directive,
and direct the user to the `std::fmt` documentation.

7 years agoIgnore tests failing due to lack of `fn main`
Trotter Cashion [Fri, 11 Nov 2016 03:08:45 +0000 (19:08 -0800)]
Ignore tests failing due to lack of `fn main`

While the commit message on this one sounds terrible, it's really not so
bad. The issue is that our test runner _expects_ a `fn main() {}` in
code blocks that it'll test, but this code really shouldn't have them.
If it did, then clicking the "play" link in the docs would result in
play.rust-lang.org not treating this code as a test example to be run.

7 years agocompiletest: detect nodejs binary, allow override
Mark-Simulacrum [Thu, 10 Nov 2016 23:04:53 +0000 (16:04 -0700)]
compiletest: detect nodejs binary, allow override

Allow passing a custom nodejs directory in configure.

7 years agoAuto merge of #37104 - luqmana:fixmes, r=eddyb
bors [Fri, 11 Nov 2016 01:36:47 +0000 (17:36 -0800)]
Auto merge of #37104 - luqmana:fixmes, r=eddyb

Clean up some FIXMEs.

Remove some assorted FIXMEs in the codebase.

7 years agoDon't hint to add lifetime on trait impl
Esteban Küber [Sun, 30 Oct 2016 05:57:23 +0000 (22:57 -0700)]
Don't hint to add lifetime on trait impl

Don't provide hint to add lifetime on impl items that implement a trait.

```rust
use std::str::FromStr;

pub struct Foo<'a> {
    field: &'a str,
}

impl<'a> FromStr for Foo<'a> {
    type Err = ();
    fn from_str(path: &str) -> Result<Self, ()> {
        Ok(Foo { field: path })
    }
}
```

would give the following hint:

```nocode
help: consider using an explicit lifetime parameter as shown: fn from_str(path: &'a str) -> Result<Self, ()>
  --> <anon>:9:5
   |
9  |     fn from_str(path: &str) -> Result<Self, ()> {
   |     ^
```

which is never correct, since then there will be a lifetime mismatch
between the impl and the trait.

Remove this hint for impl items that implement a trait.

7 years agostd: Derive `Default` for `Duration`.
Alex Crichton [Fri, 11 Nov 2016 00:21:51 +0000 (16:21 -0800)]
std: Derive `Default` for `Duration`.

Discussed in #37546 the libs team reached the conclusion that a default zero
duration seems like a reasonable implementation of the `Default` trait.

Closes #37546

7 years agoAuto merge of #37186 - jonas-schievink:patch-1, r=brson
bors [Thu, 10 Nov 2016 22:28:03 +0000 (14:28 -0800)]
Auto merge of #37186 - jonas-schievink:patch-1, r=brson

proc_macro_plugin: Wrap nonexistent filename in <>

I'm not sure how big of an issue this can become in practice, but `FileMap`s made from something that's not a file are supposed to wrap the file name in `<>`.

For an example fix, see kevinmehall/rust-peg@332fd4dbae19b64fb2af4b9d565e37a3703e7576. There, it caused cargo to always recompile a crate using rust-peg, even when nothing was changed, because cargo sees that the dummy file doesn't exist.

7 years agoAdd missing urls for marker's traits
Guillaume Gomez [Thu, 10 Nov 2016 22:13:37 +0000 (23:13 +0100)]
Add missing urls for marker's traits

7 years agoAdd missing urls for FusedIterator and TrustedLen traits
Guillaume Gomez [Wed, 9 Nov 2016 18:27:05 +0000 (19:27 +0100)]
Add missing urls for FusedIterator and TrustedLen traits

7 years agoRemove one bounds check from BufReader
Arthur Silva [Thu, 10 Nov 2016 21:02:44 +0000 (22:02 +0100)]
Remove one bounds check from BufReader

Otherwise the optimizer can't be sure that pos <= cap. Added a paranoid debug_assert to ensure correctness instead.

7 years agoGet rid of superfluous HashMap in LocalCrateContext. We only need the str slice type.
Luqman Aden [Wed, 12 Oct 2016 03:46:22 +0000 (23:46 -0400)]
Get rid of superfluous HashMap in LocalCrateContext. We only need the str slice type.

7 years agoRemove outdated FIXME: #10604 was fixed by #11717.
Luqman Aden [Wed, 12 Oct 2016 02:10:54 +0000 (22:10 -0400)]
Remove outdated FIXME: #10604 was fixed by #11717.

7 years agoExprAssignable does not need the original Expr so let's just remove outdated FIXME.
Luqman Aden [Wed, 12 Oct 2016 00:42:26 +0000 (20:42 -0400)]
ExprAssignable does not need the original Expr so let's just remove outdated FIXME.

7 years agoDon't use self type for cat_index on overloaded indexing. Fixes #20649.
Luqman Aden [Wed, 12 Oct 2016 00:08:26 +0000 (20:08 -0400)]
Don't use self type for cat_index on overloaded indexing. Fixes #20649.

7 years agoICH: Add test case for if- and if-let-expressions.
Michael Woerister [Thu, 10 Nov 2016 20:06:51 +0000 (15:06 -0500)]
ICH: Add test case for if- and if-let-expressions.

7 years agoAuto merge of #37645 - jseyfried:fix_crate_var_in_custom_derives, r=nrc
bors [Thu, 10 Nov 2016 19:25:17 +0000 (11:25 -0800)]
Auto merge of #37645 - jseyfried:fix_crate_var_in_custom_derives, r=nrc

Fix regression involving custom derives on items with `$crate`

The regression was introduced in #37213.

I believe we cannot make the improvements from #37213 work with the current custom derive setup (c.f. https://github.com/rust-lang/rust/issues/37637#issuecomment-258959145) -- we'll have to wait for `TokenStream`'s API to improve.

Fixes #37637.
r? @nrc

7 years agoICH: Add test case for call expressions.
Michael Woerister [Thu, 10 Nov 2016 16:55:31 +0000 (11:55 -0500)]
ICH: Add test case for call expressions.

7 years agoBalance the debug output of Lvalue Subslice
Nicolas B. Pierron [Thu, 10 Nov 2016 17:54:31 +0000 (17:54 +0000)]
Balance the debug output of Lvalue Subslice

7 years agostd: Update compiler-rt for more ABI fixes
Alex Crichton [Thu, 10 Nov 2016 17:23:29 +0000 (09:23 -0800)]
std: Update compiler-rt for more ABI fixes

This update of compiler-rt includes rust-lang/compiler-rt#26 which provides a
targeted fix to the powisf2 intrinsics to keep #37559 fixed but also address
the new issue of #37630. I've also [written up my thoughts][1] on why it appears
that this is the correct fix for now (hoepfully at least).

Closes #37630

[1]: https://github.com/rust-lang/compiler-rt/pull/26#issuecomment-259751998

7 years agorustbuild: support RelWithDebInfo for llvm
Tim Neumann [Thu, 10 Nov 2016 16:30:06 +0000 (17:30 +0100)]
rustbuild: support RelWithDebInfo for llvm

7 years agoAuto merge of #37687 - nox:patch-1, r=eddyb
bors [Thu, 10 Nov 2016 16:18:21 +0000 (08:18 -0800)]
Auto merge of #37687 - nox:patch-1, r=eddyb

Work around a borrow surviving too long (fixes #37686)

7 years agoRemove extraneous word
Trotter Cashion [Thu, 10 Nov 2016 15:55:20 +0000 (07:55 -0800)]
Remove extraneous word

7 years agoChange project path for consistency
Trotter Cashion [Thu, 10 Nov 2016 15:52:51 +0000 (07:52 -0800)]
Change project path for consistency

I had used `/tmp/adder` for my previous commits. Flipped over to
`/home/you/projects/adder` for consistency with other parts of testing.md

7 years agoRemove `mod tests` from earlier sections
Trotter Cashion [Thu, 10 Nov 2016 15:48:01 +0000 (07:48 -0800)]
Remove `mod tests` from earlier sections

The narrative flows better if we follow what @steveklabnik is doing in
rust-lang/book#288. Therefore, I completely copied it.

7 years agoInstruct play.rust-lang.org to treat code as tests
Trotter Cashion [Thu, 10 Nov 2016 15:30:20 +0000 (07:30 -0800)]
Instruct play.rust-lang.org to treat code as tests

Without these changes, play.rust-lang.org (as of today) would wrap
our examples in `fn main() {}`. This prevents the user from being able
to easily run the tests.

7 years agorustc: clean up lookup_item_type and remove TypeScheme.
Eduard Burtescu [Thu, 10 Nov 2016 14:49:53 +0000 (16:49 +0200)]
rustc: clean up lookup_item_type and remove TypeScheme.

7 years agoWork around a borrow surviving too long (fixes #37686)
Anthony Ramine [Thu, 10 Nov 2016 12:09:34 +0000 (13:09 +0100)]
Work around a borrow surviving too long (fixes #37686)

7 years agoAuto merge of #37542 - jseyfried:custom_derive_reexports, r=nrc
bors [Thu, 10 Nov 2016 13:10:04 +0000 (05:10 -0800)]
Auto merge of #37542 - jseyfried:custom_derive_reexports, r=nrc

Support `#[macro_reexport]`ing custom derives

This is gated behind `#![feature(macro_reexport)]` and `#![feature(proc_macro)]`.
r? @nrc

7 years agoAdd regression test.
Jeffrey Seyfried [Tue, 8 Nov 2016 04:06:40 +0000 (04:06 +0000)]
Add regression test.

7 years agoTest `#[macro_reexport]`ing custom derives.
Jeffrey Seyfried [Mon, 7 Nov 2016 22:47:14 +0000 (22:47 +0000)]
Test `#[macro_reexport]`ing custom derives.

7 years agoSupport `#[macro_reexport]`ing custom derives.
Jeffrey Seyfried [Sat, 5 Nov 2016 20:30:40 +0000 (20:30 +0000)]
Support `#[macro_reexport]`ing custom derives.