]> git.lizzy.rs Git - rust.git/log
rust.git
7 years agoRollup merge of #41166 - alexcrichton:update-cargo, r=brson
Tim Neumann [Wed, 12 Apr 2017 12:45:43 +0000 (14:45 +0200)]
Rollup merge of #41166 - alexcrichton:update-cargo, r=brson

Update cargo submodules

Brings in a fix for #40955 through rust-lang/cargo#3898.

Closes #40955

7 years agoRollup merge of #41141 - michaelwoerister:direct-metadata-ich-final, r=nikomatsakis
Tim Neumann [Wed, 12 Apr 2017 12:45:42 +0000 (14:45 +0200)]
Rollup merge of #41141 - michaelwoerister:direct-metadata-ich-final, r=nikomatsakis

ICH: Replace old, transitive metadata hashing with direct hashing approach.

This PR replaces the old crate metadata hashing strategy with a new one that directly (but stably) hashes all values we encode into the metadata. Previously we would track what data got accessed during metadata encoding and then hash the input nodes (HIR and upstream metadata) that were transitively reachable from the accessed data. While this strategy was sound, it had two major downsides:

1. It was susceptible to generating false positives, i.e. some input node might have changed without actually affecting the content of the metadata. That metadata entry would still show up as changed.
2. It was susceptible to quadratic blow-up when many metadata nodes shared the same input nodes, which would then get hashed over and over again.

The new method does not have these disadvantages and it's also a first step towards caching more intermediate results in the compiler.

Metadata hashing/cross-crate incremental compilation is still kept behind the `-Zincremental-cc` flag even after this PR. Once the new method has proven itself with more tests, we can remove the flag and enable cross-crate support by default again.

r? @nikomatsakis
cc @rust-lang/compiler

7 years agoRollup merge of #41087 - estebank:tuple-float-index, r=arielb1
Tim Neumann [Wed, 12 Apr 2017 12:45:41 +0000 (14:45 +0200)]
Rollup merge of #41087 - estebank:tuple-float-index, r=arielb1

Use proper span for tuple index parsed as float

Fix diagnostic suggestion from:

```rust
help: try parenthesizing the first index
  |     (1, (2, 3)).((1, (2, 3)).1).1;
```

to the correct:

```rust
help: try parenthesizing the first index
  |     ((1, (2, 3)).1).1;
```

Fix #41081.

7 years agoRollup merge of #41063 - nikomatsakis:issue-40746-always-exec-loops, r=eddyb
Tim Neumann [Wed, 12 Apr 2017 12:45:40 +0000 (14:45 +0200)]
Rollup merge of #41063 - nikomatsakis:issue-40746-always-exec-loops, r=eddyb

remove unnecessary tasks

Remove various unnecessary tasks. All of these are "always execute" tasks that don't do any writes to tracked state (or else an assert would trigger, anyhow). In some cases, they issue lints or errors, but we''ll deal with that -- and anyway side-effects outside of a task don't cause problems for anything that I can see.

The one non-trivial refactoring here is the borrowck conversion, which adds the requirement to go from a `DefId` to a `BodyId`. I tried to make a useful helper here.

r? @eddyb

cc #40746
cc @cramertj @michaelwoerister

7 years agoICH: Replace old, transitive metadata hashing with direct hashing approach.
Michael Woerister [Wed, 5 Apr 2017 21:39:02 +0000 (23:39 +0200)]
ICH: Replace old, transitive metadata hashing with direct hashing approach.

Instead of collecting all potential inputs to some metadata entry and
hashing those, we directly hash the values we are storing in metadata.
This is more accurate and doesn't suffer from quadratic blow-up when
many entries have the same dependencies.

7 years agoICH: Hash everything that gets encoded into crate metadata.
Michael Woerister [Wed, 5 Apr 2017 11:00:17 +0000 (13:00 +0200)]
ICH: Hash everything that gets encoded into crate metadata.

7 years agoMake compiletest write test output to different files for different revisions.
Michael Woerister [Thu, 6 Apr 2017 14:56:09 +0000 (16:56 +0200)]
Make compiletest write test output to different files for different revisions.

7 years agofix nit
Niko Matsakis [Wed, 12 Apr 2017 09:42:02 +0000 (05:42 -0400)]
fix nit

7 years agoAuto merge of #40765 - pirate:patch-3, r=aturon
bors [Wed, 12 Apr 2017 09:16:14 +0000 (09:16 +0000)]
Auto merge of #40765 - pirate:patch-3, r=aturon

Add contribution instructions to stdlib docs

Generally programming language docs have instructions on how to contribute changes.

I couldn't find any in the rust docs, so I figured I'd add an instructions section, let me know if this belongs somewhere else!

7 years agoAuto merge of #40584 - nrc:rls-submod, r=alexcrichton
bors [Wed, 12 Apr 2017 05:26:10 +0000 (05:26 +0000)]
Auto merge of #40584 - nrc:rls-submod, r=alexcrichton

Add the RLS as a submodule and build a package out of it

r? @brson (and cc @alexcrichton) Please review closely, I am not at all convinced I've done the right things here. I did run `x.py dist` and it makes an rls package which looks right to my eyes, but I haven't tested on non-linux platforms nor am I really sure what it should look like.

This does not attempt to run tests for the RLS yet.

7 years agoAuto merge of #41237 - frewsxcv:rollup, r=frewsxcv
bors [Wed, 12 Apr 2017 00:45:49 +0000 (00:45 +0000)]
Auto merge of #41237 - frewsxcv:rollup, r=frewsxcv

Rollup of 8 pull requests

- Successful merges: #40377, #40559, #41173, #41202, #41204, #41209, #41216, #41231
- Failed merges:

7 years agoRollup merge of #41231 - TimNN:fix-centos, r=frewsxcv
Corey Farwell [Tue, 11 Apr 2017 22:36:17 +0000 (18:36 -0400)]
Rollup merge of #41231 - TimNN:fix-centos, r=frewsxcv

Use correct vault URL in CentOS images

r? @frewsxcv

7 years agoRollup merge of #41216 - shahn:iter_pos, r=steveklabnik
Corey Farwell [Tue, 11 Apr 2017 22:36:16 +0000 (18:36 -0400)]
Rollup merge of #41216 - shahn:iter_pos, r=steveklabnik

Clarify Iterator::position doc

Extend the example a little bit to show behaviour better.

r? @steveklabnik

7 years agoRollup merge of #41209 - aidanhs:aphs-quiet-sccache, r=alexcrichton
Corey Farwell [Tue, 11 Apr 2017 22:36:16 +0000 (18:36 -0400)]
Rollup merge of #41209 - aidanhs:aphs-quiet-sccache, r=alexcrichton

Make sccache a bit quieter

...and remove the single mention of `SCCACHE_LOG_LEVEL` that would only take effect on Docker (i.e. Linux) builds since it had no effect anyway (because [`RUST_LOG` takes priority](https://github.com/mozilla/sccache/blob/ec10cdb2ddeb3dde9891bea1fa095e504a60a28a/src/main.rs#L124-L128)).

r? @frewsxcv

7 years agoRollup merge of #41204 - remexre:master, r=steveklabnik
Corey Farwell [Tue, 11 Apr 2017 22:36:15 +0000 (18:36 -0400)]
Rollup merge of #41204 - remexre:master, r=steveklabnik

Fixes incorrect formatting in array's documentation.

Changes

 - [`Clone`][clone] (only if `T: [Copy][copy]`)

to

 - [`Clone`][clone] (only if `T: `[`Copy`](copy))

r? @steveklabnik

7 years agoRollup merge of #41202 - brson:btree, r=nikomatsakis
Corey Farwell [Tue, 11 Apr 2017 22:36:14 +0000 (18:36 -0400)]
Rollup merge of #41202 - brson:btree, r=nikomatsakis

Convert HashMap to BTree in build-manifest

This is just for my peace of mind since it's important the output of this program be deterministic.

7 years agoRollup merge of #41173 - GuillaumeGomez:fix-rustdoc-code-block-parsing, r=steveklabnik
Corey Farwell [Tue, 11 Apr 2017 22:36:13 +0000 (18:36 -0400)]
Rollup merge of #41173 - GuillaumeGomez:fix-rustdoc-code-block-parsing, r=steveklabnik

Fix block code headers parsing

Fixes #41167.

r? @rust-lang/docs

7 years agoRollup merge of #40559 - nagisa:manually-drop, r=alexcrichton
Corey Farwell [Tue, 11 Apr 2017 22:36:12 +0000 (18:36 -0400)]
Rollup merge of #40559 - nagisa:manually-drop, r=alexcrichton

Implement Manually Drop

As the RFC has been from approx a week in FCP without any major comments, I’m taking the opportunity to submit the PR early.

7 years agoRollup merge of #40377 - camlorn:optimization_fuel, r=eddyb
Corey Farwell [Tue, 11 Apr 2017 22:36:12 +0000 (18:36 -0400)]
Rollup merge of #40377 - camlorn:optimization_fuel, r=eddyb

Implement optimization fuel and re-enable struct field reordering

See [this discussion](https://internals.rust-lang.org/t/rolling-out-or-unrolling-struct-field-reorderings/4485) for background.

This pull request adds two new compilation options: `-Z print-fuel=crate` prints the optimization fuel used by a crate and `-Z fuel=crate=n` sets the optimization fuel for a crate.

It also turns field reordering back on.  There is no way to test this feature without something consuming fuel.  We can roll this back if we want, but then the optimization fuel bits will be dead code.

The one notable absence from this PR is a test case.  I'm not sure how to do one that's worth having.  The only thing I can think of to test is `-Z fuel=foo=0`.  The problem with other tests is that either (1) they're so big that future optimizations will apply, thus breaking them or (2) we don't know which order the optimizations will be applied in, so we can't guess the message that will be printed.  If someone has a useful proposal for a good test, I certainly want to add one.

7 years agoAuto merge of #41231 - TimNN:fix-centos, r=frewsxcv
bors [Tue, 11 Apr 2017 20:56:00 +0000 (20:56 +0000)]
Auto merge of #41231 - TimNN:fix-centos, r=frewsxcv

Use correct vault URL in CentOS images

r? @frewsxcv

7 years agouse correct vault url
Tim Neumann [Tue, 11 Apr 2017 20:53:16 +0000 (22:53 +0200)]
use correct vault url

7 years agoTouch up rls integration
Alex Crichton [Mon, 10 Apr 2017 18:22:38 +0000 (11:22 -0700)]
Touch up rls integration

* Use the right version when building combined installer
* Update dependencies of rls as it depends on rustc and plugins
* Fix build-manifest and the versions it uses for the rls

7 years agoClarify Iterator::position doc
Sebastian Hahn [Tue, 11 Apr 2017 12:51:56 +0000 (14:51 +0200)]
Clarify Iterator::position doc

Extend the example a little bit to show behaviour better.

7 years agoRemove strings fulfilled with whitespaces in code block headers
Guillaume Gomez [Mon, 10 Apr 2017 12:35:28 +0000 (14:35 +0200)]
Remove strings fulfilled with whitespaces in code block headers

7 years agoFix some nits
Simonas Kazlauskas [Tue, 11 Apr 2017 12:57:49 +0000 (15:57 +0300)]
Fix some nits

7 years agoFix handling of closure arguments
Simonas Kazlauskas [Tue, 11 Apr 2017 11:31:20 +0000 (14:31 +0300)]
Fix handling of closure arguments

Those did not take tuple reordering into account, causing majority of the compiler test suite to
fail.

7 years agoAuto merge of #41096 - clarcharr:as_bytes_mut, r=alexcrichton
bors [Tue, 11 Apr 2017 12:13:49 +0000 (12:13 +0000)]
Auto merge of #41096 - clarcharr:as_bytes_mut, r=alexcrichton

Reduce str transmutes, add mut versions of methods.

When I was working on the various parts involved in #40380 one of the comments I got was the excess of transmutes necessary to make the changes work. This is part of a set of multiple changes I'd like to offer to fix this problem.

I think that having these methods is reasonable because they're already possible via transmutes, and it makes the code that uses them safer. I can also add `pub(crate)` to these methods for now if the libs team would rather not expose them to the public without an RFC.

7 years agoMake a comment better.
Austin Hicks [Thu, 9 Mar 2017 03:20:07 +0000 (22:20 -0500)]
Make a comment better.

7 years agoInitial attempt at implementing optimization fuel and re-enabling struct field reorde...
Austin Hicks [Wed, 8 Mar 2017 21:28:47 +0000 (16:28 -0500)]
Initial attempt at implementing optimization fuel and re-enabling struct field reordering.

7 years agoWe have to use u16 to test field reordering because u64's alignment changes based...
Austin Hicks [Mon, 20 Mar 2017 18:07:46 +0000 (14:07 -0400)]
We have to use u16 to test field reordering because u64's alignment changes based on 32-bit or 64-bit architecture.

7 years agoUI test for -Z print-fuel=foo
Austin Hicks [Fri, 10 Mar 2017 19:24:50 +0000 (14:24 -0500)]
UI test for -Z print-fuel=foo

7 years agoTests for -Z fuel=foo=n
Austin Hicks [Fri, 10 Mar 2017 19:13:59 +0000 (14:13 -0500)]
Tests for -Z fuel=foo=n

7 years agoMake a comment better.
Austin Hicks [Thu, 9 Mar 2017 03:20:07 +0000 (22:20 -0500)]
Make a comment better.

7 years agoInitial attempt at implementing optimization fuel and re-enabling struct field reorde...
Austin Hicks [Wed, 8 Mar 2017 21:28:47 +0000 (16:28 -0500)]
Initial attempt at implementing optimization fuel and re-enabling struct field reordering.

7 years agoAuto merge of #41168 - Shizmob:jemalloc-musl, r=alexcrichton
bors [Tue, 11 Apr 2017 08:57:39 +0000 (08:57 +0000)]
Auto merge of #41168 - Shizmob:jemalloc-musl, r=alexcrichton

Fix jemalloc support for musl

Just like DragonFlyBSD, using the same symbols as the system allocator will result in a segmentation fault at runtime due to allocator mismatches. As such, it's better to prefix the jemalloc symbols instead, avoiding crashes.

We encountered this problem on a dynamically-linked musl target (with patches to Rust to make that possible, see #40113). It may not show up immediately obviously on the current statically-linked CRT targets.

7 years agoAuto merge of #41174 - estebank:issue-41155, r=nikomatsakis
bors [Tue, 11 Apr 2017 05:44:06 +0000 (05:44 +0000)]
Auto merge of #41174 - estebank:issue-41155, r=nikomatsakis

Point at only one char on `Span::next_point`

Avoid pointing at two chars so the diagnostic output doesn't display a
multiline span when starting beyond a line end.

Fix #41155.

Instead of

```rust
error: expected one of `(`, `const`, `default`, `extern`, `fn`, `type`, or `unsafe`, found `}`
 --> <anon>:3:1
  |
1 |   impl S { pub
  |  _____________- starting here...
2 | |
  | |  ...ending here: expected one of 7 possible tokens here
3 |   }
  |   ^ unexpected token
```

show

```rust
error: expected one of `(`, `const`, `default`, `extern`, `fn`, `type`, or `unsafe`, found `}`
  --> <anon>:13:1
   |
12 |     pub
   |        - expected one of 7 possible tokens here
13 | }
   | ^ unexpected token
```

7 years agoMake sccache a bit quieter
Aidan Hobson Sayers [Mon, 10 Apr 2017 23:22:26 +0000 (00:22 +0100)]
Make sccache a bit quieter

7 years agoAuto merge of #40565 - estebank:binops-help, r=arielb1
bors [Mon, 10 Apr 2017 21:56:13 +0000 (21:56 +0000)]
Auto merge of #40565 - estebank:binops-help, r=arielb1

Explicit help message for binop type mismatch

When trying to do `1 + Some(2)`, or some other binary operation on two
types different types without an appropriate trait implementation, provide
an explicit help message:

```rust
help: `{integer} + std::option::Option<{integer}>` has no implementation
```

Re: #39579, #38564, #37626, #39942, #34698.

7 years agoExplicit help message for binop type missmatch
Esteban Küber [Mon, 10 Apr 2017 21:17:49 +0000 (14:17 -0700)]
Explicit help message for binop type missmatch

When trying to do a binary operation with missing implementation, for
example `1 + Some(2)`, provide an explicit help message:

```
note: no implementation for `{integer} + std::option::Option<{integer}>`
```

Use `rustc_on_unimplemented` for the suggestions. Move cfail test to ui.

7 years agoFixes incorrect formatting in array's documentation.
Nathaniel Ringo [Mon, 10 Apr 2017 21:12:39 +0000 (16:12 -0500)]
Fixes incorrect formatting in array's documentation.

7 years agoPoint at only one char on `Span::next_point`
Esteban Küber [Sun, 9 Apr 2017 23:28:31 +0000 (16:28 -0700)]
Point at only one char on `Span::next_point`

Avoid pointing at two chars so the diagnostic output doesn't display a
multiline span when starting beyond a line end.

7 years agoConvert HashMap to BTree in build-manifest
Brian Anderson [Mon, 10 Apr 2017 20:50:42 +0000 (20:50 +0000)]
Convert HashMap to BTree in build-manifest

7 years agoAuto merge of #40018 - japaric:ld, r=alexcrichton
bors [Mon, 10 Apr 2017 18:00:23 +0000 (18:00 +0000)]
Auto merge of #40018 - japaric:ld, r=alexcrichton

-Z linker-flavor

(Please read the commit message first)

This PR is an alternative to rust-lang/rust#36120 (internal lld linker). The
main goal of this PR is to make it *possible* to use LLD as a linker to allow
out of tree experimentation. Now that LLD is going to be shipped with LLVM 4.0,
it should become easier to get a hold of LLD (hopefully, it will be packaged by
Linux distros soon).

Since LLD is a multiarch linker, it has the potential to make cross compilation
easier (less tools need to be installed). Supposedly, LLD is also faster than
the gold linker so LLD may improve build times where link times are significant
(e.g. 100% incremental compilation reuse).

The place where LLD shines is at linking Rust programs that don't depend on
system libraries. For example, here's how you would link a bare metal ARM
Cortex-M program:

```
$ xargo rustc --target thumbv7m-none-eabi -- -Z linker-flavor=ld -C linker=ld.lld -Z print-link-args
"ld.lld" \
  "-L" \
  "$XARGO_HOME/lib/rustlib/thumbv7m-none-eabi/lib" \
  "$PWD/target/thumbv7m-none-eabi/debug/deps/app-de1f86df314ad68c.0.o" \
  "-o" \
  "$PWD/target/thumbv7m-none-eabi/debug/deps/app-de1f86df314ad68c" \
  "--gc-sections" \
  "-L" \
  "$PWD/target/thumbv7m-none-eabi/debug/deps" \
  "-L" \
  "$PWD/target/debug/deps" \
  "-L" \
  "$XARGO_HOME/lib/rustlib/thumbv7m-none-eabi/lib" \
  "-Bstatic" \
  "-Bdynamic" \
  "$XARGO_HOME/lib/rustlib/thumbv7m-none-eabi/lib/libcore-11670d2bd4951fa7.rlib"

$ file target/thumbv7m-none-eabi/debug/app
app: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped, with debug_info
```

This doesn't require installing the `arm-none-eabi-gcc` toolchain.

Even cooler (but I'm biased) is that you can link Rust programs that use
[`steed`] (`steed` is a `std` re-implementation free of C dependencies for Linux
systems) instead of `std` for a bunch of different architectures without having
to install a single cross toolchain.

[`steed`]: https://github.com/japaric/steed

```
$ xargo rustc --target aarch64-unknown-linux-steed --example hello --release -- -Z print-link-args
"ld.lld" \
  "-L" \
  "$XARGO_HOME/lib/rustlib/aarch64-unknown-linux-steed/lib" \
  "$PWD/target/aarch64-unknown-linux-steed/release/examples/hello-80c130ad884c0f8f.0.o" \
  "-o" \
  "$PWD/target/aarch64-unknown-linux-steed/release/examples/hello-80c130ad884c0f8f" \
  "--gc-sections" \
  "-L" \
  "$PWD/target/aarch64-unknown-linux-steed/release/deps" \
  "-L" \
  "$PWD/target/release/deps" \
  "-L" \
  "$XARGO_HOME/lib/rustlib/aarch64-unknown-linux-steed/lib" \
  "-Bstatic" \
  "-Bdynamic" \
  "/tmp/rustc.lAybk9Ltx93Q/libcompiler_builtins-589aede02de78434.rlib"

$ file target/aarch64-unknown-linux-steed/release/examples/hello
hello: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, not stripped, with debug_info
```

All these targets (architectures) worked with LLD:

- [aarch64-unknown-linux-steed](https://github.com/japaric/steed/blob/lld/docker/aarch64-unknown-linux-steed.json)
- [arm-unknown-linux-steedeabi](https://github.com/japaric/steed/blob/lld/docker/arm-unknown-linux-steedeabi.json)
- [arm-unknown-linux-steedeabihf](https://github.com/japaric/steed/blob/lld/docker/arm-unknown-linux-steedeabihf.json)
- [armv7-unknown-linux-steedeabihf](https://github.com/japaric/steed/blob/lld/docker/armv7-unknown-linux-steedeabihf.json)
- [i686-unknown-linux-steed](https://github.com/japaric/steed/blob/lld/docker/i686-unknown-linux-steed.json)
- [mips-unknown-linux-steed](https://github.com/japaric/steed/blob/lld/docker/mips-unknown-linux-steed.json)
- [mipsel-unknown-linux-steed](https://github.com/japaric/steed/blob/lld/docker/mipsel-unknown-linux-steed.json)
- [powerpc-unknown-linux-steed](https://github.com/japaric/steed/blob/lld/docker/powerpc-unknown-linux-steed.json)
- [powerpc64-unknown-linux-steed](https://github.com/japaric/steed/blob/lld/docker/powerpc64-unknown-linux-steed.json)
- [x86_64-unknown-linux-steed](https://github.com/japaric/steed/blob/lld/docker/x86_64-unknown-linux-steed.json)

---

The case where lld is unergonomic is linking binaries that depend on system
libraries. Like "Hello, world" for `x86_64-unknown-linux-gnu`. Because you have
to pass as linker arguments: the path to the startup objects, the path to the
dynamic linker and the library search paths. And all those are system specific
so they can't be encoded in the target itself.

```
$ cargo \
  rustc \
  --release \
  -- \
  -C \
  linker=ld.lld \
  -Z \
  linker-flavor=ld \
  -C \
  link-args='-dynamic-linker /lib64/ld-linux-x86-64.so.2 -L/usr/lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.1 /usr/lib/Scrt1.o /usr/lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/6.3.1/crtbeginS.o /usr/lib/gcc/x86_64-pc-linux-gnu/6.3.1/crtendS.o /usr/lib/crtn.o'
```

---

Another case where `-Z linker-flavor` may come in handy is directly calling
Solaris' linker which is also a multiarch linker (or so I have heard). cc
@binarycrusader

cc @alexcrichton
Heads up: [breaking-change] due to changes in the target specification format.

7 years agoexplain why we have a fake cfail test
Jorge Aparicio [Mon, 10 Apr 2017 14:55:52 +0000 (09:55 -0500)]
explain why we have a fake cfail test

7 years ago--subsystem needs -Wl when using non-ld linkers
Jorge Aparicio [Mon, 10 Apr 2017 14:53:24 +0000 (09:53 -0500)]
--subsystem needs -Wl when using non-ld linkers

7 years agoAuto merge of #41179 - mandeep:add-fmtresult-example, r=frewsxcv
bors [Mon, 10 Apr 2017 13:07:35 +0000 (13:07 +0000)]
Auto merge of #41179 - mandeep:add-fmtresult-example, r=frewsxcv

Added doc comments for fmt::Result

Added doc comments for fmt::Result in regards to item 3 in issue #29355. I'm not certain that this is all that's needed but I think it's a good starting point on this item.

7 years agoAuto merge of #41103 - projektir:channel_error_docs, r=GuillaumeGomez
bors [Mon, 10 Apr 2017 09:45:16 +0000 (09:45 +0000)]
Auto merge of #41103 - projektir:channel_error_docs, r=GuillaumeGomez

Channel error docs

r? @steveklabnik

I'm going to need some help on this one, a few ambiguities.

7 years agoAuto merge of #41178 - llogiq:collections-doc-markdown, r=frewsxcv
bors [Mon, 10 Apr 2017 04:41:15 +0000 (04:41 +0000)]
Auto merge of #41178 - llogiq:collections-doc-markdown, r=frewsxcv

Apply clippy's doc_markdown improvements to libcollections

Since my last PR led to linker failure, I'm now taking much smaller steps.
This only fixes some doc_markdown warnings; as they are in comments only,
we shouldn't get any problems building.

7 years agoAdded doc comments for fmt::Result
mandeep [Mon, 10 Apr 2017 04:07:18 +0000 (23:07 -0500)]
Added doc comments for fmt::Result

7 years agoApply clippy's doc_markdown improvements to libcollections
Andre Bogus [Mon, 10 Apr 2017 03:53:10 +0000 (05:53 +0200)]
Apply clippy's doc_markdown improvements to libcollections

Since my last PR led to linker failure, I'm now taking much smaller steps.
This only fixes some doc_markdown warnings; as they are in comments only,
we shouldn't get any problems building.

7 years agoAuto merge of #41175 - goffrie:patch-1, r=frewsxcv
bors [Mon, 10 Apr 2017 02:24:44 +0000 (02:24 +0000)]
Auto merge of #41175 - goffrie:patch-1, r=frewsxcv

Minor fix to mutex example

Presumably `N` was supposed to be used in both places.

7 years agoMinor fix to mutex example
Geoffry Song [Sun, 9 Apr 2017 23:42:01 +0000 (19:42 -0400)]
Minor fix to mutex example

Presumably `N` was supposed to be used in both places.

7 years agoAuto merge of #40653 - frewsxcv:tidy-handling, r=alexcrichton
bors [Sun, 9 Apr 2017 23:23:11 +0000 (23:23 +0000)]
Auto merge of #40653 - frewsxcv:tidy-handling, r=alexcrichton

A couple minor improvements for tidy error handling.

None

7 years agoReduce str transmutes, add mut versions of methods.
Clar Charr [Fri, 10 Mar 2017 17:10:26 +0000 (12:10 -0500)]
Reduce str transmutes, add mut versions of methods.

7 years agoAuto merge of #41136 - estebank:multiline, r=jonathandturner
bors [Sun, 9 Apr 2017 20:54:50 +0000 (20:54 +0000)]
Auto merge of #41136 - estebank:multiline, r=jonathandturner

Always show end line of multiline annotations

```rust
error[E0046]: not all trait items implemented, missing: `Item`
  --> $DIR/issue-23729.rs:20:9
   |
20 |           impl Iterator for Recurrence {
   |  _________^ starting here...
21 | |             //~^ ERROR E0046
22 | |             //~| NOTE missing `Item` in implementation
23 | |             //~| NOTE `Item` from trait: `type Item;`
...  |
36 | |             }
37 | |         }
   | |_________^ ...ending here: missing `Item` in implementation
   |
   = note: `Item` from trait: `type Item;`
```

instead of

```rust
error[E0046]: not all trait items implemented, missing: `Item`
  --> $DIR/issue-23729.rs:20:9
   |
20 |         impl Iterator for Recurrence {
   |         ^ missing `Item` in implementation
   |
   = note: `Item` from trait: `type Item;`
```

7 years agoAlways show end line of multiline annotations
Esteban Küber [Thu, 6 Apr 2017 19:18:18 +0000 (12:18 -0700)]
Always show end line of multiline annotations

```rust
error[E0046]: not all trait items implemented, missing: `Item`
  --> $DIR/issue-23729.rs:20:9
   |
20 |           impl Iterator for Recurrence {
   |  _________^ starting here...
21 | |             //~^ ERROR E0046
22 | |             //~| NOTE missing `Item` in implementation
23 | |             //~| NOTE `Item` from trait: `type Item;`
...  |
36 | |             }
37 | |         }
   | |_________^ ...ending here: missing `Item` in implementation
   |
   = note: `Item` from trait: `type Item;`
```

instead of

```rust
error[E0046]: not all trait items implemented, missing: `Item`
  --> $DIR/issue-23729.rs:20:9
   |
20 |         impl Iterator for Recurrence {
   |         ^ missing `Item` in implementation
   |
   = note: `Item` from trait: `type Item;`
```

7 years agoRemove --enable-save-analysis configure flag
Nick Cameron [Tue, 4 Apr 2017 23:34:14 +0000 (11:34 +1200)]
Remove --enable-save-analysis configure flag

7 years agoReviewer changes
Nick Cameron [Mon, 27 Mar 2017 19:00:46 +0000 (08:00 +1300)]
Reviewer changes

7 years agoBuild an RLS package as part of the dist target
Nick Cameron [Thu, 16 Mar 2017 20:52:12 +0000 (09:52 +1300)]
Build an RLS package as part of the dist target

7 years agoAdd the RLS as a submodule
Nick Cameron [Thu, 16 Mar 2017 00:06:53 +0000 (13:06 +1300)]
Add the RLS as a submodule

7 years agoPrint tidy errors to stderr, prefix with 'tidy error: ', handle 'bad' state.
Corey Farwell [Sun, 19 Mar 2017 15:46:56 +0000 (11:46 -0400)]
Print tidy errors to stderr, prefix with 'tidy error: ', handle 'bad' state.

7 years agoAuto merge of #41084 - QuietMisdreavus:rustdoc-format-redux, r=frewsxcxv,GuillaumeGomez
bors [Sun, 9 Apr 2017 17:51:32 +0000 (17:51 +0000)]
Auto merge of #41084 - QuietMisdreavus:rustdoc-format-redux, r=frewsxcxv,GuillaumeGomez

rustdoc: update formatting of fn signatures and where clauses to match style rfcs

Recent updates to style RFCs ([where clauses](https://github.com/rust-lang-nursery/fmt-rfcs/issues/38), [function definitions](https://github.com/rust-lang-nursery/fmt-rfcs/issues/39)) changed the "canonical" style for these items, so this is a rustdoc update to make it emit that style where necessary. This is mainly a conversion from visual indent to block indent, which helps out in situations where there was excessive indent causing lines to wrap regardless.

Samples:

![std::iter::IntoIterator](https://cloud.githubusercontent.com/assets/5217170/24712947/e586604c-19e9-11e7-87ae-4fe64d689dc3.png)

![excerpt from std::iter::Iterator](https://cloud.githubusercontent.com/assets/5217170/24713209/91e65112-19ea-11e7-9ff8-d4cf6b31aae1.png)

![std::iter::FromIterator](https://cloud.githubusercontent.com/assets/5217170/24713138/59f36114-19ea-11e7-9dbb-5f5ba7126e2e.png)

![std::cmp::min](https://cloud.githubusercontent.com/assets/5217170/24713038/1bab88b4-19ea-11e7-935d-defed5648de4.png)

![some trait impls on std::collections::HashMap](https://cloud.githubusercontent.com/assets/5217170/24713251/b7ef69e8-19ea-11e7-94a7-e01fbf89fa31.png)

![`fn extract_code_blocks`, an example given in #40687](https://cloud.githubusercontent.com/assets/5217170/24713159/672717cc-19ea-11e7-9acb-6ac278b90339.png)

![excerpt from itertools::Itertools](https://cloud.githubusercontent.com/assets/5217170/24713323/f06716ea-19ea-11e7-94cc-6ef68d9980ec.png)

fixes #41025 and #40687

r? @rust-lang/docs

7 years agoFix block code headers parsing
Guillaume Gomez [Sun, 9 Apr 2017 16:31:59 +0000 (18:31 +0200)]
Fix block code headers parsing

7 years agoFix test failures
Simonas Kazlauskas [Sun, 2 Apr 2017 08:16:17 +0000 (11:16 +0300)]
Fix test failures

7 years agointo_inner to associated function
Simonas Kazlauskas [Sun, 2 Apr 2017 08:15:59 +0000 (11:15 +0300)]
into_inner to associated function

7 years ago Replace the `forget` intrinsic with ManuallyDrop
Simonas Kazlauskas [Sun, 2 Apr 2017 08:13:31 +0000 (11:13 +0300)]
 Replace the `forget` intrinsic with ManuallyDrop

less intrinsics = better life

7 years agoMove away from the ad-hoc NoDrop unions
Simonas Kazlauskas [Wed, 22 Mar 2017 17:11:51 +0000 (19:11 +0200)]
Move away from the ad-hoc NoDrop unions

7 years agoImplement Manually Drop
Simonas Kazlauskas [Wed, 22 Mar 2017 21:35:09 +0000 (23:35 +0200)]
Implement Manually Drop

7 years agomerge with master to pick up pulldown switch
QuietMisdreavus [Sun, 9 Apr 2017 15:38:38 +0000 (10:38 -0500)]
merge with master to pick up pulldown switch

7 years agoAuto merge of #40829 - mgattozzi:ChildStderr, r=steveklabnik
bors [Sun, 9 Apr 2017 15:30:20 +0000 (15:30 +0000)]
Auto merge of #40829 - mgattozzi:ChildStderr, r=steveklabnik

Update ChildStderr docs to be clearer

Before the docs only had a line about where it was found and that it was
a handle to stderr. This commit changes it so that the summary second line is
removed and that it's a bit clearer about what can be done with it. Part of
#29370

7 years agoAuto merge of #40658 - eddyb:lay-more-out, r=arielb1
bors [Sun, 9 Apr 2017 13:08:10 +0000 (13:08 +0000)]
Auto merge of #40658 - eddyb:lay-more-out, r=arielb1

Use ty::layout for ABI computation instead of LLVM types.

This is the first step in creating a backend-agnostic library for computing call ABI details from signatures.
I wanted to open the PR *before* attempting to move `cabi_*` from trans to avoid rebase churn in #39999.
**EDIT**: As I suspected, #39999 needs this PR to fully work (see https://github.com/rust-lang/rust/pull/39999#issuecomment-287723379).

The first 3 commits add more APIs to `ty::layout` and replace non-ABI uses of `sizing_type_of`.
These APIs are probably usable by other backends, and miri too (cc @stoklund @solson).

The last commit rewrites `rustc_trans::cabi_*` to use `ty::layout` and new `rustc_trans::abi` APIs.
Also, during the process, a couple trivial bugs were identified and fixed:
* `msp430`, `nvptx`, `nvptx64`: type sizes *in bytes* were compared with `32` and `64`
* `x86` (`fastcall`): `f64` was incorrectly not treated the same way as `f32`

Although not urgent, this PR also uses the more general "homogenous aggregate" logic to fix #32045.

7 years agorustc_trans: use ty::layout for ABI computation instead of LLVM types.
Eduard-Mihai Burtescu [Fri, 10 Mar 2017 04:25:57 +0000 (06:25 +0200)]
rustc_trans: use ty::layout for ABI computation instead of LLVM types.

7 years agoAuto merge of #41095 - clarcharr:as_extras, r=alexcrichton
bors [Sun, 9 Apr 2017 09:17:34 +0000 (09:17 +0000)]
Auto merge of #41095 - clarcharr:as_extras, r=alexcrichton

Add as_c_str

Again, tying up some consistencies with `CString`.

7 years agoAuto merge of #41163 - nagisa:ldflags-llvm-config, r=alexcrichton
bors [Sun, 9 Apr 2017 05:49:31 +0000 (05:49 +0000)]
Auto merge of #41163 - nagisa:ldflags-llvm-config, r=alexcrichton

Specify type libraries for llvm-config --ldflags

This matters on systems where static libraries and dynamic libraries reside in
different location

7 years agoAuto merge of #41154 - bluss:slice-rfind, r=alexcrichton
bors [Sun, 9 Apr 2017 03:30:09 +0000 (03:30 +0000)]
Auto merge of #41154 - bluss:slice-rfind, r=alexcrichton

Implement .rfind() for slice iterators Iter and IterMut

Just like the forward case find, implement rfind explicitly for slice iterators Iter and IterMut.

7 years agoAuto merge of #41092 - jonhoo:std-fence-intrinsics, r=alexcrichton
bors [Sat, 8 Apr 2017 22:37:35 +0000 (22:37 +0000)]
Auto merge of #41092 - jonhoo:std-fence-intrinsics, r=alexcrichton

Add safe wrapper for atomic_compilerfence intrinsics

This PR adds a proposed safe wrapper for the `atomic_singlethreadfence_*` intrinsics introduced by [RFC #888](https://github.com/rust-lang/rfcs/pull/888). See #41091 for further discussion.

7 years agothis code block is text not Rust code
Jorge Aparicio [Sat, 8 Apr 2017 20:51:18 +0000 (15:51 -0500)]
this code block is text not Rust code

7 years agorustc: add some abstractions to ty::layout for a more concise API.
Eduard-Mihai Burtescu [Fri, 10 Mar 2017 04:25:51 +0000 (06:25 +0200)]
rustc: add some abstractions to ty::layout for a more concise API.

7 years agorustc_trans: avoid sizing_type_of everywhere possible.
Eduard-Mihai Burtescu [Thu, 2 Mar 2017 03:35:25 +0000 (05:35 +0200)]
rustc_trans: avoid sizing_type_of everywhere possible.

7 years agorustc: add a TyLayout helper for type-related layout queries.
Eduard-Mihai Burtescu [Tue, 28 Feb 2017 15:50:28 +0000 (17:50 +0200)]
rustc: add a TyLayout helper for type-related layout queries.

7 years agoFix jemalloc support for musl
Shiz [Sat, 8 Apr 2017 18:36:00 +0000 (20:36 +0200)]
Fix jemalloc support for musl

Just like DragonFlyBSD, using the same symbols as the system allocator will
result in a segmentation fault at runtime due to allocator mismatches.
As such, prefix the jemalloc symbols instead.

7 years agoUpdate cargo submodules
Alex Crichton [Sat, 8 Apr 2017 20:10:08 +0000 (13:10 -0700)]
Update cargo submodules

Brings in a fix for #40955 through rust-lang/cargo#3898.

Closes #40955

7 years agoAuto merge of #41148 - arielb1:dead-unwind, r=nagisa
bors [Sat, 8 Apr 2017 19:47:31 +0000 (19:47 +0000)]
Auto merge of #41148 - arielb1:dead-unwind, r=nagisa

borrowck::mir::dataflow: ignore unwind edges of empty drops

This avoids creating drop flags in many unnecessary situations.

Fixes #41110.

r? @nagisa

beta-nominating because regression. However, that is merely a small perf regression and codegen changes are always risky, so we might let this slide for 1.17.

7 years agoborrowck::mir::dataflow: ignore unwind edges of empty drops
Ariel Ben-Yehuda [Thu, 6 Apr 2017 22:00:53 +0000 (01:00 +0300)]
borrowck::mir::dataflow: ignore unwind edges of empty drops

This avoids creating drop flags in many unnecessary situations.

Fixes #41110.

7 years agoAdding links around Sender/SyncSender/Receiver errors; Adding more documentation...
projektir [Tue, 4 Apr 2017 03:32:59 +0000 (23:32 -0400)]
Adding links around Sender/SyncSender/Receiver errors; Adding more documentation to channel() and sync_channel(); adding more links #29377

7 years agoAddress @parched's comments
Jon Gjengset [Sat, 8 Apr 2017 18:03:17 +0000 (14:03 -0400)]
Address @parched's comments

7 years agoSpecify type libraries for llvm-config --ldflags
Simonas Kazlauskas [Sat, 8 Apr 2017 14:53:16 +0000 (17:53 +0300)]
Specify type libraries for llvm-config --ldflags

This matters on systems where static libraries and dynamic libraries reside in
different location

7 years agoAuto merge of #41055 - Archytaus:compile-fail/const-match-pattern-arm, r=arielb1
bors [Sat, 8 Apr 2017 14:05:06 +0000 (14:05 +0000)]
Auto merge of #41055 - Archytaus:compile-fail/const-match-pattern-arm, r=arielb1

Fixed ICEs with pattern matching in const expression

Fixed 2 ICEs with when pattern matching inside a constant expression.

Both of these ICEs now resolve to an appropriate compiler error.

1. ICE was caused by a compiler bug to implement discriminant const qualify.

    I removed this intentionally thrown bug and changed it to a FIXME as the unimplemented expression type is handled as a compiler error elsewhere.

2. ICE was caused during a drop check when checking if a variable lifetime outlives the current scope if there was no parent scope .

    I've changed it to stop checking if there is no parent scope for the current scope. It is valid syntax for a const variable to be assigned a match expression with no enclosing scope.

    The ICE seemed to mainly be used as a defensive check for bugs elsewhere.

Fixes #38199.
Fixes #31577.
Fixes #29093.
Fixes #40012.

7 years agoAuto merge of #40887 - estebank:ty-placeholder, r=petrochenkov
bors [Sat, 8 Apr 2017 11:47:48 +0000 (11:47 +0000)]
Auto merge of #40887 - estebank:ty-placeholder, r=petrochenkov

Introduce `TyErr` independent from `TyInfer`

Add a `TyErr` type to represent unknown types in places where
parse errors have happened, while still able to build the AST.

Initially only used to represent incorrectly written fn arguments and
avoid "expected X parameters, found Y" errors when called with the
appropriate amount of parameters. We cannot use `TyInfer` for this as
`_` is not allowed as a valid argument type.

Example output:

```rust
error: expected one of `:` or `@`, found `,`
  --> file.rs:12:9
   |
12 | fn bar(x, y: usize) {}
   |         ^

error[E0061]: this function takes 2 parameters but 3 parameters were supplied
  --> file.rs:19:9
   |
12 | fn bar(x, y) {}
   | --------------- defined here
...
19 |     bar(1, 2, 3);
   |         ^^^^^^^ expected 2 parameters
```

Fix #34264.

7 years agoAuto merge of #40775 - estebank:variant-as-type, r=petrochenkov
bors [Sat, 8 Apr 2017 09:23:28 +0000 (09:23 +0000)]
Auto merge of #40775 - estebank:variant-as-type, r=petrochenkov

Suggest using enum when a variant is used as a type

Given a file:

```rust
enum Fruit {
    Apple(i64),
    Orange(i64),
}

fn should_return_fruit() -> Apple {
    Apple(5)
}
```

Provide the following output:

```rust
error[E0412]: cannot find type `Apple` in this scope
  --> file.rs:16:29
   |
16 | fn should_return_fruit() -> Apple {
   |                             ^^^^^ not found in this scope
   |
help: there is an enum variant `Fruit::Apple`, did you mean to use `Fruit`?
  --> file.rs:12:5
   |
12 |     Apple(i64),
   |     ^^^^^^^^^^

error[E0425]: cannot find function `Apple` in this scope
  --> file.rs:17:5
   |
17 |     Apple(5)
   |     ^^^^^ not found in this scope
   |
   = help: possible candidate is found in another module, you can import it into scope:
             `use Fruit::Apple;`
```

Fix #35675.

7 years agoAuto merge of #41156 - TimNN:rollup, r=TimNN
bors [Sat, 8 Apr 2017 06:56:17 +0000 (06:56 +0000)]
Auto merge of #41156 - TimNN:rollup, r=TimNN

Rollup of 4 pull requests

- Successful merges: #41135, #41143, #41146, #41152
- Failed merges:

7 years agoRollup merge of #41152 - cuviper:bootstrap-armv7, r=japaric
Tim Neumann [Sat, 8 Apr 2017 06:55:10 +0000 (08:55 +0200)]
Rollup merge of #41152 - cuviper:bootstrap-armv7, r=japaric

bootstrap.py: fix armv7 detection

This matches the logic that was in `./configure` before f8ca805422db8.

7 years agoRollup merge of #41146 - est31:master, r=nrc
Tim Neumann [Sat, 8 Apr 2017 06:55:10 +0000 (08:55 +0200)]
Rollup merge of #41146 - est31:master, r=nrc

pub(restricted) didn't make it into 1.17

Gets shipped in 1.18 instead.

7 years agoRollup merge of #41143 - stjepang:optimize-bool-fetch-nand, r=nagisa
Tim Neumann [Sat, 8 Apr 2017 06:55:09 +0000 (08:55 +0200)]
Rollup merge of #41143 - stjepang:optimize-bool-fetch-nand, r=nagisa

Optimize AtomicBool::fetch_nand

This is an attempt to push the PR #40563 to completion.

Benchmark: [source](https://gist.github.com/stjepang/023f5025623f5474184f9f4dfd6379ae)
Improvement:

```
 name  old_ ns/iter  new_ce_ ns/iter  diff ns/iter   diff %
 1t    146,440       89,904                -56,536  -38.61%
 2t    561,456       316,835              -244,621  -43.57%
 4t    2,822,821     1,005,424          -1,817,397  -64.38%
```

r? @eddyb
cc @alexcrichton @nagisa

7 years agoRollup merge of #41135 - japaric:unstable-docs, r=steveklabnik
Tim Neumann [Sat, 8 Apr 2017 06:55:08 +0000 (08:55 +0200)]
Rollup merge of #41135 - japaric:unstable-docs, r=steveklabnik

document some existing unstable features

"msp430-interrupt", "ptx-kernel" and #![compiler_builtins_lib]

r? @steveklabnik

7 years agoAuto merge of #41147 - aidanhs:aphs-fix-appveyor-cache, r=TimNN
bors [Sat, 8 Apr 2017 04:21:43 +0000 (04:21 +0000)]
Auto merge of #41147 - aidanhs:aphs-fix-appveyor-cache, r=TimNN

Disable errexit for sanity checking git repo

Unblock appveyor

7 years agofake the feature-gate-linker-flavor compile fail test
Jorge Aparicio [Sat, 8 Apr 2017 02:47:58 +0000 (21:47 -0500)]
fake the feature-gate-linker-flavor compile fail test

as there's no way to generate a `#![feature(linker_flavor)]` error

7 years agoslice: Implement .rfind() for slice iterators Iter and IterMut
Ulrik Sverdrup [Sat, 8 Apr 2017 01:43:18 +0000 (03:43 +0200)]
slice: Implement .rfind() for slice iterators Iter and IterMut

Just like the forward case find, implement rfind explicitly

7 years agoMove tests from ui to cfail
Esteban Küber [Fri, 7 Apr 2017 23:08:07 +0000 (16:08 -0700)]
Move tests from ui to cfail

7 years agobootstrap.py: fix armv7 detection
Josh Stone [Sat, 8 Apr 2017 00:16:52 +0000 (17:16 -0700)]
bootstrap.py: fix armv7 detection

This matches the logic that was in `./configure` before f8ca805422db8.