Commit Graph

62438 Commits

Author SHA1 Message Date
bors 244f893ed7 Auto merge of #40659 - frewsxcv:rollup, r=frewsxcv
Rollup of 9 pull requests

- Successful merges: #40241, #40281, #40398, #40521, #40532, #40554, #40566, #40581, #40587
- Failed merges:
2017-03-20 08:31:16 +00:00
bors 6738cd4d47 Auto merge of #40281 - jimmycuadra:try-from-from-str, r=aturon
Rename TryFrom's associated type and implement str::parse using TryFrom.

Per discussion on the tracking issue, naming `TryFrom`'s associated type `Error` is generally more consistent with similar traits in the Rust ecosystem, and what people seem to assume it should be called. It also helps disambiguate from `Result::Err`, the most common "Err".

See https://github.com/rust-lang/rust/issues/33417#issuecomment-269108968.

`TryFrom<&str>` and `FromStr` are equivalent, so have the latter provide the former to ensure that. Using `TryFrom` in the implementation of `str::parse` means types that implement either trait can use it. When we're ready to stabilize `TryFrom`, we should update `FromStr` to
suggest implementing `TryFrom<&str>` instead for new code.

See https://github.com/rust-lang/rust/issues/33417#issuecomment-277175994
and https://github.com/rust-lang/rust/issues/33417#issuecomment-277253827.

Refs #33417.
2017-03-20 05:36:36 +00:00
Corey Farwell d49f86901c Rollup merge of #40587 - GuillaumeGomez:rustdoc-const-display, r=frewsxcv
Fix invalid debug display for associated consts

Fixes #40568.

r? @rust-lang/docs

cc @SergioBenitez
2017-03-19 20:51:13 -04:00
Corey Farwell de724ba9a6 Rollup merge of #40581 - TimNN:di-global-40, r=alexcrichton
[LLVM 4.0] Add missing debuginfo metadata to globals

Fixes #40580.

cc @rkruppe
cc #40123
2017-03-19 20:51:12 -04:00
Corey Farwell 4e9033124b Rollup merge of #40566 - clarcharr:never_error, r=sfackler
Implement std::error::Error for !.
2017-03-19 20:51:11 -04:00
Corey Farwell dedf9d3593 Rollup merge of #40554 - nrc:rls-data, r=alexcrichton
Use rls-data crate

This basically pulls out a bunch of data structures used by save-analysis for serialization into an external crate, and pulls that crate in using Rustbuild. The RLS can then share these data structures with the compiler which in some cases will allow more efficient communication between the compiler and the RLS (i.e., without serialisation).

Along the way, I have to pull in rls-span, which is the RLS's way of defining spans (more type-safe than the compiler's built-in way). This is basically just to convert from compiler spans to RLS spans.

I also pull in the crates.io version of rustc-serialize, which is a bit annoying, but seems to be the only way to have serialisable data in an external crate. To make this work, all of the save-analysis crate has to use this version too (cc #40527).

Finally I pull in a line from #40347 to make the unstable crate checking stuff working.

There are a lot of changes to save-analysis but they are all mechanical and trivial - changing from using `From` to `Into` (because of orphan rules) being the main thing.

r? @alexcrichton
2017-03-19 20:51:10 -04:00
Corey Farwell 7471d9793c Rollup merge of #40532 - jseyfried:improve_tokenstream_quoter, r=nrc
macros: improve the `TokenStream` quoter

This PR
 - renames the `TokenStream` quoter from `qquote!` to `quote!`,
 - uses `$` instead of `unquote` (e.g. `let toks: TokenStream = ...; quote!([$toks])`),
 - allows unquoting `Token`s as well as `TokenTree`s and `TokenStream`s (fixes #39746), and
 - to preserve syntactic space, requires that `$` be followed by
   - a single identifier to unquote, or
   - another `$` to produce a literal `$`.

r? @nrc
2017-03-19 20:51:09 -04:00
Corey Farwell 1d1543d566 Rollup merge of #40521 - TimNN:panic-free-shift, r=alexcrichton
Implemente overflowing_sh* with new unchecked_sh* intrinsics

Also update some 128 bit builtins to not rely on the constant evaluator to avoid checked operations.

Fixes #40508.

cc @nagisa, @alexcrichton

Note: I still have a build running to see if the 128 bit changes worked (unoptimized builds take *forever* to compile), however at least the overflowing builtins no longer reference `core::panicking::panic`.
2017-03-19 20:51:08 -04:00
Corey Farwell 6480a00222 Rollup merge of #40398 - eddyb:struct-hint, r=nikomatsakis
Propagate expected type hints through struct literals.

Partial fix for #31260 to maximize backwards-compatibility, i.e. the hint is provided but not coerced to.

The added test works because `{...; x}` with a hint of `T` coerces `x` to `T`, and the reasoning why that is slightly different has to do with DSTs: `&Struct { tail: [x] }: &Struct<[T]>` has a hint of `[T]` for `[x]`, but the inferred type should be `[T; 1]` to succeed later, so `[x]` shouldn't be *forced* to be `[T]`.

*However*, implementing that complete behavior in a backwards-compatible way may be non-trivial, and has not yet been fully investigated, while this PR fixes #40355 and can be backported.

r? @nikomatsakis
2017-03-19 20:51:07 -04:00
Corey Farwell 573e906594 Rollup merge of #40281 - jimmycuadra:try-from-from-str, r=aturon
Rename TryFrom's associated type and implement str::parse using TryFrom.

Per discussion on the tracking issue, naming `TryFrom`'s associated type `Error` is generally more consistent with similar traits in the Rust ecosystem, and what people seem to assume it should be called. It also helps disambiguate from `Result::Err`, the most common "Err".

See https://github.com/rust-lang/rust/issues/33417#issuecomment-269108968.

`TryFrom<&str>` and `FromStr` are equivalent, so have the latter provide the former to ensure that. Using `TryFrom` in the implementation of `str::parse` means types that implement either trait can use it. When we're ready to stabilize `TryFrom`, we should update `FromStr` to
suggest implementing `TryFrom<&str>` instead for new code.

See https://github.com/rust-lang/rust/issues/33417#issuecomment-277175994
and https://github.com/rust-lang/rust/issues/33417#issuecomment-277253827.

Refs #33417.
2017-03-19 20:51:06 -04:00
Corey Farwell e5221f9397 Rollup merge of #40241 - Sawyer47:fix-39997, r=alexcrichton
Change how the `0` flag works in format!

Now it always implies right-alignment, so that padding zeroes are placed after the sign (if any) and before the digits. In other words, it always takes precedence over explicitly specified `[[fill]align]`. This also affects the '#' flag: zeroes are placed after the prefix (0b, 0o, 0x) and before the digits.

Here's a short summary of how similar format strings work in Python and Rust:

```
              :05     :<05    :>05    :^05
Python 3.6  |-0001| |-1000| |000-1| |0-100|
Rust before |-0001| |-1000| |-0001| |-0100|
Rust after  |-0001| |-0001| |-0001| |-0001|

             :#05x   :<#05x  :>#05x  :^#05x
Python 3.6  |0x001| |0x100| |000x1| |00x10|
Rust before |0x001| |0x100| |000x1| |0x010|
Rust after  |0x001| |0x001| |0x001| |0x001|
```

Fixes #39997 [breaking-change]
2017-03-19 20:51:06 -04:00
bors 6eb9960d36 Auto merge of #39799 - dpc:create_dir_all, r=alexcrichton
Fix race condition in fs::create_dir_all

The code would crash if the directory was created after create_dir_all
checked whether the directory already existed.  This was contrary to
the documentation which claimed to create the directory if it doesn't
exist, implying (but not stating) that there would not be a failure
due to the directory existing.
2017-03-19 21:02:53 +00:00
bors 38c53f3c2d Auto merge of #40651 - frewsxcv:rollup, r=frewsxcv
Rollup of 13 pull requests

- Successful merges: #40441, #40445, #40562, #40564, #40583, #40588, #40589, #40590, #40603, #40611, #40621, #40646, #40648
- Failed merges:
2017-03-19 17:44:02 +00:00
Ariel Ben-Yehuda 5dc8548050 update LLVM
pick up a fix to LLVM PR29151.
2017-03-19 17:52:17 +02:00
Corey Farwell 94e346b7b7 Rollup merge of #40648 - s3rvac:fix-path-docs-typo, r=frewsxcv
Fix a typo in path.rs docs

The name of the variable used in the example is `path`, not `os_str`.
2017-03-19 10:18:23 -04:00
Corey Farwell 35cf2f96ce Rollup merge of #40646 - russmack:issue-40435-mention-none, r=frewsxcv
Add mention of None as possible return. Closes #40435.

This commit adds a small mention to some methods that None is returned when the slice is empty.
2017-03-19 10:18:23 -04:00
Corey Farwell 9e11ecb750 Rollup merge of #40621 - jswalden:dependant-spelling-fix, r=sfackler
Fix a spelling error in HashMap documentation, and slightly reword surrounding text for precision

Noticed while reading docs just now.

It's possible that the prior wording *meant* to state that the seed's randomness depends on the exact instant that the system RNG was created, I guess.  But unless there's an API guarantee that this is the case, the wording seems over-precise.  Is there a formal API guarantee that would forbid, say, the system RNG from generating all output using the Intel RDRAND instruction?  I don't think the quality of output in that case would depend on when the RNG was created.  Yet it seems to me like it could well be a valid source of randomness when computing the initial seed.

For that reason, tying the randomness of the seed, to the quality of the RNG's output *at the precise instant the seed is computed*, seems less confining.  That instantaneous quality level could be determined by the quality at the instant the RNG was created -- but instantaneous quality need not be low for that precise reason.
2017-03-19 10:18:21 -04:00
Corey Farwell d8c8e01038 Rollup merge of #40611 - ScottAbbey:patch-1, r=GuillaumeGomez
Fix typo in mutex.rs docs

This seems to match other uses of "be accessed" in the document.
2017-03-19 10:18:20 -04:00
Corey Farwell 969e625a19 Rollup merge of #40603 - QuietMisdreavus:slice-ptr-docs, r=GuillaumeGomez
minor wording tweak to slice::{as_ptr, as_mut_ptr}

Per #37334, the slice-as-pointer methods mentioned that "modifying the slice may cause its buffer to be reallocated", when in fact modifying the *slice* itself would cause no such change. (It is a borrow, after all!) This is a tweak to the wording of that line to stress it's the *collection* that could cause the buffer to be reallocated.

r? @steveklabnik
2017-03-19 10:18:19 -04:00
Corey Farwell d74c528f3a Rollup merge of #40590 - z1mvader:master, r=steveklabnik
documented order of conversion between u32 an ipv4addr

This fixes https://github.com/rust-lang/rust/issues/40118
2017-03-19 10:18:19 -04:00
Corey Farwell f2290dab9a Rollup merge of #40589 - topecongiro:floating-point-literal, r=nagisa
Parse 0e+10 as a valid floating-point literal

Fixes issue #40408.
2017-03-19 10:18:18 -04:00
Corey Farwell 03a30b5646 Rollup merge of #40588 - topecongiro:add-missing-tests, r=alexcrichton
Add a test for issue 34571

Closes #34571.
2017-03-19 10:18:17 -04:00
Corey Farwell c949f49c27 Rollup merge of #40583 - jseyfried:fix_include_macro_regression, r=nrc
macros: fix regression with `include!()`

Fixes #40469, a regression when `include!()`ing a `macro_rules!` containing `$crate`.
r? @nrc
2017-03-19 10:18:16 -04:00
Corey Farwell a04c7de2cf Rollup merge of #40564 - GuillaumeGomez:rustdoc-const, r=frewsxcv
Fix const not displayed in rustdoc

Fixes #40331.

r? @rust-lang/docs
2017-03-19 10:18:15 -04:00
Corey Farwell 8287d0de0e Rollup merge of #40562 - mbrubeck:bootstrap, r=alexcrichton
Remove unused param from bootstrap::clean::rm_rf

None
2017-03-19 10:18:14 -04:00
Corey Farwell 9032ceae97 Rollup merge of #40445 - estebank:issue-18150, r=jonathandturner
Point to let when modifying field of immutable variable

Point at the immutable local variable when trying to modify one of its
fields.

Given a file:

```rust
struct Foo {
    pub v: Vec<String>
}

fn main() {
    let f = Foo { v: Vec::new() };
    f.v.push("cat".to_string());
}
```

present the following output:

```
error: cannot borrow immutable field `f.v` as mutable
 --> file.rs:7:13
  |
6 |    let f = Foo { v: Vec::new() };
  |        - this should be `mut`
7 |    f.v.push("cat".to_string());
  |    ^^^

error: aborting due to previous error
```

Fix #27593.
2017-03-19 10:18:13 -04:00
Corey Farwell 7b686ce4ca Rollup merge of #40441 - tschottdorf:promotable-rfc, r=eddyb
Add feature gate for rvalue-static-promotion

Probably needs more tests (which ones?) and there may be other things that need to be done. Also not sure whether the version that introduces the flag is really `1.15.1`.

See https://github.com/rust-lang/rfcs/pull/1414.

Updates #38865.
2017-03-19 10:18:12 -04:00
bors 9c15de4fd5 Auto merge of #40346 - jseyfried:path_and_tokenstream_attr, r=nrc
`TokenStream`-based attributes, paths in attribute and derive macro invocations

This PR
 - refactors `Attribute` to use  `Path` and `TokenStream` instead of `MetaItem`.
 - supports macro invocation paths for attribute procedural macros.
   - e.g. `#[::foo::attr_macro] struct S;`, `#[cfg_attr(all(), foo::attr_macro)] struct S;`
 - supports macro invocation paths for derive procedural macros.
   - e.g. `#[derive(foo::Bar, super::Baz)] struct S;`
 - supports arbitrary tokens as arguments to attribute procedural macros.
   - e.g. `#[foo::attr_macro arbitrary + tokens] struct S;`
 - supports using arbitrary tokens in "inert attributes" with derive procedural macros.
   - e.g. `#[derive(Foo)] struct S(#[inert arbitrary + tokens] i32);`
where `#[proc_macro_derive(Foo, attributes(inert))]`

r? @nrc
2017-03-19 10:56:08 +00:00
Petr Zemek 7add53e47e Fix a typo in path.rs docs
The name of the variable used in the example is `path`, not `os_str`.
2017-03-19 07:02:20 +01:00
Dawid Ciężarkiewicz 088696b98f Fix problems left in `concurrent_recursive_mkdir`
Increase lifetime of `tmpdir`, and really change the length of test
path.
2017-03-18 21:03:51 -07:00
Russell Mackenzie b77d31ac61 Add mention of None as possible return. Closes #40435. 2017-03-19 01:41:44 +00:00
bors bfc49b1092 Auto merge of #40538 - aturon:stab-1.17, r=alexcrichton
Library stabilizations for 1.17

Details of the stabilizations are available in the commits. Includes only library stabilizations; there are a couple of compiler stabilizations that should also be done for 1.17.

Will need a beta backport, which I will create after approval.

r? @alexcrichton
2017-03-19 01:40:57 +00:00
bors 4853584000 Auto merge of #40625 - alexcrichton:update-cargo-again, r=alexcrichton
Update the cargo submodule again

Unfortunately it was reverted back to a broken state in
e06c51553d by accident, so let's bring it forward
again!

Closes https://github.com/rust-lang/cargo/issues/3844
2017-03-18 15:22:29 +00:00
Tim Neumann e16d286b81 add inline attributes to stage 0 methods 2017-03-18 14:52:35 +01:00
topecongiro 8eaac0843e Parse 0e+10 as a valid floating-point literal
Fixes issue #40408.
2017-03-18 21:16:16 +09:00
Taylor Cramer 1f43731772 Add more catch-related CFG and lifetime tests and fix CFG bug 2017-03-17 21:01:04 -07:00
Taylor Cramer fc04eaacc5 Implement ? in catch expressions and add tests 2017-03-17 21:01:04 -07:00
Alex Crichton 9fb737b7b5 Update the cargo submodule again
Unfortunately it was reverted back to a broken state in
e06c51553d by accident, so let's bring it forward
again!
2017-03-17 20:47:35 -07:00
Taylor Cramer 60c1c961c7 Make priv in pub hard error for crates using pub(restricted) 2017-03-17 20:38:32 -07:00
bors df3ab375f3 Auto merge of #40507 - alexcrichton:static-libcurl, r=brson
travis: Ensure cargo links libcurl statically

We don't want a dynamic dependency in the library that we ship, so link it
statically by configuring curl-sys's build script to not pick up the system
version via pkg-config.
2017-03-18 03:31:58 +00:00
Dawid Ciężarkiewicz b5d590b3f0 Fix `create_dir_all("")`
Add a test for `""` and `"."`.
2017-03-17 20:15:05 -07:00
Dawid Ciężarkiewicz bcae6a3734 Reorder match checks in `create_dir_all`
Avoid doing `is_dir` in the fast path.
2017-03-17 20:15:05 -07:00
Dawid Ciężarkiewicz c3e2eaf4cb Fix problems found on Windows in `dir_create_all`
Ignore the type of error altogether. The rationale is: it doesn't matter
what was the problem if the directory is there. In the previous versions
if the directory was there already we wouldn't even attempt to create
it, so we wouldn't know about the problem neither.

Make test path length smaller in `concurrent_recursive_mkdir` test.
2017-03-17 20:15:05 -07:00
Dawid Ciężarkiewicz a51c6aaf84 Break line longer than 100 characters 2017-03-17 20:15:05 -07:00
Dawid Ciężarkiewicz f2adee74a3 Add `concurrent_recursive_mkdir` test 2017-03-17 20:15:05 -07:00
Dawid Ciężarkiewicz 0ec28b796d Fix new version of `create_dir_all`
It will now correctly fail on existing non-directories.
2017-03-17 20:15:05 -07:00
David Roundy db00ba9eb2 Fix race condition in fs::create_dir_all
It is more robust to not fail if any directory in a path was created
concurrently. This change lifts rustc internal `create_dir_racy` that
was created to handle such conditions to be new `create_dir_all`
implementation.
2017-03-17 20:15:05 -07:00
Ariel Ben-Yehuda f2c7917402 translate drop glue using MIR
Drop of arrays is now translated in trans::block in an ugly way that I
should clean up in a later PR, and does not handle panics in the middle
of an array drop, but this commit & PR are growing too big.
2017-03-18 02:53:08 +02:00
Ariel Ben-Yehuda 26df816f52 apply pre-trans passes to Shim MIR 2017-03-18 02:53:08 +02:00
Ariel Ben-Yehuda 2b9fea1300 move the drop expansion code to rustc_mir 2017-03-18 02:53:07 +02:00