]> git.lizzy.rs Git - rust.git/log
rust.git
7 years agoRollup merge of #38362 - GuillaumeGomez:instant_doc, r=frewsxcv
Guillaume Gomez [Fri, 13 Jan 2017 09:42:25 +0000 (10:42 +0100)]
Rollup merge of #38362 - GuillaumeGomez:instant_doc, r=frewsxcv

Instant doc

r? @frewsxcv

7 years agoAuto merge of #38909 - clarcharr:char_struct_display, r=alexcrichton
bors [Fri, 13 Jan 2017 07:24:53 +0000 (07:24 +0000)]
Auto merge of #38909 - clarcharr:char_struct_display, r=alexcrichton

Implement Display for char Escape*, To*case.

See: rust-lang/rfcs#1848.

A good example of where this is useful would be in the example `print!("{}", 'ß'.to_uppercase())`.

Not sure if this requires a formal RFC, but I decided to write the code for it anyway regardless.

7 years agoAuto merge of #38748 - alexcrichton:upload, r=brson
bors [Fri, 13 Jan 2017 02:56:20 +0000 (02:56 +0000)]
Auto merge of #38748 - alexcrichton:upload, r=brson

travis: Start uploading artifacts on commits

This commit starts adding the infrastructure for uploading release artifacts
from AppVeyor/Travis on each commit. The idea is that eventually we'll upload a
full release to AppVeyor/Travis in accordance with plans [outlined earlier].

Right now this configures Travis/Appveyor to upload all tarballs in the `dist`
directory, and various images are updated to actually produce tarballs in these
directories. These are nowhere near ready to be actual release artifacts, but
this should allow us to play around with it and test it out. Once this commit
lands we should start seeing artifacts uploaded on each commit.

[outlined earlier]: https://internals.rust-lang.org/t/rust-ci-release-infrastructure-changes/4489

7 years agoAuto merge of #38675 - infinity0:more-jemalloc-fixes, r=alexcrichton
bors [Fri, 13 Jan 2017 00:56:45 +0000 (00:56 +0000)]
Auto merge of #38675 - infinity0:more-jemalloc-fixes, r=alexcrichton

More jemalloc fixes

- Disable jemalloc on s390x as well (closes #38596)
- Disable jemalloc tests on platforms where it is disabled (closes #38612)

7 years agotravis: Start uploading artifacts on commits
Alex Crichton [Sun, 1 Jan 2017 01:42:40 +0000 (17:42 -0800)]
travis: Start uploading artifacts on commits

This commit starts adding the infrastructure for uploading release artifacts
from AppVeyor/Travis on each commit. The idea is that eventually we'll upload a
full release to AppVeyor/Travis in accordance with plans [outlined earlier].

Right now this configures Travis/Appveyor to upload all tarballs in the `dist`
directory, and various images are updated to actually produce tarballs in these
directories. These are nowhere near ready to be actual release artifacts, but
this should allow us to play around with it and test it out. Once this commit
lands we should start seeing artifacts uploaded on each commit.

[outlined earlier]: https://internals.rust-lang.org/t/rust-ci-release-infrastructure-changes/4489

7 years agoAuto merge of #38650 - infinity0:master, r=alexcrichton
bors [Thu, 12 Jan 2017 22:52:32 +0000 (22:52 +0000)]
Auto merge of #38650 - infinity0:master, r=alexcrichton

Detect mips CPUs in ./configure

This mirrors existing logic already in src/bootstrap/bootstrap.py

7 years agoAuto merge of #38814 - Ralith:cfg-fields, r=jseyfried
bors [Thu, 12 Jan 2017 20:44:02 +0000 (20:44 +0000)]
Auto merge of #38814 - Ralith:cfg-fields, r=jseyfried

syntax: enable attributes and cfg on struct fields

This enables conditional compilation of field initializers in a struct literal, simplifying construction of structs whose fields are themselves conditionally present. For example, the intializer for the constant in the following becomes legal, and has the intuitive effect:

```rust
struct Foo {
    #[cfg(unix)]
    bar: (),
}

const FOO: Foo = Foo {
    #[cfg(unix)]
    bar: (),
};
```

It's not clear to me whether this calls for the full RFC process, but the implementation was simple enough that I figured I'd begin the conversation with code.

7 years agoDisable jemalloc tests on platforms where it is disabled (closes #38612)
Ximin Luo [Thu, 12 Jan 2017 20:10:31 +0000 (21:10 +0100)]
Disable jemalloc tests on platforms where it is disabled (closes #38612)

See also #37392

7 years agoAdd mips architectures to conditional-compile test
Ximin Luo [Thu, 29 Dec 2016 13:26:53 +0000 (14:26 +0100)]
Add mips architectures to conditional-compile test

7 years agoDetect mips CPUs in ./configure
Ximin Luo [Wed, 28 Dec 2016 12:56:29 +0000 (13:56 +0100)]
Detect mips CPUs in ./configure

This mirrors existing logic already in src/bootstrap/bootstrap.py

7 years agoDisable jemalloc on s390x as well (closes #38596)
Ximin Luo [Thu, 29 Dec 2016 14:14:30 +0000 (15:14 +0100)]
Disable jemalloc on s390x as well (closes #38596)

See also #37320 and #37392

7 years agoAuto merge of #38569 - chris-morgan:rustdoc-highlight-kw-2, r=steveklabnik
bors [Thu, 12 Jan 2017 18:32:28 +0000 (18:32 +0000)]
Auto merge of #38569 - chris-morgan:rustdoc-highlight-kw-2, r=steveklabnik

Fix rustdoc highlighting of `&` and `*`

Whitespace tokens were included, so the span check used with `&` was incorrect, and it was never highlighted as kw-2 (RefKeyword).

The `*` in `*foo` and `*const T` should also be highlighted kw-2, so I added them. Note that this *will* cause mishighlighting of code like `1*2`, but that should have been written `1 * 2`. Same deal with `1&2`.

7 years agoAuto merge of #38779 - Craig-Macomber:bench, r=alexcrichton
bors [Thu, 12 Jan 2017 14:42:02 +0000 (14:42 +0000)]
Auto merge of #38779 - Craig-Macomber:bench, r=alexcrichton

Do not run outer setup part of benchmarks multiple times to fix issue 20142

Fix #20142

This is my first real rust code, so I expect the quality is quite bad. Please let me know in which ways it is horrible and I'll fix it.

Previously the whole benchmark function was rerun many times, but with this change, only the callback passed to iter is rerun. This improves performances by saving benchmark startup time. The setup used to be called a minimum of 101 times, and now only runs once.

I wasn't sure exactly what should be done for the case where iter is never called, so I left a FIXME for that: currently it does not error, and I added tests to cover that.

I have left the algorithm and statistics unchanged: I don't like how the minimum number of runs is 301 (that's bad for very slow benchmarks) but I consider such changes out of scope for this fix.

7 years agoAuto merge of #38654 - alexcrichton:rustbuild-destdir, r=brson
bors [Thu, 12 Jan 2017 08:31:50 +0000 (08:31 +0000)]
Auto merge of #38654 - alexcrichton:rustbuild-destdir, r=brson

rustbuild: Implement DESTDIR support

This commit primarily starts supporting the `DESTDIR` environment variable like
the old build system. Along the way this brings `config.toml` up to date with
support in `config.mk` with install options supported.

Closes #38441

7 years agosyntax: struct field attributes and cfg
Benjamin Saunders [Wed, 4 Jan 2017 03:13:01 +0000 (19:13 -0800)]
syntax: struct field attributes and cfg

7 years agoAuto merge of #37926 - bluss:from-utf8-small-simplification, r=sfackler
bors [Thu, 12 Jan 2017 05:14:50 +0000 (05:14 +0000)]
Auto merge of #37926 - bluss:from-utf8-small-simplification, r=sfackler

UTF-8 validation: Compute block end upfront

Simplify the conditional used for ensuring that the whole word loop is
only used if there are at least two whole words left to read.

This makes the function slightly smaller and simpler, a 0-5% reduction
in runtime for various test cases.

7 years agoAuto merge of #38867 - alexcrichton:ignore-test-on-windows, r=brson
bors [Thu, 12 Jan 2017 03:13:48 +0000 (03:13 +0000)]
Auto merge of #38867 - alexcrichton:ignore-test-on-windows, r=brson

std: Ignore close_read_wakes_up on Windows

It looks like in practice at least this test will not pass on Windows.
Empirically it is prone to blocking forever, presumably because a call to
`shutdown` doesn't actually wake up other threads on Windows.

We don't document this as a guarantee for `shutdown`, nor do we internally rely
on it. This test originated in a time long since passed when it was leveraged
for canceling I/O, but nowadays there's nothing fancy happening in the standard
library so it's not really a productive test anyway, hence just ignoring it on
Windows.

Closes #31657

7 years agoAuto merge of #38605 - estebank:fix-38371, r=nikomatsakis
bors [Thu, 12 Jan 2017 01:01:06 +0000 (01:01 +0000)]
Auto merge of #38605 - estebank:fix-38371, r=nikomatsakis

Suggest solutions for `fn foo(&foo: Foo)`

For a given file:

```rust
struct Foo {}

fn foo(&foo: Foo) {}
```

suggest:

```
error[E0308]: mismatched types
 --> file.rs:3:8
  |
3 | fn foo(&foo: Foo) {}
  |        ^^^^ expected struct `Foo`, found reference
  |
  = note: expected type `Foo`
  = note:    found type `&_`
  = help: did you mean `foo: &Foo`?
```

Fix #38371.

7 years agoAuto merge of #38313 - jseyfried:self_imports, r=nrc
bors [Wed, 11 Jan 2017 20:12:26 +0000 (20:12 +0000)]
Auto merge of #38313 - jseyfried:self_imports, r=nrc

resolve: clean up the semantics of `self` in an import list

Change `self` in an import list `use foo::bar::{self, ...};` to import `bar` only in the type namespace. Today, `bar` is imported in every namespace in which `foo::bar` is defined.

This is a [breaking-change], see https://github.com/rust-lang/rust/issues/38293#issue-194817974 for examples of code that would break.

Fixes #38293.
r? @nrc

7 years agoImplement Display for char Escape*, To*case.
Clar Charr [Sat, 7 Jan 2017 18:16:03 +0000 (13:16 -0500)]
Implement Display for char Escape*, To*case.

7 years agoAuto merge of #38989 - arielb1:constant-mir-overflow2, r=eddyb
bors [Wed, 11 Jan 2017 15:45:28 +0000 (15:45 +0000)]
Auto merge of #38989 - arielb1:constant-mir-overflow2, r=eddyb

fix function arguments in constant promotion

we can't create the target block until *after* we promote the arguments - otherwise the arguments will be promoted into the target block. oops.

Fixes #38985.

This is a regression introduced in the beta-nominated #38833, so beta-nominating this one too (sorry @brson).

r? @eddyb

7 years agoAuto merge of #38984 - alexcrichton:less-debuginfo, r=brson
bors [Wed, 11 Jan 2017 13:42:52 +0000 (13:42 +0000)]
Auto merge of #38984 - alexcrichton:less-debuginfo, r=brson

rustbuild: Don't enable debuginfo in rustc

In #37280 we enabled line number debugging information in release artifacts,
primarily to close out #36452 where debugging information was critical for MSVC
builds of Rust to be useful in production. This commit, however, apparently had
some unfortunate side effects.

Namely it was noticed in #37477 that if `RUST_BACKTRACE=1` was set then any
compiler error would take a very long time for the compiler to exit. The cause
of the problem here was somewhat deep:

* For all compiler errors, the compiler will `panic!` with a known value. This
  tears down the main compiler thread and allows cleaning up all the various
  resources. By default, however, this panic output is suppressed for "normal"
  compiler errors.
* When `RUST_BACKTRACE=1` was set this caused every compiler error to generate a
  backtrace.
* The libbacktrace library hits a pathological case where it spends a very long
  time in its custom allocation function, `backtrace_alloc`, because the
  compiler has so much debugging information. More information about this can be
  found in #29293 with a summary at the end of #37477.

To solve this problem this commit simply removes debuginfo from the compiler but
not from the standard library. This should allow us to keep #36452 closed while
also closing #37477. I've measured the difference to be orders of magnitude
faster than it was before, so we should see a much quicker time-to-exit after a
compile error when `RUST_BACKTRACE=1` is set.

Closes #37477
Closes #37571

7 years agoAuto merge of #38925 - petrochenkov:varass, r=jseyfried
bors [Wed, 11 Jan 2017 09:22:56 +0000 (09:22 +0000)]
Auto merge of #38925 - petrochenkov:varass, r=jseyfried

Fix ICE when variant is used as a part of associated path

Fixes https://github.com/rust-lang/rust/issues/38862
r? @jseyfried

7 years agofix function arguments in constant promotion
Ariel Ben-Yehuda [Wed, 11 Jan 2017 07:50:24 +0000 (09:50 +0200)]
fix function arguments in constant promotion

we can't create the target block until *after* we promote the arguments
- otherwise the arguments will be promoted into the target block. oops.

Fixes #38985.

7 years agoAuto merge of #38916 - estebank:pad-suggestion-list, r=nikomatsakis
bors [Wed, 11 Jan 2017 05:27:11 +0000 (05:27 +0000)]
Auto merge of #38916 - estebank:pad-suggestion-list, r=nikomatsakis

Teach diagnostics to correct margin of multiline messages

Make the suggestion list have a correct padding:

```
error[E0308]: mismatched types
 --> file.rs:3:20
  |
3 |     let x: usize = "";
  |                    ^^ expected usize, found reference
  |
  = note: expected type `usize`
  = note:    found type `&'static str`
  = help: here are some functions which might fulfill your needs:
          - .len()
          - .foo()
          - .bar()
```

7 years agorustbuild: Don't enable debuginfo in rustc
Alex Crichton [Wed, 11 Jan 2017 04:01:54 +0000 (20:01 -0800)]
rustbuild: Don't enable debuginfo in rustc

In #37280 we enabled line number debugging information in release artifacts,
primarily to close out #36452 where debugging information was critical for MSVC
builds of Rust to be useful in production. This commit, however, apparently had
some unfortunate side effects.

Namely it was noticed in #37477 that if `RUST_BACKTRACE=1` was set then any
compiler error would take a very long time for the compiler to exit. The cause
of the problem here was somewhat deep:

* For all compiler errors, the compiler will `panic!` with a known value. This
  tears down the main compiler thread and allows cleaning up all the various
  resources. By default, however, this panic output is suppressed for "normal"
  compiler errors.
* When `RUST_BACKTRACE=1` was set this caused every compiler error to generate a
  backtrace.
* The libbacktrace library hits a pathological case where it spends a very long
  time in its custom allocation function, `backtrace_alloc`, because the
  compiler has so much debugging information. More information about this can be
  found in #29293 with a summary at the end of #37477.

To solve this problem this commit simply removes debuginfo from the compiler but
not from the standard library. This should allow us to keep #36452 closed while
also closing #37477. I've measured the difference to be orders of magnitude
faster than it was before, so we should see a much quicker time-to-exit after a
compile error when `RUST_BACKTRACE=1` is set.

Closes #37477
Closes #37571

7 years agoAuto merge of #38960 - arielb1:blake-endian, r=michaelwoerister
bors [Wed, 11 Jan 2017 01:33:03 +0000 (01:33 +0000)]
Auto merge of #38960 - arielb1:blake-endian, r=michaelwoerister

Use little-endian encoding for Blake2 hashing on all architectures

Like many hash functions, the blake2 hash is mathematically defined on
a sequence of 64-bit words. As Rust's hash interface operates on
sequences of octets, some encoding must be used to bridge that
difference.

The Blake2 RFC (RFC 7693) specifies that:
```
   Byte (octet) streams are interpreted as words in little-endian order,
   with the least-significant byte first.
```

So use that encoding consistently.

Fixes #38891.

Beta-nominating since this is a regression since 1.15.

r? @michaelwoerister

7 years agoAuto merge of #38580 - shepmaster:result-sum, r=alexcrichton
bors [Tue, 10 Jan 2017 23:25:31 +0000 (23:25 +0000)]
Auto merge of #38580 - shepmaster:result-sum, r=alexcrichton

Implement `iter::Sum` and `iter::Product` for `Result`

This introduces a private iterator adapter `ResultShunt`, which allows
treating an iterator of `Result<T, E>` as an iterator of `T`.

7 years agoAuto merge of #38843 - Manishearth:proposed, r=GuillaumeGomez
bors [Tue, 10 Jan 2017 21:16:06 +0000 (21:16 +0000)]
Auto merge of #38843 - Manishearth:proposed, r=GuillaumeGomez

Improved rustdoc rendering for unstable features

This replaces "unstable" with "this is an experimental API", and uses a `<details>` tag to expand to the reason.

The `<details>` tag renders as a regular div (with the details show) on browsers which don't support it, On browsers which do support it, it shows only the summary line with an expandy-arrow next to it, and on clicking it the details will turn up below it.

This is somewhat a strawman proposal. The main issue is that we need to improve our messaging around unstable APIs. Since they turn up in the docs, we should be clearer that they are experimental (and perhaps add something about nightly-only). I'm making this PR to kickstart discussion on this.

Example rendering: http://manishearth.github.io/rust-internals-docs/std/io/trait.Read.html#method.chars

<img width="375" alt="screen shot 2017-01-04 at 10 15 37 pm" src="https://cloud.githubusercontent.com/assets/1617736/21670712/5a96c7de-d2cb-11e6-86a6-87f70818d634.png">

expands to

<img width="799" alt="screen shot 2017-01-04 at 10 15 43 pm" src="https://cloud.githubusercontent.com/assets/1617736/21670714/5db88bb4-d2cb-11e6-8fcc-5cf11d198b75.png">

cc @steveklabnik @jdub

7 years agoupdate test case to include `fn(&&u32: Foo)`
Niko Matsakis [Tue, 10 Jan 2017 20:13:21 +0000 (15:13 -0500)]
update test case to include `fn(&&u32: Foo)`

7 years agoonly emit suggestion to move `&` if the inner pattern is a binding
Niko Matsakis [Tue, 10 Jan 2017 19:45:30 +0000 (14:45 -0500)]
only emit suggestion to move `&` if the inner pattern is a binding

7 years agoImplement `iter::Sum` and `iter::Product` for `Result`
Jake Goulding [Fri, 23 Dec 2016 19:30:37 +0000 (14:30 -0500)]
Implement `iter::Sum` and `iter::Product` for `Result`

This introduces a private iterator adapter `ResultShunt`, which allows
treating an iterator of `Result<T, E>` as an iterator of `T`.

7 years agoUse little-endian encoding for Blake2 hashing on all architectures
Ariel Ben-Yehuda [Tue, 10 Jan 2017 14:24:06 +0000 (16:24 +0200)]
Use little-endian encoding for Blake2 hashing on all architectures

Like many hash functions, the blake2 hash is mathematically defined on
a sequence of 64-bit words. As Rust's hash interface operates on
sequences of octets, some encoding must be used to bridge that
difference.

The Blake2 RFC (RFC 7693) specifies that:
   Byte (octet) streams are interpreted as words in little-endian order,
   with the least-significant byte first.

So use that encoding consistently.

Fixes #38891.

7 years agoAuto merge of #38958 - sanxiyn:rollup, r=sanxiyn
bors [Tue, 10 Jan 2017 14:08:21 +0000 (14:08 +0000)]
Auto merge of #38958 - sanxiyn:rollup, r=sanxiyn

Rollup of 11 pull requests

- Successful merges: #38606, #38607, #38623, #38664, #38799, #38816, #38836, #38839, #38841, #38849, #38874
- Failed merges: #38845

7 years agoRollup merge of #38874 - derekdreery:patch-1, r=steveklabnik
Seo Sanghyeon [Tue, 10 Jan 2017 11:27:48 +0000 (20:27 +0900)]
Rollup merge of #38874 - derekdreery:patch-1, r=steveklabnik

Update vec.rs

Add a warning not to convert  char* from c to Vec<u8> (I thought you could until I asked on irc).

Reasoning is that it will help people avoid an error that could cause crashes and undefined behaviour. Only drawback is that it could confuse someone not familiar with C, but beginners are unlikely to be using this function anyway.

7 years agoRollup merge of #38849 - michaelwoerister:ich-trait-impl-test, r=nikomatsakis
Seo Sanghyeon [Tue, 10 Jan 2017 11:27:47 +0000 (20:27 +0900)]
Rollup merge of #38849 - michaelwoerister:ich-trait-impl-test, r=nikomatsakis

ICH: Add some more test cases for trait impls.

r? @nikomatsakis

7 years agoRollup merge of #38841 - F001:Fix, r=steveklabnik
Seo Sanghyeon [Tue, 10 Jan 2017 11:27:46 +0000 (20:27 +0900)]
Rollup merge of #38841 - F001:Fix, r=steveklabnik

Update usage of rustc

Add proc_macro crate type

7 years agoRollup merge of #38839 - frewsxcv:osstr-to-str, r=GuillaumeGomez
Seo Sanghyeon [Tue, 10 Jan 2017 11:27:45 +0000 (20:27 +0900)]
Rollup merge of #38839 - frewsxcv:osstr-to-str, r=GuillaumeGomez

Expand {Path,OsStr}::{to_str,to_string_lossy} doc examples.

None

7 years agoRollup merge of #38836 - ollie27:patch-1, r=steveklabnik
Seo Sanghyeon [Tue, 10 Jan 2017 11:27:44 +0000 (20:27 +0900)]
Rollup merge of #38836 - ollie27:patch-1, r=steveklabnik

Fix typo in tuple docs

r? @steveklabnik

7 years agoRollup merge of #38816 - Manishearth:coercion-doc, r=GuillaumeGomez
Seo Sanghyeon [Tue, 10 Jan 2017 11:27:43 +0000 (20:27 +0900)]
Rollup merge of #38816 - Manishearth:coercion-doc, r=GuillaumeGomez

Add more docs for CoerceUnsized and Unsize

here be dragons

r? @ubsan @steveklabnik

7 years agoRollup merge of #38799 - minaguib:patch-1, r=steveklabnik
Seo Sanghyeon [Tue, 10 Jan 2017 11:27:42 +0000 (20:27 +0900)]
Rollup merge of #38799 - minaguib:patch-1, r=steveklabnik

Doc fix

7 years agoRollup merge of #38664 - apasel422:may-dangle, r=pnkfelix
Seo Sanghyeon [Tue, 10 Jan 2017 11:27:41 +0000 (20:27 +0900)]
Rollup merge of #38664 - apasel422:may-dangle, r=pnkfelix

Replace uses of `#[unsafe_destructor_blind_to_params]` with `#[may_dangle]`

CC #34761

r? @pnkfelix

7 years agoRollup merge of #38623 - alexcrichton:less-osx-warnings, r=aturon
Seo Sanghyeon [Tue, 10 Jan 2017 11:27:40 +0000 (20:27 +0900)]
Rollup merge of #38623 - alexcrichton:less-osx-warnings, r=aturon

std: Remove unused objects from compiler-builtins

We don't actually use trampoline_setup.c and all the `*tf3` business
seems related to f80/f128 business. Specifically this'll fix some
warnings showing up during builds on OSX.

7 years agoRollup merge of #38607 - estebank:test-for-36935, r=alexcrichton
Seo Sanghyeon [Tue, 10 Jan 2017 11:27:39 +0000 (20:27 +0900)]
Rollup merge of #38607 - estebank:test-for-36935, r=alexcrichton

Test for appropriate span on second custom derive

Adds test for and closes #36935.

7 years agoRollup merge of #38606 - estebank:test-for-27522, r=petrochenkov
Seo Sanghyeon [Tue, 10 Jan 2017 11:27:38 +0000 (20:27 +0900)]
Rollup merge of #38606 - estebank:test-for-27522, r=petrochenkov

Add test for correct span for type

Adds test for and closes #27522.

7 years agoAuto merge of #38138 - rkruppe:no_std-no_loop, r=steveklabnik
bors [Tue, 10 Jan 2017 06:50:59 +0000 (06:50 +0000)]
Auto merge of #38138 - rkruppe:no_std-no_loop, r=steveklabnik

book: use abort() over loop {} for panic

Due to #28728 `loop {}` is very risky and can lead to fun debugging experiences such as #38136. Besides, aborting is probably better behavior than an infinite loop.

r? @steveklabnik

7 years agoStart warning cycle.
Jeffrey Seyfried [Tue, 10 Jan 2017 05:15:02 +0000 (05:15 +0000)]
Start warning cycle.

7 years agoChange `self` in an import list `use foo::{self, ...}` to only import a module or...
Jeffrey Seyfried [Mon, 12 Dec 2016 03:35:48 +0000 (03:35 +0000)]
Change `self` in an import list `use foo::{self, ...}` to only import a module or enum `foo`.

7 years agoImproved rustdoc rendering for unstable features
Manish Goregaokar [Thu, 5 Jan 2017 06:09:54 +0000 (22:09 -0800)]
Improved rustdoc rendering for unstable features

7 years agoAuto merge of #38947 - nrc:custom-derive-span, r=jseyfried
bors [Tue, 10 Jan 2017 04:44:04 +0000 (04:44 +0000)]
Auto merge of #38947 - nrc:custom-derive-span, r=jseyfried

Give custom derive spans an expansion ID

r? @jseyfried

7 years agoAuto merge of #38934 - Manishearth:nodrop, r=eddyb
bors [Tue, 10 Jan 2017 02:45:37 +0000 (02:45 +0000)]
Auto merge of #38934 - Manishearth:nodrop, r=eddyb

Remove destructor-related restrictions from unions

They don't have drop glue.

This doesn't fix the rvalue promotion issues when trying to do things like `static FOO: NoDrop<Bar> = NoDrop {inner: Bar}`. I'm not sure if we should fix that.

7 years agoGive custom derive spans an expansion ID
Nick Cameron [Mon, 9 Jan 2017 22:02:26 +0000 (11:02 +1300)]
Give custom derive spans an expansion ID

7 years agoAuto merge of #38937 - nrc:save-ty-fix, r=nikomatsakis
bors [Mon, 9 Jan 2017 23:46:00 +0000 (23:46 +0000)]
Auto merge of #38937 - nrc:save-ty-fix, r=nikomatsakis

save-analysis: fix over-zealous filter on generated code

7 years agoAuto merge of #38244 - estebank:escape-reason-docs, r=ollie27
bors [Mon, 9 Jan 2017 19:38:50 +0000 (19:38 +0000)]
Auto merge of #38244 - estebank:escape-reason-docs, r=ollie27

rustdoc: escape the deprecated and unstable reason text

Fix #38220.
Instead of the [current output](https://doc.rust-lang.org/std/boxed/trait.FnBox.html):

<img width="967" alt="incorrect unescaped unstable reason in docs" src="https://cloud.githubusercontent.com/assets/1606434/21021898/73121d42-bd2f-11e6-8076-8a5127dbc010.png">

display:

<img width="979" alt="escaped unstable reason in docs" src="https://cloud.githubusercontent.com/assets/1606434/21021876/52eb0f88-bd2f-11e6-9088-58bdc7d92328.png">

7 years agoMake unions never have needs_drop
Manish Goregaokar [Mon, 9 Jan 2017 15:13:28 +0000 (07:13 -0800)]
Make unions never have needs_drop

7 years agoAuto merge of #38581 - frewsxcv:vecdequeue-insert, r=GuillaumeGomez
bors [Mon, 9 Jan 2017 17:31:41 +0000 (17:31 +0000)]
Auto merge of #38581 - frewsxcv:vecdequeue-insert, r=GuillaumeGomez

Clarify behavior of `VecDeque::insert`.

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

7 years agoDeduplicate and document logic
Esteban Küber [Mon, 9 Jan 2017 17:07:34 +0000 (09:07 -0800)]
Deduplicate and document logic

7 years agoAuto merge of #38310 - frewsxcv:ctlz-cttz, r=pnkfelix
bors [Mon, 9 Jan 2017 13:56:10 +0000 (13:56 +0000)]
Auto merge of #38310 - frewsxcv:ctlz-cttz, r=pnkfelix

Clarify zero-value behavior of `ctlz`/`cttz` intrinsics.

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

7 years agoAuto merge of #38929 - Manishearth:compiler-docs, r=alexcrichton
bors [Mon, 9 Jan 2017 10:58:08 +0000 (10:58 +0000)]
Auto merge of #38929 - Manishearth:compiler-docs, r=alexcrichton

Don't restrict docs in compiler-docs mode

Search is broken without this. We want all crates to be included in compiler-docs mode. This was changed in https://github.com/rust-lang/rust/pull/38858, this PR brings that functionality back in compiler-docs mode.

7 years agoAuto merge of #38923 - petrochenkov:scheck, r=alexcrichton
bors [Mon, 9 Jan 2017 08:58:28 +0000 (08:58 +0000)]
Auto merge of #38923 - petrochenkov:scheck, r=alexcrichton

Avoid large number of stage 0 warnings about --no-stack-check

```
....

rustc: x86_64-pc-windows-gnu/stage0/lib/rustlib/x86_64-pc-windows-gnu/lib/libstd
warning: the --no-stack-check flag is deprecated and does nothing

rustc: x86_64-pc-windows-gnu/stage0/lib/rustlib/x86_64-pc-windows-gnu/lib/libgetopts
warning: the --no-stack-check flag is deprecated and does nothing

rustc: x86_64-pc-windows-gnu/stage0/lib/rustlib/x86_64-pc-windows-gnu/lib/libterm
warning: the --no-stack-check flag is deprecated and does nothing

rustc: x86_64-pc-windows-gnu/stage0/lib/rustlib/x86_64-pc-windows-gnu/lib/liblog
warning: the --no-stack-check flag is deprecated and does nothing

....
```

r? @alexcrichton

7 years agoAuto merge of #38866 - alexcrichton:try-wait, r=aturon
bors [Mon, 9 Jan 2017 07:01:10 +0000 (07:01 +0000)]
Auto merge of #38866 - alexcrichton:try-wait, r=aturon

std: Add a nonblocking `Child::try_wait` method

This commit adds a new method to the `Child` type in the `std::process` module
called `try_wait`. This method is the same as `wait` except that it will not
block the calling thread and instead only attempt to collect the exit status. On
Unix this means that we call `waitpid` with the `WNOHANG` flag and on Windows it
just means that we pass a 0 timeout to `WaitForSingleObject`.

Currently it's possible to build this method out of tree, but it's unfortunately
tricky to do so. Specifically on Unix you essentially lose ownership of the pid
for the process once a call to `waitpid` has succeeded. Although `Child` tracks
this state internally to be resilient to multiple calls to `wait` or a `kill`
after a successful wait, if the child is waited on externally then the state
inside of `Child` is not updated. This means that external implementations of
this method must be extra careful to essentially not use a `Child`'s methods
after a call to `waitpid` has succeeded (even in a nonblocking fashion).

By adding this functionality to the standard library it should help canonicalize
these external implementations and ensure they can continue to robustly reuse
the `Child` type from the standard library without worrying about pid ownership.

7 years agoRemove magic number
Esteban Küber [Mon, 9 Jan 2017 05:18:24 +0000 (21:18 -0800)]
Remove magic number

7 years agoreview comment
Esteban Küber [Mon, 9 Jan 2017 05:10:08 +0000 (21:10 -0800)]
review comment

7 years agoAuto merge of #38840 - kjaleshire:multiple-targets-error-fix, r=nrc
bors [Mon, 9 Jan 2017 04:57:36 +0000 (04:57 +0000)]
Auto merge of #38840 - kjaleshire:multiple-targets-error-fix, r=nrc

Warn that the link target ignores the given name

Hi, new contributor here. This is my stab at #20130, any feedback welcome!

7 years agoDon't restrict docs in compiler-docs mode
Manish Goregaokar [Sun, 8 Jan 2017 19:37:52 +0000 (11:37 -0800)]
Don't restrict docs in compiler-docs mode

7 years agoAuto merge of #38910 - steveklabnik:update_docs, r=eddyb
bors [Mon, 9 Jan 2017 02:59:33 +0000 (02:59 +0000)]
Auto merge of #38910 - steveklabnik:update_docs, r=eddyb

Improve safety warning on ptr::swap

r? @eddyb @bluss , who I asked about this on IRC

7 years agosave-analysis: fix over-zealous filter on generated code
Nick Cameron [Mon, 9 Jan 2017 02:07:07 +0000 (15:07 +1300)]
save-analysis: fix over-zealous filter on generated code

7 years agoAuto merge of #38907 - alexcrichton:curl-retry, r=japaric
bors [Mon, 9 Jan 2017 01:00:30 +0000 (01:00 +0000)]
Auto merge of #38907 - alexcrichton:curl-retry, r=japaric

rustbuild: Pass --retry 3 to curl

Try to handle spurious network failures on Travis by automatically
retrying failed downloads on Travis.

7 years agoTeach diagnostics to correct margin on multiline messages
Esteban Küber [Sun, 8 Jan 2017 22:00:57 +0000 (14:00 -0800)]
Teach diagnostics to correct margin on multiline messages

Make any diagnostic line to have the correct margin to align with the
first line:

```
error: message
 --> file.rs:3:20
  |
3 |     <CODE>
  |      ^^^^
  |
  = note: this is a multiline
          note with a correct
          margin
  = note: this is a single line note
  = help: here are some functions which might fulfill your needs:
          - .len()
          - .foo()
          - .bar()
  = suggestion: this is a multiline
                suggestion with a
                correct margin
```

7 years agoAuto merge of #38904 - alexcrichton:travis-retry, r=japaric
bors [Sun, 8 Jan 2017 23:01:11 +0000 (23:01 +0000)]
Auto merge of #38904 - alexcrichton:travis-retry, r=japaric

travis: Wrap submodules updates in travis_retry

Let's try to squash some of those network issues with a `travis_retry`
tool to just retry the command a few times.

7 years agoUse fold instead of collect/join and add comments
Esteban Küber [Sun, 8 Jan 2017 20:56:34 +0000 (12:56 -0800)]
Use fold instead of collect/join and add comments

7 years agoAuto merge of #38861 - est31:master, r=alexcrichton
bors [Sun, 8 Jan 2017 19:50:57 +0000 (19:50 +0000)]
Auto merge of #38861 - est31:master, r=alexcrichton

Make members of {std,core}::{i128,u128} unstable

Fixes #38860

7 years agoAuto merge of #38853 - alexcrichton:better-dist, r=brson
bors [Sun, 8 Jan 2017 17:48:14 +0000 (17:48 +0000)]
Auto merge of #38853 - alexcrichton:better-dist, r=brson

rustbuild: Don't build target compilers in stage0

The `doc-book` and `doc-nomicon` steps accidentally depended on a rustbook
compiled by a cross-compiled compiler, which isn't necessary. Be sure to set the
`host` on these dependency edges to the build compiler to ensure that we're
always using a tool compiled for the host platform.

This was discovered trawling the build logs for the new dist bots and
discovering that they're building one too many compilers in stage0.

7 years agoAuto merge of #38837 - eddyb:issue-38074, r=nikomatsakis
bors [Sun, 8 Jan 2017 15:51:49 +0000 (15:51 +0000)]
Auto merge of #38837 - eddyb:issue-38074, r=nikomatsakis

Allow projections to be promoted to constants in MIR.

This employs the `LvalueContext` additions by @pcwalton to properly extend the MIR promotion of temporaries to allow projections (field accesses, indexing and dereferences) on said temporaries.

It's needed both parity with the old constant qualification logic (for current borrowck) and it fixes #38074.
The former is *required for soundness* if we accept the RFC for promoting rvalues to `'static` constants.
That is, until we get MIR borrowck and the same source of truth will be used for both checks and codegen.

7 years agoFix ICE when variant is used as a part of associated type
Vadim Petrochenkov [Sun, 8 Jan 2017 13:38:40 +0000 (16:38 +0300)]
Fix ICE when variant is used as a part of associated type

7 years agoAuto merge of #38797 - abhijeetbhagat:master, r=petrochenkov
bors [Sun, 8 Jan 2017 13:40:46 +0000 (13:40 +0000)]
Auto merge of #38797 - abhijeetbhagat:master, r=petrochenkov

Fix process module tests to run on Windows

Fixes #38565
r? @retep998

7 years agoAvoid large number of stage 0 warnings about --no-stack-check
Vadim Petrochenkov [Sun, 8 Jan 2017 12:09:55 +0000 (15:09 +0300)]
Avoid large number of stage 0 warnings about --no-stack-check

7 years agoAuto merge of #38813 - eddyb:lazy-11, r=nikomatsakis
bors [Sun, 8 Jan 2017 11:36:52 +0000 (11:36 +0000)]
Auto merge of #38813 - eddyb:lazy-11, r=nikomatsakis

[11/n] Separate ty::Tables into one per each body.

_This is part of a series ([prev](https://github.com/rust-lang/rust/pull/38449) | [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>

In order to track the results of type-checking and inference for incremental recompilation, they must be stored separately for each function or constant value, instead of lumped together.

These side-`Tables` also have to be tracked by various passes, as they visit through bodies (all of which have `Tables`, even if closures share the ones from their parent functions). This is usually done by switching a `tables` field in an override of `visit_nested_body` before recursing through `visit_body`, to the relevant one and then restoring it - however, in many cases the nesting is unnecessary and creating the visitor for each body in the crate and then visiting that body, would be a much cleaner solution.

To simplify handling of inlined HIR & its side-tables, their `NodeId` remapping and entries HIR map were fully stripped out, which means that `NodeId`s from inlined HIR must not be used where a local `NodeId` is expected. It might be possible to make the nodes (`Expr`, `Block`, `Pat`, etc.) that only show up within a `Body` have IDs that are scoped to that `Body`, which would also allow `Tables` to use `Vec`s.

That last part also fixes #38790 which was accidentally introduced in a previous refactor.

7 years agoAuto merge of #38679 - alexcrichton:always-deny-warnings, r=nrc
bors [Sun, 8 Jan 2017 08:22:06 +0000 (08:22 +0000)]
Auto merge of #38679 - alexcrichton:always-deny-warnings, r=nrc

Remove not(stage0) from deny(warnings)

Historically this was done to accommodate bugs in lints, but there hasn't been a
bug in a lint since this feature was added which the warnings affected. Let's
completely purge warnings from all our stages by denying warnings in all stages.
This will also assist in tracking down `stage0` code to be removed whenever
we're updating the bootstrap compiler.

7 years agoTeach diagnostics to have correctly padded lists
Esteban Küber [Sun, 8 Jan 2017 05:12:33 +0000 (21:12 -0800)]
Teach diagnostics to have correctly padded lists

Make the suggestion list have a correct padding:

```
error[E0308]: mismatched types
 --> file.rs:3:20
  |
3 |     let x: usize = "";
  |                    ^^ expected usize, found reference
  |
  = note: expected type `usize`
  = note:    found type `&'static str`
  = help: here are some functions which might fulfill your needs:
          - .len()
          - .foo()
          - .bar()
```

7 years agotrying to figure out why this test failes, might need help
Esteban Küber [Sun, 8 Jan 2017 07:31:23 +0000 (23:31 -0800)]
trying to figure out why this test failes, might need help

7 years agoadd test case
Esteban Küber [Fri, 6 Jan 2017 01:40:26 +0000 (17:40 -0800)]
add test case

7 years agoAuto merge of #38883 - alexcrichton:android-flaky, r=brson
bors [Sun, 8 Jan 2017 06:19:14 +0000 (06:19 +0000)]
Auto merge of #38883 - alexcrichton:android-flaky, r=brson

compiletest: Fix flaky Android gdb test runs

Local testing showed that I was able to reproduce an error where debuginfo tests
on Android would fail with "connection reset by peer". Further investigation
turned out that the gdb tests are android with bit of process management:

* First an `adb forward` command is run to ensure that the host's port 5039 is
  the same as the emulator's.
* Next an `adb shell` command is run to execute the `gdbserver` executable
  inside the emulator. This gdb server will attach to port 5039 and listen for
  remote gdb debugging sessions.
* Finally, we run `gdb` on the host (not in the emulator) and then connect to
  this gdb server to send it commands.

The problem was happening when the host's gdb was failing to connect to the
remote gdbserver running inside the emulator. The previous test for this was
that after `adb shell` executed we'd sleep for a second and then attempt to make
a TCP connection to port 5039. If successful we'd run gdb and on failure we'd
sleep again.

It turns out, however, that as soon as we've executed `adb forward` all TCP
connections to 5039 will succeed. This means that we would only ever sleep for
at most one second, and if this wasn't enough time we'd just fail later because
we would assume that gdbserver had started but it may not have done so yet.

This commit fixes these issues by removing the TCP connection to test if
gdbserver is ready to go. Instead we read the stdout of the process and wait for
it to print that it's listening at which point we start running gdb. I've found
that locally at least I was unable to reproduce the failure after these changes.

Closes #38710

7 years agoAuto merge of #38822 - michaelwoerister:collect-fn-once-adapter, r=eddyb
bors [Sun, 8 Jan 2017 04:18:32 +0000 (04:18 +0000)]
Auto merge of #38822 - michaelwoerister:collect-fn-once-adapter, r=eddyb

trans: Fix missing closure env drop-glue in trans-item collector.

FnOnce adapters automatically generated by the compiler introduce a call to drop the closure environment. The collector didn't pick up on that because this drop call does not show up in MIR. That could lead to an assertion being triggered if the drop-glue for the environment wasn't instantiated via something else.

Fixes #38810

cc @arielb1

r? @eddyb or @nikomatsakis

7 years agoAuto merge of #38807 - comex:pprint-expr-attr, r=nrc
bors [Sun, 8 Jan 2017 02:10:26 +0000 (02:10 +0000)]
Auto merge of #38807 - comex:pprint-expr-attr, r=nrc

Print attributes on expressions when pretty printing.

Test case: `rustc -Z unstable-options --unpretty=hir <(echo 'fn main() { #[allow()] main() }')`

7 years agoAuto merge of #38798 - jsgf:fix-rpath, r=nikomatsakis
bors [Sun, 8 Jan 2017 00:10:15 +0000 (00:10 +0000)]
Auto merge of #38798 - jsgf:fix-rpath, r=nikomatsakis

rustc: use -Xlinker when specifying an rpath with ',' in it

The `-Wl` option splits its parameters on commas, so if rustc specifies
`-Wl,-rpath,<path>` when `<path>` contains commas, the path gets split up
and the linker gets a partial path and spurious extra parameters.

Gcc/clang support the more verbose `-Xlinker` option to pass options to the linker directly, so use it for comma-containing paths.

Fixes issue #38795.

7 years agoAuto merge of #38781 - SimonSapin:unishrink, r=alexcrichton
bors [Sat, 7 Jan 2017 21:28:47 +0000 (21:28 +0000)]
Auto merge of #38781 - SimonSapin:unishrink, r=alexcrichton

Reduce the size of static data in std_unicode::tables

`BoolTrie` works well for sets of code points spread out through most of Unicode’s range, but is uses a lot of space for sets with few, mostly low, code points.

This switches a few of its instances to a similar but simpler trie data structure.

CC @raphlinus, who wrote the original `BoolTrie`.

## Before

`size_of::<BoolTrie>()` is 1552, which is added to `table.r3.len() * 8 + t.r5.len() + t.r6.len() * 8`:

* `Cc_table`: 1632
* `White_Space_table`: 1656
* `Pattern_White_Space_table`: 1640
* Total: 4928 bytes

## After

`size_of::<SmallBoolTrie>()` is 32, which is added to `t.r1.len() + t.r2.len() * 8`:

* `Cc_table`: 51
* `White_Space_table`: 273
* `Pattern_White_Space_table`: 193
* Total: 517 bytes

## Difference

Every Rust program with `std` statically linked should be about 4 KB smaller.

7 years agothanks @eddyb
Steve Klabnik [Sat, 7 Jan 2017 19:27:04 +0000 (14:27 -0500)]
thanks @eddyb

7 years agoAuto merge of #38733 - sfackler:peek-mut-pop, r=alexcrichton
bors [Sat, 7 Jan 2017 19:21:49 +0000 (19:21 +0000)]
Auto merge of #38733 - sfackler:peek-mut-pop, r=alexcrichton

Add PeekMut::pop

A fairly common workflow is to put a bunch of stuff into a binary heap
and then mutate the top value until its empty. This both makes that a
bit more convenient (no need to save a boolean off and pop after to
avoid borrowck issues), and a bit more efficient since you only shift
once.

r? @alexcrichton

cc @rust-lang/libs

7 years agoImprove safety warning on ptr::swap
Steve Klabnik [Sat, 7 Jan 2017 18:41:16 +0000 (13:41 -0500)]
Improve safety warning on ptr::swap

7 years agorustbuild: Pass --retry 3 to curl
Alex Crichton [Sat, 7 Jan 2017 15:55:06 +0000 (07:55 -0800)]
rustbuild: Pass --retry 3 to curl

Try to handle spurious network failures on Travis by automatically
retrying failed downloads on Travis.

7 years agoAuto merge of #38551 - aidanhs:aphs-vec-in-place, r=brson
bors [Sat, 7 Jan 2017 13:02:52 +0000 (13:02 +0000)]
Auto merge of #38551 - aidanhs:aphs-vec-in-place, r=brson

Implement placement-in protocol for `Vec`

Follow-up of #32366 per comment at https://github.com/rust-lang/rust/issues/30172#issuecomment-268099009, updating to latest rust, leaving @apasel422 as author and putting myself as committer.

I've removed the implementation of `push` in terms of place to make this PR more conservative.

7 years agoAuto merge of #38469 - tbu-:pr_writeln_no_args, r=brson
bors [Sat, 7 Jan 2017 10:59:46 +0000 (10:59 +0000)]
Auto merge of #38469 - tbu-:pr_writeln_no_args, r=brson

Allow `writeln!` without arguments, in symmetry with `println!`

CC #36825.

7 years agoAuto merge of #38327 - Yamakaky:into-ipaddr, r=brson
bors [Sat, 7 Jan 2017 09:00:52 +0000 (09:00 +0000)]
Auto merge of #38327 - Yamakaky:into-ipaddr, r=brson

Impl From<Ipv4Addr, Ipv6Addr> for IpAddr.

Fixes https://github.com/rust-lang/rfcs/issues/1816.

7 years agoAuto merge of #38859 - jonathandturner:E0088_fix, r=eddyb
bors [Sat, 7 Jan 2017 05:59:38 +0000 (05:59 +0000)]
Auto merge of #38859 - jonathandturner:E0088_fix, r=eddyb

E0088/E0090 fix

This fixes an issue reported by @eddyb (https://github.com/rust-lang/rust/pull/36208#issuecomment-2707092230) where the check for "too few lifetime parameters" was removed in one of the error message PRs.

I also removed the span shrinking from E0088, as early bound lifetimes give you a confusing underline in some cases.

r=eddyb

7 years agotravis: Wrap submodules updates in travis_retry
Alex Crichton [Sat, 7 Jan 2017 05:28:57 +0000 (21:28 -0800)]
travis: Wrap submodules updates in travis_retry

Let's try to squash some of those network issues with a `travis_retry`
tool to just retry the command a few times.

7 years agostd: Add a nonblocking `Child::try_wait` method
Alex Crichton [Fri, 6 Jan 2017 06:47:09 +0000 (22:47 -0800)]
std: Add a nonblocking `Child::try_wait` method

This commit adds a new method to the `Child` type in the `std::process` module
called `try_wait`. This method is the same as `wait` except that it will not
block the calling thread and instead only attempt to collect the exit status. On
Unix this means that we call `waitpid` with the `WNOHANG` flag and on Windows it
just means that we pass a 0 timeout to `WaitForSingleObject`.

Currently it's possible to build this method out of tree, but it's unfortunately
tricky to do so. Specifically on Unix you essentially lose ownership of the pid
for the process once a call to `waitpid` has succeeded. Although `Child` tracks
this state internally to be resilient to multiple calls to `wait` or a `kill`
after a successful wait, if the child is waited on externally then the state
inside of `Child` is not updated. This means that external implementations of
this method must be extra careful to essentially not use a `Child`'s methods
after a call to `waitpid` has succeeded (even in a nonblocking fashion).

By adding this functionality to the standard library it should help canonicalize
these external implementations and ensure they can continue to robustly reuse
the `Child` type from the standard library without worrying about pid ownership.

7 years agoAuto merge of #38858 - ollie27:rustbuild_docs_std, r=alexcrichton
bors [Sat, 7 Jan 2017 04:02:43 +0000 (04:02 +0000)]
Auto merge of #38858 - ollie27:rustbuild_docs_std, r=alexcrichton

rustbuild: Stop building docs for std dependancies

Fixes: #38319
r? @alexcrichton

7 years agoMove check-ui to fulldeps so librustc is available
Esteban Küber [Sat, 7 Jan 2017 02:18:47 +0000 (18:18 -0800)]
Move check-ui to fulldeps so librustc is available

As per @alexcrichton's comment in #38607.

7 years agoTest for appropriate span on second custom derive
Esteban Küber [Sun, 25 Dec 2016 21:00:06 +0000 (13:00 -0800)]
Test for appropriate span on second custom derive