]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoRollup merge of #68562 - hjung4:spell, r=jonas-schievink
Pietro Albini [Mon, 27 Jan 2020 11:50:52 +0000 (12:50 +0100)]
Rollup merge of #68562 - hjung4:spell, r=jonas-schievink

Fix spelling errors

4 years agoRollup merge of #68531 - wesleywiser:cleanup_self_profiler, r=michaelwoerister
Pietro Albini [Mon, 27 Jan 2020 11:50:50 +0000 (12:50 +0100)]
Rollup merge of #68531 - wesleywiser:cleanup_self_profiler, r=michaelwoerister

[self-profiler] Two small cleanups

r? @michaelwoerister

4 years agoRollup merge of #68370 - Aaron1011:const-extern-test, r=RalfJung
Pietro Albini [Mon, 27 Jan 2020 11:50:49 +0000 (12:50 +0100)]
Rollup merge of #68370 - Aaron1011:const-extern-test, r=RalfJung

Ensure that we error when calling "const extern fn" with wrong convention

See #64926

4 years agoRollup merge of #67928 - XAMPPRocky:relnotes-1.41.0, r=pietroalbini
Pietro Albini [Mon, 27 Jan 2020 11:50:47 +0000 (12:50 +0100)]
Rollup merge of #67928 - XAMPPRocky:relnotes-1.41.0, r=pietroalbini

Update RELEASES.md for 1.41.0

### [Rendered](https://github.com/XAMPPRocky/rust/blob/relnotes-1.41.0/RELEASES.md)

cc @rust-lang/release

4 years agoupdate
comet [Mon, 27 Jan 2020 04:52:13 +0000 (22:52 -0600)]
update

4 years agoEnsure that we error when calling "const extern fn" with wrong convention
Aaron Hill [Sun, 19 Jan 2020 17:53:25 +0000 (12:53 -0500)]
Ensure that we error when calling "const extern fn" with wrong convention

See #64926

4 years agoAuto merge of #68447 - estebank:sugg-type-param, r=petrochenkov
bors [Mon, 27 Jan 2020 03:01:59 +0000 (03:01 +0000)]
Auto merge of #68447 - estebank:sugg-type-param, r=petrochenkov

Suggest defining type parameter when appropriate

```
error[E0412]: cannot find type `T` in this scope
 --> file.rs:3:12
  |
3 | impl Trait<T> for Struct {}
  |     -      ^ not found in this scope
  |     |
  |     help: you might be missing a type parameter: `<T>`
```

Fix #64298.

4 years agoAuto merge of #68122 - Centril:stabilize-transparent-enums, r=petrochenkov
bors [Mon, 27 Jan 2020 00:05:57 +0000 (00:05 +0000)]
Auto merge of #68122 - Centril:stabilize-transparent-enums, r=petrochenkov

Stabilize `#[repr(transparent)]` on `enum`s in Rust 1.42.0

# Stabilization report

The following is the stabilization report for `#![feature(transparent_enums)]`.

Tracking issue: https://github.com/rust-lang/rust/issues/60405
[Version target](https://forge.rust-lang.org/#current-release-versions): 1.42 (2020-01-30 => beta, 2020-03-12 => stable).

## User guide

A `struct` with only a single non-ZST field (let's call it `foo`) can be marked as `#[repr(transparent)]`. Such a `struct` has the same layout and ABI as `foo`. Here, we also extend this ability to `enum`s with only one variant, subject to the same restrictions as for the equivalent `struct`. That is, you can now write:

```rust
#[repr(transparent)]
enum Foo { Bar(u8) }
```

which, in terms of layout and ABI, is equivalent to:

```rust
#[repr(transparent)]
struct Foo(u8);
```

## Motivation

This is not a major feature that will unlock new and important use-cases. The utility of `repr(transparent)` `enum`s is indeed limited. However, there is still some value in it:

1. It provides conceptual simplification of the language in terms of treating univariant `enum`s and `struct`s the same, as both are product types. Indeed, languages like Haskell only have `data` as the only way to construct user-defined ADTs in the language.

2. In rare occasions, it might be that the user started out with a univariant `enum` for whatever reason (e.g. they thought they might extend it later). Now they want to make this `enum` `transparent` without breaking users by turning it into a `struct`. By lifting the restriction here, now they can.

## Technical specification

The reference specifies [`repr(transparent)` on a `struct`](https://doc.rust-lang.org/nightly/reference/type-layout.html#the-transparent-representation) as:

> ### The transparent Representation
>
>  The `transparent` representation can only be used on `struct`s that have:
>  - a single field with non-zero size, and
>  - any number of fields with size 0 and alignment 1 (e.g. `PhantomData<T>`).
>
> Structs with this representation have the same layout and ABI as the single non-zero sized field.
>
> This is different than the `C` representation because a struct with the `C` representation will always have the ABI of a `C` `struct` while, for example, a struct with the `transparent` representation with a primitive field will have the ABI of the primitive field.
>
> Because this representation delegates type layout to another type, it cannot be used with any other representation.

Here, we amend this to include univariant `enum`s as well with the same static restrictions and the same effects on dynamic semantics.

## Tests

All the relevant tests are adjusted in the PR diff but are recounted here:

- `src/test/ui/repr/repr-transparent.rs` checks that `repr(transparent)` on an `enum` must be univariant, rather than having zero or more than one variant. Restrictions on the fields inside the only variants, like for those on `struct`s, are also checked here.

- A number of codegen tests are provided as well:
    - `src/test/codegen/repr-transparent.rs` (the canonical test)
    - `src/test/codegen/repr-transparent-aggregates-1.rs`
    - `src/test/codegen/repr-transparent-aggregates-2.rs`
    - `src/test/codegen/repr-transparent-aggregates-3.rs`

- `src/test/ui/lint/lint-ctypes-enum.rs` tests the interactions with the `improper_ctypes` lint.

## History

- 2019-04-30, RFC https://github.com/rust-lang/rfcs/pull/2645
  Author: @mjbshaw
  Reviewers: The Language Team

  This is the RFC that proposes allowing `#[repr(transparent)]` on `enum`s and `union`.

- 2019-06-11, PR https://github.com/rust-lang/rust/pull/60463
  Author: @mjbshaw
  Reviewers: @varkor and @rkruppe

  The PR implements the RFC aforementioned in full.

- 2019, PR https://github.com/rust-lang/rust/pull/67323
  Author: @Centril
  Reviewers: @davidtwco

  The PR reorganizes the static checks taking advantage of the fact that `struct`s and `union`s are internally represented as ADTs with a single variant.

- This PR stabilizes `transparent_enums`.

## Related / possible future work

The remaining work here is to figure out the semantics of `#[repr(transparent)]` on `union`s and stabilize those. This work continues to be tracked in https://github.com/rust-lang/rust/issues/60405.

4 years agoAuto merge of #68407 - eddyb:iter-macro-backtrace, r=petrochenkov
bors [Sun, 26 Jan 2020 21:01:13 +0000 (21:01 +0000)]
Auto merge of #68407 - eddyb:iter-macro-backtrace, r=petrochenkov

rustc_span: return an impl Iterator instead of a Vec from macro_backtrace.

Having `Span::macro_backtrace` produce an `impl Iterator<Item = ExpnData>` allows #67359 to use it instead of rolling its own similar functionality.

The move from `MacroBacktrace` to `ExpnData` (which the first two commits are prerequisites for) both eliminates unnecessary allocations, and is strictly more flexible (exposes more information).

r? @petrochenkov

4 years agoSuggest defining type parameter when appropriate
Esteban Küber [Wed, 22 Jan 2020 07:01:21 +0000 (23:01 -0800)]
Suggest defining type parameter when appropriate

```
error[E0412]: cannot find type `T` in this scope
 --> file.rs:3:12
  |
3 | impl Trait<T> for Struct {}
  |     -      ^ not found in this scope
  |     |
  |     help: you might be missing a type parameter: `<T>`
```

Fix #64298.

4 years agorustc_span: return an impl Iterator instead of a Vec from macro_backtrace.
Eduard-Mihai Burtescu [Mon, 20 Jan 2020 23:46:53 +0000 (01:46 +0200)]
rustc_span: return an impl Iterator instead of a Vec from macro_backtrace.

4 years agorustc_span: replace MacroBacktrace with ExpnData.
Eduard-Mihai Burtescu [Mon, 20 Jan 2020 23:27:14 +0000 (01:27 +0200)]
rustc_span: replace MacroBacktrace with ExpnData.

4 years agorustc_span: move pretty syntax from macro_backtrace to ExpnKind::descr.
Eduard-Mihai Burtescu [Mon, 20 Jan 2020 23:02:01 +0000 (01:02 +0200)]
rustc_span: move pretty syntax from macro_backtrace to ExpnKind::descr.

4 years agoDon't use ExpnKind::descr to get the name of a bang macro.
Eduard-Mihai Burtescu [Mon, 20 Jan 2020 20:22:36 +0000 (22:22 +0200)]
Don't use ExpnKind::descr to get the name of a bang macro.

4 years agoAuto merge of #68545 - estebank:verbose-bound-display, r=petrochenkov
bors [Sun, 26 Jan 2020 11:48:34 +0000 (11:48 +0000)]
Auto merge of #68545 - estebank:verbose-bound-display, r=petrochenkov

Use better bound names in `-Zverbose` mode

r? @petrochenkov as per https://github.com/rust-lang/rust/pull/67951/files#r365524015

4 years agoAuto merge of #68522 - estebank:impl-trait-sugg-2, r=oli-obk
bors [Sun, 26 Jan 2020 08:36:23 +0000 (08:36 +0000)]
Auto merge of #68522 - estebank:impl-trait-sugg-2, r=oli-obk

Further improve `impl Trait`/`dyn Trait` suggestions

After reading [_Returning Trait Objects_ by Bryce Fisher-Fleig](https://bryce.fisher-fleig.org/blog/returning-trait-objects/), [I noticed that](https://www.reddit.com/r/rust/comments/esueur/returning_trait_objects/ffczl4k/) #68195 had a few bugs due to not ignoring `ty::Error`.

- Account for `ty::Error`.
- Account for `if`/`else` and `match` blocks when pointing at return types and referencing their types.
- Increase the multiline suggestion output from 6 lines to 20.

4 years agoAuto merge of #68517 - oli-obk:spaces2, r=nagisa
bors [Sun, 26 Jan 2020 05:13:14 +0000 (05:13 +0000)]
Auto merge of #68517 - oli-obk:spaces2, r=nagisa

Don't use spaces before type ascription like colons

Split out of #67133 to make that PR simpler

r? @eddyb

4 years agoAuto merge of #68031 - Marwes:fold_list, r=estebank
bors [Sun, 26 Jan 2020 01:51:50 +0000 (01:51 +0000)]
Auto merge of #68031 - Marwes:fold_list, r=estebank

perf: Avoid creating a SmallVec if nothing changes during a fold

Not sure if this helps but in theory it should be less work than what
the current micro optimization does for `ty::Predicate` lists.

(It would explain the overhead I am seeing from `perf`.)

4 years agoAuto merge of #68546 - JohnTitor:rollup-znuot4b, r=JohnTitor
bors [Sat, 25 Jan 2020 22:44:39 +0000 (22:44 +0000)]
Auto merge of #68546 - JohnTitor:rollup-znuot4b, r=JohnTitor

Rollup of 5 pull requests

Successful merges:

 - #68485 (add a test for #60976)
 - #68498 (Add some type-alias-impl-trait regression tests)
 - #68514 (Use Self instead of self return type)
 - #68534 (Update submodules to rust-lang)
 - #68540 (clean up error codes E0229 and E0261)

Failed merges:

r? @ghost

4 years agoRollup merge of #68540 - GuillaumeGomez:err-codes-cleanup-e0229-e0261, r=Dylan-DPC
Yuki Okushi [Sat, 25 Jan 2020 21:37:24 +0000 (06:37 +0900)]
Rollup merge of #68540 - GuillaumeGomez:err-codes-cleanup-e0229-e0261, r=Dylan-DPC

clean up error codes E0229 and E0261

r? @Dylan-DPC

4 years agoRollup merge of #68534 - JohnTitor:update-remote-url, r=jonas-schievink
Yuki Okushi [Sat, 25 Jan 2020 21:37:22 +0000 (06:37 +0900)]
Rollup merge of #68534 - JohnTitor:update-remote-url, r=jonas-schievink

Update submodules to rust-lang

They're on rust-lang now. Should be green as it's the same change as #65963 but let's make sure CI is green also.

4 years agoRollup merge of #68514 - lzutao:fmt-Self, r=Dylan-DPC
Yuki Okushi [Sat, 25 Jan 2020 21:37:21 +0000 (06:37 +0900)]
Rollup merge of #68514 - lzutao:fmt-Self, r=Dylan-DPC

Use Self instead of self return type

4 years agoRollup merge of #68498 - Aaron1011:tait-regression-tests, r=Centril
Yuki Okushi [Sat, 25 Jan 2020 21:37:19 +0000 (06:37 +0900)]
Rollup merge of #68498 - Aaron1011:tait-regression-tests, r=Centril

Add some type-alias-impl-trait regression tests

Fixes #57611
Fixes #57807

4 years agoRollup merge of #68485 - kingslef:fix/test-60976, r=nikomatsakis
Yuki Okushi [Sat, 25 Jan 2020 21:37:18 +0000 (06:37 +0900)]
Rollup merge of #68485 - kingslef:fix/test-60976, r=nikomatsakis

add a test for #60976

The test fails on 1.36.0 but passes on master.

Huge thanks for @hellow554 actually digging out the minimized version of the
repro.

Fixes #60976.

4 years agoUse better bound names in `-Zverbose` mode
Esteban Küber [Sat, 25 Jan 2020 20:46:43 +0000 (12:46 -0800)]
Use better bound names in `-Zverbose` mode

4 years agoRevert suggestion window size change
Esteban Küber [Sat, 25 Jan 2020 20:26:33 +0000 (12:26 -0800)]
Revert suggestion window size change

4 years agoAuto merge of #68530 - estebank:abolish-ice, r=petrochenkov
bors [Sat, 25 Jan 2020 19:55:26 +0000 (19:55 +0000)]
Auto merge of #68530 - estebank:abolish-ice, r=petrochenkov

Do not ICE on multipart suggestions touching multiple files

When encountering a multipart suggestion with spans belonging to
different contexts, skip that suggestion.

Fix #68449. Similar to #68256.

4 years agoclean up error codeS E0229 and E0261
Guillaume Gomez [Sat, 25 Jan 2020 16:41:55 +0000 (17:41 +0100)]
clean up error codeS E0229 and E0261

4 years agoAuto merge of #68525 - tlively:emcc-codegen-sigsegv-66308, r=alexcrichton
bors [Sat, 25 Jan 2020 16:34:53 +0000 (16:34 +0000)]
Auto merge of #68525 - tlively:emcc-codegen-sigsegv-66308, r=alexcrichton

Update LLVM to fix crash on Emscripten targets

Fixes #66308 (for real this time). r? @alexcrichton

4 years agoAuto merge of #68516 - oli-obk:spaces, r=eddyb
bors [Sat, 25 Jan 2020 13:14:59 +0000 (13:14 +0000)]
Auto merge of #68516 - oli-obk:spaces, r=eddyb

Render const pointers in MIR more compactly

Split out from #67133 to make that PR simpler

cc @RalfJung

r? @eddyb

4 years agoDon't use spaces before type ascription like colons
Oliver Scherer [Fri, 24 Jan 2020 20:04:17 +0000 (21:04 +0100)]
Don't use spaces before type ascription like colons

4 years agoUpdate submodules to rust-lang
Yuki Okushi [Sat, 25 Jan 2020 08:58:10 +0000 (17:58 +0900)]
Update submodules to rust-lang

4 years agoAuto merge of #68448 - maurer:dyn-cdylib, r=alexcrichton
bors [Sat, 25 Jan 2020 07:49:40 +0000 (07:49 +0000)]
Auto merge of #68448 - maurer:dyn-cdylib, r=alexcrichton

rustc: Allow cdylibs to link against dylibs

Previously, rustc mandated that cdylibs could only link against rlibs as dependencies (not dylibs).
This commit disables that restriction and tests that it works in a simple case.

I don't have a windows rustc dev environment, so I guessed at the MSVC test code, I'm hoping the CI can run that for me.

Additionally, we might want to consider emitting (through cargo or rustc) some metadata to help C users of a cdylib figure out where all the dylibs they need are. I don't think that should be needed to land this change, as it will still be usable by homogeneous build systems without it.

My new test was templated off the `tests/run-make-fulldeps/cdylib` test. It seemed more appropriate to have it as a separate test, since both foo.rs and bar.rs would need to be replicated to make that test cover both cases, but I can do that if it would be preferred.

If I'm doing anything out of order/process, please let me know; this is only my second change to rustc and the prior one was trivial.

r? alexcrichton

4 years agoAuto merge of #68269 - csmoe:temp, r=estebank
bors [Sat, 25 Jan 2020 04:42:56 +0000 (04:42 +0000)]
Auto merge of #68269 - csmoe:temp, r=estebank

Suggest to shorten temporary borrow from raw pointer

Closes https://github.com/rust-lang/rust/issues/65436
r? @estebank
cc @tmandry

4 years ago[self-profiler] Clean up `EventFilter`
Wesley Wiser [Sat, 25 Jan 2020 02:35:21 +0000 (21:35 -0500)]
[self-profiler] Clean up `EventFilter`

4 years ago[self-profiler] Use `ThreadId::as_u64()` instead of transmute
Wesley Wiser [Sat, 25 Jan 2020 02:24:24 +0000 (21:24 -0500)]
[self-profiler] Use `ThreadId::as_u64()` instead of transmute

4 years agoAdd some type-alias-impl-trait regression tests
Aaron Hill [Thu, 23 Jan 2020 23:19:59 +0000 (18:19 -0500)]
Add some type-alias-impl-trait regression tests

Fixes #57611
Fixes #57807

4 years agoDo not ICE on multipart suggestions touching multiple files
Esteban Küber [Sat, 25 Jan 2020 02:03:09 +0000 (18:03 -0800)]
Do not ICE on multipart suggestions touching multiple files

When encountering a multipart suggestion with spans belonging to
different contexts, skip that suggestion.

4 years agoAuto merge of #68526 - JohnTitor:rollup-3mmljof, r=JohnTitor
bors [Fri, 24 Jan 2020 23:04:54 +0000 (23:04 +0000)]
Auto merge of #68526 - JohnTitor:rollup-3mmljof, r=JohnTitor

Rollup of 6 pull requests

Successful merges:

 - #68111 (Print constants in `type_name` for const generics)
 - #68374 (Fix invalid link to the C++ Exception Handling ABI documentation)
 - #68504 (Use check-pass mode for lint tests and nll tests)
 - #68509 (Clean up error codes E0223 and E0225 explanations)
 - #68511 (Remove unused ignore-license directives)
 - #68515 (Support feature process_set_argv0 for VxWorks)

Failed merges:

r? @ghost

4 years agoRollup merge of #68515 - Wind-River:master_2020, r=alexcrichton
Yuki Okushi [Fri, 24 Jan 2020 22:45:18 +0000 (07:45 +0900)]
Rollup merge of #68515 - Wind-River:master_2020, r=alexcrichton

Support feature process_set_argv0 for VxWorks

r? @alexcrichton

4 years agoRollup merge of #68511 - tmiasko:ignore-license, r=alexcrichton
Yuki Okushi [Fri, 24 Jan 2020 22:45:16 +0000 (07:45 +0900)]
Rollup merge of #68511 - tmiasko:ignore-license, r=alexcrichton

Remove unused ignore-license directives

The tidy check was removed in rust-lang/rust#53617

4 years agoRollup merge of #68509 - GuillaumeGomez:clean-up-err-codes-e0223-e0225, r=Dylan-DPC
Yuki Okushi [Fri, 24 Jan 2020 22:45:15 +0000 (07:45 +0900)]
Rollup merge of #68509 - GuillaumeGomez:clean-up-err-codes-e0223-e0225, r=Dylan-DPC

Clean up error codes E0223 and E0225 explanations

r? @Dylan-DPC

4 years agoRollup merge of #68504 - tmiasko:check-pass, r=alexcrichton
Yuki Okushi [Fri, 24 Jan 2020 22:45:13 +0000 (07:45 +0900)]
Rollup merge of #68504 - tmiasko:check-pass, r=alexcrichton

Use check-pass mode for lint tests and nll tests

Helps with issue #62277.

4 years agoRollup merge of #68374 - gitletH:patch-1, r=nikomatsakis
Yuki Okushi [Fri, 24 Jan 2020 22:45:11 +0000 (07:45 +0900)]
Rollup merge of #68374 - gitletH:patch-1, r=nikomatsakis

Fix invalid link to the C++ Exception Handling ABI documentation

The original link is longer valid(404). I am assuming it's meant to be pointed to the Itanium C++ Exception Handling ABI documentation.

4 years agoRollup merge of #68111 - varkor:const-generics-type_name, r=oli-obk
Yuki Okushi [Fri, 24 Jan 2020 22:45:10 +0000 (07:45 +0900)]
Rollup merge of #68111 - varkor:const-generics-type_name, r=oli-obk

Print constants in `type_name` for const generics

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

r? @oli-obk as there may have been a deliberate decision not to in https://github.com/rust-lang/rust/commit/5b9848912a85e28d000602fc2e81bad9c2f2a981#diff-4ed1a72c0bfdf17be769ed520932cd02R80.

4 years agoreview comments
Esteban Küber [Fri, 24 Jan 2020 22:03:35 +0000 (14:03 -0800)]
review comments

4 years agoApply `resolve_vars_if_possible` to returned types for more accurate suggestions
Esteban Küber [Fri, 24 Jan 2020 19:47:54 +0000 (11:47 -0800)]
Apply `resolve_vars_if_possible` to returned types for more accurate suggestions

4 years agoIncrease suggestion code window from 6 lines to 20
Esteban Küber [Fri, 24 Jan 2020 19:18:45 +0000 (11:18 -0800)]
Increase suggestion code window from 6 lines to 20

4 years agoNew fix
Thomas Lively [Fri, 24 Jan 2020 19:12:33 +0000 (11:12 -0800)]
New fix

4 years agoUse more accurate return path spans
Esteban Küber [Fri, 24 Jan 2020 18:35:13 +0000 (10:35 -0800)]
Use more accurate return path spans

No longer suggest `Box::new(if foo { Type1 } else { Type2 })`, instead
suggesting `if foo { Box::new(Type1) } else { Box::new(Type2) }`.

4 years agoAdd opt-level=0 to test
Thomas Lively [Fri, 24 Jan 2020 18:25:30 +0000 (10:25 -0800)]
Add opt-level=0 to test

4 years agoUpdate LLVM to fix crash on Emscripten targets
Thomas Lively [Tue, 7 Jan 2020 15:03:45 +0000 (07:03 -0800)]
Update LLVM to fix crash on Emscripten targets

Adds a small Rust regression test for #66308.

r? @alexcrichton

4 years agoSupport feature process_set_argv0 for VxWorks
BaoshanPang [Fri, 17 Jan 2020 17:29:09 +0000 (09:29 -0800)]
Support feature process_set_argv0 for VxWorks

4 years agoAuto merge of #68494 - matthewjasper:internal-static-ptrs, r=nikomatsakis
bors [Fri, 24 Jan 2020 17:18:36 +0000 (17:18 +0000)]
Auto merge of #68494 - matthewjasper:internal-static-ptrs, r=nikomatsakis

Make pointers to statics internal

Closes #67611

r? @nikomatsakis

4 years agoUse Self instead of self return type
Lzu Tao [Fri, 24 Jan 2020 16:43:57 +0000 (17:43 +0100)]
Use Self instead of self return type

4 years agoPrint constants in `type_name` for const generics
varkor [Fri, 24 Jan 2020 16:22:24 +0000 (16:22 +0000)]
Print constants in `type_name` for const generics

4 years agoRender const pointers in MIR more compactly
Oliver Scherer [Mon, 23 Dec 2019 16:41:06 +0000 (17:41 +0100)]
Render const pointers in MIR more compactly

4 years agoAuto merge of #68414 - michaelwoerister:share-drop-glue, r=alexcrichton
bors [Fri, 24 Jan 2020 14:00:56 +0000 (14:00 +0000)]
Auto merge of #68414 - michaelwoerister:share-drop-glue, r=alexcrichton

Also share drop-glue when compiling with -Zshare-generics (i.e. at opt-level=0)

This PR adds drop-glue to the set of monomorphizations that can be shared across crates via `-Zshare-generics`.

This version of the PR might have detrimental effects on performance as it makes lots of stuff dependent on a single query results (`upstream_monomorphizations_for(def_id_of_drop_in_place)`). That should be fixable but let's do a perf run first.

Potentially fixes issue https://github.com/rust-lang/rust/issues/64140. (cc @alexcrichton)
The changes here are related to @matthewjasper's https://github.com/rust-lang/rust/pull/67332 but should be mostly orthogonal.

r? @ghost

4 years agoClean up error codes E0223 and E0225 explanations
Guillaume Gomez [Fri, 24 Jan 2020 11:56:32 +0000 (12:56 +0100)]
Clean up error codes E0223 and E0225 explanations

4 years agoAuto merge of #68506 - tmandry:rollup-kz9d33v, r=tmandry
bors [Fri, 24 Jan 2020 08:32:10 +0000 (08:32 +0000)]
Auto merge of #68506 - tmandry:rollup-kz9d33v, r=tmandry

Rollup of 7 pull requests

Successful merges:

 - #68424 (Suggest borrowing `Vec<NonCopy>` in for loop)
 - #68438 (Account for non-types in substs for opaque type error messages)
 - #68469 (Avoid overflow in `std::iter::Skip::count`)
 - #68473 (Enable ASan on Fuchsia)
 - #68479 (Implement `unused_parens` for block return values)
 - #68483 (Add my (@flip1995) name to .mailmap)
 - #68500 (Clear out std, not std tools)

Failed merges:

r? @ghost

4 years agoRollup merge of #68500 - Mark-Simulacrum:fix-bootstrap-clearing, r=alexcrichton
Tyler Mandry [Fri, 24 Jan 2020 08:31:02 +0000 (00:31 -0800)]
Rollup merge of #68500 - Mark-Simulacrum:fix-bootstrap-clearing, r=alexcrichton

Clear out std, not std tools

This was a typo that slipped in, and meant that we were still not properly
clearing out std.

This is basically #67760 but actually correct...

4 years agoRollup merge of #68483 - flip1995:mailmap, r=Dylan-DPC
Tyler Mandry [Fri, 24 Jan 2020 08:31:00 +0000 (00:31 -0800)]
Rollup merge of #68483 - flip1995:mailmap, r=Dylan-DPC

Add my (@flip1995) name to .mailmap

4 years agoRollup merge of #68479 - Tyg13:unused_parens_return, r=Centril
Tyler Mandry [Fri, 24 Jan 2020 08:30:59 +0000 (00:30 -0800)]
Rollup merge of #68479 - Tyg13:unused_parens_return, r=Centril

Implement `unused_parens` for block return values

Fixes #68386

r? @Centril

4 years agoRollup merge of #68473 - nopsledder:rust_sanitizer_fuchsia, r=alexcrichton
Tyler Mandry [Fri, 24 Jan 2020 08:30:58 +0000 (00:30 -0800)]
Rollup merge of #68473 - nopsledder:rust_sanitizer_fuchsia, r=alexcrichton

Enable ASan on Fuchsia

This change adds the x86_64-fuchsia and aarch64-fuchsia LLVM targets to
those allowed to invoke -Zsanitizer. Currently, the only overlap between
compiler_rt sanitizers supported by both rustc and Fuchsia is ASan.

4 years agoRollup merge of #68469 - ollie27:skip_count, r=sfackler
Tyler Mandry [Fri, 24 Jan 2020 08:30:56 +0000 (00:30 -0800)]
Rollup merge of #68469 - ollie27:skip_count, r=sfackler

Avoid overflow in `std::iter::Skip::count`

The call to `count` on the inner iterator can overflow even if `Skip` itself would return less that `usize::max_value()` items.

Fixes #68139

4 years agoRollup merge of #68438 - Aaron1011:fix/tait-non-defining, r=estebank
Tyler Mandry [Fri, 24 Jan 2020 08:30:55 +0000 (00:30 -0800)]
Rollup merge of #68438 - Aaron1011:fix/tait-non-defining, r=estebank

Account for non-types in substs for opaque type error messages

Fixes #68368

Previously, I assumed that the substs contained only types, which caused
the computed index number to be wrong.

4 years agoRollup merge of #68424 - estebank:suggest-borrow-for-non-copy-vec, r=davidtwco
Tyler Mandry [Fri, 24 Jan 2020 08:30:53 +0000 (00:30 -0800)]
Rollup merge of #68424 - estebank:suggest-borrow-for-non-copy-vec, r=davidtwco

Suggest borrowing `Vec<NonCopy>` in for loop

Partially address #64167.

4 years agoClear out std, not std tools
Mark Rousskov [Fri, 24 Jan 2020 01:29:42 +0000 (20:29 -0500)]
Clear out std, not std tools

This was a typo that slipped in, and meant that we were still not properly
clearing out std.

4 years agoAccount for `ty::Error` when suggesting `impl Trait` or `Box<dyn Trait>`
Esteban Küber [Thu, 23 Jan 2020 23:21:15 +0000 (15:21 -0800)]
Account for `ty::Error` when suggesting `impl Trait` or `Box<dyn Trait>`

4 years agoRemove unused ignore-license directives
Tomasz Miąsko [Fri, 24 Jan 2020 00:00:00 +0000 (00:00 +0000)]
Remove unused ignore-license directives

The tidy check was removed in rust-lang/rust#53617

4 years agoAuto merge of #68012 - alexcrichton:update-some-deps, r=Mark-Simulacrum
bors [Thu, 23 Jan 2020 23:44:51 +0000 (23:44 +0000)]
Auto merge of #68012 - alexcrichton:update-some-deps, r=Mark-Simulacrum

Update some of Cargo's dependencies

This is primarily updating the `curl` dependency, but also went ahead
and applied a few updates for other packages that Cargo depends on.

4 years agoUpdate some of Cargo's dependencies
Alex Crichton [Wed, 8 Jan 2020 15:33:57 +0000 (07:33 -0800)]
Update some of Cargo's dependencies

This is primarily updating the `curl` dependency, but also went ahead
and applied a few updates for other packages that Cargo depends on.

4 years agoMake pointers to statics internal
Matthew Jasper [Thu, 23 Jan 2020 20:34:11 +0000 (20:34 +0000)]
Make pointers to statics internal

4 years agorustc: Allow cdylibs to link against dylibs
Matthew Maurer [Wed, 22 Jan 2020 06:47:03 +0000 (22:47 -0800)]
rustc: Allow cdylibs to link against dylibs

Previously, rustc mandated that cdylibs could only link against rlibs as
dependencies (not dylibs).
This commit disables that restriction and tests that it works in a
simple case.

4 years agouse `diagnostic_item` and modify wording
Esteban Küber [Thu, 23 Jan 2020 19:51:56 +0000 (11:51 -0800)]
use `diagnostic_item` and modify wording

4 years agoAuto merge of #68391 - tmiasko:compiletest-debuginfo, r=alexcrichton
bors [Thu, 23 Jan 2020 19:39:07 +0000 (19:39 +0000)]
Auto merge of #68391 - tmiasko:compiletest-debuginfo, r=alexcrichton

compiletest: Simplify multi-debugger support

Previous implementation used a single mode type to store various pieces
of otherwise loosely related information:

* Whether debuginfo mode is in use or not.
* Which debuggers should run in general.
* Which debuggers are enabled for particular test case.

The new implementation introduces a separation between those aspects.
There is a single debuginfo mode parametrized by a debugger type.
The debugger detection is performed first and a separate configuration
is created for each detected debugger. The test cases are gathered
independently for each debugger which makes it trivial to implement
support for `ignore` / `only` conditions.

Functional changes:

* A single `debuginfo` entry point (rather than `debuginfo-cdb`, `debuginfo-gdb+lldb`, etc.).
* Debugger name is included in the test name.
* Test outputs are placed in per-debugger directory.
* Fixed spurious hash mismatch. Previously, the config mode would change
  from `DebugInfoGdbLldb` (when collecting tests) to `DebugInfoGdb` or
  `DebugInfoLldb` (when running them) which would affect hash computation.
* PYTHONPATH is additionally included in gdb hash.
* lldb-python and lldb-python-dir are additionally included in lldb hash.

4 years agoAdd projection query for upstream drop-glue instances.
Michael Woerister [Wed, 22 Jan 2020 11:17:21 +0000 (12:17 +0100)]
Add projection query for upstream drop-glue instances.

This reduces the amount of invalidated data when new types are
add to upstream crates.

4 years agoadd a test for #60976
Tuomas Lappeteläinen [Thu, 23 Jan 2020 13:16:16 +0000 (15:16 +0200)]
add a test for #60976

The test fails on 1.36.0 but passes on master.

4 years agoAdd my (@flip1995) name to .mailmap
flip1995 [Thu, 23 Jan 2020 12:27:36 +0000 (13:27 +0100)]
Add my (@flip1995) name to .mailmap

4 years agoMake drop-glue take advantage of -Zshare-generics.
Michael Woerister [Mon, 20 Jan 2020 15:38:42 +0000 (16:38 +0100)]
Make drop-glue take advantage of -Zshare-generics.

4 years agoAlways just use symbol name for sorting exported symbols.
Michael Woerister [Tue, 21 Jan 2020 13:29:42 +0000 (14:29 +0100)]
Always just use symbol name for sorting exported symbols.

4 years agoMake ExportedSymbols type more local because it's not supposed to be
Michael Woerister [Mon, 20 Jan 2020 14:56:06 +0000 (15:56 +0100)]
Make ExportedSymbols type more local because it's not supposed to be
used outside of the LLVM backend.

4 years agoClarify some methods around instance instantiation via comments and clearer names.
Michael Woerister [Mon, 20 Jan 2020 14:54:40 +0000 (15:54 +0100)]
Clarify some methods around instance instantiation via comments and clearer names.

4 years agocompiletest: Do not run debuginfo tests with gdb on msvc targets
Tomasz Miąsko [Thu, 23 Jan 2020 00:00:00 +0000 (00:00 +0000)]
compiletest: Do not run debuginfo tests with gdb on msvc targets

4 years agoAuto merge of #68435 - tmandry:llvmup-2-the-return-of-phibitcast-transform-fixes...
bors [Thu, 23 Jan 2020 07:26:56 +0000 (07:26 +0000)]
Auto merge of #68435 - tmandry:llvmup-2-the-return-of-phibitcast-transform-fixes, r=alexcrichton

Update LLVM

Fixes #67855 (rust-lang/llvm-project#31)
Fixes #66036 (rust-lang/llvm-project#32)

r? @nikic @alexcrichton

4 years agounused-parens: implement for block return values
Tyler Lanphear [Thu, 23 Jan 2020 05:42:35 +0000 (00:42 -0500)]
unused-parens: implement for block return values

4 years agoAuto merge of #68298 - Mark-Simulacrum:binary-depdep-fix, r=petrochenkov
bors [Thu, 23 Jan 2020 03:48:07 +0000 (03:48 +0000)]
Auto merge of #68298 - Mark-Simulacrum:binary-depdep-fix, r=petrochenkov

Avoid declaring a fake dependency edge

When we're producing an rlib, we do not need anything more than an rmeta file
for each of our dependencies (this is indeed utilized by Cargo for pipelining).
Previously, we were still storing the paths of possible rlib/dylib crates, which
meant that they could still plausibly be accessed. With -Zbinary-dep-depinfo,
that meant that Cargo thought that rustc was using both the rlib and an (earlier
emitted) rmeta, and so needed a recompile, as the rlib may have finished writing
*after* compilation started (for more detail, see issue 68149).

This commit changes metadata loading to not store the filepaths of dylib/rlib if
we're going to end up creating an rlib only.

Fixes #68149.

4 years agoAuto merge of #68474 - tmandry:rollup-6gmbet6, r=tmandry
bors [Thu, 23 Jan 2020 00:04:33 +0000 (00:04 +0000)]
Auto merge of #68474 - tmandry:rollup-6gmbet6, r=tmandry

Rollup of 10 pull requests

Successful merges:

 - #67195 ([experiment] Add `-Z no-link` flag)
 - #68253 (add bare metal ARM Cortex-A targets to rustc)
 - #68361 (Unbreak linking with lld 9 on FreeBSD 13.0-CURRENT i386)
 - #68388 (Make `TooGeneric` error in WF checking a proper error)
 - #68409 (Micro-optimize OutputFilenames)
 - #68410 (Export weak symbols used by MemorySanitizer)
 - #68425 (Fix try-op diagnostic in E0277 for methods)
 - #68440 (bootstrap: update clippy subcmd decription)
 - #68441 (pprust: use as_deref)
 - #68462 (librustc_mir: don't allocate vectors where slices will do.)

Failed merges:

r? @ghost

4 years agoRollup merge of #68462 - matthiaskrgr:novec, r=varkor
Tyler Mandry [Thu, 23 Jan 2020 00:02:24 +0000 (16:02 -0800)]
Rollup merge of #68462 - matthiaskrgr:novec, r=varkor

librustc_mir: don't allocate vectors where slices will do.

4 years agoRollup merge of #68441 - Centril:pprust-as_deref, r=Mark-Simulacrum
Tyler Mandry [Thu, 23 Jan 2020 00:02:20 +0000 (16:02 -0800)]
Rollup merge of #68441 - Centril:pprust-as_deref, r=Mark-Simulacrum

pprust: use as_deref

Some drive-by cleanup.

4 years agoRollup merge of #68440 - matthiaskrgr:xpyclippy, r=Mark-Simulacrum
Tyler Mandry [Thu, 23 Jan 2020 00:02:19 +0000 (16:02 -0800)]
Rollup merge of #68440 - matthiaskrgr:xpyclippy, r=Mark-Simulacrum

bootstrap: update clippy subcmd decription

Clarify where the clippy used in `./x.py clippy` is coming from.
It uses whatever clippy binary was installed via rustup, cargo-install
or otherwise and does NOT use the binary generated by `./x.py build src/tools/clippy`.

4 years agoRollup merge of #68425 - phi-gamma:try-method, r=varkor
Tyler Mandry [Thu, 23 Jan 2020 00:02:17 +0000 (16:02 -0800)]
Rollup merge of #68425 - phi-gamma:try-method, r=varkor

Fix try-op diagnostic in E0277 for methods

For methods the try-op diagnostic displays the empty string where
it has more descriptive strings like “a function” otherwise:

    error[E0277]: the `?` operator can only be used in  that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
                                                      ^^
       | |             ^^ cannot use the `?` operator in  that returns `()`
                                                        ^^

I’m seeing this on nightly (rustc 1.42.0-nightly (b5a3341f1
2020-01-20)) and [on the playpen](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=0e7ce7792c2aceb8056941710d539124).

The changeset add strings for impl methods and trait provided
methods and test cases for the option type.

4 years agoRollup merge of #68410 - tmiasko:msan-lto, r=varkor
Tyler Mandry [Thu, 23 Jan 2020 00:02:16 +0000 (16:02 -0800)]
Rollup merge of #68410 - tmiasko:msan-lto, r=varkor

Export weak symbols used by MemorySanitizer

Export weak symbols defined by MemorySanitizer instrumentation, which are used
to implement `-Zsanitizer-memory-track-origins` and `-Zsanitizer-recover=memory`.
Previously, when using fat LTO, they would internalized and eliminated.

Fixes #68367.

4 years agoRollup merge of #68409 - sinkuu:temp_path, r=Mark-Simulacrum
Tyler Mandry [Thu, 23 Jan 2020 00:02:14 +0000 (16:02 -0800)]
Rollup merge of #68409 - sinkuu:temp_path, r=Mark-Simulacrum

Micro-optimize OutputFilenames

For example, its methods consume 6% of time during debug-compiling a `warp` example:
![Screenshot (debug-compiling a `warp` example)](https://user-images.githubusercontent.com/7091080/72780288-d74f1580-3c61-11ea-953b-34e59ca682f9.png)

This PR optimize them a bit by using `PathBuf::set_extension` instead of `Path::with_extension`, to avoid cloning `PathBuf` excessively.

4 years agoRollup merge of #68388 - varkor:toogeneric-wf, r=eddyb
Tyler Mandry [Thu, 23 Jan 2020 00:02:13 +0000 (16:02 -0800)]
Rollup merge of #68388 - varkor:toogeneric-wf, r=eddyb

Make `TooGeneric` error in WF checking a proper error

`TooGeneric` is encountered during WF checking when we cannot determine that a constant involving a generic parameter will always be evaluated successfully (rather than resulting in an error). In these cases, the burden of proof should be with the caller, so that we can avoid post-monomorphisation tim errors (which was the previous previous behaviour). This commit ensures that this situation produces a proper compiler error, rather than silently ignoring it or ICEing.

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

r? @eddyb

4 years agoRollup merge of #68361 - t6:patch-freebsd-lld-i386, r=alexcrichton
Tyler Mandry [Thu, 23 Jan 2020 00:02:11 +0000 (16:02 -0800)]
Rollup merge of #68361 - t6:patch-freebsd-lld-i386, r=alexcrichton

Unbreak linking with lld 9 on FreeBSD 13.0-CURRENT i386

Add -Wl,-znotext to default linker flags to link with lld 9 on FreeBSD 13.0-CURRENT i386 where rust-nightly has been failing to link since 2019-12-10 with variations of
```
 = note: ld: error: relocation R_386_PC32 cannot be used against symbol __rust_probestack; recompile with -fPIC
          >>> defined in /wrkdirs/usr/ports/lang/rust-nightly/work/rustc-nightly-src/build/i686-unknown-freebsd/stage1/lib/rustlib/i686-unknown-freebsd/lib/libcompiler_builtins-6570a75fe85f0e1a.rlib(compiler_builtins-6570a75fe85f0e1a.compiler_builtins.2i519eqi-cgu.15.rcgu.o)
          >>> referenced by std.4xivr03c-cgu.14
          >>>               std-9bd70afd58e204b7.std.4xivr03c-cgu.14.rcgu.o:(_$LT$alloc..boxed..Box$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::h1c78ed6e734a2bfc (.llvm.10122419023709863394)) in archive /wrkdirs/usr/ports/lang/rust-nightly/work/rustc-nightly-src/build/i686-unknown-freebsd/stage1/lib/rustlib/i686-unknown-freebsd/lib/libstd-9bd70afd58e204b7.rlib

          ld: error: relocation R_386_PC32 cannot be used against symbol __rust_probestack; recompile with -fPIC
          >>> defined in /wrkdirs/usr/ports/lang/rust-nightly/work/rustc-nightly-src/build/i686-unknown-freebsd/stage1/lib/rustlib/i686-unknown-freebsd/lib/libcompiler_builtins-6570a75fe85f0e1a.rlib(compiler_builtins-6570a75fe85f0e1a.compiler_builtins.2i519eqi-cgu.15.rcgu.o)
          >>> referenced by std.4xivr03c-cgu.14
          >>>               std-9bd70afd58e204b7.std.4xivr03c-cgu.14.rcgu.o:(std::io::util::copy::h9115f048f2203467) in archive /wrkdirs/usr/ports/lang/rust-nightly/work/rustc-nightly-src/build/i686-unknown-freebsd/stage1/lib/rustlib/i686-unknown-freebsd/lib/libstd-9bd70afd58e204b7.rlib
          clang-cpp: error: linker command failed with exit code 1 (use -v to see invocation)

error: aborting due to previous error

error: could not compile `rustc_macros`.
```
Full log: http://beefy17.nyi.freebsd.org/data/head-i386-default/p523508_s356869/logs/rust-nightly-1.42.0.20200118.log

AFAICT it stopped building after bumping compiler_builtins to 0.1.22 in https://github.com/rust-lang/rust/pull/67110.

4 years agoRollup merge of #68253 - japaric:bare-metal-cortex-a, r=alexcrichton
Tyler Mandry [Thu, 23 Jan 2020 00:02:09 +0000 (16:02 -0800)]
Rollup merge of #68253 - japaric:bare-metal-cortex-a, r=alexcrichton

add bare metal ARM Cortex-A targets to rustc

-> `rustc --target armv7a-none-eabi` will work

also build rust-std (rustup) components for them

-> `rustup target add armv7a-none-eabi` will work

this completes our bare-metal support of ARMv7 cores on stable Rust (by 1.42 or 1.43)

(these target specifications have been tested on a real (no emulation / QEMU) [Cortex-A7 core](https://github.com/iqlusioninc/usbarmory.rs/))

4 years agoRollup merge of #67195 - 0dvictor:nolink, r=tmandry
Tyler Mandry [Thu, 23 Jan 2020 00:02:08 +0000 (16:02 -0800)]
Rollup merge of #67195 - 0dvictor:nolink, r=tmandry

[experiment] Add `-Z no-link` flag

Adds a compiler option to allow rustc compile a crate without linking.
With this flag, `rustc` serializes codegen_results into a `.rlink` file.

Part of Issue #64191

4 years agoAdd `-Z no-link` flag
Victor Ding [Sat, 21 Dec 2019 10:37:15 +0000 (21:37 +1100)]
Add `-Z no-link` flag

Adds a compiler option to allow rustc compile a crate without linking.
With this flag, rustc serializes codegen_results into a .rlink file.

4 years agoUse check-pass mode for lint tests
Tomasz Miąsko [Thu, 23 Jan 2020 00:00:00 +0000 (00:00 +0000)]
Use check-pass mode for lint tests