]> git.lizzy.rs Git - rust.git/log
rust.git
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 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 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 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 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

5 years agoRollup merge of #53932 - matthewjasper:remove-base-path, r=nikomatsakis
kennytm [Sat, 8 Sep 2018 08:07:38 +0000 (16:07 +0800)]
Rollup merge of #53932 - matthewjasper:remove-base-path, r=nikomatsakis

[NLL] Remove base_place

This function was supposed to make `Box` less special. But

* I think that the consensus is that MIR borrowck is going to fully special case `Box`
* It wasn't implemented correctly, it's looking at the type of the wrong `Place`, resulting in weird behaviour:

```rust
#![feature(nll)]
type A = Box<i32>; // If this is changed to another type then this will compile.

pub fn foo(x: Box<(String, A)>) {
    let a = x.0; // This will compile if these lines are swapped
    let b = x.1;
}
```

r? @nikomatsakis

5 years agoAuto merge of #51366 - japaric:stable-panic-impl, r=Mark-Simulacrum
bors [Sat, 8 Sep 2018 09:23:45 +0000 (09:23 +0000)]
Auto merge of #51366 - japaric:stable-panic-impl, r=Mark-Simulacrum

stabilize #[panic_handler]

closes #44489

### Update(2018-09-07)

This was proposed for stabilization in https://github.com/rust-lang/rust/issues/44489#issuecomment-398965881 and its FCP with disposition to merge / accept is nearly over. The summary of what's being stabilized can be found in https://github.com/rust-lang/rust/issues/44489#issuecomment-416645946

Documentation PRs:

- Reference. https://github.com/rust-lang-nursery/reference/pull/362
- Nomicon. https://github.com/rust-lang-nursery/nomicon/pull/75

---

`#[panic_implementation]` was implemented recently in #50338. `#[panic_implementation]` is basically the old `panic_fmt` language item but in a less error prone (\*) shape. There are still some issues and questions to sort out around this feature (cf. #44489) but this PR is meant to start a discussion about those issues / questions with the language team.

(\*) `panic_fmt` was not type checked; changes in its function signature caused serious, silent binary size regressions like the one observed in #43054

Some unresolved questions from #44489:

> Should the Display of PanicInfo format the panic information as "panicked at 'reason',
> src/main.rs:27:4", as "'reason', src/main.rs:27:4", or simply as "reason".

The current implementation formats `PanicInfo` as the first alternative, which is how panic messages are formatted by the `std` panic handler. The `Display` implementation is more than a convenience: `PanicInfo.message` is unstable so it's not possible to replicate the `Display` implementation on stable.

> Is this design compatible, or can it be extended to work, with unwinding implementations for
> no-std environments?

I believe @whitequark made more progress with unwinding in no-std since their last comment in #44489. Perhaps they can give us an update?

---

Another unresolved question is where this feature should be documented. The feature currently doesn't have any documentation.

cc @rust-lang/lang
cc @jackpot51 @alevy @phil-opp

5 years agoUpdate `petgraph` dependency to 0.4.13
Gabriel Majeri [Sat, 8 Sep 2018 06:04:29 +0000 (09:04 +0300)]
Update `petgraph` dependency to 0.4.13

This fixes building `bootstrap` using a local Rust nightly.

5 years agoAuto merge of #51885 - GuillaumeGomez:trait-impl-show-docs, r=Mark-Simulacrum,QuietMi...
bors [Sat, 8 Sep 2018 04:14:54 +0000 (04:14 +0000)]
Auto merge of #51885 - GuillaumeGomez:trait-impl-show-docs, r=Mark-Simulacrum,QuietMisdreavus

Trait impl show docs

Fixes #51834.

<img width="1440" alt="screen shot 2018-06-29 at 00 14 33" src="https://user-images.githubusercontent.com/3050060/42063323-6e6e8cc8-7b31-11e8-88ef-4dd2229df76c.png">

(You can see both commit changes in the screenshot 😄)

r? @QuietMisdreavus

5 years agoOptimize miri checking of integer array/slices
Gabriel Majeri [Sun, 2 Sep 2018 14:22:46 +0000 (17:22 +0300)]
Optimize miri checking of integer array/slices

Instead of checking every element, we can check the whole memory
range at once.

5 years agoAuto merge of #53745 - nikomatsakis:nll-issue-53570, r=pnkfelix
bors [Fri, 7 Sep 2018 23:02:17 +0000 (23:02 +0000)]
Auto merge of #53745 - nikomatsakis:nll-issue-53570, r=pnkfelix

do not propagate closure requirements if we can prove them locally

Fixes #53570

cc @mikhail-m1 -- you're the one who last touched this code

r? @pnkfelix

5 years agoprint less info to stabilize tests
Niko Matsakis [Fri, 7 Sep 2018 17:35:16 +0000 (13:35 -0400)]
print less info to stabilize tests

5 years agoavoid propagating outlives obligations on locals if we can
Niko Matsakis [Mon, 27 Aug 2018 19:13:59 +0000 (15:13 -0400)]
avoid propagating outlives obligations on locals if we can

5 years agomove `annotate` onto a method of `UniversalRegions`
Niko Matsakis [Mon, 27 Aug 2018 19:10:05 +0000 (15:10 -0400)]
move `annotate` onto a method of `UniversalRegions`

This allows it to print out the "late-bound regions" from the closure
context more easily. Besides, all the state that is being printed it
is private to the `UniversalRegions`.

5 years agoregion_infer: rustfmt
Niko Matsakis [Mon, 27 Aug 2018 18:14:40 +0000 (14:14 -0400)]
region_infer: rustfmt

5 years agoregion_infer.rs: add some debug!
Niko Matsakis [Mon, 27 Aug 2018 18:14:26 +0000 (14:14 -0400)]
region_infer.rs: add some debug!

5 years agorustc_resolve: only prepend CrateRoot to a non-keyword segment.
Eduard-Mihai Burtescu [Thu, 6 Sep 2018 10:29:45 +0000 (13:29 +0300)]
rustc_resolve: only prepend CrateRoot to a non-keyword segment.

5 years agoupdate books for next release
steveklabnik [Thu, 6 Sep 2018 14:42:38 +0000 (10:42 -0400)]
update books for next release

5 years agoAuto merge of #53327 - wesleywiser:wip_optimize_nll, r=nikomatsakis
bors [Fri, 7 Sep 2018 17:56:23 +0000 (17:56 +0000)]
Auto merge of #53327 - wesleywiser:wip_optimize_nll, r=nikomatsakis

[nll] teach SCC about `'static`

r? @nikomatsakis

I think this is right? I am seeing better performance on the `html5ever` benchmark but I'd like a perf run to quantify the exact speedup. There's a few ui tests failing due to changes in the error messages. The main issue seems to be that returns aren't being detected correctly?

`mir_check_cast_unsize.rs` before:

```
error: unsatisfied lifetime constraints
  --> mir_check_cast_unsize.rs:17:46
   |
17 |   fn bar<'a>(x: &'a u32) -> &'static dyn Debug {
   |  ________--____________________________________^
   | |        |
   | |        lifetime `'a` defined here
18 | |     //~^ ERROR unsatisfied lifetime constraints
19 | |     x
20 | |     //~^ WARNING not reporting region error due to nll
21 | | }
   | |_^ return requires that `'a` must outlive `'static`
```

`mir_check_cast_unsize.rs` after:

```
error: unsatisfied lifetime constraints
  --> mir_check_cast_unsize.rs:19:5
   |
17 | fn bar<'a>(x: &'a u32) -> &'static dyn Debug {
   |        -- lifetime `'a` defined here
18 |     //~^ ERROR unsatisfied lifetime constraints
19 |     x
   |     ^ cast requires that `'a` must outlive `'static`
```

5 years agoadd `const_fn` feature
Niko Matsakis [Thu, 6 Sep 2018 19:33:54 +0000 (15:33 -0400)]
add `const_fn` feature

5 years agoswitch back to using a plain `u32`, not `NonZeroU32`
Niko Matsakis [Thu, 6 Sep 2018 17:21:35 +0000 (13:21 -0400)]
switch back to using a plain `u32`, not `NonZeroU32`

This reverts (part of) commit cb9a336ae2cf6a75fdcc130853286349cb424c96.

5 years agouse a `BTreeSet` for a more stable error message order
Niko Matsakis [Fri, 31 Aug 2018 20:09:04 +0000 (16:09 -0400)]
use a `BTreeSet` for a more stable error message order

5 years agoremove use of `from_u32_unchecked`
Niko Matsakis [Thu, 30 Aug 2018 20:52:53 +0000 (16:52 -0400)]
remove use of `from_u32_unchecked`

5 years agoswitch to using `NonZeroU32` to represent indices
Niko Matsakis [Thu, 30 Aug 2018 17:58:42 +0000 (13:58 -0400)]
switch to using `NonZeroU32` to represent indices

5 years agorewrite constants to use NewType::MAX instead of u32::MAX
Niko Matsakis [Thu, 23 Aug 2018 11:46:53 +0000 (07:46 -0400)]
rewrite constants to use NewType::MAX instead of u32::MAX

Also, adjust the MAX to be `u32::MAX - 1`, leaving room for `u32::MAX`
to become a sentinel value in the future.

5 years agoadd various `#[inline]` directives
Niko Matsakis [Thu, 30 Aug 2018 12:27:21 +0000 (08:27 -0400)]
add various `#[inline]` directives

5 years agoremove all references to `private` from outside the macro
Niko Matsakis [Tue, 28 Aug 2018 16:20:56 +0000 (12:20 -0400)]
remove all references to `private` from outside the macro

5 years agochange from tuple struct to brace struct
Niko Matsakis [Tue, 28 Aug 2018 15:43:53 +0000 (11:43 -0400)]
change from tuple struct to brace struct

5 years agomake field always private, add `From` impls
Niko Matsakis [Wed, 25 Jul 2018 13:14:04 +0000 (16:14 +0300)]
make field always private, add `From` impls

5 years agoadd a comment
Niko Matsakis [Wed, 25 Jul 2018 10:43:35 +0000 (13:43 +0300)]
add a comment

5 years agochange syntax of `newtype_index` to look like a struct decl
Niko Matsakis [Wed, 25 Jul 2018 10:41:32 +0000 (13:41 +0300)]
change syntax of `newtype_index` to look like a struct decl

5 years agorustbuild: allow configuring llvm version suffix
Marc-Antoine Perennou [Thu, 6 Sep 2018 09:06:32 +0000 (11:06 +0200)]
rustbuild: allow configuring llvm version suffix

Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
5 years agoAuto merge of #53893 - petrochenkov:cfgexpr, r=pnkfelix
bors [Fri, 7 Sep 2018 15:14:52 +0000 (15:14 +0000)]
Auto merge of #53893 - petrochenkov:cfgexpr, r=pnkfelix

Validate syntax of `cfg` attributes

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

5 years agoHave rust-lldb look for the rust-enabled lldb
Tom Tromey [Wed, 5 Sep 2018 19:05:46 +0000 (13:05 -0600)]
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 dist.rs to put lldb into rustlib, following what
was done for the other LLVM tools in #53955, and then fixes rust-lldb
to prefer that lldb, if it exists.

See issue #48168

5 years agoAuto merge of #54021 - kennytm:rollup, r=kennytm
bors [Fri, 7 Sep 2018 12:48:20 +0000 (12:48 +0000)]
Auto merge of #54021 - kennytm:rollup, r=kennytm

Rollup of 17 pull requests

Successful merges:

 - #53299 (Updated core/macros.rs to note it works in a no_std environment.)
 - #53376 (Cross reference io::copy and fs::copy in docs.)
 - #53455 (Individual docs for {from,to}_*_bytes)
 - #53550 (librustc_lint: In recursion warning, change 'recurring' to 'recursing')
 - #53860 (Migrate (some) of run-pass/ to ui)
 - #53874 (Implement Unpin for Box, Rc, and Arc)
 - #53895 (tidy: Cleanups and clippy warning fixes)
 - #53946 (Clarify `ManuallyDrop` docs)
 - #53948 (Minimized clippy test from when NLL disabled two-phase borrows)
 - #53959 (Add .git extension to submodule paths missing it)
 - #53966 (A few cleanups and minor improvements to mir/dataflow)
 - #53967 (propagate build.python into cmake)
 - #53979 (Remove `#[repr(transparent)]` from atomics)
 - #53991 (Add unchecked_shl/shr check for intrinsics to fix miri's test suit)
 - #53992 (migrate run-pass/borrowck to ui/run-pass)
 - #53994 (migrate run-pass/*/ to ui/run-pass)
 - #54023 (update clippy submodule)

5 years agostabilize `#[panic_handler]`
Jorge Aparicio [Fri, 7 Sep 2018 10:43:39 +0000 (12:43 +0200)]
stabilize `#[panic_handler]`

5 years agoRollup merge of #54023 - matthiaskrgr:clippy, r=oli-obk
kennytm [Fri, 7 Sep 2018 10:14:28 +0000 (18:14 +0800)]
Rollup merge of #54023 - matthiaskrgr:clippy, r=oli-obk

update clippy submodule

updates to cafef7b576203f166add9ed143979d9775c25219

5 years agoRollup merge of #53994 - pnkfelix:issue-53764-migrate-run-pass-dirs-to-ui, r=alexcrichton
kennytm [Fri, 7 Sep 2018 05:47:27 +0000 (13:47 +0800)]
Rollup merge of #53994 - pnkfelix:issue-53764-migrate-run-pass-dirs-to-ui, r=alexcrichton

migrate run-pass/*/ to ui/run-pass

I think this is all that remains of #53764

5 years agoRollup merge of #53992 - pnkfelix:issue-53764-migrate-run-pass-borrowck-to-ui, r...
kennytm [Fri, 7 Sep 2018 05:47:26 +0000 (13:47 +0800)]
Rollup merge of #53992 - pnkfelix:issue-53764-migrate-run-pass-borrowck-to-ui, r=nikomatsakis

migrate run-pass/borrowck to ui/run-pass

Part of #53764

5 years agoRollup merge of #53991 - TimDiekmann:fix-unchecked-intrinsics, r=oli-obk
kennytm [Fri, 7 Sep 2018 05:47:24 +0000 (13:47 +0800)]
Rollup merge of #53991 - TimDiekmann:fix-unchecked-intrinsics, r=oli-obk

Add unchecked_shl/shr check for intrinsics to fix miri's test suit

r? @RalfJung

cc @oli-obk

#53697 broke miri's test suite as described in [this comment](https://github.com/rust-lang/rust/pull/53697#issuecomment-419034668). This PR adds test for the `unchecked_shr/shl` for the intrinsics.

5 years agoRollup merge of #53979 - alexcrichton:remove-repr-transparent-atomics-master, r=sfackler
kennytm [Fri, 7 Sep 2018 05:47:23 +0000 (13:47 +0800)]
Rollup merge of #53979 - alexcrichton:remove-repr-transparent-atomics-master, r=sfackler

Remove `#[repr(transparent)]` from atomics

Added in #52149 the discussion in #53514 is showing how we may not want to
actually add this attribute to the atomic types. While we continue to
debate #53514 this commit reverts the addition of the `transparent` attribute.
This should be a more conservative route which leaves us the ability to tweak
this in the future but in the meantime allows us to continue discussion as well.

5 years agoRollup merge of #53967 - froydnj:cmake-python-executable, r=alexcrichton
kennytm [Fri, 7 Sep 2018 05:47:22 +0000 (13:47 +0800)]
Rollup merge of #53967 - froydnj:cmake-python-executable, r=alexcrichton

propagate build.python into cmake

If a suitable value of Python is not on `PATH`, one can still invoke x.py
manually, which propagates `BOOTSTRAP_PYTHON` into the bootstrap
environment.  But building LLVM will abort with error messages about not
being able to find Python, and instructions to set `PYTHON_EXECUTABLE`,
because nothing is done with `BOOTSTRAP_PYTHON` when invoking cmake.
Setting `build.python` in config.toml had no effect in this scenario,
either

To fix this, let's provide `PYTHON_EXECUTABLE` when invoking cmake; for
the "normal" case of Python in `PATH`, this doesn't alter any behavior.
For more unusual cases, however, this ensures cmake finds Python
properly.  (This change also ensures there are no differences between
what bootstrap is using, and what cmake uses, which may be useful for
consistency's sake.)

5 years agoRollup merge of #53966 - ljedrz:mir_dataflow_cleanups, r=estebank
kennytm [Fri, 7 Sep 2018 05:47:20 +0000 (13:47 +0800)]
Rollup merge of #53966 - ljedrz:mir_dataflow_cleanups, r=estebank

A few cleanups and minor improvements to mir/dataflow

- simplify `dot::GraphWalk::edges` and optimize its vector's allocation
- turn a `kill` loop into `kill_all`
- remove the `prepost` parameter from `dataflow_path` (it doesn't seem to do anything)
- a couple of other minor improvements

5 years agoRollup merge of #53959 - tlively:fix-submodules, r=alexcrichton
kennytm [Fri, 7 Sep 2018 05:47:19 +0000 (13:47 +0800)]
Rollup merge of #53959 - tlively:fix-submodules, r=alexcrichton

Add .git extension to submodule paths missing it

Fixes a problem where submodules could not be cloned under some git
configurations. Specifically, when url.git@github.com:.insteadOf =
https://github.com/ is set.

5 years agoRollup merge of #53948 - pnkfelix:issue-52934-minimize-clippy-test, r=wesleywiser
kennytm [Fri, 7 Sep 2018 05:47:18 +0000 (13:47 +0800)]
Rollup merge of #53948 - pnkfelix:issue-52934-minimize-clippy-test, r=wesleywiser

Minimized clippy test from when NLL disabled two-phase borrows

(Of course anyone even skimming the test will realize that this is an *expansion* of a previously posted [minimization](https://github.com/rust-lang/rust/issues/52934#issuecomment-418144787).)

Fix #52934.

5 years agoRollup merge of #53946 - tbu-:pr_doc_manuallydrop, r=cramertj
kennytm [Fri, 7 Sep 2018 05:47:17 +0000 (13:47 +0800)]
Rollup merge of #53946 - tbu-:pr_doc_manuallydrop, r=cramertj

Clarify `ManuallyDrop` docs

Mention that you can use `into_inner` to drop the contained value.

5 years agoAuto merge of #53830 - davidtwco:issue-53228, r=nikomatsakis
bors [Fri, 7 Sep 2018 09:57:27 +0000 (09:57 +0000)]
Auto merge of #53830 - davidtwco:issue-53228, r=nikomatsakis

Add help message for missing IndexMut impl with NLL

Fixes #53228.

r? @nikomatsakis

5 years agoRollup merge of #53895 - joshtriplett:tidy-tidy, r=nikomatsakis
kennytm [Fri, 7 Sep 2018 05:47:14 +0000 (13:47 +0800)]
Rollup merge of #53895 - joshtriplett:tidy-tidy, r=nikomatsakis

tidy: Cleanups and clippy warning fixes

This eliminates various clippy warnings in the tidy tool, as well as
making some related cleanups. These changes should not introduce any
functional differences.

5 years agoRollup merge of #53874 - withoutboats:pin-ptr-impls, r=RalfJung
kennytm [Fri, 7 Sep 2018 05:47:13 +0000 (13:47 +0800)]
Rollup merge of #53874 - withoutboats:pin-ptr-impls, r=RalfJung

Implement Unpin for Box, Rc, and Arc

Per the discussion in #49150, these should implement `Unpin` even if what they point to does not.

5 years agoRollup merge of #53860 - pnkfelix:issue-53764-migrate-run-pass-to-ui, r=nikomatsakis
kennytm [Fri, 7 Sep 2018 05:47:11 +0000 (13:47 +0800)]
Rollup merge of #53860 - pnkfelix:issue-53764-migrate-run-pass-to-ui, r=nikomatsakis

Migrate (some) of run-pass/ to ui

This is a step towards addressing #53764. Much still remains.

I went through a large portion of the `*.rs` files that were directly stored into `src/test/run-pass/` and moved them into various subdirectories of a newly created `src/test/ui/run-pass/`.

(yes, it would have perhaps been nice to meld it more directly with directories already in `src/test/ui/`; but the sad truth is that opens up the reality of filename collisions, and one of my short term goals for resolving #53764 is to keep the *filenames* invariant, even as their parents directories and contents are mildly revised...)

5 years agoRollup merge of #53550 - brson:recurring, r=estebank
kennytm [Fri, 7 Sep 2018 05:47:10 +0000 (13:47 +0800)]
Rollup merge of #53550 - brson:recurring, r=estebank

librustc_lint: In recursion warning, change 'recurring' to 'recursing'

The existing wording seems incorrect.

Aside: This warning, 'function cannot return without recursing' is not perfectly clear - it implies that the function _can_ return, it's just got to recurse. But really the fn cannot return period. Clearer wording: 'function recurses infinitely; it cannot return'; or 'function is infinitely self-recursive; it cannot return, and this is probably an error'. I like that.

5 years agoRollup merge of #53455 - llogiq:num-byte-conversion-docs, r=steveklabnik
kennytm [Fri, 7 Sep 2018 05:47:07 +0000 (13:47 +0800)]
Rollup merge of #53455 - llogiq:num-byte-conversion-docs, r=steveklabnik

Individual docs for {from,to}_*_bytes

5 years agoRollup merge of #53376 - frewsxcv:frewsxcv-copy, r=GuillaumeGomez
kennytm [Fri, 7 Sep 2018 05:47:06 +0000 (13:47 +0800)]
Rollup merge of #53376 - frewsxcv:frewsxcv-copy, r=GuillaumeGomez

Cross reference io::copy and fs::copy in docs.

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

5 years agoRollup merge of #53299 - MagnumOpus21:fix-macro-write, r=steveklabnik
kennytm [Fri, 7 Sep 2018 05:47:05 +0000 (13:47 +0800)]
Rollup merge of #53299 - MagnumOpus21:fix-macro-write, r=steveklabnik

Updated core/macros.rs to note it works in a no_std environment.

Fixes #45797
This PR updates the documentation of `write!` to note it works in a `no_std` environment, and adds an
example to showcase this. In a `no_std` environment, the author of the code is responsible for the
implementation of the `Write` trait. This example will work out of the box with `no_std`, but the
implementation of `Write` is expected to be provided by the user.

r? @steveklabnik

5 years agoupdate clippy submodule
Matthias Krüger [Fri, 7 Sep 2018 07:12:06 +0000 (09:12 +0200)]
update clippy submodule

updates to cafef7b576203f166add9ed143979d9775c25219

5 years agoAuto merge of #54018 - alexcrichton:omg-fix-again, r=Mark-Simulacrum
bors [Fri, 7 Sep 2018 04:18:07 +0000 (04:18 +0000)]
Auto merge of #54018 - alexcrichton:omg-fix-again, r=Mark-Simulacrum

Ship libLLVM.dylib on OSX

Previously we just weren't shipping this at all as we were only looking for the
Linux version!

5 years agoFix tests
Wesley Wiser [Fri, 7 Sep 2018 02:57:05 +0000 (22:57 -0400)]
Fix tests

5 years agoShip libLLVM.dylib on OSX
Alex Crichton [Fri, 7 Sep 2018 02:06:09 +0000 (19:06 -0700)]
Ship libLLVM.dylib on OSX

Previously we just weren't shipping this at all as we were only looking for the
Linux version!

5 years agoAuto merge of #53969 - alexcrichton:update-compiler-builtins, r=nikomatsakis
bors [Fri, 7 Sep 2018 01:52:24 +0000 (01:52 +0000)]
Auto merge of #53969 - alexcrichton:update-compiler-builtins, r=nikomatsakis

Update the compiler-builtins submodule

Fixes a mistake in using C shims to...

Closes #53916

5 years agoresolve_lifetime: types are not late-bound regions =)
Niko Matsakis [Thu, 6 Sep 2018 16:39:48 +0000 (12:39 -0400)]
resolve_lifetime: types are not late-bound regions =)

5 years agouniversal_regions.rs: rustfmt
Niko Matsakis [Thu, 6 Sep 2018 16:39:38 +0000 (12:39 -0400)]
universal_regions.rs: rustfmt

5 years agouseful debug in `universal_regions`
Niko Matsakis [Thu, 6 Sep 2018 16:39:27 +0000 (12:39 -0400)]
useful debug in `universal_regions`

5 years agoregion_name: rustfmt
Niko Matsakis [Thu, 6 Sep 2018 16:38:49 +0000 (12:38 -0400)]
region_name: rustfmt

5 years agoadd a useful debug to `give_region_a_name`
Niko Matsakis [Thu, 6 Sep 2018 16:38:15 +0000 (12:38 -0400)]
add a useful debug to `give_region_a_name`

5 years ago[nll] teach SCC about `'static`
Wesley Wiser [Mon, 27 Aug 2018 02:50:57 +0000 (22:50 -0400)]
[nll] teach SCC about `'static`

Fixes #53178

5 years ago[nll] Refactor the `Edges` iterator to return `OutlivesConstraints`
Wesley Wiser [Sat, 25 Aug 2018 03:11:44 +0000 (23:11 -0400)]
[nll] Refactor the `Edges` iterator to return `OutlivesConstraints`

Part of #53178

5 years agoAuto merge of #54005 - eddyb:uniform-paths-self-resolve, r=petrochenkov
bors [Thu, 6 Sep 2018 23:29:56 +0000 (23:29 +0000)]
Auto merge of #54005 - eddyb:uniform-paths-self-resolve, r=petrochenkov

rustc_resolve: allow `use crate_name;` under `uniform_paths`.

Specifically, `use crate_name;` and `use crate_name::{self, ...};` are now allowed, whereas previously there would produce a (false positive) ambiguity error, as the ambiguity detection code was seeing the `crate_name` import as a locally-available definition to conflict with the crate.

r? @petrochenkov cc @aturon @joshtriplett @Centril

5 years agorustfmt src/librustc_mir/build/expr
Mikhail Modin [Thu, 6 Sep 2018 21:34:26 +0000 (22:34 +0100)]
rustfmt src/librustc_mir/build/expr

5 years agoFix link
Guillaume Gomez [Sun, 12 Aug 2018 09:30:31 +0000 (11:30 +0200)]
Fix link

5 years agoDon't show default docs
Guillaume Gomez [Sat, 11 Aug 2018 09:52:44 +0000 (11:52 +0200)]
Don't show default docs

5 years agoFix invalid urls
Guillaume Gomez [Sun, 1 Jul 2018 16:51:39 +0000 (18:51 +0200)]
Fix invalid urls

5 years agoFix implementors generation as well
Guillaume Gomez [Sun, 1 Jul 2018 14:11:14 +0000 (16:11 +0200)]
Fix implementors generation as well

5 years agoFix hover on impls
Guillaume Gomez [Fri, 10 Aug 2018 17:36:08 +0000 (19:36 +0200)]
Fix hover on impls

5 years agoAuto merge of #53575 - matthewjasper:unsized-is-an-error, r=estebank
bors [Thu, 6 Sep 2018 21:02:35 +0000 (21:02 +0000)]
Auto merge of #53575 - matthewjasper:unsized-is-an-error, r=estebank

Don't reduce E0161 to a warning in NLL migrate mode

This error has been on stable for a while, and allowing such code cause the compile to later ICE (since we can't codegen it). Errors `box UNSIZED EXPR` with unsized locals because it's not compatible with the current evaluation order (create the box before evaluating the expressions).

cc #53469 (fixes the ICE in this case)
cc @qnighy

5 years agoupdate UI test
Jorge Aparicio [Thu, 6 Sep 2018 21:01:35 +0000 (23:01 +0200)]
update UI test

5 years agoSkip a shared borrow of a immutable local variables
Mikhail Modin [Wed, 5 Sep 2018 22:49:58 +0000 (23:49 +0100)]
Skip a shared borrow of a immutable local variables

issue #53643

5 years agoFix typos.
Without Boats [Thu, 6 Sep 2018 19:31:06 +0000 (21:31 +0200)]
Fix typos.

5 years agocrates that provide a `panic_handler` are exempt from `unused_extern_crates`
Jorge Aparicio [Thu, 6 Sep 2018 19:24:33 +0000 (21:24 +0200)]
crates that provide a `panic_handler` are exempt from `unused_extern_crates`

fixes the *first* false positive reported in #53964

5 years agorustc_resolve: allow `use crate_name;` under `uniform_paths`.
Eduard-Mihai Burtescu [Thu, 6 Sep 2018 19:07:56 +0000 (22:07 +0300)]
rustc_resolve: allow `use crate_name;` under `uniform_paths`.

5 years agorustc_codegen_llvm: don't assume offsets are always aligned.
Eduard-Mihai Burtescu [Thu, 6 Sep 2018 15:42:15 +0000 (18:42 +0300)]
rustc_codegen_llvm: don't assume offsets are always aligned.