]> git.lizzy.rs Git - rust.git/log
rust.git
5 years agoRollup merge of #53777 - ivanbakel:result_map_or_else, r=alexcrichton
kennytm [Wed, 12 Sep 2018 04:17:25 +0000 (12:17 +0800)]
Rollup merge of #53777 - ivanbakel:result_map_or_else, r=alexcrichton

Implemented map_or_else for Result<T, E>

Fulfills #53268
The example is ripped from `Option::map_or_else`, with the types corrected.

5 years agoRollup merge of #53703 - sourcefrog:doc-wrapping, r=frewsxcv
kennytm [Wed, 12 Sep 2018 04:17:24 +0000 (12:17 +0800)]
Rollup merge of #53703 - sourcefrog:doc-wrapping, r=frewsxcv

Document .0 to unpack integer from Wrapping

5 years agoRollup merge of #52514 - DiamondLovesYou:amdgpu-fixes, r=eddyb
kennytm [Wed, 12 Sep 2018 04:17:22 +0000 (12:17 +0800)]
Rollup merge of #52514 - DiamondLovesYou:amdgpu-fixes, r=eddyb

Fix a few AMDGPU related issues

* AMDGPU ignores `noinline` and sadly doesn't clear the attribute when it slaps `alwaysinline` on everything,
* an AMDGPU related load bit range metadata assertion,
* I didn't enable the `amdgpu` component in the `librustc_llvm` build script,
* Add AMDGPU call abi info.

5 years agoAuto merge of #53913 - petrochenkov:biattr4, r=alexcrichton
bors [Tue, 11 Sep 2018 23:28:39 +0000 (23:28 +0000)]
Auto merge of #53913 - petrochenkov:biattr4, r=alexcrichton

resolve: Future proof resolutions for potentially built-in attributes

This is not full "pass all attributes through name resolution", but a more conservative solution.
If built-in attribute is ambiguous with any other macro in scope, then an error is reported.

What complications arise with the full solution - https://github.com/rust-lang/rust/pull/53913#issuecomment-418204136.

cc https://github.com/rust-lang/rust/pull/50911#issuecomment-411605393
cc https://github.com/rust-lang/rust/issues/52269
Closes https://github.com/rust-lang/rust/issues/53531

5 years agoAuto merge of #53873 - nikomatsakis:nll-universe-subtyping-and-pattern-ascription...
bors [Tue, 11 Sep 2018 20:59:11 +0000 (20:59 +0000)]
Auto merge of #53873 - nikomatsakis:nll-universe-subtyping-and-pattern-ascription, r=pnkfelix

support ascription for patterns in NLL

This implements the strategy outlined in [this comment](https://github.com/rust-lang/rust/issues/47184#issuecomment-416669986):

- We first extend the NLL subtyping code so it can handle inference variables and subtyping.
- Then we extend HAIR patterns with type ascription.
- Then we treat the type `T` in `let pat: T = ...` as an ascription.

Before landing, a few things:

- [x] Fix the WF rule bug (filed a FIXME https://github.com/rust-lang/rust/issues/54105)
- [x] Fix an ICE I encountered locally around bound regions, or else file a follow-up
- [x] More tests probably =)

r? @pnkfelix

5 years agoAuto merge of #54111 - nikomatsakis:issue-53686-keywords-and-macros, r=alexcrichton
bors [Tue, 11 Sep 2018 15:40:44 +0000 (15:40 +0000)]
Auto merge of #54111 - nikomatsakis:issue-53686-keywords-and-macros, r=alexcrichton

warn about keywords in macro invocations

Fixes #53686

r? @alexcrichton

5 years agowe now successfully warn about `async` in macro invocations
Niko Matsakis [Tue, 11 Sep 2018 12:56:59 +0000 (08:56 -0400)]
we now successfully warn about `async` in macro invocations

5 years agoAuto merge of #51363 - japaric:stable-used, r=cramertj
bors [Tue, 11 Sep 2018 08:54:11 +0000 (08:54 +0000)]
Auto merge of #51363 - japaric:stable-used, r=cramertj

stabilize #[used]

closes #40289

RFC for stabilization: rust-lang/rfcs#2386

r? @Centril

Where should this be documented? Currently the documentation is in the unstable book

5 years agoAuto merge of #54113 - alexcrichton:update-cargo, r=Mark-Simulacrum
bors [Tue, 11 Sep 2018 06:28:29 +0000 (06:28 +0000)]
Auto merge of #54113 - alexcrichton:update-cargo, r=Mark-Simulacrum

Update Cargo submodule

Bring in a few last-minute updates before the 1.30.0 release

5 years agoAuto merge of #54092 - estebank:gotta-go-fast, r=nikomatsakis
bors [Tue, 11 Sep 2018 01:08:49 +0000 (01:08 +0000)]
Auto merge of #54092 - estebank:gotta-go-fast, r=nikomatsakis

Don't compute padding of braces unless they are unmatched

Follow up to #53949. Attempt to fix # #54083.

r? @nikomatsakis

5 years agoUpdate Cargo submodule
Alex Crichton [Mon, 10 Sep 2018 23:40:57 +0000 (16:40 -0700)]
Update Cargo submodule

Bring in a few last-minute updates before the 1.30.0 release

5 years agoresolve: Reserve a few very special names in macro namespace
Vadim Petrochenkov [Mon, 10 Sep 2018 21:30:21 +0000 (00:30 +0300)]
resolve: Reserve a few very special names in macro namespace

5 years agoresolve: Skip bang macros when resolving potentially built-in attributes
Vadim Petrochenkov [Mon, 10 Sep 2018 21:28:35 +0000 (00:28 +0300)]
resolve: Skip bang macros when resolving potentially built-in attributes

5 years agoresolve: Future proof resolutions for potentially built-in attributes
Vadim Petrochenkov [Sun, 2 Sep 2018 21:04:54 +0000 (00:04 +0300)]
resolve: Future proof resolutions for potentially built-in attributes

5 years agoresolve: Support resolving identifier macros without their own ID
Vadim Petrochenkov [Sun, 2 Sep 2018 01:57:56 +0000 (04:57 +0300)]
resolve: Support resolving identifier macros without their own ID

Invocation/expansion ID (aka `Mark`) is not really necessary for resolving a macro path.
What is really necessary is its parent module, parent expansion and parent legacy scope.
This is required for validation resolutions of built-in attributes, which don't get their own `Mark`s

5 years agofix incremental test
Niko Matsakis [Mon, 10 Sep 2018 21:24:43 +0000 (17:24 -0400)]
fix incremental test

We are now carrying the user-given type through MIR, so it makes sense
that this would change the hash.

5 years agoadd test case
Niko Matsakis [Mon, 10 Sep 2018 21:14:30 +0000 (17:14 -0400)]
add test case

5 years agovisit the paths in pre-expansion macros
Niko Matsakis [Mon, 10 Sep 2018 21:12:55 +0000 (17:12 -0400)]
visit the paths in pre-expansion macros

5 years agomake `add_pre_expansion_builtin` add a pre-expansion lint
Niko Matsakis [Mon, 10 Sep 2018 21:10:11 +0000 (17:10 -0400)]
make `add_pre_expansion_builtin` add a pre-expansion lint

Copy-and-paste error.

5 years agoadd FIXME related to `ref x` bindings
Niko Matsakis [Mon, 10 Sep 2018 18:06:50 +0000 (14:06 -0400)]
add FIXME related to `ref x` bindings

5 years agoAuto merge of #54093 - petrochenkov:noinner, r=alexcrichton
bors [Mon, 10 Sep 2018 17:18:27 +0000 (17:18 +0000)]
Auto merge of #54093 - petrochenkov:noinner, r=alexcrichton

Feature gate non-builtin attributes in inner attribute position

Closes item 3 from https://github.com/rust-lang/rust/pull/50911#issuecomment-411605393

5 years agoadd link to https://github.com/rust-lang/rust/issues/54105
Niko Matsakis [Mon, 10 Sep 2018 15:03:11 +0000 (11:03 -0400)]
add link to https://github.com/rust-lang/rust/issues/54105

5 years agopropagate user-ascribes types down onto resulting bindings
Niko Matsakis [Mon, 10 Sep 2018 14:54:31 +0000 (10:54 -0400)]
propagate user-ascribes types down onto resulting bindings

But only in very simple cases.

5 years agoexpand the patterns test with a bunch more scenarios
Niko Matsakis [Mon, 10 Sep 2018 13:39:43 +0000 (09:39 -0400)]
expand the patterns test with a bunch more scenarios

5 years agoAuto merge of #54000 - jkozlowski:fix-53174, r=cramertj
bors [Mon, 10 Sep 2018 12:58:04 +0000 (12:58 +0000)]
Auto merge of #54000 - jkozlowski:fix-53174, r=cramertj

Allow named lifetimes in async functions.

- Fixes #53174

Code by @eddyb; @cramertj suggested I lift it off another change so we can fix #53174.

r? @cramertj

5 years agobump version
Jorge Aparicio [Mon, 10 Sep 2018 12:34:04 +0000 (14:34 +0200)]
bump version

5 years agooptimize `let x: T = ..` to avoid a temporary
Niko Matsakis [Wed, 5 Sep 2018 20:23:45 +0000 (16:23 -0400)]
optimize `let x: T = ..` to avoid a temporary

For some weird reason this fixes `intrinsic-move-val`. It also affects
various test heuristics. I removed one test (`reborrow_basic`) that
didn't seem to really be testing anything in particular anymore,
compared to all the other tests we've got.

5 years agogeneralize `AscribeUserType` to handle sub or super type
Niko Matsakis [Wed, 5 Sep 2018 19:52:01 +0000 (15:52 -0400)]
generalize `AscribeUserType` to handle sub or super type

5 years agoWIP remove incorrect nll.stderr reference files
Niko Matsakis [Wed, 5 Sep 2018 14:16:56 +0000 (10:16 -0400)]
WIP remove incorrect nll.stderr reference files

5 years agofix SCCs containing mixture of universes
Niko Matsakis [Wed, 5 Sep 2018 13:38:06 +0000 (09:38 -0400)]
fix SCCs containing mixture of universes

And add a test showing a universe violation getting caught.

5 years agofixup: rename `UserAssertTy` to `AscribeUserType`
Niko Matsakis [Tue, 4 Sep 2018 20:32:34 +0000 (16:32 -0400)]
fixup: rename `UserAssertTy` to `AscribeUserType`

This is some rebase pain.

5 years agopacify the mercilous tidy
Niko Matsakis [Mon, 3 Sep 2018 14:35:44 +0000 (10:35 -0400)]
pacify the mercilous tidy

5 years agoinsert `AscribeUserType` for ascriptions
Niko Matsakis [Fri, 31 Aug 2018 23:20:43 +0000 (19:20 -0400)]
insert `AscribeUserType` for ascriptions

5 years agoadd the `AscribeUserType` statement kind
Niko Matsakis [Fri, 31 Aug 2018 22:59:35 +0000 (18:59 -0400)]
add the `AscribeUserType` statement kind

Make it have the semantics of subtype.

5 years agomatches/mod.rs: rustfmt
Niko Matsakis [Fri, 31 Aug 2018 22:36:28 +0000 (18:36 -0400)]
matches/mod.rs: rustfmt

5 years agoadd a `AscribeUserType` pattern, largely ignored
Niko Matsakis [Fri, 31 Aug 2018 22:34:15 +0000 (18:34 -0400)]
add a `AscribeUserType` pattern, largely ignored

5 years agoremove the old `UserAssertTy` support
Niko Matsakis [Fri, 31 Aug 2018 22:34:03 +0000 (18:34 -0400)]
remove the old `UserAssertTy` support

5 years agonow that we can handle subtyping, fix higher-ranked equality
Niko Matsakis [Fri, 31 Aug 2018 21:04:07 +0000 (17:04 -0400)]
now that we can handle subtyping, fix higher-ranked equality

5 years agoadd a test for variables used twice
Niko Matsakis [Fri, 31 Aug 2018 21:03:56 +0000 (17:03 -0400)]
add a test for variables used twice

5 years agoAuto merge of #54011 - eddyb:anchored-in-the-future, r=petrochenkov
bors [Mon, 10 Sep 2018 10:28:53 +0000 (10:28 +0000)]
Auto merge of #54011 - eddyb:anchored-in-the-future, r=petrochenkov

rustc_resolve: inject `uniform_paths` canaries regardless of the feature-gate, on Rust 2018.

This PR is an attempt at future-proofing "anchored paths" by emitting the same ambiguity errors that `#![feature(uniform_paths)]` would, with slightly changed phrasing (see added UI tests).

Also, on top of #54005, this PR allows this as well:
```rust
use crate_name;
use crate_name::foo;
```
In that any ambiguity between an extern crate and an import *of that same crate* is ignored.

r? @petrochenkov cc @aturon @Centril @joshtriplett

5 years agorustc_resolve: ignore uniform_paths canaries that resolve to an import of the same...
Eduard-Mihai Burtescu [Mon, 10 Sep 2018 05:47:40 +0000 (08:47 +0300)]
rustc_resolve: ignore uniform_paths canaries that resolve to an import of the same crate.

5 years agorustc_resolve: inject `uniform_paths` canaries regardless of the feature-gate, on...
Eduard-Mihai Burtescu [Thu, 6 Sep 2018 19:45:26 +0000 (22:45 +0300)]
rustc_resolve: inject `uniform_paths` canaries regardless of the feature-gate, on Rust 2018.

5 years agoAuto merge of #53565 - PramodBisht:issue/53359_b, r=estebank
bors [Mon, 10 Sep 2018 07:48:45 +0000 (07:48 +0000)]
Auto merge of #53565 - PramodBisht:issue/53359_b, r=estebank

#53359: putting multiple unresolved import on single line

r? @estebank
Here is WIP implementation of #53359
this PR have clubbed multiple unresolved imports into a single line.
I think still two things need to improve like giving specific `label message` for each span of multi_span(how we can do this?) and second we are getting a warning while compiling, stating something like `E0432` have been passed before.

5 years agoAuto merge of #53854 - davidtwco:issue-53668, r=nikomatsakis
bors [Mon, 10 Sep 2018 04:05:14 +0000 (04:05 +0000)]
Auto merge of #53854 - davidtwco:issue-53668, r=nikomatsakis

if- and while-let-chains, take 2 - edition changes

Part of #53668.

r? @nikomatsakis

5 years agoAuto merge of #53936 - petrochenkov:2macpre, r=alexcrichton
bors [Mon, 10 Sep 2018 01:42:11 +0000 (01:42 +0000)]
Auto merge of #53936 - petrochenkov:2macpre, r=alexcrichton

resolve: Split macro prelude into built-in and user-defined parts

This is a refactoring that will help to remove `unshadowable_attrs` when https://github.com/rust-lang/rust/pull/53410 lands.

UPDATE: The second commit actually removes `unshadowable_attrs`.

5 years agoresolve: Remove `unshadowable_attrs`
Vadim Petrochenkov [Wed, 5 Sep 2018 19:43:11 +0000 (22:43 +0300)]
resolve: Remove `unshadowable_attrs`

5 years agoresolve: Split macro prelude into built-in and user-defined parts
Vadim Petrochenkov [Mon, 3 Sep 2018 22:14:58 +0000 (01:14 +0300)]
resolve: Split macro prelude into built-in and user-defined parts

5 years agoFeature gate non-builtin attributes in inner attribute position
Vadim Petrochenkov [Sun, 9 Sep 2018 22:54:51 +0000 (01:54 +0300)]
Feature gate non-builtin attributes in inner attribute position

5 years agoDon't compute padding of braces unless they are unmatched
Esteban Küber [Sun, 9 Sep 2018 21:55:46 +0000 (14:55 -0700)]
Don't compute padding of braces unless they are unmatched

5 years agoAuto merge of #53778 - petrochenkov:shadrelax2, r=nikomatsakis
bors [Sun, 9 Sep 2018 21:00:55 +0000 (21:00 +0000)]
Auto merge of #53778 - petrochenkov:shadrelax2, r=nikomatsakis

resolve: Relax shadowing restrictions on macro-expanded macros

Previously any macro-expanded macros weren't allowed to shadow macros from outer scopes.
Now only "more macro-expanded" macros cannot shadow "less macro-expanded" macros.
See comments to `fn may_appear_after` and added tests for more details and examples.

The functional changes are a21f6f588fc28c97533130ae44a6957b579ab58c and 46dd365ce9ca0a6b8653849b80267763c542842a, other commits are refactorings.

5 years agoupdate ui tests
Jorge Aparicio [Sun, 9 Sep 2018 20:08:42 +0000 (22:08 +0200)]
update ui tests

5 years agoadd generalization
Niko Matsakis [Fri, 31 Aug 2018 20:22:19 +0000 (16:22 -0400)]
add generalization

5 years agoinstantiate traversed binders rather than saving the scopes
Niko Matsakis [Fri, 31 Aug 2018 19:52:22 +0000 (15:52 -0400)]
instantiate traversed binders rather than saving the scopes

5 years agoadd a `first_free_index` parameter
Niko Matsakis [Fri, 31 Aug 2018 19:41:27 +0000 (15:41 -0400)]
add a `first_free_index` parameter

5 years agoadd ability to create region vars with explicit universe
Niko Matsakis [Wed, 29 Aug 2018 18:33:38 +0000 (14:33 -0400)]
add ability to create region vars with explicit universe

5 years agoinfer/mod.rs: rustfmt
Niko Matsakis [Wed, 29 Aug 2018 17:25:47 +0000 (13:25 -0400)]
infer/mod.rs: rustfmt

5 years agoadd some comments
Niko Matsakis [Wed, 29 Aug 2018 17:02:13 +0000 (13:02 -0400)]
add some comments

5 years agofactor out `lookup_bound_region`
Niko Matsakis [Wed, 29 Aug 2018 16:31:05 +0000 (12:31 -0400)]
factor out `lookup_bound_region`

5 years agoremove extra lifetime bound
Niko Matsakis [Tue, 28 Aug 2018 18:56:05 +0000 (14:56 -0400)]
remove extra lifetime bound

5 years agodocument the purpose of `ScopeInstantiator`
Niko Matsakis [Tue, 28 Aug 2018 18:25:09 +0000 (14:25 -0400)]
document the purpose of `ScopeInstantiator`

5 years agoAuto merge of #54057 - matthiaskrgr:stabilize-edition-plus-clippy, r=Mark-Simulacrum
bors [Sun, 9 Sep 2018 16:09:39 +0000 (16:09 +0000)]
Auto merge of #54057 - matthiaskrgr:stabilize-edition-plus-clippy, r=Mark-Simulacrum

Stabilize edition 2018; also updates Clippy, RLS and Cargo

Supersedes https://github.com/rust-lang/rust/pull/53999 , https://github.com/rust-lang/rust/pull/53935
Clippy build was failing there because crate_visibility_modifier feature was taken out of edition 2018 and clippy used it.
The clippy update enables the corresponding feature explicitly.

r? @Mark-Simulacrum

5 years agoremove #[used] from the unstable book
Jorge Aparicio [Sun, 9 Sep 2018 13:55:59 +0000 (15:55 +0200)]
remove #[used] from the unstable book

it'll be documented in the reference

5 years agostabilize `#[used]`
Jorge Aparicio [Sun, 9 Sep 2018 13:43:28 +0000 (15:43 +0200)]
stabilize `#[used]`

closes #40289

5 years agoAuto merge of #53902 - dtolnay:group, r=petrochenkov
bors [Sun, 9 Sep 2018 13:27:44 +0000 (13:27 +0000)]
Auto merge of #53902 - dtolnay:group, r=petrochenkov

proc_macro::Group::span_open and span_close

Before this addition, every delimited group like `(`...`)` `[`...`]` `{`...`}` has only a single Span that covers the full source location from opening delimiter to closing delimiter. This makes it impossible for a procedural macro to trigger an error pointing to just the opening or closing delimiter. The Rust compiler does not seem to have the same limitation:

```rust
mod m {
    type T =
}
```

```console
error: expected type, found `}`
 --> src/main.rs:3:1
  |
3 | }
  | ^
```

On that same input, a procedural macro would be forced to trigger the error on the last token inside the block, on the entire block, or on the next token after the block, none of which is really what you want for an error like above.

This commit adds `group.span_open()` and `group.span_close()` which access the Span associated with just the opening delimiter and just the closing delimiter of the group. Relevant to Syn as we implement real error messages for when parsing fails in a procedural macro: https://github.com/dtolnay/syn/issues/476.

```diff
  impl Group {
      fn span(&self) -> Span;
+     fn span_open(&self) -> Span;
+     fn span_close(&self) -> Span;
  }
```

Fixes #48187
r? @alexcrichton

5 years agomerge cargo changes done by https://github.com/rust-lang/rust/pull/53935/
Eric Huss [Sun, 9 Sep 2018 01:08:47 +0000 (03:08 +0200)]
merge cargo changes done by https://github.com/rust-lang/rust/pull/53935/

(done by matthiaskrgr, but I authored ehuss)

5 years agoAuto merge of #53998 - eddyb:issue-53728, r=oli-obk
bors [Sun, 9 Sep 2018 08:54:29 +0000 (08:54 +0000)]
Auto merge of #53998 - eddyb:issue-53728, r=oli-obk

rustc_codegen_llvm: don't assume offsets are always aligned.

Fixes #53728 by taking into account not just overall type alignment and the field's alignment when determining whether a field is aligned or not ("packed"), but also the field's offset within the type.

Previously, rustc assumed that the offset was always at least as aligned as `min(struct.align, field.align)`. However, there's no real reason to have that assumption, and it obviously can't always be true after we implement `#[repr(align(N), pack(K))]`. There's also a case today where that assumption is not true, involving niche discriminants in enums:

Suppose that we have the code in #53728:
```Rust
#[repr(u16)]
enum DeviceKind {
    Nil = 0,
}

#[repr(packed)]
struct DeviceInfo {
    endianness: u8,
    device_kind: DeviceKind,
}

struct Wrapper {
    device_info: DeviceInfo,
    data: u32
}
```

Observe the layout of `Option<Wrapper>`. It has an alignment of 4 because of the `u32`. `device_info.device_kind` is a good niche field to use, which means the enum ends up with this layout:
```
size = 8
align = 4
fields = [
    { offset=1, type=u16 } // discriminant, .<Some>.device_info.device_kind
]
```

And here we have an discriminant with alignment 2 (`u16`) but offset 1.

5 years agoRename sp_lo to sp_open
David Tolnay [Sun, 9 Sep 2018 06:47:42 +0000 (23:47 -0700)]
Rename sp_lo to sp_open

5 years agoAuto merge of #53988 - eddyb:issue-53770, r=petrochenkov
bors [Sun, 9 Sep 2018 06:25:13 +0000 (06:25 +0000)]
Auto merge of #53988 - eddyb:issue-53770, r=petrochenkov

rustc_resolve: only prepend CrateRoot to a non-keyword segment.

Fixes #53770 by treating `use` paths as absolute in a finer-grained manner, specifically:
```rust
use {a, crate::b, self::c, super::d};
```
Used to be interpreted as if it were (when `uniform_paths` is not enabled):
```rust
use ::{a, crate::b, self::c, super::d};
```
With this PR, the `CrateRoot` pseudo-keyword indicating an absolute path is only inserted when the first path segment is found (if it's not a keyword), i.e. the example behaves like:
```rust
use {::a, crate::b, self::c, super::d};
```
This should (finally) make `use {path};` fully equivalent to `use path;`.

r? @petrochenkov cc @cramertj @joshtriplett @nikomatsakis

5 years agoAuto merge of #53960 - estebank:issue-51303, r=nagisa
bors [Sun, 9 Sep 2018 04:00:21 +0000 (04:00 +0000)]
Auto merge of #53960 - estebank:issue-51303, r=nagisa

Fix incorrect outer function type parameter message

Fix #51303.

5 years agoTrack distinct spans for open and close delimiter
David Tolnay [Sun, 9 Sep 2018 01:07:02 +0000 (18:07 -0700)]
Track distinct spans for open and close delimiter

5 years agoAuto merge of #53949 - estebank:unclosed-delim, r=nikomatsakis
bors [Sun, 9 Sep 2018 01:36:58 +0000 (01:36 +0000)]
Auto merge of #53949 - estebank:unclosed-delim, r=nikomatsakis

Improve messages for un-closed delimiter errors

5 years agosubmodules: update clippy, rls with crate visibility patches, also update cargo
Matthias Krüger [Sat, 8 Sep 2018 12:06:40 +0000 (14:06 +0200)]
submodules: update clippy, rls with crate visibility patches, also update cargo

5 years agoRemove crate_visibility_modifier from 2018 edition
Mark Rousskov [Thu, 6 Sep 2018 16:47:41 +0000 (10:47 -0600)]
Remove crate_visibility_modifier from 2018 edition

5 years agoStabilize the 2018 edition
Mark Rousskov [Thu, 6 Sep 2018 16:20:01 +0000 (10:20 -0600)]
Stabilize the 2018 edition

5 years agoAuto merge of #53909 - mikhail-m1:53643, r=nikomatsakis
bors [Sat, 8 Sep 2018 19:57:14 +0000 (19:57 +0000)]
Auto merge of #53909 - mikhail-m1:53643, r=nikomatsakis

Skip a shared borrow of a immutable local variables

issue #53643

r? @nikomatsakis

5 years agoDocument .0 to unpack the value from Wrapping
Martin Pool [Sat, 8 Sep 2018 18:35:02 +0000 (11:35 -0700)]
Document .0 to unpack the value from Wrapping

5 years agoAuto merge of #53903 - GabrielMajeri:opt-miri-array-slice, r=oli-obk
bors [Sat, 8 Sep 2018 17:36:09 +0000 (17:36 +0000)]
Auto merge of #53903 - GabrielMajeri:opt-miri-array-slice, r=oli-obk

Optimize miri checking of integer array/slices

This pull request implements the optimization described in #53845 (the  `E-easy` part of that issue, not the refactoring). Instead of checking every element of an integral array, we can check the whole memory range at once.

r? @RalfJung

5 years agoFixed 53359: E0432 unresolved import on the same line is now emiting one diagnostic
Pramod Bisht [Mon, 3 Sep 2018 17:27:14 +0000 (17:27 +0000)]
Fixed 53359: E0432 unresolved import on the same line is now emiting one diagnostic
Addressed estebank's comments for 53359

5 years agoAuto merge of #53705 - ms2300:tmp, r=oli-obk
bors [Sat, 8 Sep 2018 14:16:37 +0000 (14:16 +0000)]
Auto merge of #53705 - ms2300:tmp, r=oli-obk

#53576 Renaming TyAnon -> TyOpaque

Fixes #53576

5 years agoAuto merge of #54051 - kennytm:rollup, r=kennytm
bors [Sat, 8 Sep 2018 11:53:21 +0000 (11:53 +0000)]
Auto merge of #54051 - kennytm:rollup, r=kennytm

Rollup of 10 pull requests

Successful merges:

 - #53315 (use `NonZeroU32` in `newtype_index!`macro, change syntax)
 - #53932 ([NLL] Remove base_place)
 - #53942 (Rewrite `precompute_borrows_out_of_scope` for fewer hash table lookups.)
 - #53973 (Have rust-lldb look for the rust-enabled lldb)
 - #53981 (Implement initializer() for FileDesc)
 - #53987 (rustbuild: allow configuring llvm version suffix)
 - #53993 (rustc_resolve: don't record uniform_paths canaries as reexports.)
 - #54007 (crates that provide a `panic_handler` are exempt from the `unused_extern_crates` lint)
 - #54040 (update books for next release)
 - #54050 (Update `petgraph` dependency to 0.4.13 to fix build with nightly)

5 years agoresolve: More precise spans for ambiguous resolution errors
Vadim Petrochenkov [Fri, 7 Sep 2018 23:51:20 +0000 (02:51 +0300)]
resolve: More precise spans for ambiguous resolution errors

Add labels to ambiguous resolution errors

5 years agoAdd checks for expected macro output in restricted shadowing tests
Vadim Petrochenkov [Fri, 7 Sep 2018 23:50:57 +0000 (02:50 +0300)]
Add checks for expected macro output in restricted shadowing tests

5 years agoresolve: Further simplify legacy scopes, add comments
Vadim Petrochenkov [Fri, 31 Aug 2018 19:53:08 +0000 (22:53 +0300)]
resolve: Further simplify legacy scopes, add comments

5 years agoAdd test cases for possible restricted shadowing configurations
Vadim Petrochenkov [Thu, 30 Aug 2018 01:56:55 +0000 (04:56 +0300)]
Add test cases for possible restricted shadowing configurations

Whitelist `#[rustc_transparent_macro]` so it's not interpreted as a potential attribute macro

5 years agoresolve: Rename some fields related to legacy macro scopes
Vadim Petrochenkov [Wed, 29 Aug 2018 01:48:02 +0000 (04:48 +0300)]
resolve: Rename some fields related to legacy macro scopes

5 years agoresolve: Relax shadowing restriction on macro-expanded macros
Vadim Petrochenkov [Wed, 29 Aug 2018 00:23:28 +0000 (03:23 +0300)]
resolve: Relax shadowing restriction on macro-expanded macros

... for both legacy and modern macros.
Fix previously introduced regressions, add tests.

5 years agoresolve: Introduce "may appear after" abstraction for macro path resolutions
Vadim Petrochenkov [Tue, 28 Aug 2018 01:07:31 +0000 (04:07 +0300)]
resolve: Introduce "may appear after" abstraction for macro path resolutions

5 years agoresolve: Cleanup two main macro resolution functions, tweak some comments
Vadim Petrochenkov [Tue, 28 Aug 2018 00:27:41 +0000 (03:27 +0300)]
resolve: Cleanup two main macro resolution functions, tweak some comments

5 years agoresolve: Model shadowing restriction for macro_rules after modern macros
Vadim Petrochenkov [Mon, 27 Aug 2018 23:20:59 +0000 (02:20 +0300)]
resolve: Model shadowing restriction for macro_rules after modern macros

This is a regression for legacy macros that will be fixed in the next commit

5 years agoresolve: Model `resolve_legacy_scope` after `resolve_lexical_macro_path_segment`
Vadim Petrochenkov [Mon, 27 Aug 2018 22:41:07 +0000 (01:41 +0300)]
resolve: Model `resolve_legacy_scope` after `resolve_lexical_macro_path_segment`

5 years agoresolve: Partially unify bindings from macro_rules and from other items
Vadim Petrochenkov [Mon, 27 Aug 2018 21:56:11 +0000 (00:56 +0300)]
resolve: Partially unify bindings from macro_rules and from other items

5 years agoRollup merge of #53315 - nikomatsakis:newtype-index, r=Mark-Simulacrum
kennytm [Sat, 8 Sep 2018 10:28:13 +0000 (18:28 +0800)]
Rollup merge of #53315 - nikomatsakis:newtype-index, r=Mark-Simulacrum

use `NonZeroU32` in `newtype_index!`macro, change syntax

Various improvements to the `newtype_index!` macro:

- Use `NonZeroU32` so that `Option<T>` is cheap
- More ergonomic helper method, no need to import `Idx` trait all the time
- Improve syntax to use `struct` keyword so that ripgrep works to find type def'n

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

I'm curious to see if this passes tests =)

5 years agoRollup merge of #54050 - GabrielMajeri:fix-build-with-nightly, r=alexcrichton
kennytm [Sat, 8 Sep 2018 08:07:48 +0000 (16:07 +0800)]
Rollup merge of #54050 - GabrielMajeri:fix-build-with-nightly, r=alexcrichton

Update `petgraph` dependency to 0.4.13 to fix build with nightly

I wanted to build Rust from source using a local nightly compiler, but I was unable to get `bootstrap` to compile due to a naming conflict with the `find_map` function.

This PR updates the `petgraph` dependency of `bootstrap` to 0.4.13, fixing the issue.

5 years agoRollup merge of #54040 - steveklabnik:update-books, r=Mark-Simulacrum
kennytm [Sat, 8 Sep 2018 08:07:46 +0000 (16:07 +0800)]
Rollup merge of #54040 - steveklabnik:update-books, r=Mark-Simulacrum

update books for next release

5 years agoRollup merge of #54007 - japaric:gh53964, r=cramertj
kennytm [Sat, 8 Sep 2018 08:07:45 +0000 (16:07 +0800)]
Rollup merge of #54007 - japaric:gh53964, r=cramertj

crates that provide a `panic_handler` are exempt from the `unused_extern_crates` lint

fixes the *first* false positive reported in #53964

5 years agoRollup merge of #53993 - eddyb:issue-53691, r=petrochenkov
kennytm [Sat, 8 Sep 2018 08:07:44 +0000 (16:07 +0800)]
Rollup merge of #53993 - eddyb:issue-53691, r=petrochenkov

rustc_resolve: don't record uniform_paths canaries as reexports.

Fixes #53691, fixes #53484.

5 years agoRollup merge of #53987 - Keruspe:llvm-suffix, r=alexcrichton
kennytm [Sat, 8 Sep 2018 08:07:43 +0000 (16:07 +0800)]
Rollup merge of #53987 - Keruspe:llvm-suffix, r=alexcrichton

rustbuild: allow configuring llvm version suffix

Fixes #53852 by allowing user to install different versions of rust to the same sysroot.

5 years agoRollup merge of #53981 - fbernier:patch-1, r=sfackler
kennytm [Sat, 8 Sep 2018 08:07:42 +0000 (16:07 +0800)]
Rollup merge of #53981 - fbernier:patch-1, r=sfackler

Implement initializer() for FileDesc

Here was my initial issue:

```rust
use std::process::{Command};

fn main() {
    let output = Command::new("curl").arg("-s").arg("http://ovh.net/files/100Mio.dat").output();
    println!("{:?}", output.unwrap().stdout.len());
}
```
```
~/stuff ❯❯❯ time ./dwl
104857600
./dwl  16.22s user 1.80s system 23% cpu 1:15.24 total
```

```rust
use std::process::{Command, Stdio};

fn main() {
    let child = Command::new("curl").arg("-s").arg("http://ovh.net/files/100Mio.dat").stdout(Stdio::piped()).spawn();
    let output = child.unwrap().wait_with_output().unwrap();
    println!("{:?}", output.stdout.len());
}
```

```
~/stuff ❯❯❯ time ./dwl2
104857600
./dwl2  0.64s user 2.18s system 5% cpu 53.072 total
```

As you can see the first version is spending much more time in userland and also uses more cpu. With the help of @programble, @talchas and @habnabit  on the rust IRC, we discovered that the slow version uses two pipes, one for `stdin` and one for `stderr` and in that case it polls when going through [this function](https://github.com/rust-lang/rust/blob/master/src/libstd/sys/unix/pipe.rs#L82). The polling calls `read_to_end` on the pipes repetitively and this results in zeroing its internal buffer each time. To avoid this zeroing, `FileDesc` needs to implement `initializer`. We see no reason why it [wouldn't work with uninitialized memory](https://doc.rust-lang.org/1.26.1/src/std/io/mod.rs.html#534) so this PR fixes that.

Here is some tracing of the slow program:
![image](https://user-images.githubusercontent.com/147585/45133180-ed8a2d80-b161-11e8-9ec7-09979ec96145.png)

versus the fast program:
![image](https://user-images.githubusercontent.com/147585/45133216-0c88bf80-b162-11e8-908e-ff81d59239fb.png)

I have not tested the change yet but will try to build it tomorrow.

5 years agoRollup merge of #53973 - tromey:prefer-rust-enabled-lldb, r=alexcrichton
kennytm [Sat, 8 Sep 2018 08:07:40 +0000 (16:07 +0800)]
Rollup merge of #53973 - tromey:prefer-rust-enabled-lldb, r=alexcrichton

Have rust-lldb look for the rust-enabled lldb

We're shipping a rust-enabled lldb, but the "lldb" executable is not
installed into the "bin" directory by rustup.  See the discussion in
https://github.com/rust-lang-nursery/rustup.rs/pull/1492 for
background on this decision.  There, we agreed to have rust-lldb
prefer the rust-enabled lldb if it is installed.  This patch changes
rust-lldb to look in the sysroot and use the lldb found there, if any.

See issue #48168

5 years agoRollup merge of #53942 - nnethercote:faster-precompute, r=nikomatsakis
kennytm [Sat, 8 Sep 2018 08:07:39 +0000 (16:07 +0800)]
Rollup merge of #53942 - nnethercote:faster-precompute, r=nikomatsakis

Rewrite `precompute_borrows_out_of_scope` for fewer hash table lookups.

It now does one hash table lookup per basic block, instead of one per
statement. This is worthwhile because this function is hot for NLL
builds of `ucd`.

I haven't measured the effect of this yet because I'm having trouble doing optimized builds of rustc that are suitable for profiling (#53916). I will do an online perf run instead.

r? @nikomatsakis