]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoAdd a comment to `parse_bool`.
Nicholas Nethercote [Mon, 23 Mar 2020 00:21:27 +0000 (11:21 +1100)]
Add a comment to `parse_bool`.

It's behaviour can be surprising.

4 years agoAuto merge of #70322 - matthiaskrgr:submodule_upd, r=Dylan-DPC
bors [Mon, 23 Mar 2020 22:02:13 +0000 (22:02 +0000)]
Auto merge of #70322 - matthiaskrgr:submodule_upd, r=Dylan-DPC

submodules: update clippy from d8e6e4cf to 1ff81c1b

Changes:
````
rustup https://github.com/rust-lang/rust/pull/69968/
Fix documentation generation for configurable lints
Fix single binding in closure
Improvement: Don't show function body in needless_lifetimes
````
Fixes #70310
r? @Dylan-DPC

4 years agoAuto merge of #70330 - Centril:rollup-ts0clvx, r=Centril
bors [Mon, 23 Mar 2020 18:48:02 +0000 (18:48 +0000)]
Auto merge of #70330 - Centril:rollup-ts0clvx, r=Centril

Rollup of 9 pull requests

Successful merges:

 - #68700 (Add Wake trait for safe construction of Wakers.)
 - #69494 (Stabilize --crate-version option in rustdoc)
 - #70080 (rustc_mir: remove extra space when pretty-printing MIR.)
 - #70195 (Add test for issue #53275)
 - #70199 (Revised span-to-lines conversion to produce an empty vec on DUMMY_SP.)
 - #70299 (add err_machine_stop macro)
 - #70300 (Reword unused variable warning)
 - #70315 (Rename remaining occurences of Void to Opaque.)
 - #70318 (Split long derive lists into two derive attributes.)

Failed merges:

r? @ghost

4 years agoRollup merge of #70318 - anyska:multiple-derives, r=Dylan-DPC
Mazdak Farrokhzad [Mon, 23 Mar 2020 18:04:57 +0000 (19:04 +0100)]
Rollup merge of #70318 - anyska:multiple-derives, r=Dylan-DPC

Split long derive lists into two derive attributes.

4 years agoRollup merge of #70315 - anyska:void-rename, r=Mark-Simulacrum
Mazdak Farrokhzad [Mon, 23 Mar 2020 18:04:55 +0000 (19:04 +0100)]
Rollup merge of #70315 - anyska:void-rename, r=Mark-Simulacrum

Rename remaining occurences of Void to Opaque.

Two mentions of the type were missed when the type was renamed.

4 years agoRollup merge of #70300 - aleksator:66636_reword_unused_variable_warning, r=Dylan-DPC
Mazdak Farrokhzad [Mon, 23 Mar 2020 18:04:54 +0000 (19:04 +0100)]
Rollup merge of #70300 - aleksator:66636_reword_unused_variable_warning, r=Dylan-DPC

Reword unused variable warning

Fixes #66636

4 years agoRollup merge of #70299 - RalfJung:err_machine_stop, r=oli-obk
Mazdak Farrokhzad [Mon, 23 Mar 2020 18:04:52 +0000 (19:04 +0100)]
Rollup merge of #70299 - RalfJung:err_machine_stop, r=oli-obk

add err_machine_stop macro

We have that for all other error kinds, but here I somehow forgot it.

r? @oli-obk

4 years agoRollup merge of #70199 - pnkfelix:issue-68808-dont-turn-dummy-spans-into-invalid...
Mazdak Farrokhzad [Mon, 23 Mar 2020 18:04:51 +0000 (19:04 +0100)]
Rollup merge of #70199 - pnkfelix:issue-68808-dont-turn-dummy-spans-into-invalid-lines, r=estebank

Revised span-to-lines conversion to produce an empty vec on DUMMY_SP.

This required revising some of the client code to stop relying on the returned set of lines being non-empty.

Fix #68808

4 years agoRollup merge of #70195 - rylev:test-for-53275, r=Centril
Mazdak Farrokhzad [Mon, 23 Mar 2020 18:04:49 +0000 (19:04 +0100)]
Rollup merge of #70195 - rylev:test-for-53275, r=Centril

Add test for issue #53275

Fixes #53275

4 years agoRollup merge of #70080 - anyska:mir-double-space, r=oli-obk
Mazdak Farrokhzad [Mon, 23 Mar 2020 18:04:47 +0000 (19:04 +0100)]
Rollup merge of #70080 - anyska:mir-double-space, r=oli-obk

rustc_mir: remove extra space when pretty-printing MIR.

4 years agoRollup merge of #69494 - GuillaumeGomez:stabilize-crate-version, r=ehuss,aleksator...
Mazdak Farrokhzad [Mon, 23 Mar 2020 18:04:45 +0000 (19:04 +0100)]
Rollup merge of #69494 - GuillaumeGomez:stabilize-crate-version, r=ehuss,aleksator,ollie27

Stabilize --crate-version option in rustdoc

I don't see any reason to not stabilize it anymore, so let's go!

cc @kinnison @ehuss

r? @ollie27

4 years agoRollup merge of #68700 - withoutboats:wake-trait, r=withoutboats
Mazdak Farrokhzad [Mon, 23 Mar 2020 18:04:43 +0000 (19:04 +0100)]
Rollup merge of #68700 - withoutboats:wake-trait, r=withoutboats

Add Wake trait for safe construction of Wakers.

Currently, constructing a waker requires calling the unsafe `Waker::from_raw` API. This API requires the user to manually construct a vtable for the waker themself - which is both cumbersome and very error prone. This API would provide an ergonomic, straightforward and guaranteed memory-safe way of constructing a waker.

It has been our longstanding intention that the `Waker` type essentially function as an `Arc<dyn Wake>`, with a `Wake` trait as defined here. Two considerations prevented the original API from being shipped as simply an `Arc<dyn Wake>`:

- We want to support futures on embedded systems, which may not have an allocator, and in optimized executors for which this API may not be best-suited. Therefore, we have always explicitly supported the maximally-flexible (but also memory-unsafe) `RawWaker` API, and `Waker` has always lived in libcore.
- Because `Waker` lives in libcore and `Arc` lives in liballoc, it has not been feasible to provide a constructor for `Waker` from `Arc<dyn Wake>`.

Therefore, the Wake trait was left out of the initial version of the task waker API.

However, as Rust 1.41, it is possible under the more flexible orphan rules to implement `From<Arc<W>> for Waker where W: Wake` in liballoc. Therefore, we can now define this constructor even though `Waker` lives in libcore.

This PR adds these APIs:

- A `Wake` trait, which contains two methods
    - A required method `wake`, which is called by `Waker::wake`
    - A provided method `wake_by_ref`, which is called by `Waker::wake_by_ref` and which implementors can override if they can optimize this use case.
- An implementation of `From<Arc<W>> for Waker where W: Wake + Send + Sync + 'static`
- A similar implementation of `From<Arc<W>> for RawWaker`.

4 years agoUpdate src/librustc_span/source_map.rs
Felix S Klock II [Mon, 23 Mar 2020 17:32:23 +0000 (13:32 -0400)]
Update src/librustc_span/source_map.rs

Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
4 years agoAuto merge of #70311 - RalfJung:miri, r=RalfJung
bors [Mon, 23 Mar 2020 15:47:42 +0000 (15:47 +0000)]
Auto merge of #70311 - RalfJung:miri, r=RalfJung

update miri

r? @ghost Cc @oli-obk

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

4 years agosubmodules: update clippy from d8e6e4cf to 1ff81c1b
Matthias Krüger [Mon, 23 Mar 2020 15:46:46 +0000 (16:46 +0100)]
submodules: update clippy from d8e6e4cf to 1ff81c1b

Changes:
````
rustup https://github.com/rust-lang/rust/pull/69968/
Fix documentation generation for configurable lints
Fix single binding in closure
Improvement: Don't show function body in needless_lifetimes
````

4 years agoSplit long derive lists into two derive attributes.
Ana-Maria Mihalache [Mon, 23 Mar 2020 14:48:59 +0000 (14:48 +0000)]
Split long derive lists into two derive attributes.

4 years agoApply suggestions from code review
Saoirse Shipwreckt [Mon, 23 Mar 2020 00:36:08 +0000 (01:36 +0100)]
Apply suggestions from code review

Co-Authored-By: Ashley Mannix <ashleymannix@live.com.au>
4 years agoUpdate src/liballoc/task.rs
Saoirse Shipwreckt [Mon, 23 Mar 2020 00:35:15 +0000 (01:35 +0100)]
Update src/liballoc/task.rs

Co-Authored-By: Ashley Mannix <ashleymannix@live.com.au>
4 years agoUpdate src/libstd/lib.rs
Saoirse Shipwreckt [Mon, 23 Mar 2020 00:35:01 +0000 (01:35 +0100)]
Update src/libstd/lib.rs

Co-Authored-By: Ashley Mannix <ashleymannix@live.com.au>
4 years agoMore explicit; CFG on atomic pointer
Without Boats [Sun, 2 Feb 2020 15:51:54 +0000 (16:51 +0100)]
More explicit; CFG on atomic pointer

4 years agotypo
Without Boats [Fri, 31 Jan 2020 16:14:20 +0000 (17:14 +0100)]
typo

4 years agoImprove safety implementation, fix typos
Without Boats [Fri, 31 Jan 2020 16:01:41 +0000 (17:01 +0100)]
Improve safety implementation, fix typos

4 years agoAdd `wake_trait` feature directive to std
Without Boats [Fri, 31 Jan 2020 13:43:41 +0000 (14:43 +0100)]
Add `wake_trait` feature directive to std

4 years agoAdd Wake trait for safe construction of Wakers.
Without Boats [Fri, 31 Jan 2020 13:26:24 +0000 (14:26 +0100)]
Add Wake trait for safe construction of Wakers.

Currently, constructing a waker requires calling the unsafe
`Waker::from_raw` API. This API requires the user to manually construct
a vtable for the waker themself - which is both cumbersome and very
error prone. This API would provide an ergonomic, straightforward and
guaranteed memory-safe way of constructing a waker.

It has been our longstanding intention that the `Waker` type essentially
function as an `Arc<dyn Wake>`, with a `Wake` trait as defined here. Two
considerations prevented the original API from being shipped as simply
an `Arc<dyn Wake>`:

- We want to support futures on embedded systems, which may not have an
  allocator, and in optimized executors for which this API may not be
  best-suited. Therefore, we have always explicitly supported the
  maximally-flexible (but also memory-unsafe) `RawWaker` API, and
  `Waker` has always lived in libcore.
- Because `Waker` lives in libcore and `Arc` lives in liballoc, it has
  not been feasible to provide a constructor for `Waker` from `Arc<dyn
  Wake>`.

Therefore, the Wake trait was left out of the initial version of the
task waker API.

However, as Rust 1.41, it is possible under the more flexible orphan
rules to implement `From<Arc<W>> for Waker where W: Wake` in liballoc.
Therefore, we can now define this constructor even though `Waker` lives
in libcore.

This PR adds these APIs:

- A `Wake` trait, which contains two methods
    - A required method `wake`, which is called by `Waker::wake`
    - A provided method `wake_by_ref`, which is called by
      `Waker::wake_by_ref` and which implementors can override if they
      can optimize this use case.
- An implementation of `From<Arc<W>> for Waker where W: Wake + Send +
  Sync + 'static`
- A similar implementation of `From<Arc<W>> for RawWaker`.

4 years agoRename remaining occurences of Void to Opaque.
Ana-Maria Mihalache [Mon, 23 Mar 2020 13:18:51 +0000 (13:18 +0000)]
Rename remaining occurences of Void to Opaque.

4 years agoupdate miri
Ralf Jung [Mon, 23 Mar 2020 12:42:08 +0000 (13:42 +0100)]
update miri

4 years agoAuto merge of #69649 - estebank:negative-impl-span, r=Centril
bors [Mon, 23 Mar 2020 12:40:36 +0000 (12:40 +0000)]
Auto merge of #69649 - estebank:negative-impl-span, r=Centril

Tweak output for invalid negative impl errors

Follow up to #69722. Tweak negative impl errors emitted in the HIR:

```
error[E0192]: invalid negative impl
  --> $DIR/E0192.rs:9:6
   |
LL | impl !Trait for Foo { }
   |      ^^^^^^
   |
   = note: negative impls are only allowed for auto traits, like `Send` and `Sync`
```

4 years agoMake sure issue 53275 test goes through codegen
Ryan Levick [Mon, 23 Mar 2020 10:11:54 +0000 (11:11 +0100)]
Make sure issue 53275 test goes through codegen

4 years agoAuto merge of #70305 - Centril:rollup-zi13fz4, r=Centril
bors [Mon, 23 Mar 2020 09:30:00 +0000 (09:30 +0000)]
Auto merge of #70305 - Centril:rollup-zi13fz4, r=Centril

Rollup of 8 pull requests

Successful merges:

 - #69080 (rustc_codegen_llvm: don't generate any type debuginfo for -Cdebuginfo=1.)
 - #69940 (librustc_codegen_llvm: Replace deprecated API usage)
 - #69942 (Increase verbosity when suggesting subtle code changes)
 - #69968 (rustc: keep upvars tupled in {Closure,Generator}Substs.)
 - #70123 (Ensure LLVM is in the link path for rustc tools)
 - #70159 (Update the bundled wasi-libc with libstd)
 - #70233 (resolve: Do not resolve visibilities on proc macro definitions twice)
 - #70286 (Miri error type: remove UbExperimental variant)

Failed merges:

r? @ghost

4 years agoRollup merge of #70286 - RalfJung:no-experiments, r=petrochenkov
Mazdak Farrokhzad [Mon, 23 Mar 2020 09:29:18 +0000 (10:29 +0100)]
Rollup merge of #70286 - RalfJung:no-experiments, r=petrochenkov

Miri error type: remove UbExperimental variant

In https://github.com/rust-lang/miri/pull/1250, I will move Miri away from that variant, and use a custom `MachineStop` exception instead.

4 years agoRollup merge of #70233 - petrochenkov:superproc, r=ecstatic-morse
Mazdak Farrokhzad [Mon, 23 Mar 2020 09:29:16 +0000 (10:29 +0100)]
Rollup merge of #70233 - petrochenkov:superproc, r=ecstatic-morse

resolve: Do not resolve visibilities on proc macro definitions twice

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

4 years agoRollup merge of #70159 - alexcrichton:update-wasi, r=pietroalbini
Mazdak Farrokhzad [Mon, 23 Mar 2020 09:29:14 +0000 (10:29 +0100)]
Rollup merge of #70159 - alexcrichton:update-wasi, r=pietroalbini

Update the bundled wasi-libc with libstd

Brings in WebAssembly/wasi-libc#184 which can help standalone programs
with environment variables!

4 years agoRollup merge of #70123 - cuviper:library-path, r=Mark-Simulacrum
Mazdak Farrokhzad [Mon, 23 Mar 2020 09:29:13 +0000 (10:29 +0100)]
Rollup merge of #70123 - cuviper:library-path, r=Mark-Simulacrum

Ensure LLVM is in the link path for rustc tools

The build script for `rustc_llvm` outputs LLVM information in `cargo:rustc-link-lib` and `cargo:rustc-link-search` so the compiler can be linked correctly. However, while the lib is carried along in metadata, the search paths are not. So when cargo is invoked again later for rustc _tools_, they'll also try to link with LLVM, but the necessary paths may be left out.

Rustbuild can use the environment to set the LLVM link path for tools -- `LIB` for MSVC toolchains and `LIBRARY_PATH` for everyone else.

Fixes #68714.

4 years agoRollup merge of #69968 - eddyb:tupled-closure-captures, r=nikomatsakis
Mazdak Farrokhzad [Mon, 23 Mar 2020 09:29:11 +0000 (10:29 +0100)]
Rollup merge of #69968 - eddyb:tupled-closure-captures, r=nikomatsakis

rustc: keep upvars tupled in {Closure,Generator}Substs.

Previously, each closure/generator capture's (aka "upvar") type was tracked as one "synthetic" type parameter in the closure/generator substs, and figuring out where the parent `fn`'s generics end and the synthetics start involved slicing at `tcx.generics_of(def_id).parent_count`.

Needing to query `generics_of` limited @davidtwco (who wants to compute some `TypeFlags` differently for parent generics vs upvars, and `TyCtxt` is not available there), which is how I got started on this, but it's also possible that the `generics_of` queries are slowing down `{Closure,Generator}Substs` methods.

To give an example, for a `foo::<T, U>::{closure#0}` with captures `x: X` and `y: Y`, substs are:
* before this PR: `[T, U, /*kind*/, /*signature*/, X, Y]`
* after this PR: `[T, U, /*kind*/, /*signature*/, (X, Y)]`

You can see that, with this PR, no matter how many captures, the last 3 entries in the substs (or 5 for a generator) are always the "synthetic" ones, with the last one being the tuple of capture types.

r? @nikomatsakis cc @Zoxc

4 years agoRollup merge of #69942 - estebank:sized-verbose-sugg, r=matthewjasper
Mazdak Farrokhzad [Mon, 23 Mar 2020 09:29:09 +0000 (10:29 +0100)]
Rollup merge of #69942 - estebank:sized-verbose-sugg, r=matthewjasper

Increase verbosity when suggesting subtle code changes

Do not suggest changes that are actually quite small inline, to minimize the likelihood of confusion.

Fix #69243.

4 years agoRollup merge of #69940 - tmiasko:llvm-api, r=hanna-kruppe
Mazdak Farrokhzad [Mon, 23 Mar 2020 09:29:07 +0000 (10:29 +0100)]
Rollup merge of #69940 - tmiasko:llvm-api, r=hanna-kruppe

librustc_codegen_llvm: Replace deprecated API usage

4 years agoRollup merge of #69080 - eddyb:one-billion-dwarves-walk-into-a-bar, r=michaelwoerister
Mazdak Farrokhzad [Mon, 23 Mar 2020 09:29:05 +0000 (10:29 +0100)]
Rollup merge of #69080 - eddyb:one-billion-dwarves-walk-into-a-bar, r=michaelwoerister

rustc_codegen_llvm: don't generate any type debuginfo for -Cdebuginfo=1.

Works towards #69074 by adding more checks for `DebugInfo::Full` in a few places in `rustc_codegen_llvm`, bringing us in line with what `clang -g1` generates (no debuginfo types, nor debuginfo for `static`s).

<hr/>

My local build's (`debuginfo-level=1`, `debug-assertions=1`) `librustc_driver-*.so` went from just over 1GiB (1019MiB) down to 402MiB.

It's still bad, but the `.debug_*` sections themselves (as reported by `objdump`) went from something like 853MiB down to 236MiB, i.e. roughly a 3.6x reduction.

<hr/>

Sadly, I don't think this is enough to justify *shipping* all of this debuginfo, but now it's more plausible that we could at least *build* with `debuginfo-level=1` *then* strip it.
That would give us real backtraces for e.g. ICEs during builds, but I don't know how often that's relevant.

We could also look into split DWARF, and maybe have a `rustc-debuginfo` component in `rustup`.

There's also the possibility of making it slimmer by omitting parameters to functions, or perhaps some deduplication (I think right now there is no DWARF reuse across CGUs? maybe ThinLTO helps?).

r? @michaelwoerister cc @rust-lang/wg-codegen @alexcrichton @Mark-Simulacrum

4 years agoReword unused variable warning
Alex Tokarev [Mon, 23 Mar 2020 08:02:46 +0000 (11:02 +0300)]
Reword unused variable warning

4 years agoresolve: Do not resolve visibilities on proc macro definitions twice
Vadim Petrochenkov [Sat, 21 Mar 2020 14:51:29 +0000 (17:51 +0300)]
resolve: Do not resolve visibilities on proc macro definitions twice

4 years agoadd err_machine_stop macro
Ralf Jung [Mon, 23 Mar 2020 07:48:03 +0000 (08:48 +0100)]
add err_machine_stop macro

4 years agoAuto merge of #70296 - Centril:rollup-wvfmb3n, r=Centril
bors [Mon, 23 Mar 2020 06:02:34 +0000 (06:02 +0000)]
Auto merge of #70296 - Centril:rollup-wvfmb3n, r=Centril

Rollup of 9 pull requests

Successful merges:

 - #69251 (#[track_caller] in traits)
 - #69880 (miri engine: turn error sanity checks into assertions)
 - #70207 (Use getentropy(2) on macos)
 - #70227 (Only display definition when suggesting a typo)
 - #70236 (resolve: Avoid "self-confirming" import resolutions in one more case)
 - #70248 (parser: simplify & remove unused field)
 - #70249 (handle ConstKind::Unresolved after monomorphizing)
 - #70269 (remove redundant closures (clippy::redundant_closure))
 - #70270 (Clean up E0449 explanation)

Failed merges:

r? @ghost

4 years agoTweak output for invalid negative impl errors
Esteban Küber [Mon, 2 Mar 2020 23:26:00 +0000 (15:26 -0800)]
Tweak output for invalid negative impl errors

4 years agoRollup merge of #70270 - GuillaumeGomez:cleanup-e0449, r=Dylan-DPC
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:16 +0000 (04:26 +0100)]
Rollup merge of #70270 - GuillaumeGomez:cleanup-e0449, r=Dylan-DPC

Clean up E0449 explanation

r? @Dylan-DPC

4 years agoRollup merge of #70269 - matthiaskrgr:clippy_closures, r=Dylan-DPC
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:15 +0000 (04:26 +0100)]
Rollup merge of #70269 - matthiaskrgr:clippy_closures, r=Dylan-DPC

remove redundant closures (clippy::redundant_closure)

4 years agoRollup merge of #70249 - lcnr:issue70125, r=eddyb
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:13 +0000 (04:26 +0100)]
Rollup merge of #70249 - lcnr:issue70125, r=eddyb

handle ConstKind::Unresolved after monomorphizing

fixes #70125

r? @bjorn3

4 years agoRollup merge of #70248 - Centril:unroot, r=petrochenkov
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:12 +0000 (04:26 +0100)]
Rollup merge of #70248 - Centril:unroot, r=petrochenkov

parser: simplify & remove unused field

r? @petrochenkov

4 years agoRollup merge of #70236 - petrochenkov:globimpice, r=ecstatic-morse
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:10 +0000 (04:26 +0100)]
Rollup merge of #70236 - petrochenkov:globimpice, r=ecstatic-morse

resolve: Avoid "self-confirming" import resolutions in one more case

So the idea behind "blacklisted bindings" is that we must ignore some name definitions during resolution because otherwise they cause infinite cycles.
E.g. import
```rust
use my_crate;
```
would refer to itself (on 2018 edition) without this blacklisting, because `use my_crate;` is the first name in scope when we are resolving `my_crate` here.

In this PR we are doing this blacklisting for the case
```rust
use same::same;
```
, namely blacklisting the second `same` when resolving the first `same`.
This was previously forgotten.

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

4 years agoRollup merge of #70227 - LeSeulArtichaut:typo-def, r=Centril
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:08 +0000 (04:26 +0100)]
Rollup merge of #70227 - LeSeulArtichaut:typo-def, r=Centril

Only display definition when suggesting a typo

Closes #70206
r? @Centril

4 years agoRollup merge of #70207 - hatoo:macos-getentropy, r=dtolnay
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:07 +0000 (04:26 +0100)]
Rollup merge of #70207 - hatoo:macos-getentropy, r=dtolnay

Use getentropy(2) on macos

resolves #70179

4 years agoRollup merge of #69880 - RalfJung:miri-assert-error-sanity, r=oli-obk
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:05 +0000 (04:26 +0100)]
Rollup merge of #69880 - RalfJung:miri-assert-error-sanity, r=oli-obk

miri engine: turn error sanity checks into assertions

We had these as debug assertions so far to make sure our test suite is clean, but really these are conditions that should never arise and also @eddyb told me to turn non-performance-critical debug assertions into full assertions so here we go. ;)

I propose that we do a check-only crater run to make sure this does not actually happen in practice.

r? @oli-obk

4 years agoRollup merge of #69251 - anp:track-caller-in-traits, r=eddyb
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:04 +0000 (04:26 +0100)]
Rollup merge of #69251 - anp:track-caller-in-traits, r=eddyb

#[track_caller] in traits

Per https://github.com/rust-lang/rust/issues/47809#issuecomment-572791760, this allows the `#[track_caller]` attribute on trait methods.

Includes tests for `#[track_caller]` with:

* "regular" trait impls
* default trait impls
* "blanket-tracked" trait impls, where the annotation is in the trait definition and is inherited by "regular" impls of the trait

4 years agoAuto merge of #70204 - Centril:unshackled-lowering, r=Zoxc
bors [Mon, 23 Mar 2020 03:10:48 +0000 (03:10 +0000)]
Auto merge of #70204 - Centril:unshackled-lowering, r=Zoxc

Liberate `rustc_ast_lowering` from `rustc`

The whole point of this PR is the very last commit, in which we remove `rustc` as one of `rustc_ast_lowering`'s dependencies, thereby improving `./x.py` parallelism and working towards https://github.com/rust-lang/rust/issues/65031.

Noteworthy:
- From `rustc::arena` we move logic into `arena`, in particular `declare_arena!`. This is then used in `rustc_ast_lowering` so that lowering has its own separate arena.
- Some linting code is unfortunately moved to `rustc_session::lint` cause its used both in `rustc_lint` and `rustc_ast_lowering`, and this is their common dependency.
- `rustc_session::CrateDisambiguator` is moved into `rustc_ast` so that `rustc::hir::map::definitions` can be moved into `rustc_hir`, so that `rustc_ast_lowering` can stop referring to `rustc::hir`.

r? @Zoxc

4 years agorustc_llvm: don't use -g when LLVM_NDEBUG is set.
Eduard-Mihai Burtescu [Wed, 12 Feb 2020 00:15:34 +0000 (02:15 +0200)]
rustc_llvm: don't use -g when LLVM_NDEBUG is set.

4 years agorustc_codegen_llvm: don't generate static and vtable debuginfo for -Cdebuginfo=1.
Eduard-Mihai Burtescu [Tue, 11 Feb 2020 22:20:02 +0000 (00:20 +0200)]
rustc_codegen_llvm: don't generate static and vtable debuginfo for -Cdebuginfo=1.

4 years agorustc_codegen_llvm: don't generate Self type debuginfo for methods for -Cdebuginfo=1.
Eduard-Mihai Burtescu [Tue, 11 Feb 2020 21:03:00 +0000 (23:03 +0200)]
rustc_codegen_llvm: don't generate Self type debuginfo for methods for -Cdebuginfo=1.

4 years agorustc_codegen_llvm: don't generate "lexical block" scopes for -Cdebuginfo=1.
Eduard-Mihai Burtescu [Tue, 11 Feb 2020 20:52:59 +0000 (22:52 +0200)]
rustc_codegen_llvm: don't generate "lexical block" scopes for -Cdebuginfo=1.

4 years agoRemove special-casing from TyCtxt::impl_of_method.
Adam Perry [Sun, 22 Mar 2020 23:59:02 +0000 (16:59 -0700)]
Remove special-casing from TyCtxt::impl_of_method.

We can do this now that opt_associated_item doesn't have any panicking paths.

4 years agoAllow #[track_caller] in traits.
Adam Perry [Mon, 17 Feb 2020 23:36:36 +0000 (15:36 -0800)]
Allow #[track_caller] in traits.

The codegen implementation already works for this, so we're:

* propagating track_caller attr from trait def to impl
* relaxing errors
* adding tests

Approved in a recent lang team meeting:
https://github.com/rust-lang/lang-team/blob/master/minutes/2020-01-09.md

4 years agoUse more targetted span for error label
Esteban Küber [Sun, 22 Mar 2020 23:09:42 +0000 (16:09 -0700)]
Use more targetted span for error label

4 years agoNormalize wording of privacy access labels
Esteban Küber [Sun, 22 Mar 2020 22:36:54 +0000 (15:36 -0700)]
Normalize wording of privacy access labels

4 years agoAuto merge of #69778 - Marwes:dep_graph, r=davidtwco
bors [Sun, 22 Mar 2020 22:36:44 +0000 (22:36 +0000)]
Auto merge of #69778 - Marwes:dep_graph, r=davidtwco

perf(dep_graph): Avoid allocating a set on when the number reads are …

…small

`reserve_and_rehash` takes up 1.4% of the runtime on the `packed-simd`
benchmark which I believe is due to the number of reads are very low in
many cases (see https://github.com/rust-lang/rust/pull/50565 for
instance).

This avoids allocating the set until we start allocating the `reads`
`SmallVec` but it is possible that a lower limit might be better (not
tested since the improvement will be hard to spot either way).

4 years agoremove UbExperimental variant
Ralf Jung [Sun, 22 Mar 2020 21:54:41 +0000 (22:54 +0100)]
remove UbExperimental variant

4 years agomiri engine: turn error sanity checks into assertions
Ralf Jung [Tue, 10 Mar 2020 08:22:16 +0000 (09:22 +0100)]
miri engine: turn error sanity checks into assertions

4 years agoAuto merge of #69079 - CAD97:layout-of-ptr, r=RalfJung
bors [Sun, 22 Mar 2020 18:37:19 +0000 (18:37 +0000)]
Auto merge of #69079 - CAD97:layout-of-ptr, r=RalfJung

Allow calculating the layout behind a pointer

There was some discussion around allowing this previously.

This does make the requirement for raw pointers to have valid metadata exposed as part of the std API (as a safety invariant, not validity invariant), though I think this is not strictly necessarily required as of current. cc @rust-lang/wg-unsafe-code-guidelines

Naming is hard; I picked the best "obvious" name I could come up with.

If it's agreed that this is actually a desired API surface, I'll file a tracking issue and update the attributes.

4 years agoAdd span label to primary error span
Esteban Küber [Sun, 22 Mar 2020 18:18:06 +0000 (11:18 -0700)]
Add span label to primary error span

4 years agoIncrease verbosity when suggesting subtle code changes
Esteban Küber [Thu, 12 Mar 2020 03:38:21 +0000 (20:38 -0700)]
Increase verbosity when suggesting subtle code changes

4 years agoAuto merge of #70275 - Dylan-DPC:rollup-1fbosob, r=Dylan-DPC
bors [Sun, 22 Mar 2020 15:04:50 +0000 (15:04 +0000)]
Auto merge of #70275 - Dylan-DPC:rollup-1fbosob, r=Dylan-DPC

Rollup of 10 pull requests

Successful merges:

 - #68099 (Amend Rc/Arc::from_raw() docs regarding unsafety)
 - #70172 (parse/lexer: support `StringReader::retokenize` called on external files.)
 - #70209 (parser: recover on `for<'a> |...| body` closures)
 - #70223 (fix type of const params in associated types.)
 - #70229 (more clippy fixes)
 - #70240 (Return NonZeroU64 from ThreadId::as_u64.)
 - #70250 (Remove wrong entry from RELEASES.md)
 - #70253 (Remove another wrong entry from RELEASES.md)
 - #70254 (couple more clippy fixes (let_and_return, if_same_then_else))
 - #70266 (proc_macro_harness: Use item header spans for errors)

Failed merges:

r? @ghost

4 years agoRollup merge of #70266 - petrochenkov:prochead, r=varkor
Dylan DPC [Sun, 22 Mar 2020 14:48:43 +0000 (15:48 +0100)]
Rollup merge of #70266 - petrochenkov:prochead, r=varkor

proc_macro_harness: Use item header spans for errors

Addresses https://github.com/rust-lang/rust/pull/70233#discussion_r396043004.

4 years agoRollup merge of #70254 - matthiaskrgr:cl4ppy, r=Centril
Dylan DPC [Sun, 22 Mar 2020 14:48:41 +0000 (15:48 +0100)]
Rollup merge of #70254 - matthiaskrgr:cl4ppy, r=Centril

couple more clippy fixes (let_and_return, if_same_then_else)

* summarize if-else-code with identical blocks (clippy::if_same_then_else)
* don't create variable bindings just to return the bound value immediately (clippy::let_and_return)

4 years agoRollup merge of #70253 - jplatte:patch-2, r=Mark-Simulacrum
Dylan DPC [Sun, 22 Mar 2020 14:48:40 +0000 (15:48 +0100)]
Rollup merge of #70253 - jplatte:patch-2, r=Mark-Simulacrum

Remove another wrong entry from RELEASES.md

The entry is under 1.11.0, but the feature is only available since 1.12.0 (for which an identical entry exists).

![Screenshot_2020-03-22 Support `cfg_attr` on `path` attributes by jseyfried · Pull Request #34546 · rust-lang rust](https://user-images.githubusercontent.com/951129/77238862-85c8f580-6bd4-11ea-8d31-77e2994a4b5a.png)

4 years agoRollup merge of #70250 - jplatte:patch-1, r=Centril
Dylan DPC [Sun, 22 Mar 2020 14:48:38 +0000 (15:48 +0100)]
Rollup merge of #70250 - jplatte:patch-1, r=Centril

Remove wrong entry from RELEASES.md

resolves #70247

4 years agoRollup merge of #70240 - brain0:thread_id, r=Mark-Simulacrum
Dylan DPC [Sun, 22 Mar 2020 14:48:37 +0000 (15:48 +0100)]
Rollup merge of #70240 - brain0:thread_id, r=Mark-Simulacrum

Return NonZeroU64 from ThreadId::as_u64.

As discussed in #67939, this allows turning Option<ThreadId> into Option<NonZeroU64> which
can then be stored inside an AtomicU64.

4 years agoRollup merge of #70229 - matthiaskrgr:cl3ppy, r=Mark-Simulacrum
Dylan DPC [Sun, 22 Mar 2020 14:48:35 +0000 (15:48 +0100)]
Rollup merge of #70229 - matthiaskrgr:cl3ppy, r=Mark-Simulacrum

more clippy fixes

* remove unused unit values (clippy::unused_unit)
* make some let-if-bindings more idiomatic (clippy::useless_let_if_seq)
* clarify when we pass () to functions (clippy::unit_arg)
* don't redundantly repeat field names (clippy::redundant_field_names)
* remove redundant returns (clippy::needless_return)
* use let instead of match for matches with single bindings (clippy::match_single_binding)
* don't convert results to options just for matching (clippy::if_let_some_result)

4 years agoRollup merge of #70223 - lcnr:issue70167, r=eddyb
Dylan DPC [Sun, 22 Mar 2020 14:48:34 +0000 (15:48 +0100)]
Rollup merge of #70223 - lcnr:issue70167, r=eddyb

fix type of const params in associated types.

fixes #66906
fixes #70167

r? @eddyb

4 years agoRollup merge of #70209 - Centril:recover-quant-closure, r=petrochenkov
Dylan DPC [Sun, 22 Mar 2020 14:48:32 +0000 (15:48 +0100)]
Rollup merge of #70209 - Centril:recover-quant-closure, r=petrochenkov

parser: recover on `for<'a> |...| body` closures

When encountering `for` and `<` is 1 token ahead, interpret this as an explicitly quantified generic closure and recover, rather than attempting to parse a `for` loop. This provides both improved diagnostics as well as an insurance policy for the ability to use this as the syntax for generic closures in the future.

As requested by r? @eddyb

4 years agoRollup merge of #70172 - eddyb:retokenize-external-src, r=petrochenkov
Dylan DPC [Sun, 22 Mar 2020 14:48:30 +0000 (15:48 +0100)]
Rollup merge of #70172 - eddyb:retokenize-external-src, r=petrochenkov

parse/lexer: support `StringReader::retokenize` called on external files.

This ~~should theoretically~~ fixes #69933, ~~but I'm not sure what the best way to test it is~~.
**EDIT**: see https://github.com/rust-lang/rust/issues/69933#issuecomment-602019598.

r? @petrochenkov cc @Xanewok @staktrace

4 years agoRollup merge of #68099 - lukaslueg:into_raw_unsafe, r=LukasKalbertodt
Dylan DPC [Sun, 22 Mar 2020 14:48:28 +0000 (15:48 +0100)]
Rollup merge of #68099 - lukaslueg:into_raw_unsafe, r=LukasKalbertodt

Amend Rc/Arc::from_raw() docs regarding unsafety

[This](https://stackoverflow.com/questions/59671647/is-it-safe-to-clone-a-type-erased-arc-via-raw-pointer) question on SO boils down to "is it safe to `::from_raw()` a `Rc<T>`/`Arc<T>` using a dummy `T` even if `T` is never dereferenced via the new `Rc`/`Arc`?". It almost never is.

This PR amends the docs of `from_raw()` regarding this point.

4 years agoClean up E0449 explanation
Guillaume Gomez [Sun, 22 Mar 2020 12:33:29 +0000 (13:33 +0100)]
Clean up E0449 explanation

4 years agoAuto merge of #68820 - WaffleLapkin:remove_finished_from_map_while, r=LukasKalbertodt
bors [Sun, 22 Mar 2020 11:57:58 +0000 (11:57 +0000)]
Auto merge of #68820 - WaffleLapkin:remove_finished_from_map_while, r=LukasKalbertodt

Remove `finished` flag from `MapWhile`

This PR removes  `finished` flag from `MapWhile` as been proposed in https://github.com/rust-lang/rust/pull/66577#discussion_r370958025.

This also resolves open questions of the tracking issue (#68537):
- `MapWhile` can't implement both
  + `DoubleEndedIterator` (discussed in https://github.com/rust-lang/rust/pull/66577#discussion_r370947990 and following comments)
  + `FusedIterator` (this pr removes `finished` flag, so `MapWhile` isn't fused anymore)
- Debug output (this pr removes `finished` flag, so there is no question in including it in debug output)

r? @Mark-Simulacrum

4 years agoremove redundant closures (clippy::redundant_closure)
Matthias Krüger [Sun, 22 Mar 2020 11:43:19 +0000 (12:43 +0100)]
remove redundant closures (clippy::redundant_closure)

4 years agorename tests
Bastian Kauschke [Sun, 22 Mar 2020 10:59:01 +0000 (11:59 +0100)]
rename tests

4 years agosimplify eval_mir_constant
Bastian Kauschke [Sun, 22 Mar 2020 10:53:13 +0000 (11:53 +0100)]
simplify eval_mir_constant

4 years agohandle unevaluated consts after monomophize
Bastian Kauschke [Sun, 22 Mar 2020 10:34:42 +0000 (11:34 +0100)]
handle unevaluated consts after monomophize

4 years agoproc_macro_harness: Use item header spans for errors
Vadim Petrochenkov [Sun, 22 Mar 2020 09:38:50 +0000 (12:38 +0300)]
proc_macro_harness: Use item header spans for errors

4 years agoAuto merge of #68098 - ssomers:btreemap_gdb_pretty_print, r=Mark-Simulacrum
bors [Sun, 22 Mar 2020 08:55:18 +0000 (08:55 +0000)]
Auto merge of #68098 - ssomers:btreemap_gdb_pretty_print, r=Mark-Simulacrum

Test gdb pretty printing more and fix overzealous type substitution

Adresses a problem concerning printing BTreeMap / BTreeSet data in gdb: when the key or value type name contains substring "LeafNode", and the map has multiple nodes (e.g. more than 11 elements), printing causes an exception. E.g.

```
rustc -g - <<EOF
    use std::collections::BTreeMap;

    struct MyLeafNode(i8);

    fn main() {
        let m: BTreeMap<i8, MyLeafNode> = (0..12).map(|i| (i, MyLeafNode(i))).collect();
        assert!(!m.is_empty());
    }
EOF
```

```
$ rust-gdb rust_out
(gdb) b 7
(gdb) r
(gdb) p m
$1 = BTreeMap<i8, rust_out::MyLeafNode>(len: 12)Python Exception <class 'gdb.error'> No type named alloc::collections::btree::node::InternalNode<i8, rust_out::MyInternalNode>.:
use std::collections::BTreeMap;
```

The code was written in #56144 by @tromey (and later touched upon by @RalfJung in #57045, but I think that had nothing to do with the issues in this PR).

4 years agoAuto merge of #70153 - flip1995:clippyup, r=Dylan-DPC
bors [Sun, 22 Mar 2020 00:57:57 +0000 (00:57 +0000)]
Auto merge of #70153 - flip1995:clippyup, r=Dylan-DPC

Update Clippy

Closes #70128

cc rust-lang/rust-clippy#5342

r? @Manishearth

4 years agoAllow calculating the layout behind a pointer
CAD97 [Tue, 11 Feb 2020 19:10:49 +0000 (14:10 -0500)]
Allow calculating the layout behind a pointer

Let align/size_of_of_val intrinsics work on ptrs

4 years agodon't create variable bindings just to return the bound value immediately (clippy...
Matthias Krüger [Sat, 21 Mar 2020 23:20:58 +0000 (00:20 +0100)]
don't create variable bindings just to return the bound value immediately (clippy::let_and_return)

4 years agoparse: nix new_sub_parser_from_file
Mazdak Farrokhzad [Sat, 21 Mar 2020 22:10:10 +0000 (23:10 +0100)]
parse: nix new_sub_parser_from_file

4 years agosummarize if-else-code with identical blocks (clippy::if_same_then_else)
Matthias Krüger [Sat, 21 Mar 2020 22:58:21 +0000 (23:58 +0100)]
summarize if-else-code with identical blocks (clippy::if_same_then_else)

4 years agoRemove another wrong entry from RELEASES.md
Jonas Platte [Sat, 21 Mar 2020 23:29:12 +0000 (00:29 +0100)]
Remove another wrong entry from RELEASES.md

4 years agoRemove wrong entry from RELEASES.md
Jonas Platte [Sat, 21 Mar 2020 22:33:33 +0000 (23:33 +0100)]
Remove wrong entry from RELEASES.md

4 years agoAuto merge of #70246 - Dylan-DPC:rollup-vt9wex2, r=Dylan-DPC
bors [Sat, 21 Mar 2020 21:57:38 +0000 (21:57 +0000)]
Auto merge of #70246 - Dylan-DPC:rollup-vt9wex2, r=Dylan-DPC

Rollup of 10 pull requests

Successful merges:

 - #70003 (symbol_names: treat ReifyShim like VtableShim.)
 - #70051 (Allow `hir().find` to return `None`)
 - #70126 (Fix ICE caused by truncating a negative ZST enum discriminant)
 - #70197 (For issue 53957: revise unit test to focus on underlying bug of 23076.)
 - #70215 (ast: Compress `AttrId` from `usize` to `u32`)
 - #70218 (Fix deprecated Error.description() usage in docs)
 - #70228 (Remove CARGO_BUILD_TARGET from bootstrap.py)
 - #70231 (Add explanation message for E0224)
 - #70232 (Tweak wording for std::io::Read::read function)
 - #70238 (Add a test for out-of-line module passed through a proc macro)

Failed merges:

r? @ghost

4 years agoRollup merge of #70238 - petrochenkov:procmod, r=Centril
Dylan DPC [Sat, 21 Mar 2020 21:56:31 +0000 (22:56 +0100)]
Rollup merge of #70238 - petrochenkov:procmod, r=Centril

Add a test for out-of-line module passed through a proc macro

Closes https://github.com/rust-lang/rust/issues/58818.

4 years agoRollup merge of #70232 - adrian5:patch-1, r=Dylan-DPC
Dylan DPC [Sat, 21 Mar 2020 21:56:30 +0000 (22:56 +0100)]
Rollup merge of #70232 - adrian5:patch-1, r=Dylan-DPC

Tweak wording for std::io::Read::read function

I think the sentence as a whole reads smoother that way.

4 years agoRollup merge of #70231 - aDotInTheVoid:E0224, r=Dylan-DPC
Dylan DPC [Sat, 21 Mar 2020 21:56:28 +0000 (22:56 +0100)]
Rollup merge of #70231 - aDotInTheVoid:E0224, r=Dylan-DPC

Add explanation message for E0224

Addresses some of #61137

4 years agoRollup merge of #70228 - lzutao:patch-1, r=Mark-Simulacrum
Dylan DPC [Sat, 21 Mar 2020 21:56:27 +0000 (22:56 +0100)]
Rollup merge of #70228 - lzutao:patch-1, r=Mark-Simulacrum

Remove CARGO_BUILD_TARGET from bootstrap.py

Closes #70208

4 years agoRollup merge of #70218 - intgr:fix-deprecated-method-in-docs, r=jonas-schievink
Dylan DPC [Sat, 21 Mar 2020 21:56:25 +0000 (22:56 +0100)]
Rollup merge of #70218 - intgr:fix-deprecated-method-in-docs, r=jonas-schievink

Fix deprecated Error.description() usage in docs

4 years agoRollup merge of #70215 - petrochenkov:attrid, r=Centril
Dylan DPC [Sat, 21 Mar 2020 21:56:24 +0000 (22:56 +0100)]
Rollup merge of #70215 - petrochenkov:attrid, r=Centril

ast: Compress `AttrId` from `usize` to `u32`

An easy size win for `ast::Attribute` (96 bytes -> 88 bytes).

Also stop encoding/decoding `AttrId` entirely.

4 years agoRollup merge of #70197 - pnkfelix:issue-53957-revise-test-of-23076, r=LukasKalbertodt
Dylan DPC [Sat, 21 Mar 2020 21:56:22 +0000 (22:56 +0100)]
Rollup merge of #70197 - pnkfelix:issue-53957-revise-test-of-23076, r=LukasKalbertodt

For issue 53957: revise unit test to focus on underlying bug of 23076.

Fix #53957 by revising unit test to focus on underlying bug of #23076.

Namely, this version focuses on the end-to-end behavior that the attempt to create the UDP binding will fail, regardless of the semantics of how particular DNS servers handle junk inputs.

(I spent some time trying to create a second more-focused test that would sidestep the DNS resolution, but this is not possible without more invasive changes to the internal infrastructure of `ToSocketAddrs` and what not. It is not worth it.)